我想问一下关于 ruby on rails 的问题,可以使用 application.yml 设置环境变量
我在 application.yml 中有这样的代码
defaults: &defaults
STORE_URL: https://localhost:3000/
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults
并在 application.rb 上设置配置
Bundler.require(*Rails.groups)
if File.exists?(File.expand_path('../application.yml', __FILE__))
config = YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))
config.merge! config.fetch(Rails.env, {})
config.each do |key, value|
ENV[key] ||= value.to_s unless value.kind_of? Hash
end
end
并将此代码添加到 .gitignore
config/appication.yml
.project
当我在终端上测试时,输出应该是这样的,
[1] pry(main)> ENV
=> {"Test1"=>"Tester1",
"Test2"=>"Tester2",
"Test3"=>"Tester3"}
它应该在我添加一些键和值run rails c development
在 Rails 3.0.20 和 Ruby 1.9.3p545 中,当我按类型测试它或在 application.yml 上添加新的键和值时,它的工作非常简单。但是,在 Rails 4.1.5 和 Ruby 2.0.0p541 上,它不会那样
完整应用程序.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
if File.exists?(File.expand_path('../application.yml', __FILE__))
config = YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))
config.merge! config.fetch(Rails.env, {})
config.each do |key, value|
ENV[key] ||= value.to_s unless value.kind_of? Hash
end
end
module ModuleUpgrade
class Application < Rails::Application
end
end
需要你的帮助伙计们!谢谢