我使用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旁边的目录中):currentreleasesshared
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"