2015-02-17 2 views
0

Наше приложение - Rails 4.1, пассажир 4, развернутый с Capistrano 3.1.Capistrano 3 - как запросить БД во время развертывания

При обработке транзакций по кредитным картам я регистрирую его в нашей БД, а затем нажимаю Authorize.net, чтобы фактически зарядить $. При успешном обновлении транзакции в нашей системе.

Я хочу убедиться, что Пассажир не перезагружается, пока он ждет ответа Authorize.net. Один из вариантов - запросить БД, чтобы увидеть, есть ли ожидающие транзакции и ждать перезагрузки Пассажира.

Как я могу загрузить Rails Env и получить доступ к модели из задачи Capistrano? Это очень легко из грабли. Что-то вроде этого в deploy.rb:

task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
    If Donations.pending == true 
     sleep 5 
    else 
     execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 
end 

Я открыт для других предложений. Я заранее благодарю вас за любой совет.

ответ

0

Я думаю, что ваш ответ может действительно быть в вашем вопросе: использовать задачу рейка. Capistrano сам не запускается на сервере и, вероятно, не имеет доступа к базе данных, используемой запущенной системой. Но задача rake, запущенная на сервере приложений, должна иметь доступ к полному стеке приложений, позволяя вам использовать реальные модели вашего приложения.

Посмотрите на How do I run a rake task from Capistrano?

Смежные вопросы