aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-09-19 17:21:16 +0200
committerJosé Valim <jose.valim@gmail.com>2010-09-20 10:41:05 +0200
commitd475de7e2573847bf4b13c291618053f30070a21 (patch)
tree7dbb9fc50009b1b9f30c97c486b238f03f270c55
parent0523b55ab9f823b0cb3643714e890b2c2077820e (diff)
downloadrails-d475de7e2573847bf4b13c291618053f30070a21.tar.gz
rails-d475de7e2573847bf4b13c291618053f30070a21.tar.bz2
rails-d475de7e2573847bf4b13c291618053f30070a21.zip
Add helper for loading seed data for engine and application
Signed-off-by: José Valim <jose.valim@gmail.com>
-rw-r--r--activerecord/lib/active_record/railties/databases.rake3
-rw-r--r--railties/lib/rails/engine.rb9
-rw-r--r--railties/lib/rails/engine/configuration.rb1
-rw-r--r--railties/test/railties/engine_test.rb19
4 files changed, 30 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/railties/databases.rake b/activerecord/lib/active_record/railties/databases.rake
index 3c5981a120..ccaa1f01f6 100644
--- a/activerecord/lib/active_record/railties/databases.rake
+++ b/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
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 10df9b3a6c..8387f277c9 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -380,6 +380,15 @@ module Rails
@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|
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index 3ac8911ba8..d4d87be527 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -37,6 +37,7 @@ module Rails
paths.vendor.plugins "vendor/plugins"
paths.db "db"
paths.db.migrate "db/migrate"
+ paths.db.seeds "db/seeds.rb"
paths
end
end
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index 1d9587cadb..a9dd7d4c1b 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -624,5 +624,24 @@ module RailtiesTest
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