ruby-on-rails - rails - 루비 온 레일즈 강좌




Rails 작업이 있습니다. 스크립트/러너 또는 레이크를 사용해야합니까? (6)

Ad Hoc Rails 작업을 위해 우리는 몇 가지 구현 대안을 가지고 있습니다.

script/runner some_useful_thing

과:

rake some:other_useful_thing

어느 옵션을 선호합니까? 명확한 마음에 드는 것있는 경우에, 언제, 나가 이제까지 다른 사람을 사용하는 것을 고려해야 하는가? 그렇지 않다면, 왜 당신은 그것이 비추천 경고없이 프레임 워크에 여전히 존재한다고 생각합니까?


FWIW는 레이크를 위해 스크립트 러너를 사용하는 것으로부터 약간의 움직임 이있을 것으로 보인다.

업데이트 (2009 년 4 월 25 일) : 정기적 인 작업을 위해 스크립트 / 러너와 달리 레이크 작업을 사용하는 것이 좋습니다.

또한 이 게시물 에 따라 반복적 인 작업을 위해 레이크를 사용할 수 있습니다.

자정에 야간 작업 데이터베이스를 야간에 실행하려면 다음과 같은 cronjob을 작성할 수 있습니다.

0 0 * * * cd / var / www / apps / rails_app / && / usr / local / bin / rake RAILS_ENV = 프로덕션 utils : send_expire_soon_emails


Rails 3.0 이상에서는 config/environment.rbconfig/application.rb 가 필요하며 config/boot.rb 가 필요합니다.

따라서 Rails 3에 앱을로드하려면 여전히 environment.rb 만 필요 environment.rb


그것들의 차이점은 script/runner Rails 작업을하는 반면, Rake 작업은 :environment 과 같은 작업을 의존하여 말하지 않으면 않습니다 :environment , this :

task :some_useful_task => :environment do
  # do some useful task
end

Rails를 부팅하는 것이 값 비싸기 때문에 피해야한다면 건너 뛸 가치가 있습니다.

그것 이외에, 그들은 대략 동등하다. 나는 둘 다 사용하지만, 최근에는 script/runner 사용하여 스크립트를 별도로 실행했습니다.


내가 한 일은 일반적인 루비 스크립트를 작성하고 script/maintenance 디렉토리에 넣는 것입니다.

레일을로드하고 모든 모델 등에 액세스하려면 파일 상단에 require '../../config/environment.rb'require '../../config/environment.rb' .


인상 스크립트 / 주자는 주로 주기적 작업을위한 것이 었습니다. 예 : 실행중인 크론 작업 :

SomeClass.update_from_web('http://www.sourcefordata.gov/')

하나의 명령에 대해 스크립트 / 러너가 정상적으로 작동 할 수 있습니다. 반복되는 모든 것에 대해, 갈퀴 작업은 장기적으로는 더 쉬우 며, 수행 작업을 잊어 버린 경우 요약 작업이 수행됩니다.





rake