2

私はすべての環境変数を に持ってconfig/initializers/app_environment_variables.rbおり、このセットアップはこれまでのところ機能していますが、config/environments.rbとの変数を使用する必要があることを除いて、これらは のconfig/environments/*.rb前に実行されるようですconfig/initializer/*.rb

次のように「構成順序」を示すこのページを見つけました。

  1. config/preinitializer.rb
  2. config/environment.rb
  3. config/environments/#{RAILS_ENV}.rb
  4. プラグインの初期化
  5. 宝石の初期化
  6. config/initializer/*.rb
  7. ...

しかし、その情報は2009年のものですが、私はRails 3.1. 「初期化」ガイドまたは「構成」ガイドでこの種の情報が表示されることを期待していましたが、情報が見つからなかったか、そこにありませんでした。

4

2 に答える 2

3

puts "--- #{__FILE__}"新しい「デモ」アプリ ( rails new demo)の次の各ファイルの先頭に追加しました。

config.ru
config/application.rb
config/boot.rb
config/environment.rb
config/environments/development.rb
config/initializers/hello.rb

次に、 でアプリを起動するだけでrails server、次の出力が得られました (....簡潔にするため):

--- /Volumes/..../initialization-order/demo/config/boot.rb
--- /Volumes/..../initialization-order/demo/config/application.rb
=> Booting WEBrick
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
--- /Volumes/..../initialization-order/demo/config.ru
--- /Volumes/..../initialization-order/demo/config/environment.rb
--- /Volumes/..../initialization-order/demo/config/environments/development.rb
--- /Volumes/..../initialization-order/demo/config/initializers/hello.rb
[2013-05-16 15:05:59] INFO  WEBrick 1.3.1
[2013-05-16 15:05:59] INFO  ruby 1.9.3 (2013-02-22) [x86_64-darwin12.3.0]
[2013-05-16 15:05:59] INFO  WEBrick::HTTPServer#start: pid=91029 port=3000
^C[2013-05-16 15:06:25] INFO  going to shutdown ...
[2013-05-16 15:06:25] INFO  WEBrick::HTTPServer#start done.
Exiting

したがって、初期化の順序は次のとおりです。

/config/boot.rb
/config/application.rb
/config.ru
/config/environment.rb
/config/environments/development.rb
/config/initializers/hello.rb

config/environments/*.rbしたがって、環境変数を の前(および の前/config/initializers/*.rb)にロードしたい場合は、この次をお読みください

于 2013-05-24T20:26:48.887 に答える
2

フォアマン.envファイルを使用して環境変数を設定することをお勧めします。

  1. .env.sampleソース管理に入るファイルを作成します
  2. 独自の.envファイルを作成し、に追加.envします.gitignore
  3. foreman startではなく使用rails s
  4. 素晴らしさをお楽しみください(デフォルトはポート5000)。

.env.sample

AWS_ACCESS_ID=YOUR_ACCESSKEY_GOES_HERE
ETC_ETC=ETC ETC ETC

利点:

  • 機密情報をソース管理に委ねることはありません。
  • それらは本当に環境変数であり、コードが実行される前に設定されます。
于 2012-09-14T18:02:14.317 に答える