From: The 8472 Date: 2012-12-07T10:17:49+09:00 Subject: [ruby-core:50647] Re: [ruby-trunk - Feature #4085] Refinements and nested methods On 06.12.2012 17:01, rosenfeld (Rodrigo Rosenfeld Rosas) wrote: > The problem is that currently you can't use both Sequel and Squeel gems because both override the same symbol methods. That's not necessarily true. Squeel supports the extended-symbol as legacy syntax for metawhere support, which you can turn off at load time. It also provides a far better strategy: Building an AST via BasicObject + instance_eval + method missing. That way practically anything that's not a local variable can become a DSL-keyword. Date-patching to fixnums could be easily circumvented in DSLs too by doing something like dsl{in(15).days; after(15).days} So really. DSLs should not be the issue here, if people would actually design them properly. Only library-level extensions to Strings/Arrays/Hash etc. such as those of ActiveSupport should be considered a use-case for refinements, since you don't use them in a very localized scope. You actually use them throughout your whole library and don't want to be bothered to include something into every file just to be able to use your utility method.