2011年6月 9日

[ruby-list:48162] Re: irbでは見つかるのにスクリプトからrequireできません。。

高橋征義です。こんばんは。

2011年6月8日16:38 Tomohiko Hayashi <hayashi-t@xxxxx>:
> いつもお世話になっております。Ruby初心者のはやしと申します(永遠に初心者です)。
> 下記のような環境(MacPortsでRuby 1.8.7を入れようとするも、うまくいかず)で、
>
> Mac OS X 10.5.8
>

> hayashi-tomohiko-no-macbook:~ t-hayashi$ which ruby
> /opt/local/bin/ruby
> hayashi-tomohiko-no-macbook:~ t-hayashi$ ruby -v
> ruby 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]

まずここですが、下の方の「$ ruby -v」は本当に上のと同じ/opt/local/bin/rubyでしょうか?
というか、/opt/local/bin/ruby ってMacPortsのRubyじゃないでしょうか。

/usr/bin/ruby -v

/opt/local/bin/ruby -v
も合わせて実行してみるといいかもしれません。

> irbで以下のようにすると、ちゃんと見つかる'safariwatir'が、
>
> irb(main):001:0> require 'rubygems'
> => true
> irb(main):002:0> require 'safariwatir'
> => true

こちらのirbの起動方法はどうでしょうか?
こちらも、/usr/bin/irb と /opt/local/bin/irb の両方を試してみるといいかもです。

> スクリプト中に以下のように書くと、エラーになってしまいます。
>
> require 'rubygems'
> require 'safariwatir'
>
>
> /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
> `gem_original_require': no such file to load -- safariwatir
> (LoadError)
> from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
> from ×××.rb:11

このスクリプトの起動方法もどうなってるでしょうか?
いわゆる#!、「#!」で始まるファイルに実行権限がついていて
それをそのまま実行しているのか、それともrubyコマンドを
実行しているか。

とりあえずここまで見てあやしげなのは、いちばん最初の
「whch ruby」の実行結果が/opt以下、つまり後から入れたRubyなのに、
最後の例のエラーは/Library/Ruby の下のディレクトリ、つまりOS X標準のRubyの
ライブラリのパスを使っているように見えることです。

なお、Rubyのライブラリのパスは$:で表示できます。

$ ruby -e 'print $:.join("\n")'
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/i686-darwin10
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin10
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/i686-darwin10
.

$ irb
irb(main):001:0> print $:.join("\n")
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/i686-darwin10
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin10
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/i686-darwin10
.=> nil

こんな感じで調べると、何が起こっているか分かりやすいかもしれません。

以上、参考まで。

高橋征義


投稿者 xml-rpc : 2011年6月 9日 01:32
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/104513
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。