这就是我运行rails console
命令的方式:
COMPANY=b2b RAILS_ENV=development DEPLOY_ENV=localhost rails console
相反,我想通过在内部设置这些变量来仅运行 rails console
命令。我该怎么做?
我看到了一些答案并制作了 config/company.yml
文件:
development:
COMPANY: b2b
DEPLOY_ENV: localhost
production:
COMPANY: b2c
DEPLOY_ENV: xyz.com
我编写了以下config/initializers/company.rb
文件:
COMPANY_CONFIG = YAML.load_file("#{::Rails.root}/config/company.yml")[::Rails.env]
如何在某些帮助器/ Controller 中访问这些变量?我不明白该怎么做? 仅运行 rails console
或 rails server
而不传递上面显示的额外环境变量后,如何设置这些 ENV 变量?
最佳答案
您无法在 yaml 文件中设置环境变量,这是不同的事情。使用dotenv gem 用于管理环境变量。
但是有肮脏的黑客。您可以在 Rails 加载时创建 ENV 变量
将此代码添加到 before_configuration
在config/application.rb
:
config.before_configuration do
env_file = File.join(Rails.root, 'config', 'company.yml') # Find yml file
YAML.load(File.open(env_file)).each do |key, value| # Open file
ENV[key.to_s] = value # Set value to ENV
end if File.exists?(env_file) # If file exists
end
现在您可以从应用程序中任何位置的 yml 文件访问环境变量。
我没有测试这个,但我认为这个有效。 罢工>
这项工作。
关于ruby-on-rails - 如何在 Rails 中拥有不同的环境变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557850/