2014-12-02 58 views
1

查看文档'Example clock.rb file'here,您可以看到我的代码完全遵循发条约定(?)。但是,我收到这个错误,我似乎无法修复。我尝试了多元化和单变化的不同变量。NameError using Rails,Sidekiq&Clockwork

`<module:Clockwork>': uninitialized constant Clockwork::Event::Manager (NameError) 
    from /Users/MightyMouse/Desktop/DevBootcamp/phase-3/medmento/config/clock.rb:7:in `<top (required)>' 
    from /Users/MightyMouse/.rvm/gems/ruby-2.0.0-p598/gems/clockwork-1.1.0/bin/clockwork:12:in `require' 
    from /Users/MightyMouse/.rvm/gems/ruby-2.0.0-p598/gems/clockwork-1.1.0/bin/clockwork:12:in `<top (required)>' 
    from /Users/MightyMouse/.rvm/gems/ruby-2.0.0-p598/bin/clockwork:23:in `load' 
    from /Users/MightyMouse/.rvm/gems/ruby-2.0.0-p598/bin/clockwork:23:in `<main>' 
    from /Users/MightyMouse/.rvm/gems/ruby-2.0.0-p598/bin/ruby_executable_hooks:15:in `eval' 
    from /Users/MightyMouse/.rvm/gems/ruby-2.0.0-p598/bin/ruby_executable_hooks:15:in `<main>' 

这是我clock.rb文件:

require_relative "../config/boot" 
require_relative "../config/environment" 

require 'clockwork' 
require 'clockwork/database_events' 

module Clockwork 



    Clockwork.manager = Event::Manager.new 
    sync_database_events model: ClockworkEvent, every: 1.minute do |model_instance| 

    TwilioWorker.perform_async 
    end 


end 

从本质上讲,我希望发条会(1)通过每个model_instance就像上面循环,(2)找到和frequency_period(通过数据库关联组成“时间”),以及(3)在“时间”的右侧调用TwilioWorker

我试过用下面的代码替换块。当我运行clock.rb,我能够从Twilio接到一个电话:

every(1.minutes, "twilio_call.job") { TwilioWorker.perform_async } 

回答

1

看看发条宝石模块结构。如果你想引用此文件:https://github.com/tomykaira/clockwork/blob/master/lib/clockwork/manager.rb ,那么你就需要使用

Clockwork.manager = Manager.new

(可能已经默认)

代替

Clockwork.manager = Event::Manager.new

因为Manager类直接位于发条模块内部(您可能以

Clockwork.manager = DatabaseEvents::Manager.new

这是一种不同的情况,因为Manager引用了发条模块内的DatabaseEvents模块内的不同类。