From b50024f2fff8a3da46135d4838fe1cda8cb95ceb Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Sun, 19 Dec 2010 15:11:51 +0100 Subject: Do not load all application's task in generated engine --- .../generators/rails/plugin_new/templates/Rakefile | 9 +-- railties/lib/rails/tasks/engine.rake | 66 ++++++++++++++++++++++ 2 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 railties/lib/rails/tasks/engine.rake (limited to 'railties/lib') diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile b/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile index 25292f59ad..5704e75a29 100755 --- a/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile +++ b/railties/lib/rails/generators/rails/plugin_new/templates/Rakefile @@ -16,9 +16,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc| end <% if full? && !options[:skip_active_record] -%> -namespace :app do - ENGINE_PATH = File.expand_path("..", __FILE__) - load File.expand_path("../<%= dummy_path -%>/Rakefile", __FILE__) -end -<% end -%> - +APP_RAKEFILE = File.expand_path("../<%= dummy_path -%>/Rakefile", __FILE__) +load 'rails/tasks/engine.rake' +<% end %> diff --git a/railties/lib/rails/tasks/engine.rake b/railties/lib/rails/tasks/engine.rake new file mode 100644 index 0000000000..593be93797 --- /dev/null +++ b/railties/lib/rails/tasks/engine.rake @@ -0,0 +1,66 @@ +task "load_app" do + namespace :app do + load APP_RAKEFILE + end + + if !defined?(ENGINE_PATH) || !ENGINE_PATH + ENGINE_PATH = find_engine_path(APP_RAKEFILE) + end +end + +namespace :db do + task :reset => [:load_app, :"app:db:reset"] + + desc "Migrate the database (options: VERSION=x, VERBOSE=false)." + task :migrate => [:load_app, :"app:db:migrate"] + task :"migrate:up" => [:load_app, :"app:db:migrate:up"] + task :"migrate:down" => [:load_app, :"app:db:migrate:down"] + task :"migrate:redo" => [:load_app, :"app:db:migrate:redo"] + task :"migrate:reset" => [:load_app, :"app:db:migrate:reset"] + + desc "Display status of migrations" + task :"migrate:status" => [:load_app, :"app:db:migrate:status"] + + desc 'Create the database from config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config)' + task :create => [:load_app, :"app:db:create"] + task :"create:all" => [:load_app, :"app:db:create:all"] + + desc 'Drops the database for the current Rails.env (use db:drop:all to drop all databases)' + task :drop => [:load_app, :"app:db:drop"] + task :"drop:all" => [:load_app, :"app:db:drop:all"] + + desc "Load fixtures into the current environment's database." + task :"fixtures:load" => [:load_app, :"app:db:fixtures:load"] + + desc "Rolls the schema back to the previous version (specify steps w/ STEP=n)." + task :rollback => [:load_app, :"app:db:rollback"] + + desc "Create a db/schema.rb file that can be portably used against any DB supported by AR" + task :"schema:dump" => [:load_app, :"app:db:schema:dump"] + + desc "Load a schema.rb file into the database" + task :"schema:load" => [:load_app, :"app:db:schema:load"] + + desc "Load the seed data from db/seeds.rb" + task :seed => [:load_app, :"app:db:seed"] + + desc "Create the database, load the schema, and initialize with the seed data (use db:reset to also drop the db first)" + task :setup => [:load_app, :"app:db:setup"] + + desc "Dump the database structure to an SQL file" + task :"structure:dump" => [:load_app, :"app:db:structure:dump"] + + desc "Retrieves the current schema version number" + task :version => [:load_app, :"app:db:version"] +end + + +def find_engine_path(path) + return if path == "/" + + if Rails::Engine.find(path) + path + else + find_engine_path(File.expand_path('..', path)) + end +end -- cgit v1.2.3