2015-02-05 63 views
0

我想用rufus調度程序調用我的Ruby on Rails模型,名爲HelloWorld使用Rufus調度程序來調用我的Model類

但是下面用下面的錯誤而失敗在我的控制檯:

scheduler caught exception:

undefined method 'Foo' for #<Class:0x23371e0 ================================================================================ scheduler caught exception: undefined method 'Foo' for #<Class:0x23371e0> C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.21/lib/active_record/dynamic_matchers.rb:55:in 'method_missing' C:/my-dash/config/initializers/scheduler.rb:6:in 'block in <top (required)>' C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rufus-scheduler-2.0.24/lib/rufus/sc/jobs.rb:230:in 'call' C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rufus-scheduler-2.0.24/lib/rufus/sc/jobs.rb:230:in 'trigger_block' C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rufus-scheduler-2.0.24/lib/rufus/sc/jobs.rb:204:in 'block in trigger' C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rufus-scheduler-2.0.24/lib/rufus/sc/scheduler.rb:430:in 'call' C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rufus-scheduler-2.0.24/lib/rufus/sc/scheduler.rb:430:in 'block in trigger_job'

我認爲我沒有正確地調用從計劃我的模型?

內部文件'config\initializers\scheduler.rb'我有以下幾點:

require 'rufus-scheduler' 
scheduler = Rufus::Scheduler.new 
scheduler.every '10s' do  
HelloWorld::Foo.new 
end 

我叫'app\models\helloworld.rb'HelloWorld Model類包含:

class HelloWorld < ActiveRecord::Base 
attr_accessible :my_name 

def Foo 
    my_var = "Some text here" 
    #and then do some more stuff here... 
end 
end 
+0

當您在調度程序之外調用HelloWorld :: Foo.new(例如,來自控制器)時會發生什麼? – jmettraux 2015-02-05 21:54:17

+0

請包括錯誤的完整回溯,而不僅僅是第一行的開始。 – jmettraux 2015-02-05 22:17:03

+1

@jmettraux現在全錯誤更新:) – user2402135 2015-02-06 11:59:46

回答

0

HelloWorld.new.foo 

,而不是

嘗試
HelloWorld::Foo.new 

你的問題與rufus-scheduler或Rails無關,只是你試圖直接在類上調用實例方法。花時間學習Ruby。

你可以用這個程序,只是Ruby和你玩,沒有Rails的,沒有魯弗斯調度:

class HelloWorld 
    def Foo 
    puts "Foo" 
    end 
end 

begin 
    HelloWorld::Foo 
rescue => x 
    p x 
end 

begin 
    HelloWorld::Foo.new 
rescue => x 
    p x 
end 

begin 
    HelloWorld.new.Foo 
rescue => x 
    p x 
end 

運行上面的產量計劃:

#<NameError: uninitialized constant HelloWorld::Foo> 
#<NameError: uninitialized constant HelloWorld::Foo> 
Foo 

否則這個程序可能是更容易:

class Dog 
    def bark 
    puts "woa" 
    end 
end 

哪個代碼不會產生異常:

Dog::bark.new 

rex = Dog.new 
rex.bark 

相關問題