Зачем писать утилит...
 
Уведомления
Очистить всё

Зачем писать утилиты на Ruby, если на Go получается один бинарник?

6 Сообщения
5 Пользователи
7 Реакции
512 Просмотры
artem_67
Сообщения: 18
Автор темы
Пишет тесты разработчик на Go
Присоединился: 4 года назад
[#75]

Без наезда, правда интересно. Я пишу на Go и Python, и для утилит командной строки Go для меня вне конкуренции: собрал один бинарник, закинул на сервер, и всё работает, никаких rbenv, Bundler и версий интерпретатора. Видел тут несколько тем про CLI на Thor и свои gem'ы. Что вас держит на Ruby именно в утилитах, а не в вебе?


5 ответов
kirill_spb
Сообщения: 27
Собрал свой gem разработчик инструментов
Присоединился: 4 года назад

Держит скорость написания и то, что такие утилиты обычно живут там, где Ruby уже есть: на машинах разработчиков и в CI проектов на Rails. Генератор отчёта, который на Ruby пишется за вечер, на Go у меня занял бы два: в Ruby CSV, JSON, YAML и ERB под рукой, а Enumerable делает половину работы. Где Ruby на машине нет и не будет, тут ты прав, бинарник удобнее. Есть способы упаковать Ruby вместе с приложением в один файл, я пробовал, но это отдельные приключения, советовать не возьмусь.


Ответ
TimurK62
Сообщения: 31
Читает чужие PR бэкенд-разработчик
Присоединился: 3 года назад

Раз уж спорим, вот цифры с моей машины. Старт пустого ruby -e nil на 3.4 около 45 мс, с -rthor около 70 мс, бинарник на Go 2-3 мс. Утилиту, которую человек запускает руками, разницы никто не заметит. Если её вызывают в цикле 10 тысяч раз из шелла, Go выиграет с огромным отрывом, но такое и на Ruby никто не пишет, такое делается одним процессом.


Ответ
Максим О
Сообщения: 22
Собрал свой gem студент
Присоединился: 2 года назад

мне в ruby нравится, что можно открыть irb и гонять куски утилиты прямо руками, пока пишешь


Ответ
Василий1992
Сообщения: 7
Дружит с bundler data engineer
Присоединился: 3 года назад

В Python проблема «какая версия интерпретатора на сервере» ровно та же, и все как-то живут через Docker или venv. С Ruby то же самое: rbenv плюс Gemfile.lock, и через год скрипт запускается так же, как в день написания.


Ответ
artem_67
Сообщения: 18
Автор темы
Пишет тесты разработчик на Go
Присоединился: 4 года назад

Ладно, про irb и Enumerable понял, набросать отчёт за вечер на Ruby и правда быстрее. Цифры по старту честные, 70 мс я переживу. Но бинарник на сервер без всего остального всё равно люблю больше, тут не переубедите.


Ответ