[#44786] [ruby-trunk - Feature #2565] adding hooks for better tracing — "tenderlovemaking (Aaron Patterson)" <aaron@...>
8 messages
2012/05/01
[#44788] Re: [ruby-trunk - Feature #2565] adding hooks for better tracing
— SASADA Koichi <ko1@...>
2012/05/02
(2012/05/02 8:25), tenderlovemaking (Aaron Patterson) wrote:
[#44789] Re: [ruby-trunk - Feature #2565] adding hooks for better tracing
— SASADA Koichi <ko1@...>
2012/05/02
(2012/05/02 8:25), tenderlovemaking (Aaron Patterson) wrote:
[#44911] [ruby-trunk - Bug #6408][Open] DelegateClass#eql? and <=> don't work as expected — "tenderlovemaking (Aaron Patterson)" <aaron@...>
11 messages
2012/05/06
[#44951] [ruby-trunk - Feature #6414][Open] Destructuring Assignment — "edtsech (Edward Tsech)" <edtsech@...>
14 messages
2012/05/08
[#45001] [ruby-trunk - Bug #6425][Open] Psych issue with !!omap — "trans (Thomas Sawyer)" <transfire@...>
5 messages
2012/05/11
[#45009] [ruby-trunk - Bug #6427][Open] ruby ioctl: Error integer 2148012656 too big to convert to `int' — "hadmut (Hadmut Danisch)" <hadmut@...>
5 messages
2012/05/12
[#45014] [Backport93 - Backport #6429][Assigned] Backport r35631 - [mingw] Errno::EBADF in ruby/test_io.rb on ruby_1_9_3 — "luislavena (Luis Lavena)" <luislavena@...>
3 messages
2012/05/12
[#45015] Re: [ruby-changes:23580] luislavena:r35631 (trunk): * test/ruby/test_io.rb (class TestIO): Disable GC during IO tests to — Tanaka Akira <akr@...>
2012/5/13 luislavena <[email protected]>:
3 messages
2012/05/12
[#45035] [ruby-trunk - Bug #6433][Open] rb_thread_blocking_region(): ubf() function is executed with GVL — ibc (Iñaki Baz Castillo) <ibc@...>
12 messages
2012/05/14
[#45062] [ruby-trunk - Bug #6436][Open] Byte counting incorrect in BufferedIO (net/protocol.rb) — "jcast (Jeremie Castagna)" <jeremie.castagna@...>
6 messages
2012/05/15
[#45073] [PATCH] Ruby's port to NativeClient — Yuki Yugui Sonoda <yugui@...>
Hello Matz and rubyists,
9 messages
2012/05/16
[#45074] Re: [PATCH] Ruby's port to NativeClient
— SASADA Koichi <ko1@...>
2012/05/16
(2012/05/16 12:34), Yuki Yugui Sonoda wrote:
[#45075] Re: [PATCH] Ruby's port to NativeClient
— Yuki Yugui Sonoda <yugui@...>
2012/05/16
On Wed, May 16, 2012 at 12:43 PM, SASADA Koichi <[email protected]> wrote:
[#45102] ruby-mode maintainer? — Stefan Monnier <monnier@...>
Could the ruby-mode maintainer(s) contact me off-list?
6 messages
2012/05/17
[#45151] Re: ruby-mode maintainer?
— "NARUSE, Yui" <naruse@...>
2012/05/20
(2012/05/17 10:06), Stefan Monnier wrote:
[#45132] [ruby-trunk - Bug #6454][Open] Anonymous classes should delete tmp_classpath on dup — "tenderlovemaking (Aaron Patterson)" <aaron@...>
5 messages
2012/05/18
[#45176] [ruby-trunk - Bug #6476][Open] Proc unrolls an array even without splat — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>
3 messages
2012/05/22
[#45193] [ruby-trunk - Feature #6482][Open] Add URI requested to Net::HTTP request and response objects — "drbrain (Eric Hodel)" <[email protected]>
16 messages
2012/05/23
[#45268] [ruby-trunk - Feature #6482] Add URI requested to Net::HTTP request and response objects
— "mame (Yusuke Endoh)" <mame@...>
2012/05/26
[#45222] [ruby-trunk - Feature #6492][Open] Inflate all HTTP Content-Encoding: deflate, gzip, x-gzip responses by default — "drbrain (Eric Hodel)" <[email protected]>
23 messages
2012/05/24
[#45528] Re: [ruby-trunk - Feature #6492][Open] Inflate all HTTP Content-Encoding: deflate, gzip, x-gzip responses by default
— Eric Wong <normalperson@...>
2012/06/09
"drbrain (Eric Hodel)" <[email protected]> wrote:
[#45253] [RFC] RubyVM::FrameInfo.caller method — SASADA Koichi <ko1@...>
Hi,
11 messages
2012/05/26
[#45302] Re: [RFC] RubyVM::FrameInfo.caller method
— Dice <tetradice@...>
2012/05/28
Hello.
[#45269] [ruby-trunk - Bug #6501][Open] Documentation for Exception#set_backtrace is incorrect — "djberg96 (Daniel Berger)" <redmine@...>
3 messages
2012/05/26
[#45272] [ruby-trunk - Feature #6503][Open] Support for the NPN extension to TLS/SSL — "igrigorik (Ilya Grigorik)" <ilya@...>
13 messages
2012/05/27
[ruby-core:44954] Re: [ruby-trunk - Feature #5632] Attempt to open included class shades it instead.
From:
Benoit Daloze <eregontp@...>
Date:
2012-05-08 19:21:28 UTC
List:
ruby-core #44954
Hello, On 8 May 2012 20:41, boris_stitnicky (Boris Stitnicky) <[email protected]> wrote: > In this place, I'd also like to provide user feedback about my (unwarranted, but real) > surprise involving a weakly related issue: > > module A; def initialize; puts "hello"; end; end # there was a missing end > class B; include A end > A = Module.new > B.new >> "hello" > > And there I was surprised. I did get constant redefine warning, but I ignored it, > as I was writing tests and I wanted to blank out A mixin. I clung on the class > name A, but to include statement, capital 'A' was just as irrelevant as if it > was small 'a' (Another proof that there are actually no constants in Ruby :) As you say, the constants are not constant in a usual sense, they are global identifiers that should not be reassigned. You can think of `module Name` as `Name = defined?(Name) ? Name : Module.new` and the change of scope (same for `class Name`). That is, if Name is already defined, just use it, otherwise create the module. What happens here is you create a module A with a method initialize. You then include it in B, which means adding the module instance in the ancestors: > B.ancestors => [B, A, Object, Kernel, BasicObject] Then you actually redefine A to an empty module. Unfortunately, if you do again > B.ancestors => [B, A, Object, Kernel, BasicObject] You still see A in the ancestors (this might be worth to be reported as a separate issue), although that module you see is still the old one, which name was not updated: > B.ancestors[1].private_instance_methods => [:initialize] > A.private_instance_methods => [] This is maybe not the most intuitive behavior, but it is consistent. An object is not bound to a variable or a constant, and the references are direct. The only "magic" that happens is when you assign for the first time a class/module to a constant, it takes the name of that constant. In any case, avoid redefining constants as much as possible, and don't make assumptions on constant resolution when the module is included. If you want to ensure to re-open a class, just use ClassName.class_exec { ... }.