2012-03-18 2 views
76

나는 레일 환경의 맥락에서 루비 파일을 실행합니다. 레일은 거의가 내가 원하는 것을 수행 러너,하지만 난 그냥 그것을 파일 이름과 인수를주고 싶습니다. 전에 해본 적이 있기 때문에 가능하다고 확신합니다. 누군가이 일을 어떻게 생각 나게 할 수 있습니까?Rails 환경에서 Ruby 파일을 실행하려면 어떻게해야합니까?

답변

28

은 단순히 당신의 스크립트에서 environment.rb을 필요로한다. 스크립트가 레일즈의 script 디렉토리에있는 경우 응용 프로그램은

require File.expand_path('../../config/environment', __FILE__) 

스크립트를 실행할 때 RAILS_ENV 환경 변수를 설정하여 (개발/테스트/생산) 사용 환경을 제어 할 수 있습니다을한다.

RAILS_ENV=production ruby script/test.rb 
+0

내가 그것을 "홈/응용 프로그램/설정/환경"을 줄 것이다 위의 코드를 실행하는 경우. 동일한 디렉토리에서 2 개의 레일 앱을 실행하면 어떻게 될까요? 어떤 환경을 취할 것입니까? 내 로컬 상자 에서이 문제에 직면하고있다. 친절하게 건의하십시오 –

+0

@ VijaySali 당신이'app/script' 디렉토리에서 스크립트를 실행하고 있다고 가정합니다. 환경 파일은 개별 앱에서 가져옵니다. 그것은 나를 위해 일한 – iltempo

+0

넵 덕분에, 나는 내가 지정할 때 [ 'RAILS_ENV는']뿐만 아니라 –

18

Runnerrails runner script.rb 비 대화 형 레일의 맥락에서 루비 코드를 실행 말한다.

------------------------------------------------------------- 
#!/usr/bin/env /Users/me/rails_project/script/rails runner 

Product.all.each { |p| p.price *= 2 ; p.save! } 
------------------------------------------------------------- 
+0

이유는 단지 전체가 아니라 그냥 "레일"에서 "/ 사용자/ME/rails_project/스크립트/레일을"작동합니까 ENV를 추가? TIA – iphone007

+0

다른 레일 명령에도 전체 경로를 나열해야합니까? (즉, 레일 서버) – colsen

3

이 오래된 질문이지만, 내 생각에 나는 종종 발견 :

Usage: runner [options] ('Some.ruby(code)' or a filename) 

    -e, --environment=name   Specifies the environment for the runner to operate under (test/development/production). 
            Default: development 

    -h, --help      Show this help message. 

당신은이 같은 스크립트의 오두막 라인으로 주자를 사용할 수 있습니다 rails runner 명령에서

레이크 작업을 만드는 데 도움이됩니다 ... 실제로는 매우 쉽습니다.

lib/tasks/example.rake에서 :

namespace :example do 

desc "Sample description you'd see if you ran: 'rake --tasks' in the terminal" 
task create_user: :environment do 
    User.create! first_name: "Foo", last_name: "Bar" 
end 

그리고 터미널 실행의 :

rake example:create_user 

가 로컬이 개발 데이터베이스의 컨텍스트에서 실행되며, Heroku가 실행할 경우 실행됩니다 프로덕션 데이터베이스에 연결되어 있습니다. 이 기능은 마이그레이션 또는 수정 된 테이블을 지원하는 데 특히 유용합니다.

관련 문제