8

Railsエンジンを開発するプロジェクトに参加したばかりで、テスト用のダミーアプリもあります。

foo/
foo/spec/dummy/

同一の移行があります

foo/db/migrate/
foo/spec/dummy/db/migrate/

rake db:migrateダミーアプリからなら大丈夫です。エンジン (現在のディレクトリ = foo) から同じことを行うと、同じ名前の複数の移行に関するエラーが発生します。

Q1) Rakefile は壊れていますか? (db:migrateダミーアプリまで再帰する必要がありますか?)

Q2) 移行は 1 つのディレクトリにのみ配置する必要がありますか? もしそうなら、どれですか?

Rails 3.2.9、ruby 1.9.3p194 を使用しています。

4

1 に答える 1

8

質問
1Rakefileには、スペック/ダミーアプリを説明するためのエントリが必要です。例えば、

Bundler::GemHelper.install_tasks
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'

rakefileの詳細な例は、https: //github.com/twinge/questionnaire_engine/blob/engine2/Rakefileです。

質問
2IMO、移行はfoo / db / migrateフォルダーにのみ存在する必要があり foo / spec / dummy / db/migrateには存在しない必要があります。実際、私はダミーのdb/migrateまたはdb/schemaをバージョン管理していません。

なんで?私はダミーアプリを使用して、エンジンの完全なインストールが100%機能することを確認します。したがって、foo / spec / dummy dbの状態をバージョン管理した場合、以前にインストールしたかのようにテストします。

エンジンの例
https://github.com/twinge/questionnaire_engine/tree/engine2

于 2013-02-07T04:49:32.770 に答える