RubyGems的。 LoadError在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应用程序后,所有这些行都开始工作。

再次,错误条件是:

  • Nginx + Passenger;
  • 所述gempath设为/home/<unprivileged_user>/.gem~/.gemrc ;
  • init.d脚本已加载并添加到引导序列( update-rc.d nginx defaults );
  • 系统重新启动,服务器自动启动;
  • HTTP://本地主机/ my_rails_app;
  • LoadError; 没有这样的文件加载 - ; :29:在'require'中。
  • 为什么Rubygems不能在自定义位置找到宝石,但可以在默认情况下找到它们? 这就是问题所在。


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


    $ rvm gemset create rails238


    $ rvm ruby​​-1.8.7@rails238


    $ gem install rails -v 2.3.8


    然后如果全部按照计划类型rvm gemset use [gemsetName]执行,或者执行rvm gemset list查看已安装gemset的列表,并查看rails是否正常工作,请尝试rails -v,您应该看到rails 2.3.8


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

    链接地址: http://www.djcxy.com/p/25271.html

    上一篇: Rubygems. LoadError in Rails

    下一篇: Rubygems. A newly installed gem isn't added to $LOAD