【发布时间】:2011-04-08 20:41:14
【问题描述】:
每次我启动我的 Rails 应用程序时,都会收到 LoadError 并显示以下输出。
在 Rails 2.3.8 上:
没有要加载的文件 -- sqlite3/sqlite3_native在 Rails 3.0.0 上:
没有要加载的文件——捆绑器我在使用 Nginx + Passenger 的开发机器上以生产模式运行应用程序。
这个问题的原因是什么?我该如何解决?
谢谢。
Debian GNU/Linux 5.0.6;
红宝石 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;
捆绑器 1.0.0.rc.6.
更新
我所有的 gem 都是由本地目录 /home/<usernam>/.gem 中的非特权用户安装的。如果有帮助,这里是gem env 输出:
更新
我解决了这个问题。它的来源是我定义了一个自定义 gem 路径。那就是我在~/.gemrc 文件中添加了以下几行:
因此,我所有的 gem 都放在指定的目录中,但不是默认目录。出于某种原因,Rubygems 在那里找不到它并引发了异常。
当我从文件中删除这些行时,为 Rubygems 设置了默认路径,在我安装了所有必需的 gem 并加载了我的 Rails 应用程序后,所有这些都开始工作了。
再次,错误条件是:
- Nginx + 乘客;
- gempath 在
~/.gemrc中设置为/home/<unprivileged_user>/.gem; -
init.d脚本已创建并添加到引导序列 (update-rc.d nginx defaults); - 系统重启,服务器自动启动;
- http://localhost/my_rails_app;
- 加载错误;没有要加载的文件 --
; :29:in `require'。
为什么 Rubygems 不能在自定义位置找到 gem,但在默认位置可以找到它们?这就是问题所在。
【问题讨论】:
标签: ruby-on-rails ruby rubygems