Load rake tasks defined in superclasses in context of railties

This commit is contained in:
Piotr Sarnacki 2010-10-09 20:11:36 +02:00
parent 8636f64def
commit b417cfbf01
2 changed files with 31 additions and 0 deletions

View File

@ -191,6 +191,13 @@ module Rails
def load_tasks
self.class.rake_tasks.each(&:call)
# load also tasks from all superclasses
klass = self.class.superclass
while klass.respond_to?(:rake_tasks)
klass.rake_tasks.each { |t| self.instance_exec(&t) }
klass = klass.superclass
end
end
def load_generators

View File

@ -103,6 +103,30 @@ module RailtiesTest
assert $ran_block
end
test "rake_tasks block defined in superclass of railtie is also executed" do
$ran_block = []
class Rails::Railtie
rake_tasks do
$ran_block << railtie_name
end
end
class MyTie < Rails::Railtie
railtie_name "my_tie"
end
require "#{app_path}/config/environment"
assert_equal [], $ran_block
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
AppTemplate::Application.load_tasks
assert $ran_block.include?("my_tie")
end
test "generators block is executed when MyApp.load_generators is called" do
$ran_block = false