metaclass: (дзедline)
metaclass ([personal profile] metaclass) wrote2013-03-14 09:37 pm

Системы жабосборки

http://theiced.livejournal.com/232547.html
Дико бесит, что на простейшую задачу "скачать зависимости и запустить проект" существует 100500 решений разной степени убогости. Да еще плюс несколько вариаций на тему эклипс vs idea vs emacs. То же самое, что с линуксом - 100500 дистрибов и торвальдс с "единый линукс не нужен".

По моему, единственный внятный вариант втащить разную хипстерятину типа скалы с кложурой в мейнстрим - это унижать и гнобить всех, кто делает несовместимые инфраструктурные вещи типа IDE, редакторов и сборочных систем. Эти языки и так сами по себе СЛИШКОМ отличаются, чтобы еще и вспомогательные инструменты делать в стиле "моя бабушка варила смусси".
Не нравится вам мавен - напишите к нему плагин maven-clojure-repl, но чтобы зависимости были в pom.xml.
Не нравится хымыль - ну напишите генератор этих хымылей из какой-нибудь хипстерятины.
А то разводят тут комбинаторные взрывы, понимаешь ли. Ну проще же иметь common ground в виде индусского мавена с хымылем, чем писать под все инструменты поддержку всех чужих инструментов с их форматами.

[identity profile] vinslivins.livejournal.com 2013-03-14 08:56 pm (UTC)(link)
в руби нет таких проблем

[identity profile] andrew kondratovich (from livejournal.com) 2013-03-14 09:09 pm (UTC)(link)
руби нет

[identity profile] vinslivins.livejournal.com 2013-03-14 09:13 pm (UTC)(link)
да ну

[identity profile] theiced.livejournal.com 2013-03-14 10:12 pm (UTC)(link)
га га га. в руби с пакетным манагером вообще хуепёздый триптерохуй. оно не работает чуть более чем полностью вообще. я ж запиливал псто по этому говну год назад вроде, надо повторить - ибо новых говен ещё поварёшка набралась.

[identity profile] vinslivins.livejournal.com 2013-03-15 05:46 am (UTC)(link)
у меня работает..

[identity profile] prepor.livejournal.com 2013-03-15 08:39 am (UTC)(link)
бандлер та еще поделка от Каца, конечно, но он таки работает.

[identity profile] theiced.livejournal.com 2013-03-15 10:25 am (UTC)(link)
не-а. не работает.

вот один из моих последних фиксов для нового и сочного бандлера - https://github.com/iron-io/iron_worker_ruby_ng/commit/a1195aacdc581a77774779c7b527712aff13e083

[identity profile] prepor.livejournal.com 2013-03-15 11:32 am (UTC)(link)
ох. Когда я сказал, что "работает" это означает, что делает, то что нужно в кейсах для которых писался, а при попытке отойти в сторону, или там кастомизировать как-то, добавить другой контейнер (не джем) или еще что, натыкаешься на адов ад и забиваешь.

Насколько я понял, вы пытаетесь сбилдить руби проект на стороне клиента со всеми зависимостями на этапе аплоада. Это хорошо работает с джава-штуками, а сишками (руби), не особо. В итоге изобретаете свой дсл для описания зависимостей, транслируете его в термины бандлера, а потом пытаетесь это заставить работать. Я не понимаю, почему бы не позволить клиенту иметь свой Gemfile, Gemfile.lock, запускать для тестов воркера как обычное руби приложение, а при аплоаде посылать только свой код и Gemfile.lock, а уж ваша билд-система зафигачит уже все как надо, засунет в рпм, деб или что вы там юзаете, через bundle install --deployment, и все, готово к разворачиванию на виртуалочках.

Мы в мейле так собирали все руби приложения, все гемы, все бинарные зависимости засовываются на билд-сервере в рпм-ку с помощью bundle install --deployment, в зависимостях указывается конкретная версия рубей, лежащая отдельно, деплоится паппетом, ничего не знающим про руби (хехе).

Конечно, я нифига не в теме, и упустил тыщу нюансов, а может и вообще не понял сути, но все же мне кажется, что вы стреляете себе в ногу :)

[identity profile] theiced.livejournal.com 2013-03-15 08:29 pm (UTC)(link)
давайте не будем про то как оно у нас сделано - таки и гемфайлы можно напрямую пихать и гемы отдельно. я старался максимально всё упростить есличо.

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

[identity profile] prepor.livejournal.com 2013-03-15 10:34 pm (UTC)(link)
рубиджемс пиздец, но так принято в индустрии, ничего иного типа nix ей не признается. но бандлер таки пиздец не из-за рубиджемс, а из-за resolve.rb

у вас довольно грамотный руби-код, но упростить не получилось, что намекает ;) это довольно некорректное замечание, но не совсем без оснований, пока мне так кажется :)

[identity profile] theiced.livejournal.com 2013-03-16 12:03 am (UTC)(link)
он изначально был грамотным, потом на него пришлось наадхокать разной поебени (там в client.rb даже есть копипаст довольного большого метода по какой то причине которую я не помню). `remote` кстати был нахуячен через где то год посе первого релиза исключительно для решения очередного класса проблем с гемами и бандлером.

и таки да - если чо я руби уже лет 7-8 кушаю и таки хотя он подходит для определённого класса задач в определённых условиях и в семействе популярных скриптоязыков таки лучший (ну не на пейтоне или ноде же писать) у него есть тучи разных недостатков и проёбов со всех сторон.

вот ещё пример про гемспеки. в новых рубигемс появился `gem build`. я просто дам ссылку на https://github.com/iron-io/iron_worker_ruby_ng/blob/master/iron_worker_ng.gemspec такой вот гемспек для билда и на то что получается в итоге https://gist.github.com/anonymous/5174172#file-gistfile1-txt - правда клёво. особенно бурное веселье начинается при попытке использовать билд гемспек там где нужен нормальный.

[identity profile] avnik.livejournal.com 2013-03-14 11:30 pm (UTC)(link)
Даже в петоне нет таких проблем

[identity profile] anonim-legion.livejournal.com 2013-03-15 06:13 am (UTC)(link)
Таких - нет. Там все еще хуже, потомушто автор - японец.

[identity profile] vinslivins.livejournal.com 2013-03-15 06:47 am (UTC)(link)
да, написать bundle это так сложно

[identity profile] theiced.livejournal.com 2013-03-15 10:27 am (UTC)(link)
не работает. у долбоклювов с gem 'rails' оно конечно работает а у остальных ресолв зависимостей может идти по часу (они этот баг фиксили раз 5 и он постоянно появлялся снова).

[identity profile] vinslivins.livejournal.com 2013-03-15 11:28 am (UTC)(link)
ну ок у меня 50 зависимостей и резолв нормальный, пару секунд на весь коровник.
а по часу - это кривой рвм. поставь его локально и станет быстро. хз кстати какого хуя он так делает - но это рвм, или что-то, что с ним связано, или что связано с местонах. гемов.

[identity profile] theiced.livejournal.com 2013-03-15 08:30 pm (UTC)(link)
что поставить локально? рвм? сходи в багтрекер бандлера и почитай, пионер недоделанный.

[identity profile] vinslivins.livejournal.com 2013-03-16 12:57 pm (UTC)(link)
у меня всё работает)

[identity profile] theiced.livejournal.com 2013-03-16 01:47 pm (UTC)(link)
нет, просто ты слишком туп что бы осознать что и как не работает :)

[identity profile] vinslivins.livejournal.com 2013-03-17 04:11 pm (UTC)(link)
но при этом всё работает :)