2010-05-24 53 views
60

我最近在fedora 12中安裝了rails。我也是linux新手。一切工作正常在Windows 7上。但我在Linux中面臨很多問題。請幫助!沒有這樣的文件加載 - ruby​​gems(LoadError)

我已經安裝了我所知道的所有基本知識來啓動並運行基本腳本/服務器。當我嘗試腳本/服務器時,我從boot.rb彈出了這個錯誤。一些細節,我想在這裏給:

如果裝上軌,紅寶石和寶石的目錄,

[[email protected] my_app]$ which ruby 
/usr/local/bin/ruby 

[[email protected] my_app]$ which rails 
/usr/bin/rails 

[[email protected] my_app]$ which gem 
/usr/bin/gem 

當我運行腳本/服務器,這是錯誤。

[[email protected] my_app]$ script/server 
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError) 
from ./script/../config/boot.rb:9 
from script/server:2:in `require' 
from script/server:2 

和路徑文件看起來像這樣

[[email protected] my_app]$ cat ~/.bash_profile 
# .bash_profile 

# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
. ~/.bashrc 
fi 

# User specific environment and startup programs 

PATH=$PATH:$HOME/bin 

export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/ruby:$PATH" 

我想這是值得做的路徑文件。讓我知道我需要在這裏改變。如果還有其他更改,請告訴我。

回答

101

我有一個預感,你有兩個紅寶石版本。請粘貼以下命令的輸出:

$ which -a ruby 

更新有關的評論:

核彈一個版本,只留下一個。我有兩個版本在尋找寶石的不同位置時遇到同樣的問題。讓我瘋了好幾個星期。在這裏付出賞金,讓我得到同樣的答案,我給你。

我所做的只是一次紅寶石安裝,並通過端口留下一個可管理的。我建議這樣做:通過端口(YUM或任何軟件包管理器)安裝

  1. 刪除紅寶石版本。
  2. 刪除操作系統附帶的ruby版本(手動核心rm)。
  3. 安裝從不同的前綴端口紅寶石版本(的/usr代替/usr/local
  4. 重新安裝rubygems
+13

**謝謝你,你的猜測是正確的。** '[比涅斯@本地〜] $其中-a紅寶石在/ usr /本地/ bin/ruby​​ /usr/local/bin/ruby/usr/bin/ruby' **現在我該怎麼辦?** – Vineeth 2010-05-24 15:11:17

+1

另外值得一提的是,如果您嘗試在rails 3.x上運行腳本/服務器你會得到這個錯誤,而是使用'rails server' – yekta 2011-05-20 13:20:25

+4

好的預感,這也是我的問題。 但是'哪一個紅寶石'沒有透露它。當我鍵入ruby和tab-tab時,它列出了'ruby,ruby1.8和ruby1.9.1'。 – uthomas 2013-11-28 22:16:54

1

如果你安裝了幾個紅寶石,這可能足以只是額外刪除其中的一個,MacOSX上端口安裝,拆卸端口Ruby安裝有:

sudo port -f uninstall ruby 
+0

這幫了我。我安裝了RVM,碰巧也有通過macports安裝的ruby。我卸載了macports,rvm完成了其餘的工作。謝謝! – 2011-12-25 19:22:42

11

萬一別人是谷歌搜索這個問題:我能夠通過尋找難以捉摸的「RubyGems的」修復我的文件夾我想使用它並將其添加到我的$ RUBYLIB環境變量中。

find/-name "rubygems" -print 

一旦找到它,請將父目錄添加到您的環境中。在bash中,像這樣:

export RUBYLIB=/path/to/parent 

現在,如果你運行的寶石,它應該拿起合適的庫目錄,你是關閉和運行。

+3

這可能比nuking紅寶石更好。) – Eimantas 2011-08-30 17:07:41

6

我也有類似的問題,只需運行一個簡單的Ruby腳本,只是需要我想要的寶石...有錯誤信息。當我改變了咒語:

ruby test.rb 

ruby -rubygems test.rb 

似乎工作。

+0

爲我工作,爲MacOS,紅寶石1.8.7(2012-02-08 patchlevel 358)[universal-darwin10.0] – 2013-06-07 13:34:38

5

我有一個類似的問題,並通過設置RUBYLIB env解決。

在我的環境我用這個:

export RUBYLIB=$ruby_dir/lib/ruby/1.9.1/:$ruby_dir/lib/ruby/1.9.1/i686-linux/:$RUBYLIB 
+0

這對我來說(調整路徑)當試圖在chroot環境中使用紅寶石時。 – gabrtv 2013-04-16 14:24:42

+0

工作在centos上? – user151968 2015-04-15 07:31:45

24

我對Ubuntu的一個類似的問題,由於無需安裝紅寶石的多個副本。 (1.8和1.9.1)不幸的是我需要他們兩個。解決方案是使用:

$ sudo update-alternatives --config ruby 
There are 2 choices for the alternative ruby (providing /usr/bin/ruby). 

    Selection Path    Priority Status 
------------------------------------------------------------ 
* 0   /usr/bin/ruby1.8  50  auto mode 
    1   /usr/bin/ruby1.8  50  manual mode 
    2   /usr/bin/ruby1.9.1 10  manual mode 

Press enter to keep the current choice[*], or type selection number: 2 
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode. 

在這樣做後,捆綁安裝成功。

+0

這個適用於我的Ubuntu 12.04 – 2013-03-16 02:08:51

+1

什麼適用於Centos 6.5? – user151968 2015-04-15 07:26:08

0

我也遇到了使用rbenv + passenger + nginx的同樣的問題。我的解決方法就是添加這些2行代碼到你的nginx的配置:

passenger_default_user root; 
passenger_default_group root; 

詳細的答案就在這裏:https://stackoverflow.com/a/15777738/445908

18

OK,我是一個Ruby的小白,但我沒有得到這個稍有不同固定這裏的答案,所以希望這可以幫助別人(tl; dr:我使用RVM將系統Ruby版本切換到rubygems預期的相同版本)。

首先,列出所有紅寶石由Eimantas提到的是一個偉大的起點:

> which -a ruby 
/opt/local/bin/ruby 
/Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby 
/Users/Brian/.rvm/bin/ruby 
/usr/bin/ruby 
/opt/local/bin/ruby 

默認的Ruby實例中由系統使用似乎是1.8.7:

> ruby -v 
ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10] 

而Rubygems使用的版本是由RVM管理的1.9.2版本:

> gem env | grep 'RUBY EXECUTABLE' 
    - RUBY EXECUTABLE: /Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby 

所以這絕對是問題。我不會自己積極使用Ruby(這只是我試圖運行的構建系統腳本的依賴關係),所以我不在乎哪個版本在其他用途​​中處於活動狀態。由於RubyGems的預期已經由RVM管理的1.9.2,我只是用RVM將系統切換到使用1.9.2版本的默認:

> rvm use 1.9.2 
Using /Users/Brian/.rvm/gems/ruby-1.9.2-p290 

> ruby -v 
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0] 

這樣做,我的「沒有這樣的文件」的問題後,走了,我的腳本開始工作。

1

我也有這個問題。 我的解決方案是刪除文件Gemfile。鎖,並再次安裝寶石:捆綁安裝

+0

夥計,這不是解決方案,這是一個伎倆。我的意思是不好的把戲 – ImranNaqvi 2015-11-05 11:00:17

+0

@ImranNaqvi請解釋並提供參考資料來源爲什麼這是一個壞的把戲? – datnt 2016-03-04 02:12:55

13

我只想補充一點,在我的情況下rubygems未安裝。

跑步sudo apt-get install rubygems解決了這個問題!

+0

謝謝!我無法相信這是我迄今爲止嘗試的所有複雜步驟中的解決方案。 :) – jredd 2015-07-26 05:36:53

0

簡單地運行/bin/bash --login對我來說很奇怪。無法解釋它。

0
gem install bundler 

解決了我的問題。

0

這是Google自動將「ubygems」自動更改爲「rubygems」後Google搜索'require': cannot load such file -- ubygems (LoadError)時的第一個答案。原來這是Ruby 2.4和2.5之間的故意改變(Bug #14322)。在不考慮ruby版本的情況下檢測用戶gems目錄的腳本很可能會失敗。

紅寶石2.4

ruby -rubygems -e 'puts Gem.user_dir' 

紅寶石2.5

ruby -rrubygems -e 'puts Gem.user_dir' 
相關問題