我使用SettingsLogic。
我为此创建了两个模型:Settings 和 PrivateSettings。我将设置分开:密码、令牌、api 密钥……在 PrivateSettings 中,其余在 Settings 中。
对于设置:
class Settings < Settingslogic
source "#{Rails.root}/config/settings.yml"
namespace Rails.env
end
该settings.yml
文件存储在 Git 中。
对于 PrivateSettings :
class PrivateSettings < Settingslogic
source "#{Rails.root}/config/private_settings.yml"
namespace Rails.env
end
我将private_settings-sample.yml
文件存储在 Git 中,以保持示例同步。生产数据显然没有填充。开发人员克隆存储库,并将其重命名private_settings.yml
为能够工作。
config/private_settings.yml
也是.gitignore
为了避免错误地包含在内。
去生产,我使用 Capistrano 中的一个特定任务来创建一个符号链接,指向private_settings.yml
存储在服务器中的正确文件(在,和config
旁边的目录中):current
releases
shared
namespace :deploy do
task :config_settings do
run "cd #{current_path}/config && ln -sf #{shared_path}/../config/private_settings.yml private_settings.yml"
end
end
after "deploy:update", "deploy:config_settings"