管理存储在github上的开源rails 3应用程序的安全性

时间:2010-12-10 19:12:23

标签: ruby-on-rails open-source github capistrano

对rails,开源以及很快就可以部署到生产环境的新手,我有一些安全考虑因素。

如何处理database.yml,how-to-manage-rails-database-yml

非常好

但是从我的观点来看,普通的rails应用程序中有更多的配置设置,不应该托管在公共github存储库中并部署到生产中,例如。

  • devise.rb - > config.pepper
  • secret_token.rb - > Application.config.secret_token
  • capistrano - > deploy.rb
  • ...

将.config / **** / *添加到.gitignore不仅会阻止来自 bundle install,db:create,db:migrate,rails server 的新开发人员,还会阻止生产配置到目前为止是否安装了带有初始化程序的新gem。

另一种可能性是使用敏感配置添加 environment.yml ,例如database.yml,其中初始化程序中的敏感配置将被覆盖?

这样可以在清理结账后轻松启动和运行,并且生产环境易于维护。

如何解决上述问题?

1 个答案:

答案 0 :(得分:5)

我通常会在这些文件中放入“安全”数据,这通常可用于开发目的。但是在制作中我将文件符号链接到capistrano的另一个位置,如下所示:

invoke_command "ln -sf #{shared_path}/database.yml #{release_path}/config/database.yml"

因此在生产服务器中,我有一堆文件覆盖源代码管理中的文件。我甚至不使用database.yml.example,只是开发人员同意在开发和测试中使用的一些合理的默认database.yml

对于个人设置,例如API密钥,我通常会创建一个config/settings.yml并从初始化程序中读取它们:

SETTINGS = YAML.load(IO.read(Rails.root.join("config", "settings.yml")))
YourApp::Application.config.secret_token = SETTINGS["secret_token"]