2017-11-28 1 views
0

엔진이있는 앱이 있습니다. 이 응용 프로그램의 내부 테스트를위한 더미 응용 프로그램을 만들었습니다. my_engine에 새 이전을 추가합니다. 그런 다음 rails my_engine:install:migrations을 실행하는 더미 응용 프로그램에서이 새로운 마이그레이션을 가져오고 'rake db : migrate'.더미 응용 프로그램의 데이터 오류 - 열이 없습니다.

그래서 두 스키마가 동일하게 보입니다. 나는 내 테스트를 실행할 때

그러나 나는 당신이 아이디어를 가지고 있습니까

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column my_table.new_field does not exist

를 얻을?

답변

0

development 환경에서만 마이그레이션을 실행했지만 test 환경에서는 마이그레이션하지 않은 것입니다 (따라서 테스트 테이블에는 없음).

1

test 환경에 대한 마이그레이션을 실행 RAILS_ENV=test rake db:migrate을 실행 해보십시오 RAILS_ENV=test 접두사와 동일한 명령을 수행하십시오. 당신이 레일을 사용하는 경우

또는 4.1 당신은 어떤이가하는 것은 당신의 rails_helper

https://relishapp.com/rspec/rspec-rails/docs/upgrade

ActiveRecord::Migration.maintain_test_schema!를 추가 할 수 있습니다 테스트 스키마가 중인 마이그레이션이있을 때 바로 올리는 것이 아니라, Rails는 스키마를로드하려고 시도합니다. 나중에 계류중인 마이 그 레이션이있는 경우 스키마가 로드 된 경우에만 예외가 발생합니다.

을 사용할 때주의해야 할 몇 가지 caveates 있습니다이 :

마이그레이션은 수동으로 실행해야; 이제는 '개발'환경에서만 수행해야합니다. 스키마가 초기화되지 않은 경우 예외가 발생합니다. 예외는 rake db : migrate를 실행해야한다는 지시 사항을 제공합니다.

이렇게하면 db:migrate을 한 번만 실행하면됩니다. 귀하의 바로 지금 development