Bug #1556
closedirb does not save history from 1.8.7-p83 and later
Description
=begin
1.8.7-p83 以降(p167 でも)、irb がヒストリを保存してくれないようです。
ファイナライザが呼ばれる条件とタイミングが変わった影響でしょうか?
チケットを探しきれなかったのですが、既出だったらごめんなさい。
$ rm -f ~/.irb_history
$ irb -f
irb(main):001:0> require "irb/ext/save-history"
=> true
irb(main):002:0> context.save_history = 3
=> 3
irb(main):003:0> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2009-01-12 patchlevel 83) [i686-linux]"
irb(main):004:0> p 83
83
=> nil
irb(main):005:0> exit
$ cat ~/.irb_history
cat: /home/nov/.irb_history: No such file or directory
p82 だと保存されます。
$ rm -f ~/.irb_history
$ irb -f
irb(main):001:0> require "irb/ext/save-history"
=> true
irb(main):002:0> context.save_history = 3
=> 3
irb(main):003:0> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2009-01-11 patchlevel 82) [i686-linux]"
irb(main):004:0> p 82
82
=> nil
irb(main):005:0> exit
$ cat ~/.irb_history
RUBY_DESCRIPTION
p 82
exit
=end
Updated by keiju (Keiju Ishitsuka) almost 15 years ago
=begin
けいじゅ@いしつかです.
ruby-1.8.7 系のバグのような気がします. ファイナライザーが呼び出されな
いような?
下記のプログラムで,¶
obj = Object.new
def fin
proc{p 1}
end
ObjectSpace.define_finalizer(obj, fin)
#obj = nil¶
1.8.7最新版のみファイナライザが実行されません. 他の, 1.8.8, 1.9系は呼
ばれます. ちなみに obj = nil を入れると呼び出されるので, その辺りの問
題では?
In [ruby-dev:38563] the message: "[ruby-dev:38563] [Bug #1556] irb
does not save history from 1.8.7-p83 and later", on Jun/02 21:47(JST)
Nobuhiro IMAI writes:
Bug #1556: irb does not save history from 1.8.7-p83 and later
http://redmine.ruby-lang.org/issues/show/1556起票者: Nobuhiro IMAI
ステータス: Open, 優先度: Normal
ruby -v: ruby 1.8.7 (2009-01-12 patchlevel 83) [i686-linux]1.8.7-p83 以降(p167 でも)、irb がヒストリを保存してくれないようです。
ファイナライザが呼ばれる条件とタイミングが変わった影響でしょうか?
チケットを探しきれなかったのですが、既出だったらごめんなさい。$ rm -f ~/.irb_history
$ irb -f
irb(main):001:0> require "irb/ext/save-history"
=> true
irb(main):002:0> context.save_history = 3
=> 3
irb(main):003:0> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2009-01-12 patchlevel 83) [i686-linux]"
irb(main):004:0> p 83
83
=> nil
irb(main):005:0> exit
$ cat ~/.irb_history
cat: /home/nov/.irb_history: No such file or directoryp82 だと保存されます。
$ rm -f ~/.irb_history
$ irb -f
irb(main):001:0> require "irb/ext/save-history"
=> true
irb(main):002:0> context.save_history = 3
=> 3
irb(main):003:0> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2009-01-11 patchlevel 82) [i686-linux]"
irb(main):004:0> p 82
82
=> nil
irb(main):005:0> exit
$ cat ~/.irb_history
RUBY_DESCRIPTION
p 82
exit
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
Updated by matz (Yukihiro Matsumoto) almost 15 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:38566] Re: [Bug #1556] irb does not save history from 1.8.7-p83 and later"
on Thu, 4 Jun 2009 17:47:50 +0900, keiju@ishitsuka.com (石塚圭樹) writes:
|ruby-1.8.7 系のバグのような気がします. ファイナライザーが呼び出されな
|いような?
|1.8.7最新版のみファイナライザが実行されません. 他の, 1.8.8, 1.9系は呼
|ばれます. ちなみに obj = nil を入れると呼び出されるので, その辺りの問
|題では?
なるほど。調べてみます。
ただ、プロセス終了時におけるファイナライザの信頼できる実行は
なかなか難しいので、将来的にはhistoryのセーブのような重要なタ
スクはファイナライザからではなく、at_exitのようなフックで実現
していただけると助かります。
=end
Updated by no6v (Nobuhiro IMAI) almost 15 years ago
=begin
いまいです。
From: Yukihiro Matsumoto <matz_at_ruby-lang.org>
Date: Thu, 4 Jun 2009 18:21:02 +0900
|ruby-1.8.7 系のバグのような気がします. ファイナライザーが呼び出されな
|いような?|1.8.7最新版のみファイナライザが実行されません. 他の, 1.8.8, 1.9系は呼
|ばれます. ちなみに obj = nil を入れると呼び出されるので, その辺りの問
|題では?なるほど。調べてみます。
ただ、プロセス終了時におけるファイナライザの信頼できる実行は
なかなか難しいので、将来的にはhistoryのセーブのような重要なタ
スクはファイナライザからではなく、at_exitのようなフックで実現
していただけると助かります。
irb のプロセスの寿命と、obj(IRB::Context の @io)の寿命とが同じぐらいな
のであれば、単純に at_exit を使うようにするだけでいいでしょうか。今の
ところ、手元では問題なく動いています。とりあえず ruby_1_8{,_[67]} ブラ
ンチにはそのままあたると思います。
Nobuhiro IMAI nov@yo.rim.or.jp
Key fingerprint = F39E D552 545D 7C64 D690 F644 5A15 746C BD8E 7106
Index: lib/irb/ext/save-history.rb¶
--- lib/irb/ext/save-history.rb (revision 23644)
+++ lib/irb/ext/save-history.rb (working copy)
@@ -51,7 +51,7 @@
include Readline
def HistorySavingAbility.create_finalizer
-
proc do
-
at_exit do
if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
if hf = IRB.conf[:HISTORY_FILE]
file = File.expand_path(hf)
@@ -66,7 +66,7 @@
enddef HistorySavingAbility.extended(obj)
-
ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
-
endHistorySavingAbility.create_finalizer obj.load_history obj
=end
Updated by keiju (Keiju Ishitsuka) over 14 years ago
=begin
けいじゅ@いしつかです.
今日つつかれたのをもう一件.
In [ruby-dev:38580] the message: "[ruby-dev:38580] Re: [Bug #1556] irb
does not save history from 1.8.7-p83 and later", on Jun/08 09:18(JST)
Nobuhiro IMAI writes:
いまいです。
|ruby-1.8.7 系のバグのような気がします. ファイナライザーが呼び出されな
|いような?|1.8.7最新版のみファイナライザが実行されません. 他の, 1.8.8, 1.9系は呼
|ばれます. ちなみに obj = nil を入れると呼び出されるので, その辺りの問
|題では?なるほど。調べてみます。
まつもとさん, この件どうなりました?
1.8.7系のファイナライザのバグだと思っているのですが?
それとは別に:
ただ、プロセス終了時におけるファイナライザの信頼できる実行は
なかなか難しいので、将来的にはhistoryのセーブのような重要なタ
スクはファイナライザからではなく、at_exitのようなフックで実現
していただけると助かります。irb のプロセスの寿命と、obj(IRB::Context の @io)の寿命とが同じぐらいな
のであれば、単純に at_exit を使うようにするだけでいいでしょうか。今の
ところ、手元では問題なく動いています。とりあえず ruby_1_8{,_[67]} ブラ
ンチにはそのままあたると思います。
これはこれでその通りだと思いますので, 採用したいと思います.
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
Updated by matz (Yukihiro Matsumoto) over 14 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:38818] Re: [Bug #1556] irb does not save history from 1.8.7-p83 and later"
on Sat, 18 Jul 2009 01:08:03 +0900, keiju@ishitsuka.com (keiju ISHITSUKA) writes:
|>> なるほど。調べてみます。
|
|まつもとさん, この件どうなりました?
|1.8.7系のファイナライザのバグだと思っているのですが?
ファイナライザのバグなのは確かです。ただし、ファイナライザを
必ず呼ぶのはかなり困難なので、at_exitでの対応をお願いしたい
ところです。よろしく。
=end
Updated by keiju (Keiju Ishitsuka) over 14 years ago
=begin
けいじゅ@いしつかです.
In [ruby-dev:38819] the message: "[ruby-dev:38819] Re: [Bug #1556] irb
does not save history from 1.8.7-p83 and later", on Jul/18 01:43(JST)
Yukihiro Matsumoto writes:
まつもと ゆきひろです
ファイナライザのバグなのは確かです。ただし、ファイナライザを
必ず呼ぶのはかなり困難なので、at_exitでの対応をお願いしたい
ところです。よろしく。
at_exitだと, 組み込まれているときに対応できないので, irbから抜けたとき
に実行するようにしました.
それで, trunkの方には反映しましたが, 1.8.7への反映はどうすればよいんで
しょう? 何か手続きとかあります?
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
Updated by matz (Yukihiro Matsumoto) over 14 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:38839] Re: [Bug #1556] irb does not save history from 1.8.7-p83 and later"
on Wed, 22 Jul 2009 00:42:09 +0900, keiju@ishitsuka.com (石塚圭樹) writes:
|それで, trunkの方には反映しましたが, 1.8.7への反映はどうすればよいんで
|しょう? 何か手続きとかあります?
1.8 HEADに突っ込んでください。各ブランチのメンテナがバックポー
トするでしょう。
=end
Updated by no6v (Nobuhiro IMAI) over 14 years ago
=begin
いまいです。
From: keiju_at_ishitsuka.com (石塚圭樹)
Date: Wed, 22 Jul 2009 00:42:09 +0900
at_exitだと, 組み込まれているときに対応できないので, irbから抜けたとき
に実行するようにしました.
lib/irb.rb が更新されていないようです。
$ svn log -v -r24229¶
r24229 | keiju | 2009-07-22 00:39:51 +0900 (Wed, 22 Jul 2009) | 4 lines
Changed paths:
M /trunk/ChangeLog
M /trunk/lib/irb/ext/save-history.rb
M /trunk/lib/irb/init.rb
- lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add
IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563]
$ svn log -l1 lib/irb.rb¶
r23985 | keiju | 2009-07-07 20:36:20 +0900 (Tue, 07 Jul 2009) | 3 lines
- bin/irb, lib/irb.rb lib/irb/*: irb-0.9.6, extend inspect-mode
--
Nobuhiro IMAI nov@yo.rim.or.jp
Key fingerprint = F39E D552 545D 7C64 D690 F644 5A15 746C BD8E 7106
=end
Updated by keiju (Keiju Ishitsuka) over 14 years ago
=begin
けいじゅ@いしつかです.
In [ruby-dev:38841] the message: "[ruby-dev:38841] Re: [Bug #1556] irb
does not save history from 1.8.7-p83 and later", on Jul/22 01:49(JST)
Nobuhiro IMAI writes:
いまいです。
at_exitだと, 組み込まれているときに対応できないので, irbから抜けたとき
に実行するようにしました.lib/irb.rb が更新されていないようです。
申し訳ない. 追加しました.
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
Updated by shyouhei (Shyouhei Urabe) over 13 years ago
- Status changed from Open to Closed
=begin
Fixed in 1.8.7-p196.
=end