Как я могу указать рубиновую версию для использования на Heroku из файлов конфигурации RVM

Я хотел бы использовать определенную версию ruby ​​при запуске моего приложения на Heroku.

Как объясняется здесь, вам нужно всего лишь добавить строку вида ruby "2.0.0" в вашем Gemfile.

Однако, поскольку я использую RVM локально, я уже указал версию ruby ​​для использования в файле .ruby-version в корневом каталоге проекта, который содержит только строку ruby-2.0.0-p0.

Чтобы избежать дублирования кода, я бы хотел, чтобы версия была указана только в одном месте, чтобы я был уверен, что в разработке и на Heroku всегда используется одна и та же версия.

Есть ли способ сделать это ?


person Daniel Ristic    schedule 03.06.2013    source источник


Ответы (2)


Gemfile — это код ruby, поэтому вы можете написать какой-нибудь ruby, чтобы прочитать версию из .ruby-version и передать это значение методу ruby, а не жестко запрограммированную строку версии.

Если файл .ruby-version находится в том же каталоге, должно работать что-то вроде этого:

ruby File.read(".ruby-version").strip.split("-").first

Если файл .ruby-version содержит, например, «1.9.3-p327», эта строка будет эквивалентна:

ruby "1.9.3"
person Rick Fletcher    schedule 01.10.2013
comment
Спасибо это именно то, что я искал! - person Daniel Ristic; 03.10.2013

Нет, вы не можете указать уровень исправления, который будет использоваться на Heroku — они управляют уровнями исправления за вас. Вам нужно отслеживать их журнал изменений, чтобы знать, когда меняются уровни патчей. Поэтому вам нужно убедиться, что вы используете локально тот же уровень патчей, который для Ruby 2.0.0 присутствует на p195.

person John Beynon    schedule 03.06.2013
comment
Извините, я не ясно выразился. Я не пытаюсь указать уровень исправления, используемый в Heroku, а извлекаю версию из файла .ruby-version и использую ее в Gemfile, чтобы .ruby-версия содержала 1.9.3-psomething. , используется версия 1.9.3, а если я указываю 2.0.0-p, то используется версия 2.0.0. - person Daniel Ristic; 03.06.2013
comment
Вы можете сделать это только с помощью gemfile, поэтому требуется дублирование :( Этот запрос функции был открыт, но вряд ли будет выполнен. Кажется, rvm может читать из Gemfile? github.com/heroku/heroku-buildpack-ruby/issues/63 - person catsby; 03.06.2013