每当宝马在新服务器上从Capistrano内执行时

时间:2014-08-10 15:23:26

标签: ruby-on-rails-3 capistrano whenever whenever-capistrano

我在生产中有一个Rails 3.2.14遗留应用程序,它运行正常。我正在将此应用程序迁移到新服务器,并将在切换时从生产中迁移数据库。到目前为止,我已经启动了应用程序并且它正在工作(大部分时间)。但是当我使用Capistrano部署到该服务器时,无论何时gem似乎都没有运行(尽管它在原始生产服务器上运行并更新crontab)。

我正在使用gem 0.7.3,capistrano 2.12.0,Ruby 1.9.3p194以保持环境相同。

这是我在Capistrano中的deploy.rb看起来像(并且无论何时在旧服务器上运行:

require "bundler/capistrano"
set :whenever_command, "bundle exec whenever"
require "whenever/capistrano"

server "72.14.181.80", :web, :app, :db, primary: true

set :application, "appname"
set :user, "deploy"
set :deploy_to, "/home/#{user}/#{application}"
set :use_sudo, false
set :rails_env, "production"


set :scm, "git"
set :repository, "git@github.com:username/#{application}.git"
set :branch, "master"


default_run_options[:pty] = true
ssh_options[:forward_agent] = true

after "deploy", "deploy:cleanup" # keep only the last 5 releases
after "deploy:update", "gps_listener:restart"

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
  desc "reload the database with seed data"
  task :seed do
    run "cd #{current_path}; bundle exec rake db:seed RAILS_ENV=#{rails_env}"
  end
end

namespace :gps_listener do
  task :start do
    run "#{sudo} start app-gps"
  end

  task :stop do
    run "#{sudo} stop app-gps"
  end

  task :restart do
    run "#{sudo} stop app-gps && sleep 1 && #{sudo} start app-gps"
  end
end

task :after_update_code do
  run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
  run "cd #{current_path}; RAILS_ENV=#{rails_env} bundle exec rake gps:listen"
end

有趣的是,当我使用rake任务执行和更新crontab时,我将部署到旧的生产服务器。但是,如果我在deploy.rb中切换IP并部署到我们的新服务器,它将不会执行,并且Capistrano输出不会显示任何可疑的东西。

有什么地方可以调试吗?我想保持两个服务器的Capistrano / Rails配置相同。只是不确定问题是什么。也许我忽视了一些事情。

还应该注意的是,当我在app / current目录中的新服务器上时,我可以运行以下命令,它将正确更新我的crontab:

RAILS_ENV=production bundle exec whenever -w

0 个答案:

没有答案