module Leda::Rake

Public Instance Methods

create_runner(configuration) click to toggle source
# File lib/leda/rake.rb, line 42
def create_runner(configuration)
  # TODO: externalize configuration
  ::Leda::Runner.new(Rails.env, configuration)
end
define_dump_task(configuration, outside_prerequisites, description, data_unit_name, store_name) click to toggle source
# File lib/leda/rake.rb, line 47
def define_dump_task(configuration, outside_prerequisites, description, data_unit_name, store_name)
  task_name = [data_unit_name, store_name, 'dump'].compact.join(':')

  t = ::Rake::Task.define_task(task_name => outside_prerequisites) do
    create_runner(configuration).dump(data_unit_name, store_name)
  end
  t.add_description description
end
define_restore_from_task(configuration, outside_prerequisites, description, data_unit_name, store_name) click to toggle source
# File lib/leda/rake.rb, line 56
def define_restore_from_task(configuration, outside_prerequisites, description, data_unit_name, store_name)
  task_name = [data_unit_name, store_name, 'restore_from'].compact.join(':')

  t = ::Rake::Task.define_task(task_name, [:source_env] => outside_prerequisites) do |t, args|
    source_env = args[:source_env] or fail "Please specify the source env name"

    create_runner(configuration).restore_from(source_env, data_unit_name, store_name)
  end
  t.add_description description
end
define_tasks(configuration, outside_prerequisites=[]) click to toggle source

Defines aggregate and individual dump & restore tasks based on the given {{Configuration}}. In real life, you'll probably want to call this from inside a `namespace` block:

# In Rakefile
namespace 'data' do
  Leda::Rake.define_tasks(Leda.configuration, [:environment])
end
# File lib/leda/rake.rb, line 17
def define_tasks(configuration, outside_prerequisites=[])
  define_dump_task(configuration, outside_prerequisites,
    "Dump all Leda-configured data", nil, nil)
  define_restore_from_task(configuration, outside_prerequisites,
    "Restore all Leda-configured data from the specified env", nil, nil)

  configuration.data_units.each do |data_unit|
    define_dump_task(configuration, outside_prerequisites,
      "Dump all data for #{data_unit.name} from the current env",
      data_unit.name, nil)
    define_restore_from_task(configuration, outside_prerequisites,
      "Restore all data for #{data_unit.name} from the specified env into the current env",
      data_unit.name, nil)

    data_unit.stores.each do |store|
      define_dump_task(configuration, outside_prerequisites,
        "Dump all data from #{store.name} for #{data_unit.name} from the current env",
        data_unit.name, store.name)
      define_restore_from_task(configuration, outside_prerequisites,
        "Restore all data into #{store.name} for #{data_unit.name} from the specified env into the current env",
        data_unit.name, store.name)
    end
  end
end