Разработка сайтов в Брянке, ЛНР. Сравнение менеджеров версий Ruby для macOS

 
 

В этой статье я сравню самые популярные менеджеры версий для Ruby на Mac: Chruby, Rbenv и RVM, а также Asdf, менеджер версий для нескольких языков, и Frum, совершенно новый менеджер версий, написанный на Rust. Я дам рекомендации, основанные на том, что вам, скорее всего, понадобится.

Предустановленный Ruby не для разработчиков

Люди, которые плохо знакомы с Ruby, рады узнать, что Ruby предустановлен на macOS. Они часто разочаровываются, когда более опытный разработчик говорит им: «Не используйте систему Mac Ruby». Я уже писал о причинах. Короче говоря, система Ruby предназначена для macOS, а не для вас. Для запуска служебных скриптов нормально, но для разработки системный Ruby устарел и, если не быть осторожным, установка гемов может привести к головным болям (в том числе и к нарушениям безопасности системы).

Проблема Homebrew с одним Ruby

Homebrew — это менеджер пакетов, который стал почти стандартом для добавления программного обеспечения для разработчиков в macOS. Homebrew позволяет легко установить новую версию Ruby, чтобы не полагаться на системный Ruby. Но есть две проблемы с Homebrew. Во-первых, версия Homebrew Ruby может быть автоматически и неожиданно заменена более новой версией при установке других пакетов Homebrew (проблема решается с помощью brew pin ruby). Что еще более важно, Homebrew позволяет установить только одну версию Ruby. Если вы разрабатываете или поддерживаете более одного проекта на Ruby, вам, вероятно, придется переключаться между версиями Ruby. Вот где вам понадобится менеджер версий.

Asdf для нескольких языков

Asdf — это менеджер версий, поддерживающий несколько языков. Если вы используете Ruby для разработки веб-приложений с Rails 6, вам потребуется установить Node и Yarn для создания начального приложения Rails. (Rails 7 может устранить необходимость в Node, но на данный момент это еще не точно.)

Итак, для разработчика Rails Asdf — идеальный менеджер версий. Он также сослужит вам хорошую службу, если вы разрабатываете приложения на Python, Elixir или многих других языках (см. список поддерживаемых языков). Есть ли недостаток в использовании Asdf? Только два. Он использует прокладки для перехвата общих команд, что может затруднить устранение неполадок. Кроме того, это может быть немного медленным для некоторых операций. Если вы разрабатываете на нескольких языках, я рекомендую вам попробовать Asdf, чтобы посмотреть, понравится ли он вам. Переключитесь на Frum, менеджер версий только для Ruby, написанный на Rust, если вы обнаружите, что Asdf замедляет работу.

Менеджеры версий только для Ruby

Если вы собираетесь разрабатывать приложения только с использованием Ruby, выберите один из четырех менеджеров версий только для Ruby: Chruby, Frum, Rbenv и RVM. Различия между ними заключаются в скорости, сложности и том, как каждый из них переключает версии Ruby. Давайте сначала посмотрим на самый старый: RVM.

РВМ

RVM был первым популярным менеджером версий для Ruby. Он до сих пор поддерживается и широко используется. RVM изменяет системную cdкоманду для установки переменных среды при смене каталогов. Чтобы переопределить cdкоманду, сценарий установки RVM изменяет файл конфигурации оболочки (~/.zshrcфайл на более новых компьютерах Mac).

RVM правильно отображает переменные среды, показывая версию и местоположение Ruby и gem, что может помочь в диагностике проблем. Однако RVM включает в себя дополнительные функции, такие как наборы драгоценных камней. Наборы драгоценных камней больше не нужны, так как Bundler был добавлен в ядро ​​Ruby для управления зависимостями драгоценных камней. Дополнительная сложность не требуется, поэтому многие разработчики перешли на более новый менеджер версий, такой как Rbenv, Chruby или Frum.

Рбенв

Наряду с RVM, Rbenv долгое время был самым популярным менеджером версий для Ruby. Rbenv использует прокладки для перехвата общих команд Ruby. (Asdf также использует прокладки.)

После установки Rbenv с помощью Homebrew вы должны изменить свой ~/.zshrcфайл, чтобы прокладки Rbenv имели приоритет над обычными командами Ruby. Оболочка вызывает rbenv execкоманду, которая определяет, какую версию Ruby использовать перед выполнением любой команды Ruby.

Шипы имеют два недостатка. Во-первых, прокладки усложняют устранение неполадок, скрывая реальную команду. Например, which rubyкоманда показывает оболочку Rbenv, а не фактическую версию Ruby (вы должны установить RBENV_DEBUGпеременную среды, если хотите увидеть реальную команду Ruby). Во-вторых, прокладка может добавлять микросекунды к задержке выполнения команды Ruby. (Rbenv вмешивается каждый раз, когда вы запускаете команду Ruby, в отличие от RVM, который вмешивается только тогда, когда вы меняете каталоги.) Для разработчиков, которые замечают задержку или им не нравится идея прокладок, есть Chruby или Frum.

Хруби

Chruby не так известен, как RVM или Rbenv, но его поддерживают несколько выдающихся разработчиков Ruby. В отличие от RVM, он не отменяет cdкоманду. В отличие от Rbenv или Asdf, он не перехватывает команды с помощью прокладок. Вам нужно будет изменить свой ~/.zshrcфайл, чтобы Chruby работал в вашей локальной среде оболочки. Нет необходимости изменять ваш файл $PATH, поскольку Chruby сделает это за вас на основе выбранной вами версии Ruby.

Chruby также устанавливает определенные переменные среды для Ruby. Это все, что нужно Chruby для переключения между версиями Ruby. Он отлично подходит для устранения неполадок с which. Я использовал Chruby несколько лет и не имел с ним проблем. Chruby — отличный выбор, но вы можете попробовать Frum, новейший менеджер версий Ruby.

Прекрасный

Frum написан на Rust, хорошем языке для быстрого запуска системного программного обеспечения из командной строки. Фрум новый (выпущен в начале 2021 года). В отличие от Asdf, Chruby или Rbenv, он включает в себя встроенную команду установки Ruby, поэтому для установки Ruby не требуется дополнительная программа. Установщик быстрый, и Frum не требует зависимостей (это универсальный исполняемый файл Rust, который вы можете установить с помощью Homebrew).

После установки Frum вы должны изменить свой ~/.zshrcфайл, чтобы Frum работал в вашей локальной среде оболочки. Как и другие диспетчеры версий, он проверяет наличие.ruby-versionфайла в каталоге проекта и, если для проекта не указана версия, по умолчанию используется глобальная версия Ruby. Здесь нет прокладок (в отличие от Asdf или Rbenv), и он не отменяет cdкоманду (в отличие от RVM). Хотя это новое, я рекомендую его, потому что это все-в-одном и быстро.

Установка менеджера версий для Ruby

Я написал полное руководство по установке Ruby на Mac. В руководстве я даю инструкции для:

установка Ruby с помощью Asdf

установка Ruby с Frum

установка Ruby с Chruby

установка Ruby с Homebrew

Если вы хотите изучить RVM или Rbenv, см.:

РВМ

Рбенв

Примечание о Докере

Если вы упомянете менеджеры версий Ruby, кто-то, скорее всего, скажет: «Я использую Docker». Docker — это инструмент контейнеризации, который некоторые разработчики используют для управления версиями. Основным вариантом использования Docker является создание воспроизводимого виртуального сервера, который содержит настроенную версию любой программной зависимости, необходимой для запуска приложения (язык, базы данных, очереди сообщений). Таким образом, он идеально подходит для создания «замороженной» версии среды разработки для развертывания на сервере.

Вы также можете разрабатывать локально в контейнере, но он будет работать медленнее, потребует больше памяти и усложнит конфигурацию по сравнению с диспетчером версий. Для простоты я избегаю Docker для локальной разработки, если приложение не слишком сложное.

Заключение

Вы не просто случайный пользователь Ruby, если работаете над несколькими проектами в Ruby. Убедитесь, что вы установили отличный менеджер версий в вашей локальной среде разработки.

Мне нравится Asdf, потому что я разрабатываю на Ruby и JavaScript, и Asdf дает мне один менеджер версий для обоих языков. Тем не менее, Asdf использует прокладки (например, Rbenv), поэтому иногда он работает медленнее, чем мне нравится. Меня также раздражает, что Asdf скрывает фактическую команду от устранения неполадок с помощью whichкоманды. Если эти недостатки перевешивают удобство управления несколькими языками, я рекомендую использовать Frum для переключения между версиями Ruby. Менеджеры версий должны быть простыми и не мешать вам во время работы.

3D-печать5GABC-анализAndroidAppleAppStoreAsusCall-центрChatGPTCRMDellDNSDrupalExcelFacebookFMCGGoogleHuaweiInstagramiPhoneLinkedInLinuxMagentoMicrosoftNvidiaOpenCartPlayStationPOS материалPPC-специалистRuTubeSamsungSEO-услугиSMMSnapchatSonyStarlinkTikTokTwitterUbuntuUp-saleViasatVPNWhatsAppWindowsWordPressXiaomiYouTubeZoomАвдеевкаАктивные продажиАкцияАлександровск ЛНРАлмазнаяАлчевскАмвросиевкаАнализ конкурентовАнализ продажАнтимерчандайзингАнтрацитАртемовскАртемовск ЛНРАссортиментная политикаБелгородБелицкоеБелозерскоеБердянскБизнес-идеи (стартапы)БрендБрянкаБукингВахрушевоВендорВидеоВикипедияВирусная рекламаВирусный маркетингВладивостокВнутренние продажиВнутренний маркетингВолгоградВолновахаВоронежГорловкаГорнякГорскоеДебальцевоДебиторкаДебиторская задолженностьДезинтермедитацияДзержинскДивизионная система управленияДизайнДимитровДирект-маркетингДисконтДистрибьюторДистрибьюцияДобропольеДокучаевскДоменДружковкаЕкатеринбургЕнакиевоЖдановкаЗапорожьеЗимогорьеЗолотоеЗоринскЗугрэсИжевскИловайскИрминоКазаньКалининградКировскКировскоеКомсомольскоеКонстантиновкаКонтент-маркетингКонтент-планКопирайтингКраматорскКрасноармейскКрасногоровкаКраснодарКраснодонКраснопартизанскКрасный ЛиманКрасный ЛучКременнаяКураховоКурскЛисичанскЛуганскЛутугиноМакеевкаМариупольМаркетингМаркетинговая информацияМаркетинговые исследованияМаркетинговый каналМаркетинг услугМаркетологМарьинкаМедиаМелекиноМелитопольМенеджментМерчандайзерМерчандайзингМиусинскМолодогвардейскМоскваМоспиноНижний НовгородНиколаевНиколаевкаНишевой маркетингНовоазовскНовогродовкаНоводружескНовосибирскНумерическая дистрибьюцияОдессаОмскОтдел маркетингаПартизанский маркетингПервомайскПеревальскПетровскоеПлата за кликПоисковая оптимизацияПопаснаяПравило ПаретоПривольеПрогнозирование продажПродвижение сайтов в ДонецкеПроизводство видеоПромоПромоушнПрямой маркетингРабота для маркетологаРабота для студентаРазработка приложенийРаспродажаРегиональные продажиРекламаРеклама на асфальтеРемаркетингРетро-бонусРибейтРитейлРовенькиРодинскоеРостов-на-ДонуРубежноеСамараСанкт-ПетербургСаратовСватовоСвердловскСветлодарскСвятогорскСевастопольСеверодонецкСеверскСедовоСейлз промоушнСелидовоСимферопольСинергияСколковоСлавянскСнежноеСоздание сайтов в ДонецкеСоледарСоциальные сетиСочиСтаробельскСтаробешевоСтахановСтимулирование сбытаСуходольскСчастьеТелемаркетингТельмановоТираспольТорговый представительТорезТрейд маркетингТрейд промоушнТюменьУглегорскУгледарУкраинскХабаровскХарцызскХерсонХостингЦелевая аудиторияЦифровой маркетингЧасов ЯрЧелябинскШахтерскЮжно-СахалинскЮнокоммунаровскЯндексЯсиноватая