1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Add helper for loading seed data for engine and application

Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
Piotr Sarnacki 2010-09-19 17:21:16 +02:00 committed by José Valim
parent 0523b55ab9
commit d475de7e25
4 changed files with 30 additions and 2 deletions

View file

@ -299,8 +299,7 @@ namespace :db do
desc 'Load the seed data from db/seeds.rb' desc 'Load the seed data from db/seeds.rb'
task :seed => 'db:abort_if_pending_migrations' do task :seed => 'db:abort_if_pending_migrations' do
seed_file = File.join(Rails.root, 'db', 'seeds.rb') Rails.application.load_seed
load(seed_file) if File.exist?(seed_file)
end end
namespace :fixtures do namespace :fixtures do

View file

@ -380,6 +380,15 @@ module Rails
@config ||= Engine::Configuration.new(find_root_with_flag("lib")) @config ||= Engine::Configuration.new(find_root_with_flag("lib"))
end 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. # Add configured load paths to ruby load paths and remove duplicates.
initializer :set_load_path, :before => :bootstrap_hook do initializer :set_load_path, :before => :bootstrap_hook do
_all_load_paths.reverse_each do |path| _all_load_paths.reverse_each do |path|

View file

@ -37,6 +37,7 @@ module Rails
paths.vendor.plugins "vendor/plugins" paths.vendor.plugins "vendor/plugins"
paths.db "db" paths.db "db"
paths.db.migrate "db/migrate" paths.db.migrate "db/migrate"
paths.db.seeds "db/seeds.rb"
paths paths
end end
end end

View file

@ -624,5 +624,24 @@ module RailtiesTest
assert !File.exist?(File.join(app_path, 'public/bukkits')) assert !File.exist?(File.join(app_path, 'public/bukkits'))
end end
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
end end