Sha256: c19cf3ee585e136ef36ab66f32abc28b9125e7208d1a155bcfe3d21e9b22dc9a

Contents?: true

Size: 969 Bytes

Versions: 2

Compression:

Stored size: 969 Bytes

Contents

module Seedbank
  module DSL

    def override_task(*args, &block)
      name, params, deps = Rake.application.resolve_args(args.dup)
      fq_name = Rake.application.instance_variable_get(:@scope).dup.push(name).join(':')
      new_name = "#{fq_name}:original"
      Rake::Task.rename_task(fq_name, new_name)
      Rake::Task.define_task(*args, &block)
    end

    # Creates a task namespaced in @seeds_path
    def define_seed_task(seed_file)
      relative_root = seed_file.sub(seeds_root + '/', '')
      scopes = File.dirname(relative_root).gsub(/^\./, '').split('/').unshift('seed')
      fq_name = scopes.push(File.basename(seed_file, '.seeds.rb')).join(':')

      args = { fq_name => 'db:abort_if_pending_migrations' }
      task = Rake::Task.define_task(args) { load(seed_file) if File.exist?(seed_file) }
      task.add_description "Load the seed data from #{seed_file}"
      fq_name
    end

    def seeds_root
      Seedbank.seeds_root
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
seedbank-0.0.8 lib/seedbank/dsl.rb
seedbank-0.0.7 lib/seedbank/dsl.rb