2010-09-06 82 views
5

每次我開始了我的Rails應用程序我得到LoadError與下面的輸出。Rubygems。 LoadError Rails中

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 +乘客在開發機器上運行的生產模式的應用程序。

這個問題的原因是什麼?我該如何解決它?

謝謝。

的Debian GNU/Linux的5.0.6;

Ruby 1.9.2;

Rubygems 1.3.7;

on Rails的2.3.8,3.0.0

紅寶石;

Nginx 0.8.50;

乘客2.2.15;

sqlite3的旁註1.3.1;

捆綁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的設置後,我安裝了所有必需的寶石和加載我的Rails應用程序都開始工作,文件中的行。

再次,錯誤條件是:

  1. 的Nginx +乘客;
  2. gempath設置爲/home/<unprivileged_user>/.gem~/.gemrc;
  3. 安裝了init.d腳本,並將其添加到引導順序(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不能在自定義位置找到寶石,但可以在默認情況下找到它們?這就是問題所在。

回答

0

檢查你的系統,找到你的紅寶石和寶石的安裝位置(你可以通過「哪個寶石」和「哪個寶石」來實現)。通常,它們安裝在相同的文件夾(/ usr/bin或/ usr/local)中。如果他們在不同的位置,可能會出現加載錯誤。只是一個建議。

+0

Sudo與安裝無關,而且在這裏沒有任何內容暗示他使用的是使用sudo的系統(即Ubuntu,因爲大多數人使用su)。 – alternative 2010-09-06 17:11:28

+0

它們位於同一文件夾('/ usr/local/bin')。 – Shamaoke 2010-09-06 17:33:08

2

我在使用RVM時也遇到了這個問題 - 我必須指定一個gemset或者其他東西,而不是使其成爲特定項目。無論如何,如果您想知道RVM的基本知識並嘗試爲當前文件夾/項目指定新的gemset,請爲此gemset安裝新的rails gem,然後使用該gemset,請閱讀rvm guide。例如,創建一個新的寶石爲Rails 2.3.8版本:


$ RVM寶石創建rails238


$ RVM ruby​​[email protected]


$ gem install rails -v 2.3.8


然後,如果全部按照計劃類型rvm gemset使用[gemsetName],或者執行rvm gemset list查看已安裝gemset的列表,並查看rails是否正常工作,請嘗試rails -v,您應該會看到rails 2.3.8

+0

OP沒有表示他們正在使用RVM。在生產服務器上使用RVM並不總是可行的。 – Jits 2011-05-19 15:43:55