Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby heroku:找不到命令_Ruby_Macos_Heroku_Gem - Fatal编程技术网

Ruby 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

这似乎在以前以及在其他答案中已经解决了,但似乎没有一个解决方案对我有效

我正在使用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 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运行它(我不运行那么多)