1

RVM で制御されている Ruby 1.8.7 に sqlite3 ライブラリを読み込んでみました。しかし、私はできません。

状況は次のとおりです

watanabe@linux:~$ rvm use 1.8.7
Using /home/watanabe/.rvm/gems/ruby-1.8.7-p371
watanabe@linux:~$ ruby -v
ruby 1.8.7 (2012-10-12 patchlevel 371) [x86_64-linux]
watanabe@linux:~$ gem list

*** LOCAL GEMS ***

bundler (1.3.5)
bundler-unload (1.0.1)
rake (10.0.4)
rubygems-bundler (1.2.0)
rvm (1.11.3.8)
sqlite3 (1.3.7)
sqlite3-ruby (1.3.3)
watanabe@linux:~$ gem -v
1.8.25
watanabe@linux:~$ irb
1.8.7 :001 > require 'sqlite3'
LoadError: no such file to load -- sqlite3
        from (irb):1:in `require'
        from (irb):1
1.8.7 :002 > exit
watanabe@linux:~$ ls -lA .rvm/gems/ruby-1.8.7-p371/gems/sqlite3-1.3.7/lib/
total 8
drwxrwxr-x 2 watanabe watanabe 4096 Jun  5 17:02 sqlite3
-rw-r--r-- 1 watanabe watanabe  249 Jun  5 17:02 sqlite3.rb
watanabe@linux:~$ ls -lA .rvm/gems/ruby-1.8.7-p371/gems/sqlite3-ruby-1.3.3/lib/
total 4
drwxrwxr-x 2 watanabe watanabe 4096 Jun  5 17:37 sqlite3

sqlite3 gems は正しくインストールされていると思います。しかし、sqlite3 を読み込めません。この問題の解決策を知っていますか?

注: Ruby 1.9.3 で動作します。

watanabe@linux:~$ rvm use 1.9.3
Using /home/watanabe/.rvm/gems/ruby-1.9.3-p429
watanabe@linux:~$ ruby -v
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]
watanabe@linux:~$ gem list

*** LOCAL GEMS ***

bundler (1.3.5)
bundler-unload (1.0.1)
rake (10.0.4)
rubygems-bundler (1.2.0)
rvm (1.11.3.8)
sqlite3 (1.3.7)
watanabe@linux:~$ irb
1.9.3p429 :001 > require 'sqlite3'
 => true
4

1 に答える 1

3

Ruby 1.8.7 では、最初require 'rubygems'に、次にrequire 'sqlite3'

ドキュメントから:

ご覧のとおり、gems リポジトリのバージョン管理された性質により、RubyGems はライブラリ ファイルを標準のライブラリ検索パスに直接保存しません。実行時に必要に応じて、必要な gem パッケージをライブラリの検索パスに追加します。

これは、gem ライブラリにアクセスする前に RubyGems をロードする必要があることを意味します。

Ruby 1.9 : デフォルトの Ruby 1.9 パッケージには、ほとんどのプラットフォームでデフォルトで RubyGems が含まれるようになりました (現在、Debian ベースのシステムではこれが別のパッケージに分割されています)。これは、Ruby 1.9 以降では、gem ライブラリをロードするために「rubygems」を要求する必要がないことを意味します。

于 2013-06-05T09:12:50.253 に答える