RubyGems的.Rails中的LoadError

Sha*_*oke 5 ruby rubygems ruby-on-rails

每次我启动我的Rails应用程序时,我都会得到具有以下输出的LoadError.

在Rails 2.3.8上:

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

在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 +乘客;
  2. 所述gempath被设置为/home/<unprivileged_user>/.gem~/.gemrc;
  3. 一个init.d脚本creaded并添加到引导序列(update-rc.d nginx defaults);
  4. 系统重启,服务器启动atomaticlally;
  5. http:// localhost/my_rails_app ;
  6. LoadError; 没有要加载的文件 - <gem_name>; <internal:lib/ruby​​gems/custom_require>:29:在`require'中.

为什么Rubygems不能在自定义位置找到宝石,但可以在默认位置找到它们?这就是问题所在.

Shr*_*yas 0

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