从RVM切换到rbenv后,我的红宝石路径被搞乱了吗?

问题描述:

我从RVM切换到了rbenv下面这个guideline,现在我可以使用捆绑和运行纯Ruby,但是当我运行bin/rails sbin/rails g model ModelName,或rails g model ModelName我得到下面的错误:从RVM切换到rbenv后,我的红宝石路径被搞乱了吗?

Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring. 
/Users/home/Development/blogger/vendor/bundle/gems/json-1.8.3/lib/json/ext/parser.bundle: [BUG] Segmentation fault at 0x00000000000418 
ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-darwin15.0] 

还有之后的一个大规模的崩溃报告,但我选择不包括它,因为它超过了允许的StackOverflow帖子长度,我不认为它说什么有价值。

我用ruby 2.1.2试过同样的东西,得到了同样的结果。我也做了gem install rubygems-update其成功运行和gem pristine --all它得到这个错误:

ERROR: While executing gem ... (Gem::Exception) 
    Failed to find gems ["==all"] >= 0 

这里是gem env

RubyGems Environment: 
    - RUBYGEMS VERSION: 2.2.2 
    - RUBY VERSION: 2.1.4 (2014-10-27 patchlevel 265) [x86_64-darwin15.0] 
    - INSTALLATION DIRECTORY: /Users/home/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0 
    - RUBY EXECUTABLE: /Users/home/.rbenv/versions/2.1.4/bin/ruby 
    - EXECUTABLE DIRECTORY: /Users/home/.rbenv/versions/2.1.4/bin 
    - SPEC CACHE DIRECTORY: /Users/home/.gem/specs 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-15 
    - GEM PATHS: 
    - /Users/home/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0 
    - /Users/home/.gem/ruby/2.1.0 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 
    - SHELL PATH: 
    - /Users/home/.rbenv/versions/2.1.4/bin 
    - /usr/local/Cellar/rbenv/0.4.0/libexec 
    - /Users/home/.rbenv/shims 
    - /Users/home/.rbenv/bin 
    - /usr/local/bin 
    - /usr/bin 
    - /bin 
    - /usr/sbin 
    - /sbin 

,为什么路径进入2.1.0结果在创业板PATHS?这是我的老版本的红宝石,我敢肯定,它甚至不在我的机器上。它不在rbenv versions下列出。这是问题吗?我如何更改宝石路径,以及将其更改为什么?

我设置$ PATH在我的.bash_profile

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile 

export PATH="$HOME/.rbenv/bin:$PATH" 
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi 

我的.profile文件是空的,echo $PATH结果:/Users/home/.rbenv/shims:/Users/home/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

which ruby结果/Users/home/.rbenv/shims/ruby

的另一个问题是,如果我尝试要在我的主目录中使用bundle命令,即使bundler包含在我的gem列表中,我也会得到Could not locate Gemfile or .bundle/ directory

我已经尝试卸载并重新安装红宝石至少三次,每次都收到相同的错误。我再次相信问题出在我的GEM PATH上,但我没有足够的经验来知道如何解决它。谢谢。

+0

GEM_PATHs是一个红色的鲱鱼。 Ruby的每个x.y版本的Gem存储在同一个目录中。 –

+0

但是如果我使用的是2.1.2或2.1.4,2.1.0应该在我的GEM_PATH的末尾?我不确定还有什么可能是错的。 – usernm

+0

是的,它应该。这是我评论的重点。我使用的是2.2.4,我的路径在所有你的“2.1.0”的地方都有“2.2.0”。不幸的是,我不知道还有什么不对。您需要更多地表征它并更新您的问题。 –

原来的解决方案只是删除我的Rails项目并开始一个新的。我还卸载并重新安装了我的宝石,并在创建新项目之前做了rbenv rehash。我想我应该发布一个答案,而不是仅仅删除这个问题,因为我没有看到删除,并在其他任何回应中重新看到了有关此错误的几个问题。

+0

看起来像是您的rbenv安装或之前的Gemfile/Gemfile.lock已被彻底清理。善于尝试自我修复 – prusswan

+0

@usernm您是如何卸载宝石的?我不认为实际上删除一个rails项目可以解决这个问题?我认为这与删除供应商文件夹一样? – Linus

@usernm ...我想你应该在你的目录中有一个GEMFILE。问题很混乱。所以只要在顶线添加ruby 'version'即可。我希望这是一个选择。好例子是:

ruby '2.1.4'

+0

我错过了,但没有任何区别。 – usernm

+0

是否使用bundle install命令更新gemlist。你会看到gem pristine - 所有这一切都发生在一个新的安装中,它为存储的gemfile找到。如果它不能,那么它开始再次安装它。所以只是向我保证你正在使用bundle install命令? –

+0

我正在使用软件包安装。我只是做了确定。我仍然得到了宝石原始 - 所有提示每次 – usernm