Я новичок в рельсах. Все утро я пытался решить эту странную проблему. Я пытаюсь развернуть свое приложение 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 и socket. Я думаю, что эта строка выполняется до того, как puma завершит демонинизацию и создание файла pid. Но опять же, этот же сценарий отлично работает с другого сервера.
Помещение случайного сна между строками, похоже, помогает:
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"
Но открыты для лучшего решения :)