簡體   English   中英

Rails 無法加載此類文件 -- stringio (LoadError)

[英]Rails cannot load such file -- stringio (LoadError)

我的 Rails 應用程序運行良好,然后我決定嘗試將它從 4.0 更新到 4.2,這樣我就可以將它放在 Heroku 上。 我遵循的指南說要更新 RubyGems 所以我運行了這個命令:

$ gem update --system

得到這個警告:

Warning! `PATH` is not properly set up, '/Users/devon/.rvm/gems/ruby-2.0.0-p353/bin'
is not at first place, usually this is caused by shell initialization
files - check them for 'PATH=...' entries, it might also help to re-add
RVM to your dotfiles: 'rvm get stable --auto-dotfiles', to fix temporarily
in this shell session run: 'rvm use ruby-2.0.0-p353'

我忽略了警告並轉到指南中的下一步。 我嘗試創建一個 gemset:

$ rvm use 2.0.0p353@rails4.0.2_myapp --create

然后我決定不更新,因為我害怕破壞我的應用程序。 所以我只是嘗試將應用程序推送到 Heroku 而不更新。

我跑了

$ heroku login
$ heroku create
$ git push heroku master

它未能推送到 Heroku,因為 slug 尺寸太大。 我去修復它,然后我開始收到此錯誤:

/Users/devon/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/specification.rb:16:in `require': cannot load such file -- stringio (LoadError)
    from /Users/devon/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/specification.rb:16:in `<top (required)>'
    from /Users/devon/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems.rb:1228:in `require'
    from /Users/devon/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems.rb:1228:in `<module:Gem>'
    from /Users/devon/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems.rb:115:in `<top (required)>'
    from <internal:gem_prelude>:1:in `require'
    from <internal:gem_prelude>:1:in `<compiled>'

TLDR:應用程序正在運行。 然后我運行了這些命令:

$ gem update --system
$ rvm use 2.0.0p353@rails4.0.2_myapp --create
$ heroku login
$ heroku create
$ git push heroku master

現在我收到LoadError錯誤並且無法運行我的應用程序。 我怎樣才能解決這個問題? 我假設我跑的時候有什么東西壞了

$ gem update --system

我讀了這個問題: 沒有這樣的文件要加載——rubygems (LoadError) ,有人說要檢查你是否安裝了兩個 ruby​​ 版本,所以我跑了:

$ which -a ruby
/Users/devon/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
/usr/bin/ruby

但我不知道之后該怎么做,或者這是否重要,因為我只在我的應用程序正常運行后才運行上述命令。

如果重要的話,這是我的版本:

$ ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12.5.0]

我無法運行rails -v因為我收到了 LoadError。 但在錯誤之前我得到了這個:

$ rails -v
Rails 4.0.2

出錯前(我認為在我運行更新命令后更新到了較新的版本):

$ gem -v
2.4.8

編輯

嘗試切換到舊版本的 ruby​​gems 后:

$ rvm rubygems 2.4.8

我有:

Warning! PATH is not properly set up, '/Users/devon/.rvm/gems/ruby-2.0.0-p353/bin'
is not at first place, usually this is caused by shell initialization
files - check them for 'PATH=...' entries, it might also help to
re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles', to fix
temporarily in this shell session run: 'rvm use ruby-2.0.0-p353'.
ruby-2.0.0-p353 - #downloading rubygems-2.4.8
ruby-2.0.0-p353 - #extracting rubygems-2.4.8.....
ruby-2.0.0-p353 - #removing old rubygems..........
ruby-2.0.0-p353 - #installing rubygems-2.4.8.
Error running 'env GEM_HOME=/Users/devon/.rvm/gems/ruby-2.0.0-p353@global GEM_PATH= /Users/devon/.rvm/rubies/ruby-2.0.0-p353/bin/ruby -d /Users/devon/.rvm/src/rubygems-2.4.8/setup.rb --no-document',
showing last 15 lines of /Users/devon/.rvm/log/1452506634_ruby-2.0.0-p353/rubygems.install.log
[2016-01-11 05:03:54] /Users/devon/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
current path: /Users/devon/.rvm/src/rubygems-2.4.8
GEM_HOME=/Users/devon/.rvm/gems/ruby-2.0.0-p353
PATH=/Users/devon/.rvm/gems/ruby-2.0.0-p353/bin:/Users/devon/.rvm/gems/ruby-2.0.0-p353@global/bin:/Users/devon/.rvm/rubies/ruby-2.0.0-p353/bin:/Users/devon/.rvm/bin:/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/devon/my_stuff/android/adt-bundle-mac-x86_64-20130729/sdk/platform-tools:/Users/devon/my_stuff/android/adt-bundle-mac-x86_64-20130729/sdk/tools
GEM_PATH=/Users/devon/.rvm/gems/ruby-2.0.0-p353:/Users/devon/.rvm/gems/ruby-2.0.0-p353@global
command(7): env GEM_HOME=/Users/devon/.rvm/gems/ruby-2.0.0-p353@global GEM_PATH= /Users/devon/.rvm/rubies/ruby-2.0.0-p353/bin/ruby -d /Users/devon/.rvm/src/rubygems-2.4.8/setup.rb --no-document

然后在這里最后出現stringio錯誤

編輯2:

$ echo $PATH
/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/devon/.rvm/gems/ruby-2.0.0-p353/bin:/Users/devon/.rvm/gems/ruby-2.0.0-p353@global/bin:/Users/devon/.rvm/rubies/ruby-2.0.0-p353/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/devon/.rvm/bin:/Users/devon/my_stuff/android/adt-bundle-mac-x86_64-20130729/sdk/platform-tools:/Users/devon/my_stuff/android/adt-bundle-mac-x86_64-20130729/sdk/tools

我對正在發生的事情的最佳猜測:

  1. 您收到的 PATH 警告是因為您使用系統 ruby​​(在 /usr/bin 中)更新了本地 rvm 'gem' 命令;
  2. 當您創建 gemset 時,rvm 修復了路徑,但是在此之后,您的系統 ruby​​ 中的 RubyGems 正在使用您的 rvm ruby​​ 運行,我猜這兩個版本不匹配。

最簡單的解決方案是完全刪除並重新安裝 rvm:

  1. $ rm -rf ~/.rvm
  2. 重新安裝rvm
  3. 重新運行bundle install

為了確認這確實是刪除rvm之前的問題,你可以臨時切換/usr/bin (把這個放在第一位)和/Users/devon/.rvm/gems/ruby-2.0.0-p353/bin (和這個放在后面)你的路徑。 此時, gem -v仍應為您提供 2.4.8,而/Users/devon/.rvm/gems/ruby-2.0.0-p353/bin/gem -v應該可以正常工作並為您提供較新版本的 RubyGems .

替代方案

您可以嘗試的其他(更簡單的)方法是強制 rvm 重新安裝舊版本的 RubyGems,然后再次更新它(如果需要):

rvm rubygems 2.4.8

有關使用 rvm 管理 RubyGems 的更多詳細信息,請查看此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM