1

注意:我已经在我的环境中修复/破解了这个问题(详情如下),但我真的很想了解发生了什么并提供资源,如果这发生在其他人身上。希望这是对 Stack 的正常使用。:)

我正在阅读 Michael Hartl 的 Ruby on Rails 教程(第 2 版),今天遇到了我的第一个主要问题。

在第 3 章第 3.6.1 节“消除 Bundle Exec”中,我执行了这些命令以让 Ruby 版本管理器 (RVM) 为所有项目“调整”我的路径,这样我就可以停止经常键入bundle exec :

$ rvm get head && rvm reload
$ chmod +x $rvm_path/hooks/after_cd_bundler
$ cd /path/to/project
$ bundle install --binstubs=./bundler_stubs

..瞧!我不能再运行bundlervm或许多其他常用功能(我还是 Rails 的新手,所以我不知道这些命令共享什么关系或起源)。我进行了完全重启,因为我来自 Windows,这正是你在狗屎变得时髦时所做的事情,但问题仍然存在!布拉格!

bundle、rvm 等的错误是相同的:

-bash:rvm:找不到命令

(注意:大约在这个时候,我将xcode-select -switch从 /Developer 修改为其他更长、更疯狂的路径 -如果您认为这可能会起作用,请参阅此链接以获取详细信息)

我做了一些挖掘,发现这可能与我的 $PATH 有关,所以这是我的环境 $PATH,如果重要的话:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

PATH 似乎是错误的——那里应该有一些 RVM 的东西,或者那里有一些捆绑器的东西——这就是改变的重点!- 所以我做了更多的挖掘,发现我的文件系统仍然完好无损(RVM 仍然安装,Gemfile 仍然正确等),但在我的终端会话中,Ruby 的版本是旧的(v1.8.7),而且 Rails 甚至都没有安装,所以它开始看起来更像是特定于会话或 RVM 的问题。

做了更多的挖掘,发现如果我在终端中手动运行以下命令(来自~/.bash_login ),一切正常:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

是的!

当我关闭并重新打开终端时,问题又回来了,但是当我重新执行上面的命令时,问题再次得到解决。很明显,这只是终端中没有正确加载的问题,对吧?

我将上面的命令移到~/.bash_profile(除了提示样式之外,它以前是空的),问题对我来说已经完全解决了。我可以关闭并重新打开终端,我要去参加比赛了。

但是发生了什么?!为什么该命令在~/.bash_login而不是~/.bash_profile?我很想了解正在发生的事情,这样我就不会那么笨拙了,这样其他人就可以避免我刚刚经历的 2 小时的 Google 搜索冒险。:)

谢谢!

环境:

  • Mac OS X 10.7.4(狮子)
  • 终端(内置)
  • 崇高的文字 2
4

2 回答 2

0

选择其中一个文件并将其合并到第二个文件中。

RVM 检查这两个文件,一个包含加载 RVM 就足够了,它会工作。

要摆脱bundle exec你,可以使用我的 gem ruby​​gems-bundler,它将被集成到 bundler 1.3 中,因此不再需要额外的工具/脚本/技巧。

于 2012-05-16T02:51:58.333 回答
0

好吧,登录脚本将在不同的时间运行。您可以在这个so question中看到一些细节。但据此~/.bash_login一个别名~./bash_profile。所以我不确定为什么一个为你运行而另一个不为你运行。

但是,在我的系统(Mac OS X 10.6)上,我没有~/.bash_login文件。我有 rvm 和 bundler。

可能相关 - 我安装了 Homebrew,它建议了我/usr/local/bin之前的路径/usr/bin。这样 Homebrew 安装的项目和我自己安装的项目将优先于系统安装的项目。

于 2012-05-15T23:35:46.083 回答