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.

Reply via email to