# # # # # # # # #
# /53/slim_migrations.rb
#
# by               Jan Lelis
# e-mail:          mail@janlelis.de
# type/version:    ruby 
# snippet url:     http://rbJL.net/53/slim_migrations.rb
# original post:   http://rbJL.net/53-three-little-tips-for-slimmer-rails-migrations
# license:         CC-BY (DE)
#
# (c) 2011 Jan Lelis.

def migration(&block)
  if caller[0].rindex(/(?:[0-9]+)_([_a-z0-9]*).rb:\d+(?::in `.*')?$/)
    m = Object.const_set $1.camelize, Class.new(ActiveRecord::Migration)
    m.instance_eval(&block) # Rails 3.0/2.3
    # m.class_eval(&block)  # Rails 3.1 or Rails 3.0/2.3 without tip 1 applied
  else
    raise ArgumentError, "Could not create migration at: #{caller[0]}"
  end
end