Ruby heroku:找不到命令
这似乎在以前以及在其他答案中已经解决了,但似乎没有一个解决方案对我有效 我正在使用MacOSX10.6 我已经使用bundler安装了heroku。下面显示了我的gem环境和路径-我已经尝试将可执行目录和gem路径中列出的文件夹添加到我的$path中,但是当我从rails项目中键入heroku时,总是找不到命令Ruby heroku:找不到命令,ruby,macos,heroku,gem,Ruby,Macos,Heroku,Gem,这似乎在以前以及在其他答案中已经解决了,但似乎没有一个解决方案对我有效 我正在使用MacOSX10.6 我已经使用bundler安装了heroku。下面显示了我的gem环境和路径-我已经尝试将可执行目录和gem路径中列出的文件夹添加到我的$path中,但是当我从rails项目中键入heroku时,总是找不到命令 $ bundle show heroku /Library/Ruby/Gems/1.8/gems/heroku-1.18.3 $ gem environment RubyGems En
$ bundle show heroku
/Library/Ruby/Gems/1.8/gems/heroku-1.18.3
$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.6.1
- RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-10
- GEM PATHS:
- /Library/Ruby/Gems/1.8
- /Users/iantinsley/.gem/ruby/1.8
- /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/iantinsley/bin:/usr/local/bin:/usr/bin
$ heroku
-bash: heroku: command not found
非常感谢您的任何帮助请尝试将此添加到您的
路径的末尾
:
/Library/Ruby/Gems/1.8/gems/heroku-1.18.3/bin
如果这不起作用,请让Spotlight查找名为“heroku”的文件,并将相应的目录添加到路径中。如果您有一些时间,并且想做一个老学究:
$ cd /
$ ls -l $(find [A-Z]* -name heroku -not -type d -print)
您还可以使用来设置Ruby/PostgreSQL/MySQL/MongoDB/。。。环境这将为您提供所有内容的最新版本,并明智地设置您的路径。我有一些问题让灰姑娘去,但它一直是一个救命恩人,它把一切都放在~/Developer/
而不是分散在所有地方,这是非常好的。默认情况下,mac上的rubygems将可执行文件安装到/usr/bin
而不是/Library/Ruby/Gems
的gem目录下。但是,这些目录具有不同的权限:
~ $ ls -ld /usr/bin/ /Library/Ruby/Gems/
drwxrwxr-x 4 root admin 136 15 Nov 22:19 /Library/Ruby/Gems/
drwxr-xr-x 1085 root wheel 36890 11 Feb 22:57 /usr/bin/
因此,尽管它们都属于root
,但gems目录可由admin
组中的任何人写入,而/usr/bin
则不可写入
这里发生的事情似乎是bundler在安装gem时无法将heroku可执行文件安装到/usr/bin
中,可能是因为这个权限问题。这表明OSX上早期版本的bundler存在问题
rubygems安装的可执行文件不仅仅是gem的bin目录中heroku脚本的副本(即/Library/Ruby/Gems/1.8/Gems/heroku-1.18.3/bin
)。相反,它是rubygems生成的一个包装器脚本,它首先加载rubygems以使其能够在ruby加载路径上工作,这样当脚本本身被调用时,任何require
语句都能够找到适当的库
这意味着,如果您直接调用脚本,rubygems将不会被加载,因此加载路径将无法正确设置,并且,正如您所看到的,您将得到关于缺少依赖项的错误。要演示这一点,请尝试运行
$ ruby -rubygems /Library/Ruby/Gems/1.8/gems/heroku-1.18.3/bin/heroku
它运行脚本,但首先加载rubygems。这应该(可能——我不确定)行得通
这也是bundle exec heroku
工作的原因。Bundler根据需要设置加载路径。此外,这样做可以确保加载路径的设置与您的Gemfile.lock
文件相匹配-实际上,这就是bundler的要点
我不建议您在$PATH
中添加任何内容。正如我们所看到的,它不起作用,但是每次升级到heroku gem的更新版本时,您都需要更改它
我还建议不要向$RUBYLIB
变量添加任何内容。这样做实际上可以让heroku命令正常工作,但使用rubygems和bundler的全部意义在于,它们可以为您管理这样的东西
我的第一个建议是使用。这是一个非常有用的工具,我认为值得花些时间研究一下
如果您无法或不愿意这样做,那么您可能需要重新安装heroku gem,并检查它是否正确安装。首先,删除现有的gem,方法是:
$ sudo gem uninstall heroku
然后确保您已获得bundler的最新版本:
$ sudo gem update bundler
最后使用重新安装
$ bundle install
它应该询问您的密码,以便将可执行文件安装到正确的位置。注意不要在此处使用sudo
——有关详细信息,请参见上面的链接。通过重新安装Heroku Toolbelt(从卸载),然后在sudo
works中使用下面的命令重新安装,修复了此问题。我正在使用macOS 10.14
curlhttps://cli-assets.heroku.com/install.sh |sh
我最初是用自制软件安装的,但总是出现命令not fund
错误。原因可能是,在官方文件中提到的两个目录中设置了curl安装
要快速安装到/usr/local/lib/heroku和/usr/local/bin/heroku,请运行此脚本(该脚本需要sudo,不兼容Windows)
你能剪切粘贴失败的命令和输出吗?:)bundle-exec-heroku
工作正常吗?是的,bundle-exec工作正常,我可以接受。从/Library/Ruby/Gems/1.8/Gems/heroku-1.18.3/bin运行heroku失败,因为没有加载依赖项。我在“答案”中详细说明了这一切,但有人删除了它-不知道为什么。@user656510,谢谢你更新帖子,太好了。很遗憾你的补遗被删除了。如果您可以编辑文章以包含堆栈跟踪,那将非常有用。:)我猜您需要将一些目录添加到RUBYLIB
环境变量中(有关详细信息,请参阅ruby(1)
manpage),以便ruby可以找到所需的包,但不会看到具体的错误消息,很难知道我是否在正确的轨道上。我在路径中添加了/Library/Ruby/Gems/1.8/Gems/heroku-1.18.3/bin。这允许我运行heroku,但我得到了以下堆栈trace@user656510:sarnold关于RUBYLIB的评论听起来不错。您应该能够编辑问题以添加stacktrace,您的答案可能被删除,因为它是一个问题更新,而不是一个答案。精彩而全面的答案。你说得对,运行ruby-rubygems/Library/ruby/Gems/1.8/Gems/heroku-1.18.3/bin/heroku对我来说很有用。我只是学到了很多。我熟悉RVM,并在工作中使用它,但我认为我只有一个环境,没有它我会生活。下次我会用的。目前,我要么重新安装,要么通过bundleexec运行它(我不运行那么多)