From: Motohiro KOSAKI Date: 2011-07-10T13:34:00+09:00 Subject: [ruby-core:37948] [Ruby 1.9 - Bug #4978][Assigned] forwardable: support for 'delegate :method => :accessor' Issue #4978 has been updated by Motohiro KOSAKI. Status changed from Open to Assigned Assignee set to 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. ---------------------------------------- Bug #4978: forwardable: support for 'delegate :method => :accessor' http://redmine.ruby-lang.org/issues/4978 Author: Benoit Daloze Status: Assigned Priority: Normal Assignee: Keiju Ishitsuka Category: lib Target version: 1.9.3 ruby -v: ruby 1.9.3dev (2011-06-27 trunk 32247) [x86_64-darwin10.7.0] 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 ? -- http://redmine.ruby-lang.org