在Rails 3+的每个环境中,将独立子目录中的初始化程序分离出来的最佳方式是什么?Rails 3 :: config/initializers每个环境的独立目录
我听说config/initializers的所有子目录都会被提取出来,所以每个环境下的子目录不会工作,除非创造性地使用了猴子补丁。
举例:配置/.../初始化/ <环境> /*.rb
在Rails 3+的每个环境中,将独立子目录中的初始化程序分离出来的最佳方式是什么?Rails 3 :: config/initializers每个环境的独立目录
我听说config/initializers的所有子目录都会被提取出来,所以每个环境下的子目录不会工作,除非创造性地使用了猴子补丁。
举例:配置/.../初始化/ <环境> /*.rb
# config/application.rb
module MyProject
class Application < Rails::Application
# modifies initializers to load as follows:
#
# 1. config/initializers/*.rb
# 2. config/initializers/environments/#{Rails.env}/**/*.rb
#
unless config.paths['config/initializers_environment']
old_initializers_dir = config.paths['config/initializers']
config.paths['config/initializers'] = Dir[File.join(old_initializers_dir, '*.rb')]
config.paths['config/initializers_environment'] = Dir[File.join(old_initializers_dir, 'environments', Rails.env, '**', '*.rb')]
initializer :load_per_environment_initializers do
config.paths['config/initializers_environment'].to_a.sort.each do |initializer|
load(initializer)
end
end
end
# ...
这个答案得到避免一个Rails ::发动机工作的复杂性,并记入黄宗泽SF Ruby on Rails聚会和朋友。它还允许通过命令行/ shell设置覆盖并与Heroku一起使用。
)更改配置/初始化/ **/* RB看起来这样:
FB_SECRET_KEY = 'kjkjdsfkjalsfyoursecretherelkjsdfljkasdfljdjlf'
要:)
FB_SECRET_KEY = ENV['APPNAME_FB_SECRET_KEY']
1我创建一个配置/ secrets.rb这是在的.gitignore是这样的:
ENV['APPNAME_FB_SECRET_KEY'] ||= 'kjkjdsfkjalsfyoursecretherelkjsdfljkasdfljdjlf'
. . .
2)增加了该行启动脚本/导轨:
require File.expand_path('../../config/secrets', __FILE__)
3)和除的.gitignore
config/secrets.rb
奖金)添加一个配置/ secrets.rb.example模板文件,该文件是不是在的.gitignore。
这种方式适用于生产可配置的设置(邮件凭证,oauth令牌等) – Barry
未经测试。可能会伤及小孩。 – Barry
+1为适当的警告/免责声明 –
不错,干净和有趣,+1;) – apneadiving