Как выполнить команду на сервере с Capistrano? - PullRequest
0 голосов
/ 28 августа 2010

У меня есть очень простая задача, называемая update_feeds:

desc "Update feeds"
task :update_feeds do
  run "cd #{release_path}"
  run "script/console production"
  run "FeedEntry.update_all"
end

Всякий раз, когда я пытаюсь запустить эту задачу, я получаю следующее сообщение:

[out :: mysite.com] sh: script/console: No such file or directory

Я подумал, что это потому, что я не в нужном каталоге, но пытаюсь

run "cd ~/user/mysite.com/current"

вместо

run "cd #{release_path}"

Также не удается. Выполнение точно таких же команд вручную (через ssh) работает отлично. Почему не может capistrano правильно cd (сменить каталог) в каталог сайта для запуска команды?

Спасибо!


Обновление: Подобрал ответ, и большое спасибо всем, кто ответил. На самом деле лучшим ответом может быть один при сбое сервера , хотя суть обоих (один при сбое сервера и один при переполнении стека) одинакова.

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Вы хотите использовать скрипт / бегун.Он запускает экземпляр приложения для выполнения метода, который вы хотите вызвать.Однако он медленный, так как загружает все ваше приложение rails.

~/user/mysite.com/current/script/runner -e production FeedEntry.update_all 2>&1

Вы можете запустить его из задачи capistrano.

1 голос
/ 28 августа 2010

Я не могу себе представить, что вы сможете удаленно войти в консоль rails из capistrano. Я предлагаю вам вызвать метод вашей модели из грабли.

Как запустить грабли из Capistrano?

Что касается последней части вашего вопроса, вы входите на сервер с той же учетной записью, что и capistrano?

...