At the moment if you create a new engine, it will put such lines in its rakefile: APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__) load ''rails/tasks/engine.rake'' This way only a selected set of db tasks are available at the global rake namespace, whilst the full set of the engine''s tasks is available at the app: namespace. The other approach would be to do something like this: load File.expand_path("../spec/dummy/Rakefile", __FILE__) This way ALL the tasks are available at the global rake namespace. Could anyone explain me what are the benefits of selective global namespace tasks and app: namespacing? It does seem clearer to have only the tasks really required for the development of the engine available in the global namespace, but is it the only reason? The problem is that some gems expect to see tasks like db:test:prepare and db:abort_if_pending_migrations at the global namespace and fail to work properly until you bring these tasks out of the app: Is it a fail on the side of these gems? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscribe@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at http://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/groups/opt_out.