【发布时间】:2016-04-10 20:41:25
【问题描述】:
我的 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
我读到了这个问题:no such file to load -- 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
编辑
尝试切换到旧版本的 rubygems 后:
$ 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
【问题讨论】:
-
天真的问题,但是你在更新 rubygems 后做了
bundle吗? -
是的,我做到了。它不会执行该命令,因为我在运行它后得到了同样的错误。
require': cannot load such file -- stringio (LoadError) -
确实很奇怪。也许值得尝试完全重新安装 ruby:rvm.io/rubies/removing。我从来没有遇到过这样的问题,但如果我站在你的立场上,我会尝试干净安装 ruby,如果没有其他帮助,可能会升级 rvm 本身。
-
可以添加
echo $PATH的输出吗? -
@taglia 好的我添加了
echo $PATH的输出
标签: ruby-on-rails heroku