The deprecation stuff is happening at https://github.com/dasch/rails/tree/delegate-deprecation
Comments are welcome - the code can be tricky. On Mon, Aug 29, 2011 at 3:34 PM, Daniel Schierbeck <[email protected]> wrote: > I've begun work on the patch against 3-1-stable, but it's not trivial. > For one, simply evaling > > target.method=(*args, &block) > > throws a syntax error. I'll keep working on it. > > On Mon, Aug 29, 2011 at 2:42 PM, Jon Leighton <[email protected]> > wrote: >> On Mon, 2011-08-29 at 14:16 +0200, Daniel Schierbeck wrote: >>> @Jon: I could change the implementation to check `args.length` and >>> raise ArgumentError if the result is greater than 1. But wouldn't it >>> suffice to simply define the writer methods with only one argument? >> >> Yes, that's what I meant. >> >> We need a patch against 3-1-stable that: >> >> * Calls @target.foo, rescues NoMethodError, tries @target.__send__(:foo) >> and if that works, shows a deprecation warning. (The reason for this >> implementation is that there should be no performance hit in the public >> case.) >> * Shows a deprecation warning if args.length > 1 && >> method_name.ends_with?('=') >> >> Then, we need the patch against master to just define def foo=(bar) (no >> splat), when method_name.ends_with?('='). >> >> If the deprecation in 3-1-stable is too involved, we might need to think >> about deprecating in 3.2 and removing in 3.3. But let's see the code >> first. Also note that this deprecation won't get into 3.1.0, so it would >> be a new deprecation in 3.1.1. (Some may object to this, but I think >> it's acceptable personally.) >> >>> @Xavier: I think users perceive `delegate` as a shorthand for: >>> >>> def foo >>> @target.foo >>> end >>> >>> and not >>> >>> def foo >>> @target.__send__(:foo) >>> end >>> >>> so I actually believe the proposed semantics more closely resembles >>> the perception. That's just my point of view, of course. >> >> Yes, this is my perspective as well. To me the POLS is that 'delegate' >> is a macro for the former, which does not support non-public methods. >> >> -- >> http://jonathanleighton.com/ >> > > > > -- > Med venlig hilsen > Daniel Schierbeck > -- Med venlig hilsen Daniel Schierbeck -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
