Как я могу запустить rake с --trace внутри capistrano?

Я хочу, чтобы capistrano вызывал rake с помощью --trace, чтобы я мог понять, почему он терпит неудачу. Как мне это сделать? set :rake 'rake --trace' не работает.


person John Bachir    schedule 15.08.2011    source источник
comment
Когда вы говорите, что это не работает, что происходит?   -  person Thiago Jackiw    schedule 16.08.2011


Ответы (2)


Лучший способ, который я нашел, это:

set :rake, "#{rake} --trace"

Таким образом, вы не перезаписываете переменную rake.

Например, если вы используете bundler, перед этим устанавливается:

"bundle exec rake"

и после:

"bundle exec rake --trace"

person Camille    schedule 20.10.2011

Скорее всего, ваши пользовательские задачи не используют переменные rake, а вместо этого жестко кодируют rake, вот пример:

run("rake sass:compile")

Это жестко закодировано и не будет заботиться о вашей настройке set :rake, 'rake --trace', вот правильный способ:

run("#{fetch(:rake)} sass:compile")

Или, сокращенно:

run("#{rake} sass:compile")

Вы можете увидеть это на практике в исходном коде Capistrano, в одном месте, где рецепты по умолчанию фактически вызывают rake, в задаче миграции: https://github.com/capistrano/capistrano/blob/master/lib/capistrano/recipes/deploy.rb#L387

person Lee Hambley    schedule 16.08.2011
comment
как ни странно, миграция - это то место, где мое развертывание не удавалось, и я хотел включить --trace, поэтому я думаю, что это должно было сработать... - person John Bachir; 17.08.2011