2015-02-05 5 views
0

rufus-scheduler를 사용하여 이라는 루비 온 레일즈 모델을 호출하려고합니다. Rubfus 스케줄러를 사용하여 Model 클래스를 호출하십시오.

그러나 아래 내 콘솔에서 다음과 같은 오류와 함께 실패 :

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'

scheduler caught exception:

는 내가 제대로 스케줄러에서 내 모델을 호출하고 있지 않다 같은데요?

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

'app\models\helloworld.rb'에서 HelloWorld라고 내 모델 클래스가 포함되어 있습니다 :

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

+0

첫 번째 줄의 시작뿐만 아니라 오류의 전체 백 트레이스도 포함하십시오. – jmettraux

+1

@jmettraux 지금 전체 오류로 업데이트되었습니다. :) – user2402135

답변

0

HelloWorld.new.foo 

대신

으로 시도

파일 'config\initializers\scheduler.rb' 내부에서 나는 다음과 같은이

HelloWorld::Foo.new 

귀하의 문제는 rufus-scheduler 또는 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 

?