转换到zsh,在命令行中破坏了rails

7
我最近切换到了使用oh-my-zsh的zsh,并且我在使用rails命令行工具时遇到了问题。以下是我运行的步骤和收到的错误信息。
我运行了github页面提供的curl命令:
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

然后我执行了rails s命令,出现了以下错误消息:

.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find railties (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)

这似乎是一个宝石错误,所以我重新安装了rvm、rails和bundler,但没有解决问题。然而,如果我把终端切换回bash,那么就没有任何问题,Rails可以完美地工作。还有其他人遇到过类似的问题吗?我想使用zsh,因为它似乎具有更好的功能,但如果我不能使用Rails,那么我必须放弃它。
这是我的.zshrc文件末尾的几行:
export PATH=/Users/thomascioppettini/.rvm/gems/ruby-1.9.3p0/bin:/Users/thomascioppettini/.rvm/gems/ruby-1.9.3-p0@global/bin:/Users/thomascioppettini/.rvm/rubies/ruby-1.9.3-p0/bin:/Users/thomascioppettini/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

可能是RVM在ZSH中无法工作的重复问题 - igauravsehrawat
4个回答

11

我为了将zsh和rvm打包工作而做的一些调整:

1)在.zshrc的第一行添加以下内容以纠正查找bin目录(您的CO):

  

PATH = $ PATH:$ HOME / .rvm / bin#为脚本添加RVM

2)在上一行后添加下一行:

  

[[ -s“$ HOME / .rvm / scripts / rvm”]] &&&。"$ HOME / .rvm / scripts / rvm"

3)最后更改PATH:

  

export PATH = $ PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/ usr /游戏

对于我,它运行良好(现在可以正确定义具有所有rvm gemset的$ PATH)。


7
你是否已经放置了

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.

把它放到你的.zshrc文件中?

我假设rvm-installer只会将其安装到.bashrc文件中。


这是我 .zshrc 文件底部的内容: export PATH=/Users/thomascioppettini/.rvm/gems/ruby-1.9.3-p0/bin:/Users/thomascioppettini/.rvm/gems/ruby-1.9.3-p0@global/bin:/Users/thomascioppettini/.rvm/rubies/ruby-1.9.3-p0/bin:/Users/thomascioppettini/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/binPATH=$PATH:$HOME/.rvm/bin # 为脚本添加 RVM 到 PATH - tomciopp
当我添加了你建议的那些行之后,我仍然遇到了同样的问题。 - tomciopp
啊,抱歉...我发帖太早了,现在看到你的评论了。你尝试过 "gem update --system" 吗? - fenton
顺便问一下,你为什么要在 .zshrc 中明确设置 Ruby 版本(1.9.3)呢?我认为你只需要使用“rvm --default use ruby-1.9.3”一次,然后 rvm 就会完成其余工作(使用我在开头发布的环境脚本)。 - fenton
1
嗯...可能会影响rvm环境。请尝试删除这些行。在我的.rvmrc中没有这些行。我发现,如果更改ruby版本(rvm --use ...),至少会出现冲突。 - fenton
显示剩余2条评论

3

我通过删除在zshrc中设置的路径,并从bash_profile中复制rvm行,以便从rvm获取正确的配置,成功让它工作了。如果你在终端中运行以下命令,它应该能够正常工作:

cat ~/.bash_profile >> ~/.zshrc

这有些不对,.zshrc 不应该用于源化 rvm,您确定使用登录 shell 吗(-l 切换到 zsh)?一些终端,如 gnome-terminal 或 screen,默认情况下不会启用它。 - mpapis
我不知道为什么我的评论会收到负面评价,因为这是解决我的问题的方法。以下是我需要添加到zshrc中的缺失代码,以便使ruby正常工作: [[ -s“$ HOME / .rvm / scripts / rvm”]] &&。“$ HOME / .rvm / scripts / rvm” - tomciopp
我因为在.zshrc中引用rvm而被down-vote了,你应该阅读这个链接https://rvm.beginrescueend.com/support/faq/#shell_login - 它是为bash编写的,但同样的规则适用于zsh,所以将其放入~/.zprofile~/.zlogin - mpapis

0
如果您正在使用rbenv,则从bash.rc复制此行,可以通过sudo gedit ~/.bashrc访问它: export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 然后将其粘贴到zshrc中,可以通过sudo gedit ~/.zshrc访问。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接