Rails 환경에서 Ruby 파일을 어떻게 실행하나요?


106

Rails 환경에서 Ruby 파일을 실행하고 싶습니다. rails runner는 내가하고 싶은 일을 거의 수행하지만 파일 이름과 인수 만 제공하고 싶습니다. 이전에 해본 적이 있기 때문에 이것이 가능할 것이라고 확신합니다. 누군가이 작업을 수행하는 방법을 상기시켜 줄 수 있습니까?

답변:



36

environment.rb스크립트에서 간단히 요구 하십시오. 스크립트가 scriptRails 앱 의 디렉토리 에있는 경우

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

RAILS_ENV스크립트 실행시 환경 변수 를 설정하여 사용 환경 (개발 / 테스트 / 프로덕션)을 제어 할 수 있습니다 .

RAILS_ENV=production ruby script/test.rb

위의 코드를 실행하면 "home / apps / config / environment"가 표시됩니다. 동일한 디렉토리에서 2 개의 레일 앱이 실행되고있는 경우 어떻게됩니까? 어떤 환경이 필요합니까? 내 지역 상자 에서이 문제에 직면하고 있습니다. 친절하게 제안
비제이 살리

@VijaySali app/script디렉토리 에서 스크립트를 실행하고 있다고 가정합니다 . 환경 파일은 개별 앱에서 가져옵니다.
iltempo

그것은 나를 위해 일한 덕분에, 그래, 나는 ENV [ 'RAILS_ENV']뿐만 아니라 추가
비제이 살리

26

Runner 는 Rails 컨텍스트에서 비대화 형으로 Ruby 코드를 실행합니다.

에서 rails runner명령 :

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.

다음과 같이 스크립트를위한 shebang 라인으로 runner를 사용할 수도 있습니다.

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

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

1
"rails"가 아닌 "/ Users / me / rails_project / script / rails"를 전체로 지정할 때만 작동하는 이유는 무엇입니까? TIA
iphone007 2015

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

@ iphone007은 스크립트를 실행하는 위치에 따라 달라질 수 있습니다.
David Moles

7

이것은 오래된 질문이지만 제 생각에는 갈퀴 작업을 만드는 것이 도움이된다고 생각합니다. 실제로 매우 쉽습니다.

에서 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에서 실행되는 경우 프로덕션 데이터베이스에 연결된 동안 실행됩니다. 마이그레이션이나 수정 된 테이블을 지원하는 데 특히 유용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.