每次我開始了我的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應用程序都開始工作,文件中的行。
再次,錯誤條件是:
- 的Nginx +乘客;
- gempath設置爲
/home/<unprivileged_user>/.gem
~/.gemrc
; - 安裝了
init.d
腳本,並將其添加到引導順序(update-rc.d nginx defaults
); - 系統重新啓動,服務器啓動atomaticlally;
- http://localhost/my_rails_app;
- LoadError;沒有這樣的文件加載 - < gem_name >; < internal:lib/rubygems/custom_require >:29:在`require'中。
爲什麼Rubygems不能在自定義位置找到寶石,但可以在默認情況下找到它們?這就是問題所在。
Sudo與安裝無關,而且在這裏沒有任何內容暗示他使用的是使用sudo的系統(即Ubuntu,因爲大多數人使用su)。 – alternative 2010-09-06 17:11:28
它們位於同一文件夾('/ usr/local/bin')。 – Shamaoke 2010-09-06 17:33:08