[RUBY-ON-RAILS] 음주 레이크 작업 액티브 모델에 대한 액세스를 제공 레일?
RUBY-ON-RAILS음주 레이크 작업 액티브 모델에 대한 액세스를 제공 레일?
나는 사용자 정의 레이크 작업을 만들기 위해 노력하고 있어요,하지만 내 모델에 액세스 할 필요 없다 보인다. 나는 이것이 암시 레일 작업에 포함 된 것을 생각했다.
나는 lib 디렉토리 / 작업 / test.rake에 다음 코드를 :
namespace :test do
task :new_task do
puts Parent.all.inspect
end
end
그리고 여기에 무엇 내 상위 모델의 외모와 같은 :
class Parent < ActiveRecord::Base
has_many :children
end
그것은 아주 간단한 예이지만, 나는 다음과 같은 오류가 발생합니다 :
/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent
(See full trace by running task with --trace)
어떤 아이디어? 감사
해결법
-
==============================
1.그것을 파악, 작업은 다음과 같은 모양입니다 :
그것을 파악, 작업은 다음과 같은 모양입니다 :
namespace :test do task :new_task => :environment do puts Parent.all.inspect end end
작업에 추가 환경 의존성 다음 => 공지 사항
-
==============================
2.당신이 당신의 구성을 필요로 할 수도 있습니다 (등 모든 필요한 모델을 지정해야 함)
당신이 당신의 구성을 필요로 할 수도 있습니다 (등 모든 필요한 모델을 지정해야 함)
예를 들면 :
require 'config/environment'
양자 택일로) 당신은 별도로 각을 필요로 할 수 있지만 환경 문제가 등을 설정하지 AR있을 수 있습니다
-
==============================
3.당신이 당신의 레이크 작업을 쓰기 시작할 때, 당신을 위해 그들을 스텁 발전기를 사용합니다.
당신이 당신의 레이크 작업을 쓰기 시작할 때, 당신을 위해 그들을 스텁 발전기를 사용합니다.
예를 들면 :
rails g task my_tasks task_one task_two task_three
당신은 my_tasks.rake라는 lib 디렉토리 / 작업에서 생성 된 스텁을 얻을 것이다 (분명히 자신의 네임 스페이스를 사용합니다.)과 같이 표시됩니다 어떤 :
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이 레일의 다른 버전간에 변한다.)
-
==============================
4.새로운 해시 루비 구 (루비 1.9)와 환경 레이크 태스크 같이 첨가한다 :
새로운 해시 루비 구 (루비 1.9)와 환경 레이크 태스크 같이 첨가한다 :
namespace :test do task new_task: :environment do puts Parent.all.inspect end end
-
==============================
5.: 환경 의존성이 매우 올바르게 호출되지만 레이크 여전히 모델에 의존한다는 다른 보석에 대해 알고하지 않을 수 있습니다 - 광산, 'protected_attributes'한 경우.
: 환경 의존성이 매우 올바르게 호출되지만 레이크 여전히 모델에 의존한다는 다른 보석에 대해 알고하지 않을 수 있습니다 - 광산, 'protected_attributes'한 경우.
대답은 실행하는 것입니다 :
bundle exec rake test:new_task
환경이 Gemfile에 지정된 보석을 포함이 보장.
-
==============================
6.(작업 이름과 네임 스페이스) 명령 아래 사용하여 작업을 생성합니다 :
(작업 이름과 네임 스페이스) 명령 아래 사용하여 작업을 생성합니다 :
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
from https://stackoverflow.com/questions/876396/do-rails-rake-tasks-provide-access-to-activerecord-models by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] has_and_belongs_to_many에 대한 마이그레이션을 레일 테이블 조인 (0) | 2020.02.17 |
---|---|
[RUBY-ON-RAILS] 베스트 루비 레일 웹 소켓 도구 [폐쇄] (0) | 2020.02.17 |
[RUBY-ON-RAILS] 4 레일 : 자산 생산에로드되지 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 루비 온 레일즈 @ 변수 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 어떻게 도우미 안쪽 컨트롤러를 사용하는 - 난간 (0) | 2020.02.17 |