Запуск rpush в качестве демона на производстве с использованием capistrano

Я настроил свое приложение rails для использования с rpush. Локально работает в разработке, используя rpush start, Но теперь я хочу развернуть его на своем сервере EC2, используя capistrano-2.15.5.

Часть моей deploy.rb:

after "deploy:stop",    "delayed_job:stop"
after "deploy:stop",    "rpush:stop"

after "deploy:start",   "delayed_job:start"
after "deploy:start",   "rpush:start"

after "deploy:restart", "delayed_job:restart"
after "deploy:restart", "rpush:restart"

namespace :rpush do
  %w[start stop restart].each do |command|
    desc "#{command} rpush deamon"
    task command, roles: :app, except: {no_release: true} do
      run "cd #{deploy_to}/current && bundle exec rpush #{command}"
    end
  end
end

Теперь проблемы

  • это начинается в среде разработки. Я пытался понять эту страницу, которая говорит мне, как это сделать, но я не смог.
  • Я не знаю, хранится ли pid в /current Дир или /shared реж. Он должен быть в общем доступе, чтобы файл сохранялся между развертываниями.

Если кто-то сделал это (даже по-другому), пожалуйста, скажите мне, как это сделать.

Или, как я могу исправить мой рецепт кепки и /initializers/rpush

1 ответ

Решение

Для Capistrano 3:

after :finished, :restart_rpush do
  on roles(:web) do
    within release_path do
      with rails_env: fetch(:rails_env) do
        execute :bundle, :exec, "rpush stop -e #{fetch(:rails_env)}"
        execute :bundle, :exec, "rpush start -e #{fetch(:rails_env)}"
      end
    end
  end
end

Затем проверьте, что tmp и другие каталоги связаны правильно:

set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/uploads}
Другие вопросы по тегам