ruby-on-rails - ruby 。 Rails 中的加载错误

标签 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。

已更新


我所有的 gem 都由非特权用户安装在本地目录中 /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/

已更新


我解决了这个问题。它的来源是我定义了一个自定义的 gem 路径。那是我加到~/.gemrc提交以下行:

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

因此,我所有的 gems 都被放置在指定的目录中,而不是默认的目录中。出于某种原因,Rubygems 无法在那里找到它并引发异常。

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

再一次,错误条件是:

  1. Nginx + 乘客;
  2. gempath 设置为 /home/<unprivileged_user>/.gem~/.gemrc ;
  3. init.d脚本已创建并添加到启动序列 ( update-rc.d nginx defaults );
  4. 系统重启,服务器自动启动;
  5. http://localhost/my_rails_app ;
  6. 加载错误;没有要加载的文件 -- :29:in `require'.

为什么Rubygems在自定义位置找不到gem,但在默认位置却能找到?就是这个问题。

最佳答案

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


$ rvm gemset 创建 rails238


$rvm ruby​​-1.8.7@rails238


$ gem 安装 rails -v 2.3.8


然后,如果一切按计划进行,请键入 rvm gemset 使用 [gemsetName],或执行 rvm gemset list 以查看已安装的 gemset 列表,并查看 rails 是否正常运行,请尝试 rails -v,您应该会看到 rails 2.3。 8

关于ruby-on-rails - ruby 。 Rails 中的加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3653111/

相关文章:

ruby-on-rails - 使用 ActiveRecord::Relation 对象

ruby - 为什么我的 Rails 开发环境不重新加载代码更改?

ruby - WATIR 安装 Server 2003 失败

ruby - 每个关联模型的 Rails 3 ActiveRecord 模型总和

mysql - jruby jdbcmysql 适配器不适用于 ssl?

ruby-on-rails - 单元测试运行三次

javascript - Ruby on Rails 在后台跟踪位置

ruby-on-rails - Rails 3 跨子域 flash 消息

ruby-on-rails - Rails 应用程序中的 "Tab order"

iOS POST 到 Rails JSON 转义不正确