RubyGems的。 Rails中的LoadError

时间:2010-09-06 16:59:52

标签: ruby-on-rails ruby rubygems

每当我启动Rails应用程序时,我都会得到 LoadError ,并带有以下输出。

On Rails 2.3.8:

no such file to load -- sqlite3/sqlite3_native
<internal:lib/rubygems/custom_require>:29:in `require'

On Rails 3.0.0:

no such file to load -- bundler
<internal:lib/rubygems/custom_require>:29:in `require'

我使用Nginx + Passenger在开发机器上以生产模式运行应用程序。

这个问题的原因是什么?我该如何解决?

感谢。

Debian GNU / Linux 5.0.6;

Ruby 1.9.2;

Rubygems 1.3.7;

Ruby on Rails 2.3.8,3.0.0;

Nginx 0.8.50;

乘客2.2.15;

sqlite3-ruby 1.3.1;

bundler 1.0.0.rc.6。

更新


我的所有宝石都由非特权用户安装在本地目录/home/<usernam>/.gem中。如果有帮助,这是gem env输出:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux]
  - INSTALLATION DIRECTORY: /home/<username>/.gem
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /home/<username>/.gem/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/<username>/.gem
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
     - :gemhome => "/home/<username>/.gem"
     - :gempath => ["/home/<username>/.gem"]
  - REMOTE SOURCES:
     - http://rubygems.org/

更新


我解决了这个问题。它的来源是我定义了一个自定义宝石路径。那就是我在~/.gemrc文件中添加了以下几行:

:gemhome: /home/<username>/.gem
:gempaths:
  - /home/<username>/.gem

因此,我的所有宝石都放在指定的目录中,但不是默认目录。由于某种原因,Rubygems不会在那里找到并且出现异常。

当我从文件中删除这些行时,为Rubygems设置了默认路径,在我安装了所有必需的gem并加载了我的Rails应用程序后,所有这些都开始工作。

再一次,错误条件是:

  1. Nginx + Passenger;
  2. gempath在/home/<unprivileged_user>/.gem;
  3. 中设为~/.gemrc
  4. init.d脚本被加载并添加到引导序列(update-rc.d nginx defaults);
  5. 系统重启,服务器启动atomaticlally;
  6. http://localhost/my_rails_app;
  7. LoadError;没有要加载的文件 - &lt; gem_name&gt ;; &lt; internal:lib / ruby​​gems / custom_require&gt;:29:在`require'。
  8. 为什么Rubygems不能在自定义位置找到宝石,但可以在默认位置找到它们?这就是问题。

2 个答案:

答案 0 :(得分:2)

使用RVM时我也遇到了这个问题 - 我必须指定一个gemset或者其他东西而不是特定于项目。无论如何,如果您想了解RVM的基础知识并尝试为当前文件夹/项目指定新的gemset,请为此gemset安装新的rails gem,然后使用该gemset,请阅读此rvm guide。例如,要为rails版本2.3.8创建新的gemset:


$ rvm gemset create rails238


$ rvm ruby​​-1.8.7@rails238


$ gem install rails -v 2.3.8


然后如果所有按照计划类型rvm gemset使用[gemsetName],或者执行rvm gemset list以查看已安装的gemsets列表,并查看rails是否正常工作试试rails -v并且你应该看到rails 2.3。 8

答案 1 :(得分:0)

检查你的系统以找到你的红宝石和宝石的安装位置(你可以通过“which ruby​​”和“which gem”来实现)。通常,它们安装在同一文件夹(/ usr / bin或/ usr / local)中。如果它们位于不同的位置,则可能存在加载错误。只是一个建议。