Имам внедряване на 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:in
setup' от /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:in
require' от /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.
Добре, значи това е моята задънена улица. Всяка помощ ще бъде отчаяно оценена.
Благодаря, Стив