Камень RVM-capistrano, не может найти ruby-1.9.3-p0

Я установил ruby-1.9.3-p286 на моем сервере с RVM, и подтвердил его ruby -v в терминале.

Тем не менее, следуя инструкциям по интеграции драгоценных камней RVM-Capistrano,

set :rvm_ruby_string,  ENV['GEM_HOME'].gsub(/.*\//,"")
require 'rvm/capistrano'

и работает cap deploy, он все еще настаивает на том, чтобы бежать ruby-1.9.3-p0и, конечно, он не может его найти.

Вручную открыть IRB в терминале и запустить ENV['GEM_HOME'].gsub(/.*\//,"") возвращается ruby-1.9.3-p286, поэтому я озадачен, почему он продолжает спрашивать ruby-1.9.3-p0,

Кто-нибудь сталкивался с подобной ситуацией?

1 ответ

Решение

Я просто боролся с подобной проблемой, нашел решение и нашел ваш вопрос. Во всяком случае, в моем случае я указал версию Ruby как 1.9.3-p327 везде: по моему .bashrc файл (rvm --default use 1.9.3-p327), в приложении .rvmrc файл (rvm use 1.9.3-p327@my_app_name), и т.д. cap deploy или же cap deploy:setup:

*** [err :: localhost] ruby-1.9.3-p286 is not installed.
 ** [out :: localhost] To install do: 'rvm install ruby-1.9.3-p286'
*** [err :: localhost] Error: RVM was unable to use '1.9.3@my_app_name'

Оказывается, проблема была в файле конфигурации Capistrano, my_app_name/config/deploy.rb, Он определил версию Ruby следующим образом:

set :rvm_ruby_string,           "1.9.3@#{application}"

Почему Капистрано превратил это в 1.9.3-p286 до сих пор для меня загадка. В любом случае, я добавил патч-уровень Ruby в строку, например так:

set :rvm_ruby_string,           "1.9.3-p327@#{application}"

А потом cap deploy:setup а также cap deploy начал работать.

Кроме того, я узнал, что Capistrano добавил возможность использования версии Ruby, указанной в приложении. .rvmrc файл ( см. это), так что вы можете просто установить эту строку в

set :rvm_ruby_string,           :local

и больше никогда не придется к нему прикасаться, даже если вы измените версию Ruby в .rvmrc,

Другие вопросы по тегам