Як керувати своїми версіями Ruby

Рубін змінювався з часом

Рубін постійно розвивався з 1990-х років. І, як і у багатьох мовах, у різних версіях відбулися зміни синтаксису. Це означає, що важливо чітко визначити, яку версію Ruby очікує ваш код.

Ймовірно, найбільш помітна зміна відбулася з Ruby 1.9. Раніше ми писали такі хеші:

 { :one => 1, :two => 2, :three => 3 }

Це використання оператора 'hashrocket' ( =>) було настільки поширеним, що Ruby 1.9 надав скорочення:

 { one: 1, two: 2, three: 3 }

Цей старий код працюватиме в будь-якій версії, але новіший синтаксис працюватиме лише на Ruby 1.9+.

Як це спричиняє проблеми?

Наприклад, ви, можливо, вирішили використовувати самоцвіт, який внутрішньо покладається на функції Ruby 1.9. Це означає, що ваш проект тепер також покладається на функції Ruby 1.9.

Якщо ви не вкажете, яка версія Ruby потрібна вашому проекту, це може дуже заплутати, коли код працює на одній машині, але не на іншій.

Як і у більшості мов, вважається гарною практикою вказувати версію Ruby, яку очікує ваш код. Це значно полегшує управління кількома проектами на вашій машині розробки, кожен з яких очікує іншої версії Ruby.

Як вказати свою версію Ruby?

Існує кілька інструментів, які популярні для цього, але обидва погодились поділитися спільним файлом. Багато проектів Ruby (або Rails) включатимуть простий .ruby-versionфайл, який просто вказує номер версії, наприклад:

2.4.2

Популярні інструменти для керування версією Ruby:

  • Менеджер версій Ruby (RVM)
  • rbenv

Давайте подивимось на RVM.

Використання RVM

RVM, як правило, встановлюється (посилання) на комп'ютері Linux, Unix або MacOS. Це дуже зручно , так як гачки в cd( cвисять dкоманди irectory). Отже, коли ви переходите до нового проекту, ваш файл .ruby-versionчитається автоматично, і ви автоматично перемикаєтесь на правильну версію Ruby перед початком роботи.

Наприклад, у вас може бути така послідовність:

% cd ~/projects/older-project % ruby --version ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-darwin16] % cd ~/projects/newer-project % ruby --version ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]

(Ці приклади наведені з машини MacOS).

Інша інформація про Рубі:

  • Вступ до об’єктно-орієнтованого програмування з Ruby
  • Найпоширеніші методи масивів Ruby, які ви повинні знати