2013-09-05 3 views
1

Я работаю в фоновом режиме с помощью Clockworkd. Если я просто запускаю часовую работу, он успешно выполняет команду rake. Если я запустил его через clockworkd, это приведет к ошибке. Я не уверен, почему он не работает. Любые советы/предложения будут оценены.Clockwork/Clockworkd производит 'No Rakefile found (ищет: rakefile, Rakefile, rakefile.rb, Rakefile.rb)'

Начальная clockworkd

RAILS_ENV=production clockworkd -c lib/clock.rb start --log 

ошибка

I, [2013-09-05T17:53:01.035923 #2580] INFO -- : Triggering 'Get Updates' 
rake aborted! 
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb) 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:632:in `raw_load_rakefile' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:94:in `block in load_rakefile' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:165:in `standard_exception_handling' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:93:in `load_rakefile' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:77:in `block in run' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:165:in `standard_exception_handling' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/lib/rake/application.rb:75:in `run' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/gems/rake-10.1.0/bin/rake:33:in `<top (required)>' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bin/rake:23:in `load' 
/Users/lukesmith/.rvm/gems/ruby-1.9.3-p327/bin/rake:23:in `<main>' 

clock.rb

require 'clockwork' 
require File.expand_path('../../config/boot', __FILE__) 
require File.expand_path('../../config/environment', __FILE__) 

include Clockwork 

handler do |job| 
    puts "Running #{job}" 
end 

every(1.hour, 'Get Updates') { `rake get_updates` } 

ответ

0

Процесс запуска йо Ур rake get_updates Задача не может находиться в том же рабочем каталоге, что и ваш Rakefile.

Вы можете либо Dir.chdir '/dir/containing/Rakefile/', либо явно передать путь к Rakefile используя -f вариант:

every(1.hour, 'Get Updates') do 
    Dir.chdir '/dir/containing/Rakefile/' 
    `rake get_updates` 
end 
+1

Я связан с файлом, но затем бросил ошибку «Не знаю, как построить задачу 'Окружающая среда''. Поэтому я предполагаю, что он не работает так же, как и часы, поскольку он не может ничего запускать в контексте приложения Rails. Окружающая среда, относящаяся к определению задачи в моем файле рейка (я предполагаю) -> задача: get_updates =>: environment do –

+0

А, вам, возможно, потребуется выполнить 'chdir' в конце концов, так как, возможно, весь ваш процесс, возможно, потребуется каталог верхнего уровня вашего приложения, чтобы Rake знал о встроенных задачах Rails Rake. Я обновил свой ответ, чтобы включить 'Dir.chdir' заранее, и удалить явную опцию' -f'. –

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

  • Нет связанных вопросов^_^