在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