質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.43%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

3回答

3139閲覧

ローカルと本番でfetchAPIのURLを変えたい

tomoharu

総合スコア107

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/02/03 18:19

当方reactとrailsでアプリを作成中なのですが、ローカル環境のみの開発となっているため(デプロイしていない)
下のように

componentDidMount(){ fetch('http://localhost:3000/api/v1/deeds') .then((response) => { return response.json() }) .then((dones) => { this.setState({dones}) }); }

fetchのapiがlocalhostとなっています。コレを本番にデプロイしたときに、
本番用のURL変更したいのですが、いいやり方が思いつかず。。。(調べても出てこなかったです)
自分の理想としては、本番環境では本番用のURLが使われ、ローカルではローカル用のURLが呼び出されるとやりたいです。
コレは本番なのかlocalなのかを認識できるメソッドでもあればと思っているのですが。。。。
どなたかお教えいただければと思います。

何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Webpacker内にあるJavaScriptから環境切り分けを行う場合、process.env.NODE_ENVを見る方法があります。

なお、開発と本番でディレクトリ構造が変わらないのであれば、fetch('/api/v1/deeds')とサーバを書かないことで済ませる、という方法も考えられます。

投稿2020/02/03 22:29

maisumakun

総合スコア145403

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomoharu

2020/02/04 09:30

ありがとうございます。 fetch('/api/v1/deeds') で一度指定してみたんですけど、サーバー側から取得できなかったんですよね。。。
tomoharu

2020/02/05 10:30

すいません。 process.env.NODE_ENVでいけました。ありがとうございます。
guest

0

Rails.env # => "development"

投稿2020/02/03 18:41

winterboum

総合スコア23461

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomoharu

2020/02/04 17:01

ありがとうございます。react側で使いたいので、Rails.envは認識されないんじゃ?と思ったのですが。。
winterboum

2020/02/04 23:26

おっと、そうですね、脊髄反射してしまいました。
guest

0

本番環境にテスト情報が残るのは流石にみっともないですよ

var url="http://localhost:3000/api/v1/deeds";
fetch(url)・・・
として、本番アップ直前にgrep置換するなどなんらかの
処理が必要でしょう

投稿2020/02/04 01:29

yambejp

総合スコア115338

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/02/04 01:32

本来ディレクトリ構造さえ同じであればディレクトリの指定だけで いけそうなんですけど、ローカルのテスト環境では ポートを変えているようなので結構きびしそうです。 テスト環境用のjsファイルを一つ作ってそこにデバッグ情報をまとめ 本番環境にはアップしないとかでお茶を濁すとかでしょうかね
maisumakun

2020/02/04 01:39

> 本番環境にテスト情報が残るのは流石にみっともないですよ 条件をprocess.env.NODE_ENVなどで書いておくと、適切に設定すれば「コンパイル時に置き換わって条件が定数化」→「minifyで消し飛ぶ」という流れにできます。
yambejp

2020/02/04 01:43

ああ、railsでしたね
tomoharu

2020/02/04 17:02

ありがとうございます。この問題って結構起こり得ると思うのですが。。。皆さんはどう解消されているのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.43%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問