Help us understand the problem. What is going on with this article?

RailsのEngineでmigrationを幾分シンプルにする方法

More than 3 years have passed since last update.

railsでengineを利用する際に、migrationを実行する場合、

$ rake railties:install:migrations
$ rake db:migrate

RailsGuideだとこのような感じで、
一旦engine側のmigrationファイルをコピーしてから実行するというフローになっているのですが、
正直面倒だったりします。

そこで、rails db:migrate一発で済ます方法がこの記事にある通り。
ただ、これだと rake db:migrate:reset 叩いた時にengine側のmigrationが走ってくれないという問題があり、
最終的に以下に落ち着きました。

module EngineWithMigrations
  class Engine < ::Rails::Engine
    isolate_namespace EngineWithMigrations

    initializer :append_migrations do |app|
      unless app.root.to_s.match root.to_s
        config.paths['db/migrate'].expanded.each do |expanded_path|
          app.config.paths['db/migrate'] << expanded_path
        end
        ActiveRecord::Tasks::DatabaseTasks.migrations_paths = app.config.paths['db/migrate'].to_a # これがないと db:migrate:reset がうまく動かない
      end
    end
  end
end

動作環境: ruby2.3.0, rails4.2.5

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away