카테고리 없음
[루비 온 레일] 레일 레이크 작업이 ActiveRecord 모델에 대한 액세스를 제공합니까?
필살기쓰세요
2021. 1. 10. 19:31
알아 내면 작업은 다음과 같아야합니다.
namespace :test do
task :new_task => :environment do
puts Parent.all.inspect
end
end
=> :environment
작업에 추가 된 종속성을 확인합니다.
구성이 필요할 수 있습니다 (모든 필수 모델을 지정해야 함).
예 :
require 'config/environment'
또는 각각 별도로 요구할 수 있지만 AR이 설정되지 않은 등의 환경 문제가있을 수 있습니다.)
-------------------레이크 작업을 작성하기 시작 하면 생성기를 사용하여 작업을 스텁 처리하십시오.
예를 들면 :
rails g task my_tasks task_one task_two task_three
lib / tasks에서 생성 된 스텁 my_tasks.rake
(분명히 자신의 네임 스페이스를 사용합니다.)이 생성됩니다. 이는 다음과 같습니다.
namespace :my_tasks do
desc "TODO"
task :task_one => :environment do
end
desc "TODO"
task :task_two => :environment do
end
desc "TODO"
task :task_three => :environment do
end
end
사용 하려는 특정 모델이 필요한 프로덕션 환경을 사용하지 않는 한 모든 레일 모델 등은 각 작업 블록 내에서 현재 환경 에 사용할 수 있습니다. 작업 본문 내에서이 작업을 수행하십시오. (IIRC는 Rails 버전에 따라 다릅니다.)
-------------------새로운 루비 해시 구문 (Ruby 1.9)을 사용하면 환경이 레이크 작업에 다음과 같이 추가됩니다.
namespace :test do
task new_task: :environment do
puts Parent.all.inspect
end
end
-------------------: environment 의존성은 매우 정확하게 호출되지만, rake는 여전히 당신의 모델이 의존하는 다른 보석에 대해 알지 못할 수 있습니다-내 경우에는 'protected_attributes'.
대답은 다음을 실행하는 것입니다.
bundle exec rake test:new_task
이렇게하면 환경에 Gemfile에 지정된 모든 gem이 포함됩니다.
-------------------아래 명령을 사용하여 작업 생성 (작업 이름이있는 네임 스페이스) :
rails g task test new_task
논리를 추가하려면 아래 구문을 사용하십시오.
namespace :test do
desc 'Test new task'
task new_task: :environment do
puts Parent.all.inspect
end
end
아래 명령을 사용하여 위의 작업을 실행하십시오.
bundle exec rake test:new_task
또는
rake test:new_task
출처
https://stackoverflow.com/questions/1904940