Skip to content

Commit

Permalink
Add helper for loading seed data for engine and application
Browse files Browse the repository at this point in the history
Signed-off-by: José Valim <jose.valim@gmail.com>
  • Loading branch information
drogus authored and josevalim committed Sep 20, 2010
1 parent 0523b55 commit d475de7
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
3 changes: 1 addition & 2 deletions activerecord/lib/active_record/railties/databases.rake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 9 additions & 0 deletions railties/lib/rails/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand Down
1 change: 1 addition & 0 deletions railties/lib/rails/engine/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
19 changes: 19 additions & 0 deletions railties/test/railties/engine_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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.