【问题标题】:Clockwork / Clockworkd produces 'No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)'Clockwork / Clockworkd 产生“未找到 Rakefile(查找:rakefile、Rakefile、rakefile.rb、Rakefile.rb)”
【发布时间】:2013-09-05 16:59:43
【问题描述】:

我正在使用 Clockworkd 在后台运行发条。如果我只是运行时钟,它会成功执行 rake 命令。如果我通过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` }

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 clockwork


    【解决方案1】:

    运行您的rake get_updates 任务的进程可能与您的 Rakefile 所在的工作目录不同。

    您可以Dir.chdir '/dir/containing/Rakefile/',或者使用-f 选项显式地将路径传递给Rakefile:

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

    【讨论】:

    • 我链接到该文件,但它随后抛出错误'不知道如何构建任务'环境''。所以我猜它的运行方式与发条的方式不同,因为它无法在 Rails 应用程序的上下文中运行任何东西。环境指的是我的 rake 文件中的任务定义(我假设)-> task :get_updates => :environment do
    • 啊,毕竟你可能需要chdir,因为也许你的整个过程可能需要在你的应用程序的顶级目录中才能让Rake知道内置的-在 Rails Rake 任务中。我事先更新了答案以包含 Dir.chdir,并删除了显式的 -f 选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多