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.