【问题标题】:How to manage Rails database.yml如何管理 Rails database.yml
【发布时间】:2009-09-19 23:51:46
【问题描述】:

如果多个人在处理项目并且数据库位置不同(尤其是套接字),那么处理 Rails database.yml 的最佳方法是什么。

【问题讨论】:

  • 澄清:我希望它与 Capistrano 一起使用,它从 svn 中签出,所以我认为忽略不工作。
  • 我为 Capistrano 案例增加了两个步骤。

标签: mysql ruby-on-rails svn


【解决方案1】:

首先,将database.yml 移动到模板文件中。

如果你在 Git 上:

git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"

或者,如果您使用的是 Subversion:

svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"

其次,忽略 .yml 版本。

如果你在 Git 上:

cat > .gitignore
config/database.yml

git add .gitignore
git commit -m "ignored database.yml"

如果您使用的是 Subversion:

svn propset svn:ignore config "database.yml"

三、安装Where's your database.yml, dude?:

script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude

如果开发人员尚未创建自己的本地版本 config/database.yml,该插件会在运行任何 Rake 任务之前提醒开发人员。

四、设置Capistrano部署任务:

# in RAILS_ROOT/config/deploy.rb:
after 'deploy:update_code', 'deploy:symlink_db'

namespace :deploy do
  desc "Symlinks the database.yml"
  task :symlink_db, :roles => :app do
    run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
  end
end

五、上传服务器的database.yml版本:

scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml

【讨论】:

  • 习惯上(尽管不是必需的)“接受”您认为最有帮助的答案。我认为您甚至会在第一次接受时获得徽章。
  • 我的错 - 投了票,但没有看到支票。完成,谢谢!
  • 我必须在 'deploy:update_code'、'deploy:symlink_db' 之后更改为 'deploy:assets:precompile'、'deploy:symlink_db' 之前,然后它才起作用。
  • 一切正常,除了第五步。它说没有这样的目录,但它就在那里。
  • 只是一个重要说明,我建议使用cat >> .gitignore 代替。因为否则你会毁掉你现有的文件......
【解决方案2】:

在 Capistrano 3 中,无需添加新任务,您只需执行以下操作:

set :linked_files, %w{config/database.yml}

【讨论】:

    【解决方案3】:

    您可以使用 svn:ignore 属性来防止该文件被版本控制。

    Instructions here.

    【讨论】:

      【解决方案4】:

      在部署期间使用 capistrano 和 ERb 提示输入凭据的另一种方法。

      http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/

      【讨论】:

        【解决方案5】:

        除了上述答案之外,我还编写了一个类似于“你的 database.yml 呢,伙计?”的 rake 任务,但允许保留任何配置文件的模板示例。看看吧:https://github.com/Velid/exemplify

        作为编写单独的生产配置并通过 Capistrano 链接它们的替代方法,我还建议为您的凭据使用环境变量:

        password: <%= ENV['PROD_DATABASE_PASSWORD'] %>
        

        周围有很多 handy toolsways 可以做到这一点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-03
          • 2011-11-10
          • 1970-01-01
          • 2016-06-17
          • 2023-03-04
          • 2014-06-24
          • 1970-01-01
          • 2016-08-25
          相关资源
          最近更新 更多