Мина развертывание не удалось из Vagrant Ubuntu/trusty32

Я новичок в рельсах. Провели все это утро, пытаясь устранить эту странную проблему. Я пытаюсь развернуть приложение rails с помощью mina на промежуточном сервере. Мой сервер - Ubuntu/trusty32 14.04, работающий с Vagrant VM. И сервер, который я пытаюсь развернуть, - это CentOS выпуск 6.6. Вот задача развертывания из config/deploy.rb:

task :deploy => :environment do
  deploy do
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'
    invoke :'bundle:install'
    invoke :'rails:db_migrate'
    invoke :'rails:assets_precompile'
    to :launch do
      queue  "cd #{deploy_to}/#{current_path} && RAILS_ENV=#{rails_env} bundle exec puma -t #{puma_threads} -e #{rails_env} -d -b unix://#{deploy_to}/shared#{socket_file} --pidfile #{deploy_to}/shared#{pid_file}"
      queue "sudo echo -1000 > /proc/`cat #{deploy_to}/shared#{pid_file}`/oom_score_adj"                  
    end
  end
end

И это ошибка, которую я получаю.

Puma запускается в одиночном режиме

  • Версия 2.11.0 (ruby 2.0.0-p598), кодовое имя: Intrepid Squirrel
  • Минимальное количество тем: 0, максимальное количество тем: 5
  • Окружающая среда: постановка
  • ... режим демона

cat: /var/www/staging/shared/tmp/pids/puma.pid: нет такого файла или каталога

cat: /var/www/staging/shared/tmp/pids/puma.pid: нет такого файла или каталога

bash: строка 176: /proc//oom_score_adj: такого файла или каталога нет

! ОШИБКА: сбой развертывания.

Странная вещь, если я уберу строку queue "sudo echo -1000 > /proc/`cat #{deploy_to}/shared#{pid_file}`/oom_score_adj" оба файла pid и сокета созданы. Я думаю, что эта строка выполняет до того, как puma завершит демонизацию и создание файла pid. Но с другой стороны, этот же скрипт отлично работает с другого сервера.

1 ответ

Решение

Помещение случайного сна между строк, кажется, делает трюк:

queue! "cd #{deploy_to}/#{current_path} && RAILS_ENV=#{rails_env} bundle exec puma -t #{puma_threads} -e #{rails_env} -d -b unix://#{deploy_to}/shared#{socket_file} --pidfile #{deploy_to}/shared#{pid_file}"
queue! "sleep 10"
queue! "sudo echo -1000 > /proc/`cat #{deploy_to}/shared#{pid_file}`/oom_score_adj"

Но открыты для лучшего решения:)

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