Project

General

Profile

Feature #4978

forwardable: support for 'delegate :method => :accessor'

Added by Eregon (Benoit Daloze) over 7 years ago. Updated about 4 years ago.

Status:
Rejected
Priority:
Normal
Target version:
[ruby-core:37804]

Description

Hello,

A few months ago, I met a bug with lib/forwardable.rb:

delegate :method => :accessor

would not work, although mentioned in the documentation.

Keiju solved this at r31507, being faster than me :)

However, I would still like to propose my solution.

#instance_delegate and #single_delegate both accept
a Symbol-Symbol pair (:method => :accessor)
and a Array-Symbol pair ([:method1, :method2] => :accessor).

The current code looks like:

methods = [methods] unless methods.respond_to?(:each)
methods.each{ |method|
def_instance_delegator(accessor, method)
}

I propose:

Array(methods).each{ |method|
def_instance_delegator(accessor, method)
}

I believe this is a good use for Kernel#Array, and it does not depend on #each being defined on Symbol/String.

While I am at it, I would like to advise to not use the fact String#each for a single line String used to yield the whole String.
This is likely not what #each is intended for, and broke with 1.9, which undefined String#each.

I began to write a few tests for forwardable, is it better to add them in test/ or RubySpec ?


Files

History

Updated by kosaki (Motohiro KOSAKI) over 7 years ago

  • Status changed from Open to Assigned
  • Assignee set to keiju (Keiju Ishitsuka)

I believe this is new feature, not bug. However if Keiju will accept and commit it before preview1, I have no objection.
Otherwise I'll change it 'Feature' for 1.9.4. I'm sorry this is very short time limit, but the proposal seems too late.

Thanks.

Updated by Eregon (Benoit Daloze) over 7 years ago

Motohiro KOSAKI wrote:

I believe this is new feature, not bug. However if Keiju will accept and commit it before preview1, I have no objection.
Otherwise I'll change it 'Feature' for 1.9.4. I'm sorry this is very short time limit, but the proposal seems too late.

Thanks.

My mistake, I meant it as a feature.
The delay is fine, this is not urgent at all (but I'd like feedback from Keiji one day).
Thanks for looking in this issue.

#3

Updated by kosaki (Motohiro KOSAKI) over 7 years ago

  • Tracker changed from Bug to Feature

Updated by kosaki (Motohiro KOSAKI) over 7 years ago

  • Target version changed from 1.9.3 to 2.0.0

Updated by ko1 (Koichi Sasada) about 6 years ago

  • Target version changed from 2.0.0 to 2.6

I changed target to next minor because no discussion.

Updated by Eregon (Benoit Daloze) about 4 years ago

  • Status changed from Assigned to Rejected

No discussion and the current code works fine while the new one has unlikely but possible compatibility issues.
Therefore I close it.

Also available in: Atom PDF