геройку: команда не найдена - PullRequest
3 голосов
/ 12 марта 2011

Похоже, что это было решено ранее в Как использовать гемы с Ubuntu? , а также в других ответах, но ни одно из решений, похоже, не работает для меня.

Я использую Mac OSX 10.6

Я установил героку с помощью бандлера. Ниже показано мое окружение гемов и мой путь - я попытался добавить папки, перечисленные в EXECUTABLE DIRECTORY и GEM PATHS, к моему $ PATH, но всегда получаю команду, не найденную, когда я печатаю heroku из моего проекта rails.

$ 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

любая помощь с благодарностью

Ответы [ 4 ]

3 голосов
/ 15 марта 2011

По умолчанию rubygems на Mac устанавливает исполняемые файлы в /usr/bin, а не в каталог gem в /Library/Ruby/Gems. Однако эти каталоги имеют разные разрешения:

~ $ 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 не смог установить исполняемый файл heroku в /usr/bin, когда установил гем, возможно, из-за этой проблемы с разрешениями. В этом сообщении в блоге предполагается, что это проблема с более ранними версиями пакета для OSX.

Исполняемый файл, который устанавливает rubygems, это , а не , просто копия сценария heroku из каталога bin гема (т.е. /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 - это действительно точка компоновщика.

Я бы не рекомендовал добавлять что-либо к вашему $PATH. Как мы уже видели, он не работает, но вам также придется менять его каждый раз, когда вы обновляетесь до новой версии драгоценного камня heroku.

Я бы также не рекомендовал добавлять что-либо в вашу переменную $RUBYLIB. Это может фактически заставить работать команду heroku, но весь смысл использования rubygems и bundler состоит в том, что они управляют такими вещами для вас.

Моя первая рекомендация будет использовать rvm . Это очень полезный инструмент, и я думаю, что стоит потратить некоторое время на его изучение.

Если вы не можете или не хотите этого делать, то вам, вероятно, нужно переустановить гем heroku и проверить, правильно ли он установлен. Сначала удалите существующий драгоценный камень с помощью:

$ sudo gem uninstall heroku

Затем убедитесь, что у вас установлена ​​последняя версия пакета:

$ sudo gem update bundler

Наконец переустановите с

$ bundle install

и он должен попросить ваш пароль для установки исполняемых файлов в нужном месте. Примечание не используйте sudo здесь - подробности см. По ссылке выше.

1 голос
/ 13 марта 2011

Попробуйте добавить это в конец вашего PATH:

/Library/Ruby/Gems/1.8/gems/heroku-1.18.3/bin

Если это не сработает, попросите Spotlight найти файл с именем "heroku" и добавить соответствующий каталог в ваш PATH.Если у вас есть немного времени и вы чувствуете, что хотите быть парнем из unix старой школы:

$ cd /
$ ls -l $(find [A-Z]* -name heroku -not -type d -print)

Вы также можете использовать Золушка для настройки вашего Ruby / PostgreSQL / MySQL / MongoDB/... среда.Это даст вам последние версии всего и разумно определит ваши пути.У меня были некоторые проблемы с работой Золушки, но она спасала меня, и очень приятно, как она помещает все в ~/Developer/, а не разбрасывает все вокруг.

0 голосов
/ 13 декабря 2018

Удалите, а затем переустановите его с помощью команды ниже в sudo работает. Я использую macOS 10.14.

curl https://cli-assets.heroku.com/install.sh | sh

Первоначально я установил его с помощью homebrew, но всегда возникала ошибка, не связанная с фондом. Причиной может быть то, что установка curl выполняется в двух каталогах, упомянутых в официальном документе.

Для быстрой установки в / usr / local / lib / heroku и / usr / local / bin / heroku, запустите этот скрипт (для сценария требуется sudo и не совместим с Windows)

0 голосов
/ 03 ноября 2015

Исправлено путем переустановки Heroku Toolbelt из http://toolbelt.heroku.com

...