https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2008-07-14T09:57:18Z
Ruby Issue Tracking System
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=497
2008-07-14T09:57:18Z
ko1 (Koichi Sasada)
<ul><li><strong>Assignee</strong> set to <i>drbrain (Eric Hodel)</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=504
2008-07-14T23:19:37Z
Anonymous
<ul></ul><p>=begin<br>
ワナベと申します。</p>
<a name="英語ができないので-ruby-dev-に引っ張ってきてしまいました"></a>
<h1 >英語ができないので ruby-dev に引っ張ってきてしまいました。<a href="#英語ができないので-ruby-dev-に引っ張ってきてしまいました" class="wiki-anchor">¶</a></h1>
<p>2008/7/11 Kazuhiro NISHIYAMA <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a>:</p>
<blockquote>
<p>Bug <a class="issue tracker-1 status-6 priority-4 priority-default closed" title="Bug: defined?(Gem::RubyGemsVersion) behaves strange (Rejected)" href="https://bugs.ruby-lang.org/issues/256">#256</a>: defined?(Gem::RubyGemsVersion) behaves strange<br>
(中略)<br>
% ruby-trunk -ve 'p defined?(Gem::RubyGemsVersion)<br>
p Gem::RubyGemsVersion<br>
p defined?(Gem::RubyGemsVersion)'<br>
ruby 1.9.0 (2008-07-11 revision 18024) [i686-linux]<br>
nil<br>
"1.2.0.1824"<br>
"constant"</p>
</blockquote>
<p>RubyGems は const_missing 等で遅延ロードされるようなので<br>
defined? 実行時にロードされないのは正常だと思います。</p>
<p>チケットの例文でいえば、 defined? の代わりに実際に値を参照して<br>
適宜 NameError を拾うといった感じの対応ではどうでしょうか。</p>
<p>あるいは defined? で const_missing が呼ばれない挙動自体を<br>
変更するべきだという意見もあるかもしれません。<br>
どちらにせよ RubyGems(及び gem_prelude) に罪はなさそうです。</p>
<p>--<br>
ワナベ</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=506
2008-07-14T23:35:55Z
znz (Kazuhiro NISHIYAMA)
<ul></ul><p>=begin<br>
西山和広です。</p>
<p>At Mon, 14 Jul 2008 23:14:42 +0900,<br>
wanabe wrote:</p>
<blockquote>
<p>RubyGems は const_missing 等で遅延ロードされるようなので<br>
defined? 実行時にロードされないのは正常だと思います。</p>
<p>チケットの例文でいえば、 defined? の代わりに実際に値を参照して<br>
適宜 NameError を拾うといった感じの対応ではどうでしょうか。</p>
<p>あるいは defined? で const_missing が呼ばれない挙動自体を<br>
変更するべきだという意見もあるかもしれません。<br>
どちらにせよ RubyGems(及び gem_prelude) に罪はなさそうです。</p>
</blockquote>
<p>#256には書き忘れてしまったのですが、require 'rubygems'しても<br>
同じなので、rubygemsの方が悪いのではないかと思います。</p>
<p>% ruby-trunk -v -rubygems -e 'p defined?(Gem::RubyGemsVersion)<br>
p Gem::RubyGemsVersion<br>
p defined?(Gem::RubyGemsVersion)'<br>
ruby 1.9.0 (2008-07-11 revision 18024) [i686-linux]<br>
nil<br>
"1.2.0.1824"<br>
"constant"<br>
% ruby18 -v -rubygems -e 'p defined?(Gem::RubyGemsVersion)<br>
p Gem::RubyGemsVersion<br>
p defined?(Gem::RubyGemsVersion)'<br>
ruby 1.8.7 (2008-07-09 revision 0) [i686-linux]<br>
"constant"<br>
"1.2.0"<br>
"constant"<br>
%</p>
<p>問題が起きたのはrailsのconfig/boot.rbで</p>
<p>% cd /tmp<br>
% rails hoge<br>
(略)<br>
% cd hoge<br>
% ruby-trunk -vd script/about<br>
ruby 1.9.0 (2008-07-14 revision 18060) [i686-linux]<br>
Exception <code>NoMethodError' at /tmp/hoge/config/boot.rb:86 - undefined method </code>>=' for nil:NilClass<br>
Exception <code>NoMethodError' at script/about:2 - undefined method </code>>=' for nil:NilClass<br>
/tmp/hoge/config/boot.rb:86:in <code>load_rubygems': undefined method </code>>=' for nil:NilClass (NoMethodError)<br>
from /tmp/hoge/config/boot.rb:52:in <code>load_initializer' from /tmp/hoge/config/boot.rb:38:in </code>run'<br>
from /tmp/hoge/config/boot.rb:11:in <code>boot!' from /tmp/hoge/config/boot.rb:109:in </code><top (required)>'<br>
from script/about:2:in <code>require' from script/about:2:in </code>'<br>
%</p>
<p>のようになります。</p>
<p>load_rubygemsとrubygems_versionは以下のようになっていて、<br>
require 'rubygems'しているのにもかかわらずlib/rubygems.rbの<br>
require 'rubygems/rubygems_version'が実行されず、<br>
Gem::RubyGemsVersionが定義されていないというのが原因です。</p>
<pre><code> def rubygems_version
Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
end
def load_rubygems
require 'rubygems'
unless rubygems_version >= '0.9.4'
$stderr.puts %(Rails requires RubyGems >= 0.9.4 (you have #{rubygems_v
</code></pre>
<p>ersion}). Please <code>gem update --system</code> and try again.)<br>
exit 1<br>
end</p>
<p>--<br>
|ZnZ(ゼット エヌ ゼット)<br>
|西山和広(Kazuhiro NISHIYAMA)</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=509
2008-07-15T00:19:33Z
Anonymous
<ul></ul><p>=begin<br>
斎藤と申します。</p>
<p>On Mon, 14 Jul 2008 23:31:13 +0900<br>
Kazuhiro NISHIYAMA <a href="mailto:zn@mbf.nifty.com" class="email">zn@mbf.nifty.com</a> wrote:</p>
<blockquote>
<p>#256には書き忘れてしまったのですが、require 'rubygems'しても<br>
同じなので、rubygemsの方が悪いのではないかと思います。</p>
</blockquote>
<p>どこが悪いのでしょうか。</p>
<p>defined? の後ろの式は、評価されません。</p>
<p>$ ruby1.8 -e 'p super'<br>
-e:1: super called outside of method (NoMethodError)<br>
$ ruby1.8 -e 'p defined? super'<br>
nil</p>
<p>2度目の実行で、例外は上がっていません。</p>
<p>このように、初めて評価されてから定義(ロード)されるのが</p>
<p>On Mon, 14 Jul 2008 23:14:42 +0900<br>
wanabe <a href="mailto:s.wanabe@gmail.com" class="email">s.wanabe@gmail.com</a> wrote:</p>
<blockquote>
<p>RubyGems は const_missing 等で遅延ロードされるようなので</p>
</blockquote>
<p>ということではないでしょうか。</p>
<p>--<br>
斎藤ただし</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=511
2008-07-15T00:39:29Z
Anonymous
<ul></ul><p>=begin<br>
ワナベです。</p>
<p>2008/07/15 0:14 Tadashi Saito <a href="mailto:shiba@mail2.accsnet.ne.jp" class="email">shiba@mail2.accsnet.ne.jp</a>:</p>
<blockquote>
<p>On Mon, 14 Jul 2008 23:31:13 +0900<br>
Kazuhiro NISHIYAMA <a href="mailto:zn@mbf.nifty.com" class="email">zn@mbf.nifty.com</a> wrote:</p>
<blockquote>
<p>#256には書き忘れてしまったのですが、require 'rubygems'しても<br>
同じなので、rubygemsの方が悪いのではないかと思います。</p>
</blockquote>
<p>どこが悪いのでしょうか。</p>
</blockquote>
<p>明示的にロードし終えているのに定数が定義されていないということですと<br>
私もそれはおかしいように思います。少なくとも戸惑います。<br>
gem_prelude で $" に rubygems.rb を追加しているせいでしょうか。<br>
なぜこうなっているんでしょう?</p>
<p>結局、 require 'rubygems' された時には即座にロードし<br>
そうでないなら遅延ロード、というのが適切だろうと思い直しました。<br>
そうするとやはり gem_prelude にも問題があると言えるかもしれません。</p>
<p>--<br>
ワナベ</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=512
2008-07-15T00:40:27Z
znz (Kazuhiro NISHIYAMA)
<ul></ul><p>=begin<br>
西山和広です。</p>
<p>At Tue, 15 Jul 2008 00:14:50 +0900,<br>
Tadashi Saito wrote:</p>
<blockquote>
<blockquote>
<p>#256には書き忘れてしまったのですが、require 'rubygems'しても<br>
同じなので、rubygemsの方が悪いのではないかと思います。</p>
</blockquote>
<p>どこが悪いのでしょうか。</p>
</blockquote>
<p>require 'rubygems'してもrubygems.rbが読み込まれないところです。</p>
<p>--<br>
|ZnZ(ゼット エヌ ゼット)<br>
|西山和広(Kazuhiro NISHIYAMA)</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=518
2008-07-15T02:55:19Z
Anonymous
<ul></ul><p>=begin<br>
斎藤です。</p>
<p>On Tue, 15 Jul 2008 00:35:41 +0900<br>
Kazuhiro NISHIYAMA <a href="mailto:zn@mbf.nifty.com" class="email">zn@mbf.nifty.com</a> wrote:</p>
<blockquote>
<p>require 'rubygems'してもrubygems.rbが読み込まれないところです。</p>
</blockquote>
<p>なるほど、問題を読み違えていたようです。</p>
<p>On Tue, 15 Jul 2008 00:34:45 +0900<br>
wanabe <a href="mailto:s.wanabe@gmail.com" class="email">s.wanabe@gmail.com</a> wrote:</p>
<blockquote>
<p>結局、 require 'rubygems' された時には即座にロードし<br>
そうでないなら遅延ロード、というのが適切だろうと思い直しました。<br>
そうするとやはり gem_prelude にも問題があると言えるかもしれません。</p>
</blockquote>
<p>自分には適切なタイミングは分かり兼ねるので、どなたかこちらに<br>
フォローいただけるとありがたいです。</p>
<p>--<br>
斎藤ただし</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=1247
2008-09-28T16:42:30Z
yugui (Yuki Sonoda)
yugui@yugui.jp
<ul><li><strong>Category</strong> set to <i>core</i></li><li><strong>Assignee</strong> deleted (<del><i>drbrain (Eric Hodel)</i></del>)</li><li><strong>Target version</strong> set to <i>1.9.1 Release Candidate</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=1922
2008-12-11T10:12:36Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Rejected</i></li></ul><p>=begin<br>
As far as I understand, this issue is three fold:</p>
<p>(a) defined?(Const) does not call const_missing<br>
(b) require 'rubygems' does not load 'rubygems'<br>
(c) require 'rubygems' does not provide Gem::RubyGemsVersion</p>
<p>We reject (a). I think (b) is a spec. If (c) makes Rails to run correctly, re-submit a new issue.</p>
<p>=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=1924
2008-12-11T10:22:15Z
bitsweat (Jeremy Daer)
jeremydaer@gmail.com
<ul></ul><p>=begin<br>
Rails changed its code for compatibility with the new behavior.<br>
=end</p>
Ruby master - Bug #256: defined?(Gem::RubyGemsVersion) behaves strange
https://bugs.ruby-lang.org/issues/256?journal_id=1999
2008-12-12T08:03:12Z
rogerdpack (Roger Pack)
rogerpack2005@gmail.com
<ul></ul><p>=begin<br>
That should be fine. Perhaps document it somewhere? [if someone else disagrees feel free to mention it].<br>
-=R<br>
=end</p>