module SexyStatementsHook::ClassMethods

Public Instance Methods

add_to_migration_name(what) click to toggle source
# File lib/data_plan/generators/migration/lib/sexy_statements_hook.rb, line 14
def add_to_migration_name(what)
  if self.desired_migration_name.length < 100
    self.desired_migration_name << "_" unless self.desired_migration_name.blank?
    self.desired_migration_name << what 
  else
    self.desired_migration_name << "and_more" unless self.desired_migration_name.index("and_more")
  end      
end
method_missing_with_sexy_statements(method, *args, &block) click to toggle source
# File lib/data_plan/generators/migration/lib/sexy_statements_hook.rb, line 23
    def method_missing_with_sexy_statements(method, *args, &block)
      case method
      when :create_table, :create_view
        table_name = args.shift.to_s    
        lines = IO.readlines(File.join(DB_PROJECT_ROOT, 'db', 'plan.rb'))
        inside_table = false
        self.sexy_up << "\n"
        for line in lines do
          clean_line = line.gsub(/#.*/,"")
          if clean_line =~ /create_(table|view)\W+#{table_name}(\W+|$)/i
            inside_table = true  
          end
          self.sexy_up << "  " + line if inside_table
          if inside_table and (clean_line =~ /\send\s*/i || clean_line =~ /^end\s*/i)
            break
          end
        end
      
        add_to_migration_name( "create_#{table_name}" )

      else
        add_to_migration_name( method.to_s.split('_')[0] + ("_"+args[0].to_s rescue "") + ("_"+args[1].to_s rescue "") )
        self.sexy_up << "    " + method.to_s + " " + args.collect{ |a| a.inspect }.join(",") + "\n"
                        end
        
#        auto_create_table(method, *args, &block)
#      when :add_index
#        auto_add_index(method, *args, &block)
#      else
#        method_missing_without_auto_migration(method, *args, &block)
#      end
    end