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应用程序后,所有这些行都开始工作。
再次,错误条件是:
/home/<unprivileged_user>/.gem
在~/.gemrc
; init.d
脚本已加载并添加到引导序列( update-rc.d nginx defaults
); 为什么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