2014-01-23 4 views
0
#config/scheduler.rb 

set :output, 'log/cron.log' 

every 1.minutes do 
    rake 'reports:generate' 
end 

Когда я бегу crontab -l я получаю следующий результат:Использование всякий раз, когда камень с Синатрой

* * * * * /bin/bash -l -c 'cd <path-to-app> bundle exec rake reports:generate --silent >> log/cron.log 2>&1' 

Во-первых, это, кажется, использовать мой system ruby, который 1.8.7, есть ли способ изменить это?

Во-вторых, задача не выполняется, но единственное, что проявляется в моем cron.log является следующее:

Your Ruby version is 1.8.7, but your Gemfile specified 2.0.0 

Я пытался puts в журнал без успеха, так что я в основном не идея, что происходит. Кажется, что задача начинается, но затем не удается записать ничего в журнал. Я понятия не имею, как отлаживать это, поэтому, пожалуйста, помогите.

Я нахожусь на OS X, и мое приложение работает на Синатре.

редактировать: Я использую rbenv управлять своими версиями рубин, так что я предполагаю, что я должен сказать хрон, чтобы загрузить rbenv каким-то образом? Когда я cd в папку приложения и запустить ruby -v я

ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12.5.0] 
+0

у вас есть рубиновая версия 1.8.7, переключитесь на 2.0.0 –

ответ

1

Кажется, проблема была с rbenv, и не обязательно sinatra или whenever. Это решило мою проблему:

#schedlue.rb 
command "cd #{Dir.pwd} && RACK_ENV=#{environment} rbenv exec bundle exec rake reports:generate" 

Добавляя rbenv exec мы успешно загрузили правильную версию рубиновой перед запуском задачи грабель.

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