lib/generators/queue_dispatcher/migration/migration_generator.rb
require 'rails/generators'
require 'rails/generators/migration'
module QueueDispatcher
class MigrationGenerator < Rails::Generators::Base
desc "The queue_dispatcher migration generator creates a database migration for the task_queue model."
include Rails::Generators::Migration
source_root File.join(File.dirname(__FILE__), 'templates')
class_option :task_queues_table_name,
:type => :string,
:desc => "Name for the TaskQueue Table",
:required => false,
:default => "task_queues"
class_option :tasks_table_name,
:type => :string,
:desc => "Name for the Task Table",
:required => false,
:default => "tasks"
class_option :task_dependencies_table_name,
:type => :string,
:desc => "Name for the Task Dependency Table",
:required => false,
:default => "task_dependencies"
def initialize(args = [], options = {}, config = {})
super
end
#attr_reader :lock_table_name
# Implement the required interface for Rails::Generators::Migration.
# taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
def self.next_migration_number(dirname)
if ActiveRecord::Base.timestamped_migrations
[Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % (current_migration_number(dirname) + 1)].max
else
"%.3d" % (current_migration_number(dirname) + 1)
end
end
def create_migration_file
migration_template 'task_queues.rb', 'db/migrate/create_task_queues.rb'
migration_template 'task_dependencies.rb', 'db/migrate/create_task_dependencies.rb'
migration_template 'change_message_type_for_tasks.rb', 'db/migrate/change_message_type_for_tasks.rb'
migration_template 'add_interrupts_to_tasks_queues.rb', 'db/migrate/add_interrupts_to_tasks_queues.rb'
migration_template 'add_result_to_tasks.rb', 'db/migrate/add_result_to_tasks.rb'
end
end
end