2011-01-10 3 views

답변

2

당신은 load을 시도 할 수 : http://www.ruby-doc.org/core/classes/Kernel.html#M001417

다음은 그러나 하나의 예를

# in your controller 
def create 
    load('/path/to/your/file.rb') 
end 

있어, 나는 그것이 외부 스크립트를 실행하여 레일에서 루비 코드를 호출하기 위해 일반적으로 나쁜 습관이다 말할 것입니다. Ruby 파일을 두 개로 나누는 것이 더 낫다고 생각합니다.

  1. 클래스 및/또는 모듈에서 스크립트의 기능을 요약하는 파일입니다.
  2. 명령 행에서 상기 클래스/모듈을 호출하는 하나.

그런 다음 Rails 앱에서 require # 1을 사용하고 클래스/모듈을 사용하십시오.

는 예를 들어, 스크립트는 현재 simple.rb이라고 가정 해 봅시다 다음과 같습니다

# hello_world.rb 
class HelloWorld 
    def say_it 
    puts 'Hello, world!' 
    end 
end 

당신은의 내용을 대체 할 것이다 :

# simple.rb 
puts 'Hello, world!' 

그런 다음이 hello_world.rb를 생성 할 것 simple.rb with this :

require 'hello_world.rb' 
HelloWorld.new.say_it 

그런 다음 컨트롤 r을 사용하면 simple.rb을 우회하여 HelloWorld 클래스를 직접 사용할 수 있습니다.

0

스크립트를 자체 프로세스로 실행 하시겠습니까? 그렇다면 이것들을 확인하십시오.

  1. 배경 작업 : http://codeforpeople.rubyforge.org/svn/bj/trunk/README
  2. 또는 delayed_job :

    시스템 "RAILS_ENV = # {RAILS_ENV} 루비 # {RAILS_ROOT}/스크립트 또한 https://github.com/tobi/delayed_job

  3. , 당신은 다음과 같은 스크립트 주자를 사용할 수 있습니다/러너 'MyModel.my_method (some_param)'& "

,557 결국은 작업을 다른 프로세스에 넣습니다.

관련 문제