[#37730] [Ruby 1.9 - Bug #4962][Open] come back gem_prelude! — Yusuke Endoh <mame@...>

24 messages 2011/07/02

[#37840] [Ruby 1.9 - Feature #4985][Open] Add %S[] support for making a list of symbols — Aaron Patterson <aaron@...>

23 messages 2011/07/07

[#37866] [Backport87 - Feature #4996][Open] About 1.8.7 EOL — Shyouhei Urabe <shyouhei@...>

22 messages 2011/07/08

[#37913] [Ruby 1.9 - Bug #5003][Open] Enumerator#next segfaults in OS X Lion (10.7) — Ganesh Gunasegaran <ganesh.gunas@...>

16 messages 2011/07/09

[#37917] [Ruby 1.9 - Feature #5005][Open] Provide convenient access to original methods — Lazaridis Ilias <ilias@...>

13 messages 2011/07/09

[#37932] [Ruby 1.9 - Feature #5008][Open] Equal rights for Hash (like Array, String, Integer, Float) — Suraj Kurapati <sunaku@...>

31 messages 2011/07/09

[#37936] [Ruby 1.9 - Feature #5010][Open] Add Slop(-like) in stdlib and deprecate current OptionParser API — Rodrigo Rosenfeld Rosas <rr.rosas@...>

29 messages 2011/07/09

[#37968] [Ruby 1.9 - Bug #5015][Open] method_added" is called in addition to "method_undefined — Lazaridis Ilias <ilias@...>

14 messages 2011/07/10

[#38096] [Ruby 1.9 - Feature #5033][Open] PATCH: 1.9: gc_mark_children: Avoid gc_mark() tail recursion, use goto again. — Kurt Stephens <ks.ruby@...>

14 messages 2011/07/16

[#38109] [Ruby 1.9 - Bug #5034][Open] C Source Code formatting — Lazaridis Ilias <ilias@...>

18 messages 2011/07/16

[#38171] [Ruby 1.9 - Bug #5047][Open] Segfault (most likely involving require) — Jack Christensen <jack@...>

21 messages 2011/07/18

[#38182] [Ruby 1.9 - Feature #5054][Open] Compress a sequence of ends — ANDO Yasushi ANDO <andyjpn@...>

68 messages 2011/07/19

[#38197] [Ruby 1.9 - Feature #5056][Open] About 1.9 EOL — Shyouhei Urabe <shyouhei@...>

39 messages 2011/07/19
[#38900] [Ruby 1.9 - Feature #5056] About 1.9 EOL — Shota Fukumori <sorah@...> 2011/08/10

[#38902] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Yukihiro Matsumoto <matz@...> 2011/08/10

Hi,

[#39048] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — SASADA Koichi <ko1@...> 2011/08/22

Hi,

[#39055] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Lucas Nussbaum <lucas@...> 2011/08/23

On 23/08/11 at 06:50 +0900, SASADA Koichi wrote:

[#38295] [Ruby 1.9 - Feature #5064][Open] HTTP user-agent class — Eric Hodel <drbrain@...7.net>

15 messages 2011/07/21

[#38391] [Ruby 1.9 - Bug #5076][Open] Mac OS X Lion Support — Yui NARUSE <naruse@...>

17 messages 2011/07/22

[#38503] [Ruby 1.9 - Feature #5096][Open] offer Logger-compatibility for ext — Eric Wong <normalperson@...>

16 messages 2011/07/25

[#38510] [Ruby 1.9 - Feature #5097][Assigned] Supported platforms of Ruby 1.9.3 — Yui NARUSE <naruse@...>

42 messages 2011/07/26

[#38526] [Backport92 - Backport #5099][Open] Backport r31875 load path performance problem — Aaron Patterson <aaron@...>

19 messages 2011/07/26

[#38538] [Ruby 1.9 - Feature #5101][Open] allow optional timeout for TCPSocket.new — Eric Wong <normalperson@...>

15 messages 2011/07/27

[#38610] [Ruby 1.9 - Feature #5120][Open] String#split needs to be logical — Alexey Muranov <muranov@...>

18 messages 2011/07/30

[#38623] [Ruby 1.9 - Feature #5123][Open] Alias Hash 1.9 as OrderedHash — Alexey Muranov <muranov@...>

14 messages 2011/07/31

[ruby-core:37927] Re: [Ruby 1.9 - Feature #5005] Provide convenient access to original methods

From: Ondřej Bílka <neleai@...>
Date: 2011-07-09 16:37:58 UTC
List: ruby-core #37927
One of answers is use AOP like aquarium(But I didn't tried it so I dont
know if it isn't overkill).
Currently best solution is use unbound method which is not much intuitive
From perspective that easiest solution should be too wrong we could
introduce wrap_method. It avoids problems when alias_method break
alias_method of previous guy.

class Module
  def wrap_method(foo)
    i=instance_method(foo)
    define_method(foo){|*a|
      yield(i.bind(self),*a)
    }
  end
end

class A
def foo
  1
end
wrap_method(:foo){|prev|
  prev.()+1
}
end
puts A.new.foo

On Sat, Jul 09, 2011 at 11:27:46PM +0900, Yukihiro Matsumoto wrote:
> 
> Issue #5005 has been updated by Yukihiro Matsumoto.
> 
> 
> The idea to address the issue is the "prepend" feature planned for Ruby 2.0.
> 
> class Original
>   def any_method
>     ...
>   end
> end
> 
> module Modifier
>   def any_method
>     #custom code
>     super # call the original any_method, passing *args
>     #custom code
>   end
> end
> 
> # reopen class
> class Original
>   prepend Modifier
> end
> 
> The prepend method pushes a module in front of a class so that super calls the original method.
> 
> matz.
> 
> ----------------------------------------
> Feature #5005: Provide convenient access to original methods
> http://redmine.ruby-lang.org/issues/5005
> 
> Author: Lazaridis Ilias
> Status: Open
> Priority: Normal
> Assignee: 
> Category: core
> Target version: 2.0
> 
> 
> The languag allows a class to be "reopened", thus it's behaviour can be redefined:
> 
> class String
>   def any_method
>     #custom code
>   end
> end
> 
> the original method can be called, using this construct:
> 
> class String
>   alias_method :original_any_method, :any_method
>   def any_method(*args)
>     #custom code
>     original_any_method(*args)
>     #custom code
>   end
> end
> 
> In order to make this more convenient, the following construct could be provided:
> 
> class String
>   def any_method(*args)
>     #custom code
>     original # call the original String#any_method, passing *args (similar to "super")
>     #custom code
>   end
> end
> 
>  "original" would behave similar to "super"
> 
> The term "original" can be replaced by any term which describes this concept better.
> 
> 
> 
> 
> 
> 
> -- 
> http://redmine.ruby-lang.org

-- 

Your EMAIL is now being delivered by the USPS.

In This Thread