Merge pull request #15269 from arunagw/aa-fixes-8930
rake railties:install:migrations respects the order of railties
This commit is contained in:
commit
be4b3df8bb
@ -366,7 +366,7 @@ namespace :railties do
|
||||
task :migrations => :'db:load_config' do
|
||||
to_load = ENV['FROM'].blank? ? :all : ENV['FROM'].split(",").map {|n| n.strip }
|
||||
railties = {}
|
||||
Rails.application.railties.each do |railtie|
|
||||
Rails.application.migration_railties.each do |railtie|
|
||||
next unless to_load == :all || to_load.include?(railtie.railtie_name)
|
||||
|
||||
if railtie.respond_to?(:paths) && (path = railtie.paths['db/migrate'].first)
|
||||
|
@ -364,6 +364,10 @@ def y(*objects)
|
||||
end
|
||||
end
|
||||
|
||||
def migration_railties # :nodoc:
|
||||
(ordered_railties & railties_without_main_app).reverse
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
alias :build_middleware_stack :app
|
||||
@ -394,6 +398,11 @@ def run_console_blocks(app) #:nodoc:
|
||||
super
|
||||
end
|
||||
|
||||
def railties_without_main_app # :nodoc:
|
||||
@railties_without_main_app ||= Rails::Railtie.subclasses.map(&:instance) +
|
||||
Rails::Engine.subclasses.map(&:instance)
|
||||
end
|
||||
|
||||
# Returns the ordered railties for this application considering railties_order.
|
||||
def ordered_railties #:nodoc:
|
||||
@ordered_railties ||= begin
|
||||
|
@ -112,6 +112,38 @@ def up
|
||||
end
|
||||
end
|
||||
|
||||
test 'respects the order of railties when installing migrations' do
|
||||
@blog = engine "blog" do |plugin|
|
||||
plugin.write "lib/blog.rb", <<-RUBY
|
||||
module Blog
|
||||
class Engine < ::Rails::Engine
|
||||
end
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
||||
@plugin.write "db/migrate/1_create_users.rb", <<-RUBY
|
||||
class CreateUsers < ActiveRecord::Migration
|
||||
end
|
||||
RUBY
|
||||
|
||||
@blog.write "db/migrate/2_create_blogs.rb", <<-RUBY
|
||||
class CreateBlogs < ActiveRecord::Migration
|
||||
end
|
||||
RUBY
|
||||
|
||||
add_to_config("config.railties_order = [Bukkits::Engine, Blog::Engine, :all, :main_app]")
|
||||
|
||||
boot_rails
|
||||
|
||||
Dir.chdir(app_path) do
|
||||
output = `bundle exec rake railties:install:migrations`.split("\n")
|
||||
|
||||
assert_match(/Copied migration \d+_create_users.bukkits.rb from bukkits/, output.first)
|
||||
assert_match(/Copied migration \d+_create_blogs.blog_engine.rb from blog_engine/, output.last)
|
||||
end
|
||||
end
|
||||
|
||||
test "mountable engine should copy migrations within engine_path" do
|
||||
@plugin.write "lib/bukkits.rb", <<-RUBY
|
||||
module Bukkits
|
||||
|
Loading…
Reference in New Issue
Block a user