Kristian Mandrup
2010-Aug-11 00:02 UTC
[rspec-users] Nice little DSL trick for extending ExampleGroups in RSpec
describe ''migration_generator'' do include RSpec::Rails::Orm::ActiveRecord include RSpec::Rails::Migration ... end Didn''t quite feel right. So I made it prettier DSL like using the solution below ;) class Class def use_orm orm class_eval do include "RSpec::Rails::Orm::#{orm.to_s.camelize}".constantize end end def specify_for type raise ArgumentError, "Can not specify for #{type}" if ! [:migration, :model].include?(type) class_eval do include "RSpec::Rails::#{type.to_s.camelize}".constantize end end end describe ''migration_generator'' do use_orm :active_record specify_for :migration ... end Could it be done in a better way without polluting Class or some other low lv Ruby class? I want the functions from the included module to be avalable within all my: before, after, it, describe etc. blocks.