我正在将网站上传到服务器。当我使用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:update
,deploy:migrate
和deploy:start
。为了尝试缩小问题范围,我尝试单独运行deploy:update
,它可以正常运行,但在加载站点时会产生相同的错误消息。运行cap deploy:start
无法解决问题。
是否有人能够了解这里可能发生的事情?你能否确认我应该如何处理网站代码&将来运行数据库迁移,而不会丢失数据库中当前的数据? `
答案 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
给你的食谱。