Module: Seedbank::DSL

Defined in:
lib/seedbank/dsl.rb

Instance Method Summary collapse

Instance Method Details

#define_seed_task(seed_file, *args) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/seedbank/dsl.rb', line 26

def define_seed_task(seed_file, *args)
  task = Rake::Task.define_task(*args) do |seed_task|
    runner.evaluate(seed_task, seed_file) if File.exist?(seed_file)
  end

  task.add_description "Load the seed data from #{seed_file}"

  if Rake::Task.task_defined?('db:abort_if_pending_migrations')
    task.enhance(['db:abort_if_pending_migrations'])
  elsif Rake::Task.task_defined?(':environment')
    task.enhance([':environment'])
  end

  task.name
end

#glob_seed_files_matching(*args, &block) ⇒ Object



18
19
20
# File 'lib/seedbank/dsl.rb', line 18

def glob_seed_files_matching(*args, &block)
  Dir.glob(File.join(seeds_root, *args), &block)
end

#override_seed_task(*args) ⇒ Object



4
5
6
7
8
9
# File 'lib/seedbank/dsl.rb', line 4

def override_seed_task(*args)
  task_name, arg_names, deps = Rake.application.resolve_args(args)
  seed_task = Rake::Task.task_defined?(task_name) ? Rake::Task[task_name].clear : Rake::Task.define_task(task_name)
  add_comment_to(seed_task, Rake.application.last_description)
  seed_task.enhance deps
end

#runnerObject



22
23
24
# File 'lib/seedbank/dsl.rb', line 22

def runner
  @_seedbank_runner ||= Seedbank::Runner.new
end

#scope_from_seed_file(seed_file) ⇒ Object



42
43
44
45
46
47
# File 'lib/seedbank/dsl.rb', line 42

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



11
12
13
14
15
16
# File 'lib/seedbank/dsl.rb', line 11

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(':')

  define_seed_task(seed_file, fq_name)
end

#seeds_rootObject



49
50
51
# File 'lib/seedbank/dsl.rb', line 49

def seeds_root
  Pathname.new Seedbank.seeds_root
end