为什么帽子部署会导致问题,但是帽子部署:冷却工作正常?

时间:2012-02-04 08:19:56

标签: ruby-on-rails-3 capistrano

我正在将网站上传到服务器。当我使用cap deploy:cold时,我可以成功上传网站,网站运行正常。但是,我正在提前计划并想要一种更新网站上的代码/在db上运行迁移的方法,而不会丢失数据库中的所有数据,这在我使用cap deploy:cold时似乎会发生。

我的deploy.rb文件包含:

require "bundler/capistrano"
#require "csv"

set :application, "my domain"
set :user, "my username"

set :repository, "."
set :deploy_via, :copy
set :deploy_to, "/home/users/#{user}/html/#{application}"
set :ssh_options, { :user => user, :port => 50022 }
set :use_sudo, false

set :scm, :none

role :web, application
role :app, application
role :db, application, :primary => true

namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch
    #{File.join(current_path,'tmp','restart.txt')}"
end
end

此代码是我们的托管服务提供商建议使用的代码。正如我所提到的,cap deploy:cold成功运行,网站按预期工作。当我运行cap deploy时,我收到错误 - We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly.我注意到cap deploy:cold调用的进程是deploy:updatedeploy:migratedeploy:start。为了尝试缩小问题范围,我尝试单独运行deploy:update,它可以正常运行,但在加载站点时会产生相同的错误消息。运行cap deploy:start无法解决问题。

是否有人能够了解这里可能发生的事情?你能否确认我应该如何处理网站代码&将来运行数据库迁移,而不会丢失数据库中当前的数据? `

1 个答案:

答案 0 :(得分:1)

如果我正确阅读,您需要一个命令来更新代码并执行所有待处理的迁移。幸运的是,cap deploy:migrations正是这样做的。 (不要与仅迁移的cap deploy:migrate混淆。

如果您只想使用cap deploy来运行迁移,可以添加:

before 'deploy:symlink', 'deploy:migrate' #use hook 'deploy:create_symlink' if using 2.10.0

给你的食谱。