لماذا أحصل على RubyVersionMismatch عند استدعاء حزام أدوات Heroku CLI مع أشعل النار؟
-
21-12-2019 - |
سؤال
أحاول تنفيذ heroku
CLI من مهمة أشعل النار:
1 task :call_heroku do
2 `heroku pgbackups:url --remote staging`
3 end
bundle exec rake call_heroku
تقوم بإرجاع الإخراج التالي:
/home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/bundler/
definition.rb:390:in `validate_ruby!': Your Ruby version is 1.9.3,but your
Gemfile specified 2.1.0 (Bundler::RubyVersionMismatch)
from /home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/
bundler.rb:116:in `setup'
from /home/joe/.rvm/gems/ruby-2.1.0@global/gems/bundler-1.6.1/lib/
bundler/setup.rb:17:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
--remote staging
تنفيذ heroku pgbackups:url --remote staging
من سطر الأوامر يُرجع عنوان URL المتوقع.هل أواجه مشكلة في تكوين rvm أو Heroku CLI؟
تفاصيل البيئة:
القضبان 3.2.17
هيروكو:
joe@warpaint ~/dev/project (master) $ heroku version
heroku-toolbelt/2.39.0 (i686-linux) ruby/1.9.3
دورة في الدقيقة:
joe@warpaint ~/dev/project (master) $ rvm version
rvm 1.25.22 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
joe@warpaint ~/dev/project (master) $ rvm list
rvm rubies
jruby-1.7.1 [ i386 ]
ree-1.8.7-2012.02 [ i686 ]
ruby-1.8.7-p374 [ i686 ]
ruby-1.9.2-p320 [ i686 ]
ruby-1.9.3-p0 [ i686 ]
ruby-1.9.3-p362 [ i686 ]
ruby-1.9.3-p392 [ i686 ]
ruby-1.9.3-p448 [ i686 ]
ruby-1.9.3-p484 [ i686 ]
ruby-2.0.0-p0 [ i686 ]
* ruby-2.0.0-p247 [ i686 ]
ruby-2.0.0-p353 [ i686 ]
ruby-2.0.0-p451 [ i686 ]
ruby-2.0.0-preview2 [ i686 ]
=> ruby-2.1.0 [ i686 ]
ruby-head [ i686 ]
# => - current
# =* - current && default
# * - default
روبي:
joe@warpaint ~/dev/project (master) $ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]
المحلول
وتبين أن هذه مشكلة المجمع.بعض التنقيب قادني إلى هذه المشكلة:https://github.com/bundler/bundler/issues/2355, ، والذي تم حله بواسطة @indirect ويذكر باستخدام Bundler.with_clean_env
(أكثر على هذا الأمر).
الآن تصبح مهمتي أعلاه:
1 task :call_heroku do
2 Bundler.with_clean_env { p `heroku pgbackups:url --remote staging` }
3 end
وكل شيء على ما يرام!
نصائح أخرى
هذا فقط لأنك قمت بالتثبيت heroku
في 1.9.3
روبي.
تثبيت Heroku في 2.1.0
روبي، سيكون جيدا بعد ذلك.
لا تنتمي إلى StackOverflow