Rails アプリで Webpack を使用している場合は、もっと簡単な解決策があります。
TLDR: またはのいずれprocess.env.RAILS_ENV
かを使用process.env.NODE_ENV
webpack でコンパイルされた JavaScript ファイルの 1 つで:
console.log('Rails env: ', process.env.RAILS_ENV);
console.log('Node env: ', process.env.NODE_ENV);
コピーして貼り付けることができる完全なソリューションは以下のとおりです。process.env のドキュメント。
u/matthew's answerで指摘されているように、erb ファイルで Rails.env を使用することにはリスクがあります。同様に、NODE_ENV
実稼働サーバーで が適切に構成されていない場合、予期しない、または危険な動作が発生する可能性があります。両方の変数をチェックし、一致しない場合はエラーをスローする小さなモジュールを実装することをお勧めします。
フルソリューション
- 両方の環境をチェックする小さなモジュールを実装する
- 必要に応じてこのモジュールをインポートします
javascript/environment/index.js
/* global process */
const railsEnv = process.env.RAILS_ENV;
const nodeEnv = process.env.NODE_ENV;
if (!railsEnv || railsEnv !== nodeEnv) {
const errorMsg = `RAILS_ENV (${railsEnv}) does not match NODE_ENV (${nodeEnv})`;
throw new Error(errorMsg);
}
export default railsEnv;
React コンポーネントなど、好きな場所で使用できるようになりました。
javascript/components/MyComponent
import env from '../../environment';
class PaintTheKeyboard extends React.Component {
constructor(props) {
super(props);
console.log(env);
}
...
render() { ... }
}