2011-10-05 2 views
2

My Rails 3 애플리케이션은 주 ORM으로 Datamapper (dm-rails)를 사용하지만, 사용중인 맞춤 보석에 필요한대로 ActiveRecord를로드해야합니다.Datamapper 및 ActiveRecord : 마이그레이션 레이크 작업

내 문제는 응용 프로그램이 이제 두 개의 db:migrate 레이크 작업을 가지고 있다는 것입니다, 나는 rake db:migrate을 실행하면 나는 다음과 같은 오류 얻을 :

rake aborted! 
VERSION is required 

Tasks: TOP => db:migrate => db:migrate:up 
(See full trace by running task with --trace) 

가 어떻게이 액티브 레이크 작업이 숨겨져 있는지 확인합니까을 나는 할 수 있도록 Datamapper 마이그레이션 작업을 실행 하시겠습니까? automigrate 사용은 옵션이 아닙니다. 또한 실제 db:migrate 레이크 작업을 사용하고 다른 레이크 작업은 사용하지 않고 일부 콘솔 해결 방법을 사용하려고합니다.

편집 : 나의 현재 해결 방법은 단순히 DB 네임 스페이스 아래 Datamapper 레이크 작업을 복사 작업을 다른 네임 스페이스에서 파일을 사용자 정의에서 다시 정의하는 것입니다. 이 작동합니다. 그것은 과잉 것처럼 보이고 나는 더 깨끗한 해결책을 선호 할 것이다.

+0

어떻게 했습니까 ?? Datamapper Rake 작업은 어디에 있습니까? 나는 같은 문제가있다. – mltsy

답변

0

AHA! 이것은 당신이 겪고있는 동일한 문제가 나도 몰라,하지만 난 내 응용 프로그램에 문제가 config/application.rb 있다는 발견

라인 :

# Pick the frameworks you want: 
require 'action_controller/railtie' 
require 'dm-rails/railtie' 
# require 'action_mailer/railtie' 
# require 'active_resource/railtie' 
# require 'rails/test_unit/railtie' 
: require 'rails/all' 함께 Datamapper 프로젝트를 위해 교체해야합니다

db : migrate의 Datamapper 레이크 작업은 실제로 dm-rails/railtie (dm-migrations이 아님)에 포함되어 있습니다. 나는 문제 (AR rake db task)가 active_resource/railtie에 있다고 생각하는데, 당신이 DataMapper를 사용한다면 원하지 않는 것이다.

레이크가 사용할 작업을 결정하는 방법을 모르지만 두 가지가 정의되어 있으면 같은 이름의 두 작업을 모두 실행하려고합니다. 귀하의 경우에는

그러나, 실제로 DB를을 무시할 나는 당신의 해결 방법과 같은 다른 네임 스페이스를 사용 제외하고 생각할 수있는 유일한 해결책이 될 경우에active_resource/railtie을해야 할 수도 있습니다 : 같은 것을 사용하여 레이크 작업을 마이그레이션 이 사용자 지정 작업 파일 :

namespace :db do 
    Rake::Task["db:migrate"].clear 
    task :migrate do 
    ... 
    end 
end