[英]no such file to load — rubygems (LoadError)
我最近在fedora 12中安裝了rails。我也是linux新手。 在Windows 7上一切正常。但是我在linux中面臨很多問題。 請幫忙!
我已經安裝了所有必需品,以使基本腳本/服務器啟動並運行。 我在嘗試腳本/服務器時彈出boot.rb時出現此錯誤。 我想在此提供的一些細節:
安裝rails,ruby和gem的目錄,
[vineeth@localhost my_app]$ which ruby
/usr/local/bin/ruby
[vineeth@localhost my_app]$ which rails
/usr/bin/rails
[vineeth@localhost my_app]$ which gem
/usr/bin/gem
當我運行腳本/服務器時,這就是錯誤。
[vineeth@localhost 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
PATH文件看起來像這樣
[vineeth@localhost 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"
我想這與PATH文件有關。 讓我知道我需要在這里改變什么。 如果我還有其他變化,請告訴我。
我有預感你有兩個紅寶石版本。 請粘貼以下命令的輸出:
$ which -a ruby
更新了評論:
核彈一個版本,只留一個版本。 我有兩個版本查看寶石的不同位置有同樣的問題。 讓我瘋了幾個星期。 在這里拿到賞金給我同樣的答案我給你。
我所做的就是核對一個紅寶石的安裝並通過端口留下一個可管理的。 我建議這樣做:
/usr
而不是/usr/local
) rubygems
由於安裝了多個ruby副本,我在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.
做完捆綁后安裝成功了。
好吧,我是一個Ruby noob,但我確實得到的修復方式與這里的答案略有不同,所以希望這有助於其他人(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]
在這樣做后,我的“沒有這樣的文件”問題消失了,我的腳本開始工作了。
我想補充說,在我的情況下沒有安裝rubygems
。
運行sudo apt-get install rubygems
解決了這個問題!
如果其他人正在搜索這個問題:我能夠通過找到我想要使用的難以捉摸的“rubygems”文件夾並將其添加到我的$ RUBYLIB環境變量來修復我的問題。
find / -name "rubygems" -print
找到后,將父目錄添加到您的環境中。 在bash中,像這樣:
export RUBYLIB=/path/to/parent
現在,如果你運行gem,它應該選擇正確的庫目錄,然后你就可以運行了。
我遇到了類似的問題並通過設置RUBYLIB env解決了這個問題。
在我的環境中我使用了這個:
export RUBYLIB=$ruby_dir/lib/ruby/1.9.1/:$ruby_dir/lib/ruby/1.9.1/i686-linux/:$RUBYLIB
我有一個類似的問題,只是運行一個簡單的ruby腳本,只需要我想要的寶石......得到了錯誤信息。 當我改變咒語時:
ruby test.rb
至
ruby -rubygems test.rb
似乎工作。
我也有這個問題。 我的解決方案是刪除文件Gemfile.lock,然后再次安裝gems:bundle install
gem install bundler
為我解決了這個問題。
這是Google搜索'require': cannot load such file -- ubygems (LoadError)
時的第一個答案'require': cannot load such file -- ubygems (LoadError)
在Google自動修正“ubygems”到“rubygems”之后'require': cannot load such file -- ubygems (LoadError)
。 事實證明這是Ruby 2.4和2.5之間的故意改變( Bug#14322 )。 檢測用戶gems目錄而不考慮ruby版本的腳本很可能會失敗。
Ruby 2.4
ruby -rubygems -e 'puts Gem.user_dir'
Ruby 2.5
ruby -rrubygems -e 'puts Gem.user_dir'
如果你安裝了幾個ruby,只需刪除其中一個就足夠了,在MacosX上添加額外端口安裝,刪除ports ruby安裝:
sudo port -f uninstall ruby
我也使用rbenv + passenger + nginx遇到了同樣的問題。 我的解決方案只是將這兩行代碼添加到你的nginx配置中:
passenger_default_user root;
passenger_default_group root;
詳細答案如下: https : //stackoverflow.com/a/15777738/445908
簡單地運行/bin/bash --login
對我來說很奇怪。 無法解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.