Module: Migrake::DSL

Defined in:
lib/migrake/dsl.rb

Instance Method Summary collapse

Instance Method Details

#migrake(tasks) ⇒ Object

Public: Define the rake tasks required to run migrake. This defines the following tasks:

- A task to create the `Migrake.status_file_directory` unless it exists.
- A task to create the MIGRAKE_STATUS file in the aforementioned
  directory, unless it exists.
- A `migrake:ready` task to bootstrap new environments by writing all
  the tasks to the store.
- The `migrake` task, that will run any tasks not run before.

tasks - A Set of tasks to be run.

Returns the ‘migrake` Rake::Task.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/migrake/dsl.rb', line 18

def migrake(tasks)
  dir = Migrake.status_file_directory
  status_file = dir.join("MIGRAKE_STATUS")

  namespace :migrake do
    directory dir.to_s

    file status_file.to_s => dir.to_s do
      touch status_file
    end

    task :run_tasks => status_file.to_s do
      Migrake::Runner.run(tasks, Migrake::Store.new(status_file))
    end

    desc "Tell migrake that all defined tasks have already been run"
    task :ready => status_file.to_s do
      Migrake::Store.new(status_file).write(tasks)
    end
  end

  desc "Run the tasks defined by migrake"
  task migrake: "migrake:run_tasks"
end