У меня очень простая задача под названием 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) отлично работает. Почему нельзя правильно капистрано cd
(сменить каталог) в каталог сайта, чтобы запустить команду?
Спасибо!
Вам следует использовать:
execute "cd #{release_path} && script/console production"
С капистрано 3.x
Каждый run
команда в основном выполняется в своей собственной среде оболочки. Итак, вам нужно будет сделать что-то вроде:
run "cd #{release_path} && script/console production"
Однако вы не можете запускать команды в script/console
так как script/console
для интерактивный использование.
Вы хотите script/runner
вот так:
run "cd #{release_path} && script/runner -e production 'FeedEntry.update_all'"
Надеюсь, это поможет.
Правильный способ сделать это - использовать вот так:
within variable_with_the_folder_path do
execute :command, parameter
end
например:
# Bower Cache Clean:
bower_path = fetch(:bower_path)
within bower_path do
execute :node, "#{bower_path_to_bin}", 'cache clean'
end