Skip to content
Browse files

Add helper for loading seed data for engine and application

Signed-off-by: José Valim <jose.valim@gmail.com>
  • Loading branch information...
1 parent 0523b55 commit d475de7e2573847bf4b13c291618053f30070a21 @drogus drogus committed with josevalim
View
3 activerecord/lib/active_record/railties/databases.rake
@@ -299,8 +299,7 @@ namespace :db do
desc 'Load the seed data from db/seeds.rb'
task :seed => 'db:abort_if_pending_migrations' do
- seed_file = File.join(Rails.root, 'db', 'seeds.rb')
- load(seed_file) if File.exist?(seed_file)
+ Rails.application.load_seed
end
namespace :fixtures do
View
9 railties/lib/rails/engine.rb
@@ -380,6 +380,15 @@ def config
@config ||= Engine::Configuration.new(find_root_with_flag("lib"))
end
+ # Load data from db/seeds.rb file. It can be used in to load engines'
+ # seeds, e.g.:
+ #
+ # Blog::Engine.load_seed
+ def load_seed
+ seed_file = config.paths.db.seeds.to_a.first
+ load(seed_file) if File.exist?(seed_file)
+ end
+
# Add configured load paths to ruby load paths and remove duplicates.
initializer :set_load_path, :before => :bootstrap_hook do
_all_load_paths.reverse_each do |path|
View
1 railties/lib/rails/engine/configuration.rb
@@ -37,6 +37,7 @@ def paths
paths.vendor.plugins "vendor/plugins"
paths.db "db"
paths.db.migrate "db/migrate"
+ paths.db.seeds "db/seeds.rb"
paths
end
end
View
19 railties/test/railties/engine_test.rb
@@ -624,5 +624,24 @@ class Engine < ::Rails::Engine
assert !File.exist?(File.join(app_path, 'public/bukkits'))
end
end
+
+ test "loading seed data" do
+ @plugin.write "db/seeds.rb", <<-RUBY
+ Bukkits::Engine.config.bukkits_seeds_loaded = true
+ RUBY
+
+ app_file "db/seeds.rb", <<-RUBY
+ Rails.application.config.app_seeds_loaded = true
+ RUBY
+
+ boot_rails
+
+ Rails.application.load_seed
+ assert Rails.application.config.app_seeds_loaded
+ assert_raise(NoMethodError) do Bukkits::Engine.config.bukkits_seeds_loaded end
+
+ Bukkits::Engine.load_seed
+ assert Bukkits::Engine.config.bukkits_seeds_loaded
+ end
end
end

0 comments on commit d475de7

Please sign in to comment.
Something went wrong with that request. Please try again.