Hi all,
Is it possible to redefine initialize and stay -w clean? In win32-file-
stat, I've redefined initialize to suit my needs for MS Windows.
If I do "undef_method(:initialize)" and run with -w, I'll get:
"warning: undefining `initialize' may cause serious problem".
However, if don't do that, I get "warning: method redefined;
discarding old initialize".
Help! I'm trapped!
Thanks,
Dan
Does this work?
remove_method(:initialize) if method_defined? :initialize
James Edward Gray II
···
On Apr 5, 2007, at 10:35 AM, Daniel Berger wrote:
If I do "undef_method(:initialize)" and run with -w, I'll get:
"warning: undefining `initialize' may cause serious problem".
Daniel Berger wrote:
Hi all,
Is it possible to redefine initialize and stay -w clean? In win32-file-
stat, I've redefined initialize to suit my needs for MS Windows.
If I do "undef_method(:initialize)" and run with -w, I'll get:
"warning: undefining `initialize' may cause serious problem".
However, if don't do that, I get "warning: method redefined;
discarding old initialize".
Try aliasing the method before redefining it:
alias :old_init :initialize
def initialize() end
regards,
andrew
···
--
Posted via http://www.ruby-forum.com/\.
Unfortunately, using remove_method just issues a different message:
"warning: removing `initialize' may cause serious problem"
Regards,
Dan
···
On Apr 5, 9:40 am, James Edward Gray II <j...@grayproductions.net> wrote:
On Apr 5, 2007, at 10:35 AM, Daniel Berger wrote:
> If I do "undef_method(:initialize)" and run with -w, I'll get:
> "warning: undefining `initialize' may cause serious problem".
Does this work?
remove_method(:initialize) if method_defined? :initialize
That doesn't appear to work. Do you have a code snippet where it does
work? Perhaps I've missed something.
Thanks,
Dan
···
On Apr 5, 9:47 am, Andrew Johnson <ajohn...@cpan.org> wrote:
Daniel Berger wrote:
> Hi all,
> Is it possible to redefine initialize and stay -w clean? In win32-file-
> stat, I've redefined initialize to suit my needs for MS Windows.
> If I do "undef_method(:initialize)" and run with -w, I'll get:
> "warning: undefining `initialize' may cause serious problem".
> However, if don't do that, I get "warning: method redefined;
> discarding old initialize".
Try aliasing the method before redefining it:
alias :old_init :initialize
def initialize() end
Remove the colons or swap alias with alias_method and add a comma.
James Edward Gray II
···
On Apr 5, 2007, at 10:55 AM, Daniel Berger wrote:
On Apr 5, 9:47 am, Andrew Johnson <ajohn...@cpan.org> wrote:
Daniel Berger wrote:
Hi all,
Is it possible to redefine initialize and stay -w clean? In win32-file-
stat, I've redefined initialize to suit my needs for MS Windows.
If I do "undef_method(:initialize)" and run with -w, I'll get:
"warning: undefining `initialize' may cause serious problem".
However, if don't do that, I get "warning: method redefined;
discarding old initialize".
Try aliasing the method before redefining it:
alias :old_init :initialize
def initialize() end
That doesn't appear to work. Do you have a code snippet where it does
work? Perhaps I've missed something.
Daniel Berger wrote:
That doesn't appear to work. Do you have a code snippet where it does
work? Perhaps I've missed something.
Perhaps I've misunderstood your case -- the following runs -w clean on
Ruby 1.8.6
$ cat init.rb
class String
alias :old_init :initialize
def initialize() end
end
$ ruby -w init.rb
$
andrew
···
--
Posted via http://www.ruby-forum.com/\.
Oh, I see. I had to remove the undef_method(:initialize) call with
this approach. Alright, this feels a bit clunky, but it will do the
job. The only thing I'm going to change is to making old_init
private. 
Many thanks,
Dan
···
On Apr 5, 10:06 am, Andrew Johnson <ajohn...@cpan.org> wrote:
Daniel Berger wrote:
> That doesn't appear to work. Do you have a code snippet where it does
> work? Perhaps I've missed something.
Perhaps I've misunderstood your case -- the following runs -w clean on
Ruby 1.8.6
$ cat init.rb
class String
alias :old_init :initialize
def initialize() end
end
Can't you safely remove it once it has been renamed?
James Edward Gray II
···
On Apr 5, 2007, at 11:20 AM, Daniel Berger wrote:
On Apr 5, 10:06 am, Andrew Johnson <ajohn...@cpan.org> wrote:
Daniel Berger wrote:
That doesn't appear to work. Do you have a code snippet where it does
work? Perhaps I've missed something.
Perhaps I've misunderstood your case -- the following runs -w clean on
Ruby 1.8.6
$ cat init.rb
class String
alias :old_init :initialize
def initialize() end
end
Oh, I see. I had to remove the undef_method(:initialize) call with
this approach. Alright, this feels a bit clunky, but it will do the
job. The only thing I'm going to change is to making old_init
private. 
Looks that way. This ran -w clean for me:
class String
alias old_init initialize
def initialize
puts "hello"
end
remove_method(:old_init)
end
Regards,
Dan
···
On Apr 5, 10:30 am, James Edward Gray II <j...@grayproductions.net> wrote:
On Apr 5, 2007, at 11:20 AM, Daniel Berger wrote:
> On Apr 5, 10:06 am, Andrew Johnson <ajohn...@cpan.org> wrote:
>> Daniel Berger wrote:
>>> That doesn't appear to work. Do you have a code snippet where it
>>> does
>>> work? Perhaps I've missed something.
>> Perhaps I've misunderstood your case -- the following runs -w
>> clean on
>> Ruby 1.8.6
>> $ cat init.rb
>> class String
>> alias :old_init :initialize
>> def initialize() end
>> end
> Oh, I see. I had to remove the undef_method(:initialize) call with
> this approach. Alright, this feels a bit clunky, but it will do the
> job. The only thing I'm going to change is to making old_init
> private. 
Can't you safely remove it once it has been renamed?
Quick followup. For singleton methods you MUST use the "class << self"
style for both the alias and the definition to avoid warnings:
# This is -w clean
class File
class << self
alias :basename_orig :basename
def basename
puts "hello"
end
remove_method(:basename_orig)
end
end
# This is not
class File
class << self
alias :basename_orig :basename
end
def self.basename
puts "hello"
end
class << self
remove_method(:basename_orig)
end
end
Regards,
Dan
···
On Apr 5, 10:49 am, "Daniel Berger" <djber...@gmail.com> wrote:
On Apr 5, 10:30 am, James Edward Gray II <j...@grayproductions.net> > wrote:
> On Apr 5, 2007, at 11:20 AM, Daniel Berger wrote:
> > On Apr 5, 10:06 am, Andrew Johnson <ajohn...@cpan.org> wrote:
> >> Daniel Berger wrote:
> >>> That doesn't appear to work. Do you have a code snippet where it
> >>> does
> >>> work? Perhaps I've missed something.
> >> Perhaps I've misunderstood your case -- the following runs -w
> >> clean on
> >> Ruby 1.8.6
> >> $ cat init.rb
> >> class String
> >> alias :old_init :initialize
> >> def initialize() end
> >> end
> > Oh, I see. I had to remove the undef_method(:initialize) call with
> > this approach. Alright, this feels a bit clunky, but it will do the
> > job. The only thing I'm going to change is to making old_init
> > private. 
> Can't you safely remove it once it has been renamed?
Looks that way. This ran -w clean for me:
class String
alias old_init initialize
def initialize
puts "hello"
end
remove_method(:old_init)
end