我没有将我的database.yml文件检查到源代码控制中,我想知道其他人在部署时将此文件复制到服务器的做法/最佳做法。
我使用Capistrano进行部署。
答案 0 :(得分:17)
目前,我保留了一个名为shared的共享文件夹,它位于我的deply_to dirs之外。我保留了我的database.yml和其他配置文件,并在部署期间有一个钩子到cp那些over。这是我执行复制的简单上限任务:
after "deploy:update_code","deploy:config_symlink"
namespace :deploy do
task :config_symlink do
run "cp #{shared_path}/../../shared/database.yml #{release_path}/config/database.yml"
end
end
答案 1 :(得分:9)
我的部署脚本使用after "deploy:update_code"
挂钩断开,因为该步骤似乎已尝试访问数据库。所以我这样做:
before "deploy:assets:precompile", 'deploy:symlink_shared'
namespace :deploy do
task :symlink_shared do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
end
end
答案 2 :(得分:4)
我已经在这个问题上打了很长时间,并为 Capistrano 3 找到了一个更简单的解决方案。希望这有助于那些人。
我无法为我的生活获取“run”或“execute”命令以在我的deploy.rb文件中工作。事实证明,在 Capistrano 3 中,您应该将database.yml放在deployment_directory / shared文件夹下。然后,在deployment.rb文件中,将该文件包含在linked_files变量中,并在部署期间自动符号链接到同一路径。
以下是一个例子:
对于初学者,我没有将database.yml检入源代码控制。我的database.yml位于生产服务器上:
无功/网络/ MyApp的/共享/配置/ database.yml的
在我的deployment.rb中,我添加了这一行
set :linked_files, %w{config/database.yml}
在部署期间,capistrano会自动将文件符号链接到:
无功/网络/ MyApp的/当前/配置/ database.yml的
希望这可以帮助其他人。今天我真的在墙上敲打着我的头。