aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-24 09:47:55 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-24 10:03:03 +0100
commit25724c664d8af6c50903709da69a5871475383fe (patch)
tree55fa09b7dd4e538621e4bf33043d542af7e48912
parent5b26fa48755c461619f7d48f4cd28faa9db442f8 (diff)
downloadrails-25724c664d8af6c50903709da69a5871475383fe.tar.gz
rails-25724c664d8af6c50903709da69a5871475383fe.tar.bz2
rails-25724c664d8af6c50903709da69a5871475383fe.zip
Load deprecated tasks for plugins.
-rw-r--r--railties/lib/rails/plugin.rb11
-rw-r--r--railties/test/plugins/vendored_test.rb34
2 files changed, 45 insertions, 0 deletions
diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb
index 62dc7f30f8..b47679d140 100644
--- a/railties/lib/rails/plugin.rb
+++ b/railties/lib/rails/plugin.rb
@@ -23,6 +23,17 @@ module Rails
attr_reader :name, :path
+ def load_tasks
+ super
+ extra_tasks = Dir["#{root}/{tasks,rails/tasks}/**/*.rake"]
+
+ unless extra_tasks.empty?
+ ActiveSupport::Deprecation.warn "Having rake tasks in PLUGIN_PATH/tasks or " <<
+ "PLUGIN_PATH/rails/tasks is deprecated. Use to PLUGIN_PATH/lib/tasks instead"
+ extra_tasks.sort.each { |ext| load(ext) }
+ end
+ end
+
def initialize(root)
@name = File.basename(root).to_sym
config.root = root
diff --git a/railties/test/plugins/vendored_test.rb b/railties/test/plugins/vendored_test.rb
index b3b85891b2..eae73ee5d8 100644
--- a/railties/test/plugins/vendored_test.rb
+++ b/railties/test/plugins/vendored_test.rb
@@ -145,6 +145,40 @@ module PluginsTest
response = Rails.application.call(Rack::MockRequest.env_for("/sprokkit"))
assert_equal "I am a Sprokkit", response[2].join
end
+
+ test "tasks are loaded by default" do
+ $executed = false
+ @plugin.write "lib/tasks/foo.rake", <<-RUBY
+ task :foo do
+ $executed = true
+ end
+ RUBY
+
+ boot_rails
+ require 'rake'
+ require 'rake/rdoctask'
+ require 'rake/testtask'
+ Rails.application.load_tasks
+ Rake::Task[:foo].invoke
+ assert $executed
+ end
+
+ test "deprecated tasks are also loaded" do
+ $executed = false
+ @plugin.write "tasks/foo.rake", <<-RUBY
+ task :foo do
+ $executed = true
+ end
+ RUBY
+
+ boot_rails
+ require 'rake'
+ require 'rake/rdoctask'
+ require 'rake/testtask'
+ Rails.application.load_tasks
+ Rake::Task[:foo].invoke
+ assert $executed
+ end
end
class VendoredOrderingTest < Test::Unit::TestCase