class MigrationGeneratorCore

you should set DB_PROJECT_ROOT constant to some path before including this file

Constants

DB_PROJECT_ROOT

Public Instance Methods

calculate_migration(predefined_migration_name=nil) click to toggle source
# File lib/data_plan/generators/migration/migration_generator_core.rb, line 12
  def calculate_migration(predefined_migration_name=nil)
    require File.join( File.expand_path(File.dirname(__FILE__)),'lib','auto_migrations.rb')
    require File.join( File.expand_path(File.dirname(__FILE__)),'lib','sexy_statements_hook.rb') 
    ActiveRecord::Migration.send :include, SexyStatementsHook
    ActiveRecord::Migration.send :include, AutoMigrations      

    AutoMigrations.run
    
    print "Migration generated. Self.up is:\n" + ActiveRecord::Migration.sexy_up

    migration_name = predefined_migration_name
    if migration_name.blank?
      name = ActiveRecord::Migration.desired_migration_name 
      name = migration_default_name if name.blank?
      migration_name = input("\nEnter filename [#{name}]:").strip.gsub(' ', '_')
      migration_name = name if migration_name.blank?
    end  

    up = ActiveRecord::Migration.sexy_up + "    "
    down = ActiveRecord::Migration.sexy_down
      
    hints = <<HINT

# Hints on migrations syntax.
#
# add_column(table_name, column_name, type, options = {}) 
#         Types are: :primary_key, :string, :text, :integer, :float, :datetime, :timestamp, :time, :date, :binary, :boolean. 
#
# Other stuff:
#   change_column(table_name, column_name, type, options = {}) - options as in add_column
#   change_column_default(table_name, column_name, default)
#   remove_column(table_name, column_name) 
#   rename_column(table_name, column_name, new_column_name) 
#
# Sample: Don't add a primary key column
#   create_table(:categories_suppliers, :id => false) do |t|
#     t.column :category_id, :integer
#     t.column :supplier_id, :integer
#   end
#
# Sample: reload columns for a model from DB
#   Person.reset_column_information
#
# More samples here: http://guides.rubyonrails.org/migrations.html
HINT

    #return { :up => up, :down => down, :hints => hints, :migration_name => migration_name.camelize, :migration_file_name => migration_name }
    return up,down,hints,migration_name

  end
input(prompt, options=nil) click to toggle source
# File lib/data_plan/generators/migration/migration_generator_core.rb, line 64
def input(prompt, options=nil)
  print(prompt + " ")
  if options
    while !(response = STDIN.readline.strip.downcase).in?(options); 
      print(prompt + " ")
    end
    response
  else
    STDIN.readline
  end
end
migration_default_name() click to toggle source
# File lib/data_plan/generators/migration/migration_generator_core.rb, line 7
def migration_default_name
  i = Dir["#{DB_PROJECT_ROOT}/db/migrate/*definition_migration*"].length
  "definition_migration_#{i+1}"
end