3

私たちは 3.2.9 で Rails エンジンに取り組んでいます。エンジンは次のように生成されます:

rails plugin new rails_engine -mountable --skip-test-unit --dummy-path=spec/dummy

初期設定の後、通常の Rails アプリで行うのと同じようにモデルを生成できます。

rails g model post name:string

db/migrate/ の下に作成された移行ファイルがあります。次に、/ rails_engine の下で db:migrate を実行しました。

rake db:migrate

エラーが発生します:

Don't know how to build task 'db:migrate'

利用可能なレーキ タスクを一覧表示します。

bundle exec rake --tasks
rake build         # Build test_itemx-0.0.1.gem into the pkg directory
rake clobber_rdoc  # Remove RDoc HTML files
rake install       # Build and install test_itemx-0.0.1.gem into system gems
rake rdoc          # Build RDoc HTML files
rake release       # Create tag v0.0.1 and build and push test_itemx-0.0.1.gem to Rubygems
rake rerdoc        # Rebuild RDoc HTML files

その中に db:migrate はありません。問題は、db タスクを rake にロードする方法です。

4

2 に答える 2

2

これは予期される動作です。マウント可能なエンジンであることを忘れないでください。独自の環境はありません。Rails アプリケーション (エンジンではなく、実際のアプリ) にマウントする必要があります。エンジンにはデータベースがありません。マウントされている親アプリで定義されたデータベースを使用します。したがって、明らかに db:migrate は機能しません。

エンジンの親アプリで次の操作を行います。

  1. :path または :git オプションを使用して、Rails アプリケーションの Gemfile に別のエンジンとしてエンジンをマウントします。

    gem 'engine_name', :path=>'path/to/engine/directory'

  2. bundle install

  3. rake engine_name:install:migrations

  4. rake db:migrate

于 2012-11-23T16:43:15.620 に答える
1

エンジン フォルダに spec/dummy を入力し、rake db:migrate と test Env を実行したところ、db/schema.rb が追加されました。しかし、以前は spec/dummy/db フォルダーを手動で追加する必要がありました。

于 2014-02-10T16:03:59.047 に答える