Защо клиентската CLI на Heroku не работи под Capistrano?

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

Точки с данни: * стандартните команди на обвивката могат да се връщат назад и произвеждат подходящ изход * Поведението е идентично, ако дам абсолютен път към командата 'heroku'. * whoami разкрива, че потребителят под задачата Capistrano съм аз. * всички команди на heroku, които съм пробвал в общ Ruby скрипт с обратни отметки, работят добре. * Всичко работеше добре, докато не преминах към Capistrano 3 и Ruby 2.2

Така че трябва да има нещо в средата на Капистрано и аз се катеря по стените, опитвайки се да разбера какво би било то. Една възможна следа: получавам следния изход за грешка от моята задача 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:в <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' разкрива, че ИТ е създаден за 1.9.3. Бих искал да го създам за 2.2, но стартирането на инсталатора отново в новата среда не промени нищо в спецификацията на Ruby.

Добре, значи това е моята задънена улица. Всяка помощ ще бъде отчаяно оценена.

Благодаря, Стив


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


Отговори (1)


вместо това инсталирайте toolbelt чрез homebrew

$ 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