2010-08-03 150 views
2

當我嘗試加載Rails控制檯(或加載運行Apache/Passenger的網站)時,出現無法加載已安裝的gem的錯誤:未找到Ruby gems,但已安裝

 
> script/console 
Loading development environment (Rails 2.3.8) 
no such file to load -- authlogic 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:164:in `process' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' 
/home/nblade/vipreblade/src/console/config/environment.rb:11 
/usr/lib/ruby/1.8/irb/init.rb:254:in `require' 
/usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `each' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:21:in `setup' 
/usr/lib/ruby/1.8/irb.rb:54:in `start' 
/usr/bin/irb:13 
no such file to load -- machinist 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:164:in `process' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' 
/home/nblade/vipreblade/src/console/config/environment.rb:11 
/usr/lib/ruby/1.8/irb/init.rb:254:in `require' 
/usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `each' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:21:in `setup' 
/usr/lib/ruby/1.8/irb.rb:54:in `start' 
/usr/bin/irb:13 
no such file to load -- authlogic 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:169:in `process' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' 
/home/nblade/vipreblade/src/console/config/environment.rb:11 
/usr/lib/ruby/1.8/irb/init.rb:254:in `require' 
/usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `each' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:21:in `setup' 
/usr/lib/ruby/1.8/irb.rb:54:in `start' 
/usr/bin/irb:13 
no such file to load -- machinist 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in' 
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:215:in `load' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `each' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:307:in `load_gems' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:169:in `process' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send' 
/var/lib/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run' 
/home/nblade/vipreblade/src/console/config/environment.rb:11 
/usr/lib/ruby/1.8/irb/init.rb:254:in `require' 
/usr/lib/ruby/1.8/irb/init.rb:254:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `each' 
/usr/lib/ruby/1.8/irb/init.rb:252:in `load_modules' 
/usr/lib/ruby/1.8/irb/init.rb:21:in `setup' 
/usr/lib/ruby/1.8/irb.rb:54:in `start' 
/usr/bin/irb:13 
Missing these required gems: 
    authlogic 
    machinist 

You're running: 
    ruby 1.8.7.249 at /usr/bin/ruby1.8 
    rubygems 1.3.5 at /var/lib/gems/1.8 

Run `rake gems:install` to install the missing gems. 

所以,我也跟着安裝寶石的說明如下:

 
> sudo rake gems:install --trace 
(in /home/nblade/vipreblade/src/console) 
DEPRECATION WARNING: Rake tasks in vendor/plugins/delayed_job/tasks, vendor/plugins/easy-fckeditor/tasks, vendor/plugins/jrails/tasks, and vendor/plugins/restful_authentication/tasks are deprecated. Use lib/tasks instead. (called from /var/lib/gems/1.8/gems/rails-2.3.8/lib/tasks/rails.rb:10) 
** Invoke gems:install (first_time) 
** Invoke gems:base (first_time) 
** Execute gems:base 
** Invoke environment (first_time) 
** Execute environment 
** Execute gems:install 

它沒有安裝任何東西,所以我檢查我的好措施寶石環境:

 
> gem env 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.5 
    - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i486-linux] 
    - INSTALLATION DIRECTORY: /var/lib/gems/1.8 
    - RUBY EXECUTABLE: /usr/bin/ruby1.8 
    - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-linux 
    - GEM PATHS: 
    - /var/lib/gems/1.8 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "gem" => "--no-ri --no-rdoc" 
    - :sources => ["http://gemcutter.org", "http://gems.github.com"] 
    - REMOTE SOURCES: 
    - http://gemcutter.org 
    - http://gems.github.com 

> which gem 
/usr/bin/gem 

> ls -al /usr/bin/gem 
lrwxrwxrwx 1 root root 21 2010-07-14 11:29 /usr/bin/gem -> /etc/alternatives/gem 

> ls -al /etc/alternatives/gem 
lrwxrwxrwx 1 root root 15 2010-07-14 11:29 /etc/alternatives/gem -> /usr/bin/gem1.8 

> ls -al /usr/bin/gem1.8 
-rwxr-xr-x 1 root root 545 2009-10-09 17:51 /usr/bin/gem1.8 

> echo $PATH 
/var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

> echo $GEM_PATH 
/var/lib/gems/1.8: 

> which ruby 
/usr/bin/ruby 

> ls -al /usr/bin/ruby 
lrwxrwxrwx 1 root root 7 2010-07-13 19:54 /usr/bin/ruby -> ruby1.8 

> ls -al /usr/bin/ruby1.8 
-rwxr-xr-x 1 root root 5488 2010-03-19 10:53 /usr/bin/ruby1.8 

> /usr/bin/ruby -v 
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux] 

我也驗證了寶石安裝:

 
> ls -al /var/lib/gems/1.8/gems | grep authlogic 
drwxr-xr-x 7 root root 4096 2010-08-03 12:14 authlogic-2.1.5 

> ls -al /var/lib/gems/1.8/gems | grep machinist 
drwxr-xr-x 4 root root 4096 2010-08-03 12:14 machinist-1.0.6 

所以,很顯然,我做錯了什麼,但我不知道要檢查什麼。有什麼建議麼?

謝謝。

+0

您是否可能安裝了多個版本的Ruby? – Karl 2010-08-03 21:06:19

+0

這就是我認爲的,所以我仔細檢查了: >其中紅寶石 在/ usr/bin中/紅寶石 > LS -al在/ usr/bin中/紅寶石 lrwxrwxrwx 1根根7 2010-07-13 19:54/usr/bin/ruby​​ - > ruby​​1.0 > ls -al /usr/bin/ruby1.8 -rwxr-xr-x 1 root root 5488 2010-03-19 10:53/usr/bin/ruby​​1。 8 – 2010-08-03 21:17:11

+0

謝謝!在我的情況下,gem更新之後突然gem env顯示'安裝目錄:/ usr/lib/ruby​​/gems/1.9.1',它從/var/lib/gems/1.9.1/gems/更改或突然失蹤。通過軟鏈接進行修補。 'gem1.9.1 list'是空的,我所有的腳本都失敗了,在我安裝了100之前。 – Marcos 2012-03-20 14:46:33

回答

5

找到它。我忘記了我之前解開了寶石,所以我查看了我的rails項目的供應商/寶石,當然,authlogic和機械師寶石目錄都沒有任何代碼(儘管目錄確實存在幷包含了一個。規格文件)。因此,要解決這個問題我這樣做:

rake gems:unpack:dependencies 
rake gems:build 

爲了驗證我做了什麼:

rake gems 

現在script/console和Apache /乘客做工精細!

+0

不要忘記接受你自己的回答 – bjg 2010-08-03 22:19:57

+0

我試圖接受它,但它告訴我我必須等幾天。謝謝你的提高,壽。 – 2010-08-04 01:36:49

1

確實「gem list | grep machinist」列出了什麼?你可以嘗試運行「寶石卸載機械師」,然後「寶石安裝機械師」

+0

是的,寶石列表顯示了兩個缺失的寶石。我試圖卸載/重新安裝,但沒有幫助。重新安裝後,這裏是我有: > gem list | grep machinist 機械師(1.0.6) >寶石列表| grep authlogic authlogic(2.1.5) – 2010-08-03 21:14:55