我尝试在由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
答案 0 :(得分:2)
在Ruby 1.8.7中,您需要先require 'rubygems'
然后require 'sqlite3'
您会看到,由于gems存储库的版本特性,RubyGems不会将库文件直接存储在标准库搜索路径中。它在运行时根据需要将必要的gem包添加到库搜索路径。
这意味着必须在任何gem库可访问之前加载RubyGems。
Ruby 1.9 : 默认情况下,默认的Ruby 1.9软件包在大多数平台上都包含RubyGems(目前基于Debian的系统将其拆分为单独的软件包)。这意味着在Ruby 1.9及更高版本中,您不需要'rubygems'来加载gem库。