2017-11-19 1 views
0

는 내가 레일 콘솔/lib 폴더

module Reports 
    module MyMod 
    def test 
    ....Test methods... 
    end 
end 
end 

에이 모듈을 호출하려고 레일, 이것은에서

include Reports::MyMod; test 

불려/config.schedule.rb 시도했습니다

every 1.minute do 
    runner 'Reports::MyMod.test' 
    runner 'Reports.MyMod.test' 
    runner 'include Reports::MyMod; conc' 

end 

어떤 방법으로 작동합니까?이 방법을 어떻게 호출합니까? 또한 모델에서이 메서드를 어떻게 호출합니까?

답변

0

모듈을 메서드의 네임 스페이스로 사용하려는 것 같습니다. 이러한 경우에 당신은 클래스 메소드 만들 수 있습니다

module Reports 
    module MyMod 
    class << self 
     def test 
     ....Test methods... 
     end 

     #more methods 
    end 
end 
end 

을 그리고 당신은 그것을 호출 할 수

Reports::MyMod.test 

당신이 전에 이런 식으로 할 수 없었던 이유를이 인스턴스로 선언 되었기 때문에 메서드 및 모듈을 인스턴스화 할 수 없습니다. 이를 위해서는 수업에 포함시켜야합니다.

파일이 자동로드되었는지 확인하십시오. 그렇지 않으면 명시 적으로 먼저 요구해야합니다.

+0

자동로드를 설명 할 수 있습니까? 자동로드되지 않습니까? –

+0

필자는 파일 경로가 autoloade 경로에 있고 디렉토리가 Rails 규칙을 따라야한다는 것을 말하고 있습니다. – EJ2015