Рубін змінювався з часом
Рубін постійно розвивався з 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, які ви повинні знати