Sha256: 5c7860ef5bd7f9b4eea21a5b21c232cfe11bbe684b3da21973fd086e79d3c7d1
Contents?: true
Size: 1.74 KB
Versions: 2
Compression:
Stored size: 1.74 KB
Contents
module Seedbank module DSL 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 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 def glob_seed_files_matching(*args, &block) Dir.glob(File.join(seeds_root, *args), &block) end 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}" 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 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 def seeds_root Pathname.new Seedbank.seeds_root end private 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
seedbank-0.3.0 | lib/seedbank/dsl.rb |
seedbank-0.3.0.pre2 | lib/seedbank/dsl.rb |