Почему CLI клиента Heroku не работает под Capistrano?

У меня есть развертывание Capistrano, которому необходимо получить URL-адрес базы данных (используя развертывающую машину, а не цель), вызвав инструментарий Heroku с обратными кавычками Ruby, а именно heroku pgbackups:url --app strong-galaxy-5765. Я делал это в Capistrano 2 в течение нескольких месяцев, но теперь, после обновления до Ruby 2.2 и Cap 3, вызов команды heroku с использованием обратных кавычек Ruby в задаче Capistrano приводит к пустой строке. И дело не только в этой конкретной команде: даже 'heroku --version' ничего не возвращает.

Точки данных: * стандартные команды оболочки имеют обратную отметку и производят соответствующий вывод * поведение идентично, если я укажу абсолютный путь к команде 'heroku'. * whoami показывает, что пользователь задачи Capistrano — это я. * все команды heroku, которые я пробовал в общем сценарии Ruby с обратными кавычками, работают нормально. * Все работало нормально, пока я не перешел на Capistrano 3 и Ruby 2.2

Значит, в среде Capistrano должно быть что-то, и я карабкаюсь по стенам, пытаясь понять, что бы это могло быть. Одна возможная подсказка: я получаю следующую ошибку из моей задачи Capistrano при запуске команды «heroku»:

/Users/upstill/.rvm/gems/ruby-2.2.0@global/gems/bundler-1.7.12/lib/bundler/definition.rb:380:in validate_ruby!': Your Ruby version is 1.9.3, but your Gemfile specified 2.2.0 (Bundler::RubyVersionMismatch) from /Users/upstill/.rvm/gems/ruby-2.2.0@global/gems/bundler-1.7.12/lib/bundler.rb:118:insetup' из /Users/upstill/.rvm/gems/ ruby-2.2.0@global/gems/bundler-1.7.12/lib/bundler/setup.rb:17:in <top (required)>' from /usr/local/heroku/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:36:inrequire' из /usr/local/heroku/ruby/lib/ruby/1.9.1/rubygems/custom_require .rb:36:in `require' INFO 'heroku pgbackups:url --app strong-galaxy-5765' => (pid 46786, выход 1)

Примечание: моя среда Ruby — 2.2.0, как показано ВСЕМИ моими Gemfile, :rbenv_ruby в файле Cap deploy.rb, rvm, rbenv и «ruby -v». Все остальное, что делает Capistrano, использует среду 2.2. Но «heroku --version» показывает, что IT создан для версии 1.9.3. Я бы хотел собрать его для версии 2.2, но повторный запуск установщика в новой среде никак не повлиял на спецификацию Ruby.

Ладно, это мой тупик. Любая помощь будет отчаянно оценена.

Спасибо, Стив


person Steve Upstill    schedule 07.02.2015    source источник


Ответы (1)


вместо этого установите пояс для инструментов через доморощенный

$ brew install heroku
person Jeff Dickey    schedule 08.02.2015
comment
Это помогло. Спасибо, Джефф! Чтобы получить дополнительные баллы, не могли бы вы вкратце объяснить, почему это имеет значение? - person Steve Upstill; 10.02.2015
comment
потому что он использует автономный набор инструментов, который будет использовать любой рубин в вашем PATH - person Jeff Dickey; 11.02.2015