Всякий раз, когда гем исполняется из Capistrano на новом сервере

У меня есть старое приложение Rails 3.2.14, и оно работает нормально. Я перенесу это приложение на новый сервер и перенесу базу данных из рабочей среды во время переключения. До сих пор у меня приложение раскручивалось и оно работало (по большей части). Но когда я использую Capistrano для развертывания на этом сервере, каждый раз, когда gem не запускается (хотя он работает на исходном производственном сервере и обновляет crontab).

Я использую всякий раз, когда gem 0.7.3, capistrano 2.12.0, Ruby 1.9.3p194, чтобы сохранить среду идентичной.

Вот как выглядит мой deploy.rb в Capistrano (и работает на старом сервере для выполнения всякий раз:

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

Что интересно, когда я развертываю на нашем старом производственном сервере всякий раз, когда запускаю и обновляю crontab с граблями. Но если я переключу IP в deploy.rb и разверну на нашем новом сервере, он не будет выполняться, и вывод Capistrano не покажет ничего подозрительного, что я вижу.

Где-нибудь я могу это отладить? Я хочу, чтобы конфигурация Capistrano/Rails была одинаковой для обоих серверов. Просто не уверен, в чем проблема. Может быть, я что-то упускаю.

Также следует отметить, что, когда я на новом сервере в каталоге app/current, я могу запустить следующее, и он правильно обновит мой crontab:

RAILS_ENV=production bundle exec whenever -w

0 ответов

Другие вопросы по тегам