module Seedbank::DSL
Public Instance Methods
add_comment_to(seed_task, comment)
click to toggle source
# File lib/seedbank/dsl.rb, line 77 def add_comment_to(seed_task, comment) if seed_task.respond_to?(:clear_comments) seed_task.comment = comment else seed_task.send :instance_variable_set, '@full_comment', comment end end
add_environment_dependency(task)
click to toggle source
# File lib/seedbank/dsl.rb, line 65 def add_environment_dependency(task) if Rake::Task.task_defined?('db:abort_if_pending_migrations') task.enhance(['db:abort_if_pending_migrations']) elsif defined?(Rails) task.enhance([:environment]) end end
define_seed_task(seed_file, *args)
click to toggle source
# File lib/seedbank/dsl.rb, line 30 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 relative_file = Pathname.new(seed_file).relative_path_from(Seedbank.application_root) task.add_description "Load the seed data from #{relative_file}" add_environment_dependency(task) task.name end
existent(path)
click to toggle source
# File lib/seedbank/dsl.rb, line 52 def existent(path) String(path) if path.exist? end
glob_seed_files_matching(*args, &block)
click to toggle source
# File lib/seedbank/dsl.rb, line 26 def glob_seed_files_matching(*args, &block) Dir.glob(File.join(seeds_root, *args), &block) end
original_seeds_file()
click to toggle source
# File lib/seedbank/dsl.rb, line 42 def original_seeds_file @_seedbank_original ||= existent(Pathname.new('../seeds.rb').expand_path(seeds_root)) end
override_seed_task(*args)
click to toggle source
# File lib/seedbank/dsl.rb, line 5 def override_seed_task(*args) task_name, _, 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) add_environment_dependency(seed_task) seed_task.enhance deps end
runner()
click to toggle source
# File lib/seedbank/dsl.rb, line 73 def runner @_seedbank_runner ||= Seedbank::Runner.new end
scope_from_seed_file(seed_file)
click to toggle source
# File lib/seedbank/dsl.rb, line 56 def scope_from_seed_file(seed_file) dirname = Pathname.new(seed_file).dirname return [] if dirname == seeds_root dirname .relative_path_from(seeds_root) .to_s .split(File::Separator) end
seed_task_from_file(seed_file)
click to toggle source
# File lib/seedbank/dsl.rb, line 19 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
seed_tasks_matching(*pattern)
click to toggle source
# File lib/seedbank/dsl.rb, line 13 def seed_tasks_matching(*pattern) glob_seed_files_matching(*pattern) .sort .map { |seed_file| seed_task_from_file(seed_file) } end
seeds_root()
click to toggle source
# File lib/seedbank/dsl.rb, line 46 def seeds_root Pathname.new Seedbank.seeds_root end