From 43215de208a6feabdbc5f4ec29551beef4f89885 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 13 Oct 2010 23:01:46 +0300 Subject: [PATCH] Add task foo:install (where foo is plugin) as a shortcutinstall:migrations and foo:install:assets --- railties/lib/rails/engine.rb | 6 ++++++ railties/test/railties/shared_tests.rb | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index b004724757395..2ff28043c9e97 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -538,6 +538,12 @@ def load_seed next if self.is_a?(Rails::Application) namespace railtie_name do + desc "Shortcut for running both rake #{railtie_name}:install:migrations and #{railtie_name}:install:assets" + task :install do + Rake::Task["#{railtie_name}:install:migrations"].invoke + Rake::Task["#{railtie_name}:install:assets"].invoke + end + namespace :install do # TODO Add assets copying to this list # TODO Skip this if there is no paths["db/migrate"] for the engine diff --git a/railties/test/railties/shared_tests.rb b/railties/test/railties/shared_tests.rb index d81155e8af7b4..31ba2eaca2fef 100644 --- a/railties/test/railties/shared_tests.rb +++ b/railties/test/railties/shared_tests.rb @@ -10,6 +10,28 @@ def app @app ||= Rails.application end + def test_install_migrations_and_assets + @plugin.write "public/javascripts/foo.js", "doSomething()" + + @plugin.write "db/migrate/1_create_users.rb", <<-RUBY + class CreateUsers < ActiveRecord::Migration + end + RUBY + + app_file "db/migrate/1_create_sessions.rb", <<-RUBY + class CreateSessions < ActiveRecord::Migration + end + RUBY + + add_to_config "ActiveRecord::Base.timestamped_migrations = false" + + Dir.chdir(app_path) do + `rake bukkits:install` + assert File.exists?("#{app_path}/db/migrate/2_create_users.rb") + assert File.exists?(app_path("public/bukkits/javascripts/foo.js")) + end + end + def test_copying_assets @plugin.write "public/javascripts/foo.js", "doSomething()" @plugin.write "public/stylesheets/foo.css", "h1 { font-size: 10000px }" @@ -19,7 +41,9 @@ def test_copying_assets `rake bukkits:install:assets --trace` assert File.exists?(app_path("public/bukkits/javascripts/foo.js")) + assert_equal "doSomething()\n", File.read(app_path("public/bukkits/javascripts/foo.js")) assert File.exists?(app_path("public/bukkits/stylesheets/foo.css")) + assert_equal "h1 { font-size: 10000px }\n", File.read(app_path("public/bukkits/stylesheets/foo.css")) assert File.exists?(app_path("public/bukkits/images/img.png")) end end