Новый инструмент на основе ржавчины устанавливает Ruby за секунды

Легко заставить разработчиков, чтобы попробовать Ruby on Rails, с его производительностью, скоростью и эффективностью … но затем наступает время, необходимое для его установки. «Если у вас есть капля на 5 долларов в месяц на цифровом океане, вам, вероятно, потребуется 40 минут, чтобы собрать новую версию Ruby от Source для вашей капли»,-сказал Андре Арко, соавтор Bundler для Ruby и автор Ruby Way, третье издание.

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

«Тогда они говорят, подожди, что?» Арко сказал. «Это происходит только раз в месяц или один раз в четверть, но если вы новичок в Ruby, это все еще ваше впечатление на язык, и это действительно отстой».

ARKO разработал RV, новый инструмент на основе ржавчины, который решает эту проблему.

Проблема с зависимостями

Арко впервые выучил Руби еще в начале 2000 -х годов. Он продолжил создавать бундлер для Руби на рельсах. До Бундлера не было менеджеров пакетов. У Python был PIP в качестве установщика пакета; У Perl был CPAN в качестве установщика пакета для установки Perl Packages.

Но не было менеджера зависимостей, который позволил бы разработчикам перечислить каждый пакет, который нужен проекту, в одном месте. Арко однажды провел целую неделю, охотясь за ошибкой, которая появилась только на одном из трех производственных серверов. Проблема была единственной, другой версией зависимости.

Чтобы решить это, Арко, Карл Лерче и Иегуда Кац создали Бундлер, менеджер зависимостей, который представил концепцию файла блокировки. Этот файл «блокирует» точные версии всех пакетов и их зависимости, гарантируя, что каждый разработчик и каждый сервер получают один и тот же код.

«Это как манифест точной версии каждого пакета, гарантируя, что все они работают вместе», — объяснил Арко.

Концепция блокировки теперь является золотым стандартом в разработке современного программного обеспечения, но Арко, который все еще поддерживает Бундлер, начал замечать новые инновации, появляющиеся из других языков.

«Когда я делал Бундлер, я был как, о, мы придумываем новые инновации», — сказал он. «А потом, когда я со временем поддерживал Бундлер, я исправлял ошибки, а кто -то другой вышел из новых инноваций для узлов или новых инноваций для ржавчины или новых инноваций для Python».

Вдохновение RV: ультрафиолето

Примерно в 2015 году у Арко была идея языкового менеджера, который был бы новым видом менеджера по зависимостям — у него не было названия для этого, потому что был только ультрафиолет Astral в качестве примера того, что он имел в виду.

«Конкретные вещи, которые он делает, — это то, что мы обычно называем менеджером версий, который управляет самого языка, Python, Ruby, Rust, что угодно, а затем также складывается в менеджере зависимостей».

Он был особенно вдохновлен UV, современным пакетом Python и менеджером проекта, написанным в Rust. То, что отличает УФ, — это его скорость и способность объединять два традиционно отдельных инструмента: менеджер версий (который управляет самим языком) и менеджера зависимостей.

«Это происходит только раз в месяц или один раз в четверть, но если вы новичок в Ruby, это все еще ваше впечатление на язык, и это действительно отстой».
— Андре Арко, создатель RV

Для большинства языков эти задачи управляются различными инструментами. Например, Rust имеет Rustup в качестве менеджера версий и груза в качестве менеджера зависимостей. В Ruby разработчик нужен один из трех менеджеров версий (RVM, RBENV или ASDF) и отдельный менеджер зависимостей (Bundler). инновации UV состояли в том, чтобы объединить эти функции в один инструмент, что делает весь процесс быстрее и обтекаемым.

«UV изобрел этот прорыв« Мы собираемся дать им оба вместе », который разблокирует новые вещи, которые никогда не могли делать раньше, и мы собираемся сделать это невероятно быстро», — сказал он.

Он отметил, что версия UV 0,3, которая сделала эту инновационную комбинацию, впервые вышла примерно год назад. Арко использовал этот инструмент со своим проектом Python, а затем пропустил его, когда работал над Ruby.

«Это так быстро, и это настолько полезно, что в течение прошлого года, каждый раз, когда я возвращаюсь в Руби, где я все еще провожу большую часть своего времени, я чувствую разочарование, что у меня нет ультрафиолетового ультрафиолета», — сказал он. В то же время он ждал, когда кто -то другой построит инструмент, который принесет эту функцию Руби.

Проблема с Руби

Вдохновение для комбинированной версии и менеджера зависимостей для Ruby сблизилась с новой профессиональной возможностью. Арко и другие содействия с открытым исходным кодом сформировали коллектив под названием Spinel.coop, консультант, который помогает компаниям с техническими проблемами. Им нужен был проект, чтобы продемонстрировать их опыт, и Арко понял, что может построить инструмент, о котором он мечтал в течение десятилетия.

«По сути, эти две идеи объединились для меня одновременно», — сказал он. «По сути, с вдохновением УФ, у меня внезапно появилась причина создать менеджер версий, чтобы добавить к менеджеру зависимостей, чтобы создать эту новую категорию инструмента».

Идея еще больше кристаллизовалась в июле прошлого года, когда он посетил Railsconf в Филадельфии.

«Я не был уверен, что собираюсь сесть и начать работать над этим, пока не поговорил с другими разработчиками в Railsconf», — сказал он. «Я в основном сказал:« Что ты думаешь об этой идее? »

Что он узнал, так это то, что у разработчиков постоянно возникала проблема с убедить разработчиков попробовать Ruby на Rails, но затем, когда они узнают, что им нужно подождать от 10 до 40 минут, чтобы загрузить все, чтобы он мог скомпилировать и выполнять, они отключены языком.

«Все статус управления версией Ruby сегодня занимает семь до 40 минут, чтобы установить новую версию Ruby», — сказал Арко. «И каждый раз, когда я обновляю свою рубину, мне становится немного грустно и разочарована, зная, что это может быть быстрее, чем это».

Он начал строить RV.

RV устанавливает Ruby за считанные секунды

По словам Арко, RV все еще очень молод, но вне ворот с версией 0.1.1, он решает задачу загрузки, и это уже привлекает внимание.

«… Каждый раз, когда я обновляю свою рубину, я становится немного грустным и разочарованным, зная, что это может быть быстрее, чем это».
— Андре Арко

Ранее, на рабочей станции на рабочем столе высокого класса, это заняло бы шесть или семь минут и до 40 минут в качестве капли в цифровом океане. Это связано с тем, что менеджеры версий Ruby должны были установить «тарбол исходного кода», — сказал Арко, который загружается на вашу машину, а затем буквально начинает компилировать этот исходный код с нуля.

«Это то, что занимает так много времени, заключается в том, что каждый разработчик во всем мире восстанавливает Ruby, только для своей личной машины каждый раз, когда появляется новая версия», — сказал Арко.

Но можно спросить действий GitHub, Circleci или других систем CI/CD для создания Ruby и предоставления готового продукта. RV берет готовый продукт, затем загружает исполняемый файл и устанавливает его вместо этого тарбола исходного кода. RV действует как посредник, поэтому вместо того, чтобы просить каждого пользователя сделать это индивидуально, RV делает это заранее, превращая исходный код в двоичный файл. Затем он очень быстро устанавливает функциональный интерпретатор Ruby на вашей машине Linux или Mac. Руст также дает ему повышение.

«Поскольку ржавчина очень быстрая при загрузке и установке вещей, это занимает около секунды», — сказал он.

Что дальше для RV

Р.В. — это работа, Арко предупредил.

«Мы еще не выполнили всеобъемлющие обещания ультрафиолета», — сказал Арко. «Мы выпустили самую первую возможную версию RV, которая, которая будет полностью ясно, на самом деле — это просто урезанный менеджер версий — все, что мы на самом деле отправили до сих пор, — это часть управления версиями инструмента».

Но в дорожной карте находится часть управления зависимостями инструмента и инструмент комбинации более высокого уровня, который будет объединять управление версиями с управлением зависимостями-инструмент, которого он еще не имеет названия-находится на дорожной карте.

«Чтобы быть ясным, это воображаемо, потому что мы еще не написали его, но концептуально, вы можете сказать, что RV Run Rails New, и вам даже не нужно устанавливать Ruby. RV установит рубину, который вам нужен за одну секунду, а затем RV установит рельсы, которые вам нужны в другую секунду,… и одна или две секунды спустя, рельсы работают, и это было все, что вам нужно, — сказал он.

В то же время он хотел бы получить отзывы разработчиков об этой цели.

«Я просто хотел бы сделать использование Ruby Easy, простой, великолепной и удивительной с точки зрения компании», — сказал он. «Я хотел бы поговорить с компаниями, которые хотят, чтобы все их разработчики были быстрее, используя Ruby и более эффективно и знали, что они делают, и решают свои проблемы».

Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Loraine Lawson — ветеран -репортер, который в течение 25 лет освещал технологические проблемы от интеграции данных до безопасности. Прежде чем присоединиться к новому стеку, она работала редактором Banking Technology Site Bank Automation News. Она … читайте больше от Лорейн Лоусон

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *