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] 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 - правда клёво. особенно бурное веселье начинается при попытке использовать билд гемспек там где нужен нормальный.