2010-01-28 4 views
1

Ruby on Rails 애플리케이션에서 두 개의 데이터베이스를 사용하고 있습니다. 하나는 응용 프로그램 용 데이터베이스이고 두 번째 데이터베이스는 Rails에 제어가 제공되지 않는 독립적 인 데이터베이스입니다.Ruby on Rails와 db : fixtures : load - 일부 모델을 무시할 수 있습니까?

문제는 devt를 로딩 할 때 dev 데이터베이스로의 연결에서 독립적 인 데이터베이스의 테이블에 대해 DELETE 문을 실행하려고 시도하는 것입니다. 분명히 오류가 발생합니다.

나는 레일스가 아무것도하지 않고 독립된 데이터베이스를 읽는 것을 원치 않는다. 나는 특히 테이블을 삭제하려고하지 않는다.

조명기를로드 할 때 두 번째 데이터베이스의 모델을 무시하도록 Rails에 알리는 간단한 방법이 있습니까?

업데이트 : 레일즈는 establish_connection을 사용하여 모델 클래스에서 올바른 연결을 지정했지만 독립적 인 데이터베이스의 테이블이 개발 연결의 일부라고 생각합니다. 또 다른 참고 사항으로, 모든 모델 클래스는 script/console에서 원하는대로 정확하게 작동합니다.

답변

0

좋아 ... 내 문제는 내가 또한 고정을 만든 보조 데이터베이스에서 모델을 만들 수 script/generate를 사용하는 것이 었습니다, 스키마에 testing로 구성된 데이터베이스에 대한 일을 할 것입니다 , 테스트 및 마이그레이션 파일. 스키마, 테스트 및 마이그레이션 파일을 제거했지만 이 아닌은 생성 된 고정구 (빈 파일 이었음)를 제거 했으므로 생성되지 않았습니다.

보조 데이터베이스와에서 (모델 포함) 모든 파일을 제거한 후 dev에 DB의 마이그레이션을 다시 실행, 나는 보조 DB에서 databases.yml 다시 모델 파일과 데이터베이스를 추가하는 문제를 해결했다.

Rails의 레이크 작업이 잘못된 데이터베이스에서 왜 발생하는지 여전히 설명 할 수 없으며 2 차 데이터베이스에 schema_migrations 테이블이 레일스에 추가되어 실망했습니다. 분명히 필요하지 않습니다.

그러나 지금은 작동합니다.

2
rake db:fixtures:load RAILS_ENV=testing 

database.yml

+0

나는 환경과 그것을 시도 변수는 게시하기 전에 내보내기를 사용하여 설정됩니다. 당신의 제안에 따라, 나는 또한이 방법을 시도했다. 같은 오류. –

+0

* .yml에서 원하는 데이터베이스로 데이터를로드하기위한 고유의 조명기를 작성할 수 있습니다. 제공하는 정보로 제안 할 수 있습니다. GL –

+0

'rake db : fixtures : load RAILS_ENV = test' (테스트하지 않음)가 나를 위해 일했습니다. –

1

test/fixtures 디렉토리에서 model_name.yml 파일을 삭제하면 Rails가이 테이블을 삭제하려고 시도하지 않습니다.

*.yml 개의 파일과 stopusingfixtures 개의 파일을 모두 삭제하는 것이 좋습니다.

+1

그것이 내가 결국 내 대답에서 발견 한 것입니다. 그러나 여전히 잘못된 테이블에서 삭제하려고해서는 안됩니다.저는 PHP/Python을 사용하는 사람입니다. 그리고 나는 훨씬 덜 까다로운 테스트를 모델링하는 데 익숙합니다. 마이그레이션은 훌륭하지만 나머지는 단지 두통 일뿐입니다. 내가 제공 한 링크를 확인해 보겠습니다. 감사. –

1

나는 당신이 또한과 같이, environment.rb에에 :: 액티브에 독립적 인 데이터베이스의 모든 테이블을 추가하여 SchemaDumper.ignore_tables을 이러한 목표를 달성 할 수있을 것 같아요 :

ActiveRecord::SchemaDumper.ignore_tables = ['independent_db_table1', 'independent_db_table2'] 
관련 문제