Module: Seedbank::DSL
- Defined in:
- lib/seedbank/dsl.rb
Class Method Summary collapse
Instance Method Summary collapse
- #define_seed_task(seed_file, *args) ⇒ Object
- #glob_seed_files_matching(*args, &block) ⇒ Object
- #override_seed_task(*args, &block) ⇒ Object
- #scope_from_seed_file(seed_file) ⇒ Object
- #seed_task_from_file(seed_file) ⇒ Object
- #seeds_root ⇒ Object
Class Method Details
.included(base) ⇒ Object
4 5 6 7 |
# File 'lib/seedbank/dsl.rb', line 4 def self.included(base) Rake::Task.send(:include, Seedbank::RenameTask) Rake::Application.send(:include, Seedbank::TaskManager) end |
Instance Method Details
#define_seed_task(seed_file, *args) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/seedbank/dsl.rb', line 25 def define_seed_task(seed_file, *args) task = Rake::Task.define_task(*args) do |seed_task| Seedbank::Runner.new(seed_task).module_eval(File.read(seed_file), seed_file) if File.exist?(seed_file) end task.add_description "Load the seed data from #{seed_file}" task.name end |
#glob_seed_files_matching(*args, &block) ⇒ Object
21 22 23 |
# File 'lib/seedbank/dsl.rb', line 21 def glob_seed_files_matching(*args, &block) Dir.glob(File.join(seeds_root, *args), &block) end |
#override_seed_task(*args, &block) ⇒ Object
9 10 11 |
# File 'lib/seedbank/dsl.rb', line 9 def override_seed_task(*args, &block) Rake.application.override_task(*args, &block) end |
#scope_from_seed_file(seed_file) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/seedbank/dsl.rb', line 33 def scope_from_seed_file(seed_file) dirname = Pathname.new(seed_file).dirname return [] if dirname == seeds_root relative = dirname.relative_path_from(seeds_root) relative.to_s.split(File::Separator) end |
#seed_task_from_file(seed_file) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/seedbank/dsl.rb', line 13 def seed_task_from_file(seed_file) scopes = scope_from_seed_file(seed_file) fq_name = scopes.push(File.basename(seed_file, '.seeds.rb')).join(':') args = Rake::Task.task_defined?('db:abort_if_pending_migrations') ? { fq_name => 'db:abort_if_pending_migrations' } : { fq_name => :environment } define_seed_task(seed_file, args) end |
#seeds_root ⇒ Object
40 41 42 |
# File 'lib/seedbank/dsl.rb', line 40 def seeds_root Pathname.new Seedbank.seeds_root end |