[RUBY-ON-RAILS] 레일 '기본 레이크 작업을 재정의
RUBY-ON-RAILS레일 '기본 레이크 작업을 재정의
나는 레이크 DB의 기능을 무시하고자하는 레일 2.2 프로젝트를 : 테스트 : 작업을 준비합니다. 나는이 일 것이라고 생각하지만 그렇지 않습니다 :
#lib/tasks/db.rake
namespace :db do
namespace :test do
desc "Overridden version of rails' standard db:test:prepare task since the schema dump used in that can't handle DB enums"
task :prepare => [:environment] do
puts "doing db:structure:dump"
Rake::Task['db:structure:dump'].invoke
puts "doing db:test:clone_structure"
Rake::Task['db:test:clone_structure'].invoke
end
end
end
나는 표준 작업의 동작을 얻을. 내가하는 작업의 이름을 변경하는 경우 : 다음 prepare2 및 레이크 DB를 수행 시험 : prepare2는, 그것은 잘 작동합니다. 작업을 준비 :이에서 그리는 자연 결론은 광산이 표준에 의해 무시되도록 내 레이크 작업, 내장 레일 것들 전에 정의되고 있다는 점이다.
사람이 어떻게이 문제를 해결할 수있는 방법을 볼 수 있습니까? 새 작업을 사용하는 것보다 차라리 그것을 무시할 것입니다. 감사합니다, 최대
해결법
-
==============================
1.이미 존재하는 레이크 작업을 정의하면, 그 실행은 원래 작업의 실행에 추가됩니다; 두 작업이 실행됩니다.
이미 존재하는 레이크 작업을 정의하면, 그 실행은 원래 작업의 실행에 추가됩니다; 두 작업이 실행됩니다.
당신이 작업을 다시 정의하려면 먼저 원래 작업을 취소해야합니다
Rake::Task["db:test:prepare"].clear
이 작업은 레이크에서 실행 된 후, 다시 다시 호출해도 실행되지 않습니다하는 것이 유용합니다. 이것은 의도적으로 설계된 동작입니다하지만 당신은 다시 실행할 수 있도록 작업에 .reset 호출 할 수 있습니다.
-
==============================
2.당신은 당신의 자신을 추가하기 전에 기본 작업을 제거해야합니다 :
당신은 당신의 자신을 추가하기 전에 기본 작업을 제거해야합니다 :
Rake.application.instance_variable_get('@tasks').delete('db:test:prepare') namespace 'db' do namespace 'test' do task 'prepare' do # ... end end end
상당히 인기있는 관용구과 같이 remove_task라는 편리한 방법을 만드는 것입니다 :
Rake::TaskManager.class_eval do def remove_task(task_name) @tasks.delete(task_name.to_s) end end def remove_task(task_name) Rake.application.remove_task(task_name) end
(출처 : drnic / newgem)
-
==============================
3.그것에 코드 아래에 lib 디렉토리 / 작업 / 및 paster에 새로운 project.rake 파일을 만듭니다.
그것에 코드 아래에 lib 디렉토리 / 작업 / 및 paster에 새로운 project.rake 파일을 만듭니다.
namespace :mv do desc "Display hint and info for your rails 4 project" task info: :environment do puts 'Run rake test to test' end end task(:default).clear.enhance ['mv:info']
영감 Krasimir Angelovas 블로그
from https://stackoverflow.com/questions/8112074/overriding-rails-default-rake-tasks by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 RVM을 사용하고 전 세계적으로 사용할 수 보석을 만들려면 어떻게해야합니까? (0) | 2020.02.18 |
---|---|
[RUBY-ON-RAILS] ActiveModel 시리얼에 매개 변수를 전달하는 방법 (0) | 2020.02.18 |
[RUBY-ON-RAILS] 레일 서버에 POST의 JSON (0) | 2020.02.18 |
[RUBY-ON-RAILS] 유증 + Omniauth - 어떻게 함께 추가 매개 변수를 전달하는 방법? (0) | 2020.02.18 |
[RUBY-ON-RAILS] 레일 Gemfile의 사용은 무엇입니까? (0) | 2020.02.18 |