【问题标题】:Switching over to zsh breaks rails in command line切换到 zsh 会破坏命令行中的轨道
【发布时间】:2012-03-05 12:05:26
【问题描述】:

我最近刚刚切换到将 zsh 与 oh-my-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)

这看起来像是我遇到了 gem 错误,所以我重新安装了 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

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 rvm bundler zsh


【解决方案1】:

我为捆绑 zsh 和 rvm 所做的工作,这是几部人体电影:

1) 在第一行添加到 .zshrc 以更正查找 bin 目录(您的 CO):

PATH=$PATH:$HOME/.rvm/bin # 将 RVM 添加到 PATH 以编写脚本

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

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

3) 最后更改路径:

导出 PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

对我来说它工作正常(现在它正确定义了所有 rvm gemsets 的 $PATH)

【讨论】:

    【解决方案2】:

    你放了吗

    [[ -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/bin PATH=$PATH:$HOME/.rvm/bin # 添加RVM到脚本路径
    • 当我添加你建议的行时,我仍然遇到了同样的问题
    • 看起来您只是将 rvm 添加到 PATH 中。
    • 啊。对不起... 发布到早,现在我看到你的评论。你试过“gem update --system”吗?
    • 嗯...这可能会干扰 rvm 环境。请尝试删除这些行。我的 my .rvmrc 中没有这些。如果您更改 ruby​​ 版本(rvm --use ...),我发现至少会出现冲突
    【解决方案3】:

    好的,我通过删除在 zshrc 中设置的路径并从我的 bash_profile 复制 rvm 行以便从 rvm 获得正确的配置来让它工作。如果您在终端中运行以下命令,它应该可以工作:

    cat ~/.bash_profile >> ~/.zshrc
    

    【讨论】:

    • 有点错误,.zshrc 不应该用于采购 rvm,你确定你使用登录 shell (-l swithc to zsh) 吗?一些终端,如 gnome-terminal 或 screen,默认情况下没有打开它。
    • 我不知道为什么我的评论得到了反对票,因为这是我的问题的解决方案。这是我需要添加到 zshrc 以使 ruby​​ 正常工作的缺失代码: [[ -s "$HOME/.rvm/scripts/rvm" ]] && 。 "$HOME/.rvm/scripts/rvm"
    • 我投了反对票,因为 .zshrc 不是获取 rvm 的正确位置,你应该阅读这个rvm.beginrescueend.com/support/faq/#shell_login - 它是为 bash 编写的,但同样的规则适用于 zsh,所以把 sourcing进入~/.zprofile~/.zlogin
    【解决方案4】:

    如果您使用的是 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可以访问

    【讨论】:

      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      相关资源
      最近更新 更多