首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里设置环境变量,以便可以从“`config/initializer/*. to”中读取这些变量?

在哪里设置环境变量,以便可以从“`config/initializer/*. to”中读取这些变量?
EN

Stack Overflow用户
提问于 2012-09-14 16:38:22
回答 2查看 3.7K关注 0票数 2

我在config/initializers/app_environment_variables.rb中有我所有的环境变量,这个设置到目前为止一直在工作,除了现在我需要使用config/environments.rbconfig/environments/*.rb中的变量,这些变量似乎是在config/initializer/*.rb之前执行的。

我发现页面显示“配置顺序”如下,

  1. config/preinitializer.rb
  2. config/environment.rb .
  3. 配置/环境/#{RAILS_ENV}.rb
  4. 插件初始化
  5. gem初始化
  6. 配置/初始化程序/*..rb
  7. ..。

但这是2009年的信息,而我在Rails 3.1上。我希望在"初始化“或"配置”指南中看到这样的信息,但要么我找不到信息,要么它就不在那里。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-24 20:26:48

我在一个新的“演示”应用程序(rails new demo)中将puts "--- #{__FILE__}"添加到以下每个文件的顶部:

代码语言:javascript
复制
config.ru
config/application.rb
config/boot.rb
config/environment.rb
config/environments/development.rb
config/initializers/hello.rb

然后,我简单地用rails server启动了这个应用程序,并获得了以下输出(....表示简洁):

代码语言:javascript
复制
--- /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

因此,初始化顺序如下:

代码语言:javascript
复制
/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之前)之前加载环境变量,则需要加载下一个读这个

票数 3
EN

Stack Overflow用户

发布于 2012-09-14 18:02:14

我建议使用福尔曼.env文件来设置环境变量。

  1. 创建一个进入源代码管理的.env.sample文件
  2. 创建自己的.env文件,并将.env添加到.gitignore
  3. 使用foreman start而不是rails s
  4. 享受这种敬畏(默认为5000端口)。

.env.sample

代码语言:javascript
复制
AWS_ACCESS_ID=YOUR_ACCESSKEY_GOES_HERE
ETC_ETC=ETC ETC ETC

好处:

  • 您不会将您的敏感信息提交到源代码管理。
  • 它们确实是环境变量,在运行任何代码之前都会设置。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12428632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档