# # # # # # # # #
# /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