# Понедельник 59 твитов
Привет, неожиданно для себя оказался underhood:) Зовут меня Саша, программирую на чем придется, последние годы преимущественно на ruby.
10:41В разработке ПО с 2002 года, имею опыт C++, Java, .NET, люблю Slackware Linux и рок-н-ролл:) Тем на текущую неделю – будем импровизировать:)
10:45Вот такой вопрос -- важен ли для web-разработчика и ruby разработчика в частности общий технический бэкграунд?Т.е. приходит на собеседование
11:03товарищ, который не знает чем линкедлист от массива отличается. Это можно считать стоп-фактором при приеме на работу на ваш взгляд?
11:04@rubyunderhood думаю, именно это знание зависит от прошлого опыта. Например, в руби массив, но имеет интерфейс связанного списка и стека!11:15
@rubyunderhood @rainrb линкедлист - это же там, где девочки hr-ы спамят, при чём тут вообще массивы? </sarcasm>11:16
. @lisovskyvlad ну, вопрос-то не только про ruby а вообще:)Константное время доступа по индексу либо быстрая вставка в середину вот это все
11:22. @lisovskyvlad ну и массивы линкед-листы это что в голову пришло. Вот например хэш-таблица, очень популярный контейнер.
11:24. @lisovskyvlad нужно ли иметь представление о внутреннем устройстве, или это все фигня?)
11:24@rubyunderhood @lisovskyvlad для этого у товарища должен был быть бекграунд на джаве или джаваориентированное преподавание в вузе11:26
@rubyunderhood @lisovskyvlad т.е. если хочется наказать тех, кто не посещал лекции или пришел в отрасль из медбратьев - то вариант, конечно.11:26
. @mktoid @lisovskyvlad А почему в джаве? Это ж вроде такие штуки, которые во всех языках есть :)
11:27@rubyunderhood для эффективного и вдумчивого использования да11:28
. @lisovskyvlad но при приеме web-разработчика на работу это не важно?
11:28@rubyunderhood Всё-таки это рынок, а не чисто так. Если считаешь для вашиъ проектов это будет критично, то вполне важно.11:29
Тогда так -- FAV если общая техническая эрудиция важнее чем знание доскональное фреймворка с которым придется работать. RT если наоборот:)
11:33извините за опечатки:((( буду внимательнее
11:34@rubyunderhood имхо спорный вопрос. Без базиса не понять фреймворк или как язык работает, без фреймворка/языка не сделать бизнес11:38
@rubyunderhood ну а без бизнеса никому отрасль не нужна :)11:38
.@anton_davydov спорный:)Но я как-то заметил, что с людьми которые обладают широким кругозором работать по-проще и задачи решать эффективнее
11:39. @anton_davydov т.е. человек с бэкграундом и фреймворки без проблем подтянет до нужного уровня:)
11:40@rubyunderhood конечно, они не замкнуты в рамках одного стека + вы можете общаться на общих абстракциях, а не на тех, что дает стек11:40
@rubyunderhood да, но тут есть другая крайность. Яркий пример - олимпиадники (которые совсем хардкорные)11:43
. @anton_davydov нууу, да. Но это из разряда крайностей все-таки. Человек целенаправленно прокачивает определенные скиллы.
11:44@rubyunderhood ну и стоит определиться для чего нужны человеку знания. Сделать продукт? Тогда, с вероятностью 95%, ему и не надо знать ...11:47
@rubyunderhood ... Как работает хеш или какова сложность сортировки. В его случае важно знать архитектурные тонкости, кмк. Если человек ...11:48
@rubyunderhood ... Делает убийцу редиса/постгреса или еще какой штуки, то да, без этого никуда.11:49
. @anton_davydov ну вот не знает человек, как работает хэш, возвратит в хэш-функции единичку и получим проблемы с производительностью:)
11:53. @anton_davydov вообще я считаю, что определенный багаж знаний позволяет не сесть в лужу лишний раз:)
11:54@rubyunderhood А не хочется все бросить нахуй и съебать в лес?12:35
@rubyunderhood важно ли в строительстве если человек бетон 200 не отличает от 100? Смотря чем он будет заниматься. Если трубы ложить, то нет12:35
. @ptico все так, но на практике кмк часто бывает что кладешь трубы, но приходится и в бетон :)
12:37@rubyunderhood Я в принципе считаю, что собеседование в тех. профессиях — вещь сугубо для понимания адекватности человека.12:37
@rubyunderhood Остальное понимается за 1-3 месяца работы на испытательном.12:38
@rubyunderhood если на проект с кучей сложной бизнес-логики приходит чувак и лепит методы в 80LOC без тестов, то мне пофиг различает или нет12:38
@rubyunderhood @anton_davydov Это уже больше похоже на идиотизм, а не недостаток знаний.12:38
. @suxxes @anton_davydov пример конечно утрированный, но общая идея я думаю ясна
12:39@rubyunderhood за что любит сляку? Оно же в помойку превращается? =)12:40
. @Stammru люблю по старой памяти:) Сидел на ней несколько лет -- очень простая и понятная система. Сейчас с маком мучаюсь:)
12:43@rubyunderhood ага, типо таких вопросов были на вакансию разработчика интернет-магазина, зачем, непонятно12:46
@rubyunderhood круто! расскажи над чем работаешь, какой стэк и что такое пилишь в какой компании? :)12:49
.@mpak999 пропустил самый главный твит:) rails-стэк, фронтенд backbone. Из последнего - принимаю участие в бэкенде ural1.ru
12:51. @Stammru ну да. Это несложно с помощью makepkg, ну и особо не приходилось ничего собирать, дистр был ready for developers
13:05@Stammru @rubyunderhood все слакварщики так делали и делают, а в чем проблема?13:15
@Stammru @rubyunderhood более того, так делают во всех дистрибутивах, когда надо что-то собрать13:16
@rubyunderhood @Stammru я использовал Slackware ооооочень давно, в данный момент тоже мак использую13:17
@vyazovoi @rubyunderhood ну я мало встречал слакварщиков, но у меня стереотип сложился, сто у них убитая система, у каждого своя структура13:32
. @Stammru @vyazovoi да не,там со структурой как раз все норм. Но в настоящее время большого смысла в использовании это OS конечно нет:)
13:33@Stammru @rubyunderhood ещё как раз интернета небыло, помню исходники приносил от людей и собирал как умел13:39
@Stammru @rubyunderhood спустя какое-то время пробовал слаку снова, так там уже все собирали из SBO (такой репо со скриптами сборки)13:39
@rubyunderhood @Stammru не, это меня обошло, я играл в старкрафт через телефон и ждал интернета13:41
@rubyunderhood за трубы в бетон предусмотрен отдельный котёл в аду :) А вообще, сколько людей, столько и мнений. Все разным занимаются13:47
. @ptico я про то, что узкая специализация (или трубы, или бетон) это редкость. Часто задачи требуют экспертизы в нескольких областях.
13:47Пользуясь случаем прорекламирую facebook группу рубистов в Ростове-на-Дону,если кто будет в наших краях - заходите:) facebook.com/groups/rndrug/
16:05# Вторник 77 твитов
Всем привет:) Продолжаем трансляцию. Для начала – немного хорошей музыки music.yandex.ru/album/77947/tr… :)
10:35А обсудить предлагаю деплоймент ruby и rails-приложений, подготовку серверов, продакшен.
10:37Есть кто-нибудь, кто использует альтернативные capistrano инструменты для деплоя? Может быть mina? Деплой через git?:)
10:39@rubyunderhood ansible + capistrano, nginx + unicorn10:42
. @lisovskyvlad что делаешь ансиблом? подготовку сервера для capistrano-деплоя?
10:43@rubyunderhood использую мина для последних пару-троек задач, полет нормальный10:43
. @svenyurgensson а ее вообще пилят? Там вроде бы с контрибуторами было как-то не очень.
10:44. @svenyurgensson достаточно давно пробовал, какие-то мелкие проблемы были все время с ней в итоге надоело и откатился на капистрано
10:44@rubyunderhood зачем пилить уже хорошо запиленное? Оно ж работает, просто и без затей. Кода немного - можно спокойно под себя поправить10:49
. @svenyurgensson надо будет попробовать еще раз при случае:)
10:51@rubyunderhood я пока не встречался. Есть какие-то нюансы с рестартом приложения после деплоя, но меня не особо парит10:51
@rubyunderhood ansible provision, cap - deploy10:52
. @lisovskyvlad как стейджинг и прдакшен организуешь в ансибловских ямлах?
10:53@rubyunderhood ну отличие простое - только в credentials, просто указываешь разный сервер для выполнения. Серверы в спец. файле хранятся :)12:16
. @lisovskyvlad т.е. вы просто на базе inventory-файлов разруливаете?
12:16@rubyunderhood для нестандартных конфигураций chef + capistrano, простые скармливаю dokku12:16
@rubyunderhood mina очень быстрая, одно «но»: из-за этого локальные операции нельзя (или я не понял как) вставить в поток, делаю в 2 команды12:17
Я тоже использую ansible+capistrano.Но ansible несмотря на определенную простоту напрягает своим dsl-ем. Мануал должен быть все время открыт
12:18@rubyunderhood админы рулят chef, мы деплоим capistrano. unicorn, sidekiq рулятся через runit12:20
@rubyunderhood я видел у одного фронтендера make файл с деплоем, но у него там просто, конечно12:21
Все пишут про unicorn, а puma как же? Я последние проекты поднимаю на нем и все нравится. Конфигурирование и упровление достаточно удобное.
12:25Памяти меньше потребляет. В целом puma очень нравится.
12:25@rubyunderhood упрАвление конечно ;)
12:27@rubyunderhood а есть ли смысл если у тебя не jruby и не rubinius? у всех уже есть конфиг unicorn12:39
. @Stammru а почему нет смысла? работать приятнее и памяти меньше потребляется, по-моему это уже плюс.
12:40@rubyunderhood а какие мысли о Passanger?12:40
. @TheSunwave ты про новый, который Raptor? я его честно сказать не пробовал еще. Но было бы интересно послушать отзывы причастных
12:41@rubyunderhood я в общих чертах. Я пробовал и пуму и пассажира, но на своем уровне я так и не понял разницы)12:42
@rubyunderhood насколько меньше, измерял? А что значит работать приятнее?12:43
. @Stammru работать приятнее - субъективные ощущения от экспириенса:) В плане памяти - на простом приложении воркеры ~70мб
12:46@rubyunderhood тоже на пуму перешел, все прям даже визуально быстрее на старте12:46
@rubyunderhood а я сделал на passenger standalone и тоже все ок12:46
. @svenyurgensson а что у него в плане интересных фич? Пишут про много инструментов для анализа работы приложения, отладки и т.п.
12:51@rubyunderhood ничем пока не пользовался, ранняя стадия. Но раньше всегда пользовал нжинкс/пассажир и все работало как часы.12:53
. @Marat_Galiev вопрос в трактовке термина "лучше". По-моим ощущениям меньше памяти, быстрее старт.
12:58. @Marat_Galiev но это не значит что юникорн плохой и его надо выкинуть:)
12:59@rubyunderhood а чем пума лучше в среднестатистическом проекте чем юникорн?13:02
@rubyunderhood ну да, unicorn в принципе неплох ) Тут скорее зависит от личных предпочтений на мелких/средних проектах.13:06
@rubyunderhood в последнем проекте и деплой и провижн делал через ansible, понравилось13:06
. @KELiON деплой через ansible? а не медленно? по-ощущениям получается еще более slow чем capistrano
13:07@rubyunderhood @KELiON если в ансибл добавить кеширование когда он делает gather facts то чуть побыстрее будет…13:18
@rubyunderhood к нему быстро привыкаешь и основные операции запоминаются. А поддерживать 2 инструмента в одном проекте не очень удобно13:18
@rubyunderhood с gather_facts: no быстрее. Плюс можно выполнять одну роль деплоя, без проверки конфигов, если лень ждать)13:18
@rubyunderhood Текущий пет пишу с пумой для упрощения стэка, т.к. фэй не понимает юникорн. Вот и решил попробовать пуму.13:22
. @suxxes насчет faye, actioncable и причастных, кстати, можно отдельно поговорить, тема немного холиварная:)
13:23@rubyunderhood сначала был capistano 2, 3 потом только mina, только хардкор =)13:53
@rubyunderhood работает очень быстро, все до безумия прозрачно и просто, минимум подводных камней. Это все очень субъективно, канешна)13:58
@rubyunderhood обязательно дай ей шанс и ты не пожалеешь, да и мануалов по ней стало намного больше, чем раньше.14:02
@vredniy @rubyunderhood да мина объективно быстрее))14:08
. @Bugagazavr @vredniy ну да, я знаю, просто в те времена, когда я ее пробовал были проблемы, которые заставили меня откатиться на cap
14:09. @Bugagazavr @vredniy и после этого я особо не следил за ее развитием
14:09@rubyunderhood @vredniy так она собирает sh скрипт, и не устанавливает коннект на каждую задачу как capistrano14:10
А что насчет супервайзеров? Кто что использует? Я сижу на github.com/kostya/eye в общем и целом свои задачи выполняет
14:49В eye нравится то, что работает не на системной уровне, а на пользовательском, хотя крутые админы наверняка не согласятся со мной:)
14:51. @Stammru я локально использую foreman. runit конечно хорошая штука, но с eye как-то по-проще.
14:53@rubyunderhood я его локально использую для запуска pg, elastic, redis и прочего, на проде runit14:53
@rubyunderhood а как ты дружишь eye с автостартом после ребута например? Есть решения с cron @reboot, но оно попахивает на мой взгляд.15:42
. @bufo_alvarius @reboot а init.d чем не подходит?
15:43@rubyunderhood требованием иметь рут и переходит в системный скоуп тонкой настройки.15:44
. @bufo_alvarius тогда только крон, других способов я не знаю.
15:46. @bufo_alvarius я вообще не заморачиваюсь с автостартом. Если случился ребут то ситуация однозначно нештатная и надо разбираться в чем дело
15:47@rubyunderhood мне ещё понравился supervisord, на пет-прожектах использую15:48
Транслирую вопрос @svenyurgensson:"никто еще github.com/antirez/disque не пользовался? А то хочется минимального месседж брокера и job queue"
16:23@rubyunderhood @svenyurgensson redis, resque, pubsub не устраивает?16:38
@backendsecret @rubyunderhood @svenyurgensson кстати тоже интересно чем redis для этого не угодил17:18
. @svenyurgensson @rubyunderhood "WARNING: This is alpha code NOT suitable for production" - как бы намекает "почему"...19:23
. @bufo_alvarius я бы все мониторил;)
19:36@rubyunderhood согласен полностью, но хочется забывать о некоторых проектах, которые не требуют мониторинга, но хотят жить)19:36
@bufo_alvarius @rubyunderhood upstart?19:43
. @Bugagazavr @bufo_alvarius а как он поможет, если у человека нет root-доступа к серверу?
19:44@rubyunderhood @bufo_alvarius sudoers для выполнения только конкретной команды?19:45
@rubyunderhood @bufo_alvarius user ALL = (root) NOPASSWD: /sbin/start service, /sbin/stop service, /sbin/restart service, /sbin/status ...19:48
. @Bugagazavr @bufo_alvarius да это понятно, но там кажется дело было в том, что человек вообще не хотел на системный уровень лезть
19:49# Среда 61 твит
Продолжаем разговор:) Чтобы лучше работалось, всем хорошую песню music.yandex.ru/album/1987027/…
11:18А тема вот такая-кто как создает новые приложения?Руками и копипастом файлов из старых проектов, rails app template,RailsBricks, еще как-то?
11:20Я как-то заморачивался с созданием application template, вцелом жить можно, но не сказать что сильно удобно.
11:22Шаблон надо периодически мантейнить, хранится он в специальном репозитории, да и не все можно вписать в контекст шаблона.
11:24Хочется некий инструмент, который позволил бы в один клик сгенерировать приложение, полностью готовое к работе и развертыванию на серверах.
11:25Или никто не заморачивается и всех устраивает rails new my_app ?)
11:29@rubyunderhood влаштовує, але в середині генерованої структури роблю неймспейси12:37
@rubyunderhood юзаем внутренний гем, куча генераторов базовых настроек, деплоя и пр. rails templates разочаровали.12:37
. @bufo_alvarius да, rails templates какие-то не очень. Хорошо подходят разве что для совсем простых вещей.
12:37@rubyunderhood все зависит от того, насколько часто ты делаешь rails new.12:38
. @shved270189 согласен. Но хочется же все делать эффективно и в один клик.
12:39. @forever_frey гляну, спасибо. Но это я так понимаю целевое решение мыслящих роботов, не много не то все-таки.
12:40@rubyunderhood у меня yo-генератор, разворачивает Rails API + изоморфный Flux app (Redux), одна команда и оно живое github.com/alexfedoseev/g…12:41
. @alexfedoseev интересня штука, Yeoman правда не использовал никогда, возможно как раз хороший повод, чтобы начать.
12:44. @bufo_alvarius а на базе чего построено решение? Просто ruby? Или какие-нибудь полезные джемы используете?
12:47. @iamstarkov @alexfedoseev спасибо, может действительно откажусь от rails templates)
12:48@rubyunderhood когда я только с рельсами имел дело, для этих задач юзал Thor (он тоже был ок), но потом перелез на Yeoman, т.к. все там)12:49
@rubyunderhood Thor генераторы делаю12:50
@rubyunderhood судьбоносный вопрос: rvm rbenv chruby? Юзаешь ли gemsets? Куда ставишь глобальные пакеты (eg CLI tools written in Ruby)?13:02
. @listochkin я ждал этого вопроса, сам хотел вбросить но по-позже:)
13:02. @listochkin долго сидел на rvm, потом перелез на rbenv. Сейчас он в везде и в проде и в дев. Гемсеты перестал юзать после того, как
13:03. @listochkin закончились проекты на rails2 и везде появился бандлер. Глобальные пакеты ставлю в глобальный гемсет. Но их мало.
13:04. @listochkin rails, clit tools, powify, foreman и прочее мелкое. Зависимости проектов бандлю в /vendor/bundle всегда.
13:05@listochkin @rubyunderhood если на дев-машине то chruby+ruby-install. Работает очень быстро, внутри 40 строчек на баше13:07
. @ptico @listochkin chruby вполне вариант. Но я остановился на компромисном rbenv, пока нет желания переезжать куда-то.
13:08@ptico @rubyunderhood воу, а примеры?13:36
@ptico @listochkin @rubyunderhood rbenv хорош для dev. А на проде ставишь либо системно, либо в докер и тоже хорошо13:37
. @jalkoby @ptico @listochkin а зачем системно? Если разным проектам нужны разные версии ruby?
13:38@rubyunderhood боюсь, тут подразумевается - одна машина/один проект13:39
@rubyunderhood @ptico @listochkin если разные проекты на одном сервере - то ставишь по докеру на каждый проект и там создаешь свою песочницу13:39
@rubyunderhood @rainrb Это чтобы программистам совсем уже нечего было делать ;)?13:57
. @pshenichnyy @rainrb ну, программисты пусть программируют, а рутинные задачи которые можно автоматизировать должны быть автоматизированы)
13:58@rubyunderhood ты говорил, что писал на куче языков. Тебе сейчас это помогает? И какой язык повлиял на тебя больше? А какой нравится больше?14:03
. @anton_davydov ну, не так чтобы прямо на куче языков. В основном на C-подобных, плюсы, джава, шарп, кое что на питоне ну и shell)
14:05. @anton_davydov насчет помогает - помогает опыт работы в разных проектах с разными людьми и технологиями. Язык это не камень преткновения
14:06. @anton_davydov из разных проектов почерпнул разное, C++ low level, железо, память, алгоритмы, оптимизация, когда нужна а когда нет
14:07. @anton_davydov java -- паттерны, переключение мозга с маленьких кубиков на большие, документооборот, решение людских проблем)
14:08. @anton_davydov шарп и дотнет -- просто классная штука, если надо что-то программировать под windows. Студия имхо самая лучшая IDE
14:09. @anton_davydov В настоящее время очень нравится ruby, большинство моих задач на нем решаются отлично. Смотрю потихоньку в сторону кложуры
14:10. @anton_davydov советчик из меня не особенно хороший, но я считаю что не стоит зацикливаться на одном языке, или технологии
14:12. @anton_davydov не стоит быть евангелистом) Стоит работать с разными языками и технологиями, по-возможности применять их на практике.
14:12@rubyunderhood если вообще лень, то используй prelang.com. pic.twitter.com/W2WzssTkZn14:13![]()
. @anton_davydov кристал смотрел немного, в общем и целом интересно, но пока не очень понятно с чем и как его готовить:)
14:21. @anton_davydov насчет кложуры - скобочки да, функциональный стиль, вся мощь темной стороны силы (jvm) :)
14:23@rubyunderhood а на кристал смотрел? Выглядит многообещающе. И почему лисп?14:23
@rubyunderhood да по сути там rails generators с шаблонами на каждый случай + некоторые development зависимости тянем через gemspec сразу.17:13
@rubyunderhood да, не совсем то, но похоже. Я еще встречал веб-приложение, которое генерировало пустые рельсы с гемами, выбранными юзером17:37
. @forever_frey если бы вопрос был только в гемах, то вопроса бы не было)
17:37@rubyunderhood, пользуясь случаем. Расскажи плиз какие есть современные более-менее известные open source проекты на рельсе?17:51
. @toppka первое,что приходит в голову - gitlab,spree,redmine,discourse, refinery cms,еще гугл подсказывает fatfreecrm, ноя не знаю что это)
17:55@toppka @rubyunderhood opensourcerails.com є отакий сайтик де зібрані такі проекти17:57
@toppka @rubyunderhood Redmine, Diaspora ...17:57
. @toppka вообще, рельса имхо уже выходит из того возраста когда на ней народ с энтузиазмом создает открытые решения:)
17:57@rubyunderhood @toppka LocomotiveCMS, Diaspora, Errbit и тут еще много awesome-ruby.com17:58
@rubyunderhood @toppka тай самі популярні opensource рішення на рельсах вже достатньо древні18:02
. @toppka еще вот подсказывают tryshoppe.com, что-то новое судя по всему
18:03@toppka @rubyunderhood гугли discourse, rubybench, rubygems, gitlab19:15
@rubyunderhood rbenv + .rbenv-version @listochkin21:55
. @suxxes @listochkin сейчас же вроде .ruby-version сделали? Если речь про локальную версию ruby
21:57# Четверг 123 твита
. @suxxes Да, вышел новенький JRuby, ты опередил меня буквально на несколько минут:) Судя по описанию релиз крайне интересный.
9:09@rubyunderhood Хочу потом попробовать в работе. У нас есть Java кода в проекте и разных либ. Может выиграем в производительности, например.9:14
А вот и блог-пост от разработчиков JRuby 9000 blog.jruby.org/2015/07/jruby_…
9:14. @suxxes даааа, JRuby весьма заманчивая штука. В 9000 обещают совместимость с 2.2 что очень круто на мой взгляд:)
9:15Возвращаясь к JRuby (тем более поводо-то какой!) кто-нибудь использовал JRuby в серьезных задачах? Как насчет JRuby и Rails?
11:05Я к сожалению JRuby практически не использовал. Когда-то в древности писал маленькое десктопное приложение с использованием Swing и еще
11:07помню пару были попытки запускать многопоточные краулеры из под JRuby, но как-то не особенно пошло.
11:08@rubyunderhood единственный раз, когда я jruby использовал - я пытался вагрант плагин для дженкинса обновить, после этого - понял что не мое11:15
@rubyunderhood я знаю, что вроде в @bookmate_ru используют jruby с рельсой. Надеюсь кто-то из их разработчиков ответит :)11:15
. @anton_davydov у меня похожая история с Rubinius-ом. Периодически накрывает, думаю: "Пора, пора что-то попробовать запустить на Rubinius"
11:21.@anton_davydov но все время что-то не работает,какие-то трейсы, разбираться времени нет,или лениво,в итоге энтузиазм пропадает до сл. раза
11:22. Разработчики @bookmate_ru, говорят вы используете JRuby и Rails, расскажите пожалуйста!
11:23@rubyunderhood у меня даже с кристаллом такое было (там не очевидное задание типов для некоторых кейсов)11:23
@rubyunderhood а вообще да, невероятно важно для технологии быть user friendly и иметь ответы на популярные вопросы11:24
@anton_davydov @rubyunderhood @bookmate_ru в чат призывается @tank_bohr! :) twitter.com/tank_bohr/stat…11:37
@exAspArk @rubyunderhood @bookmate_ru @tank_bohr о круто, я как раз слушал его доклад :)11:38
@anton_davydov @exAspArk @rubyunderhood @bookmate_ru Да, использовали. И даже на рельсе маленький сервис сейчас работает в продакшене11:39
@tank_bohr а сейчас у вас другой стек? @exAspArk @rubyunderhood11:39
@anton_davydov @exAspArk @rubyunderhood да, как у всех. MRI на основных проектах. JRuby от безвыходности11:39
@anton_davydov один в кромешной тьме. никто кроме тебя им не пользуется. приходится думать самому @exAspArk @rubyunderhood11:39
. @tank_bohr @anton_davydov @exAspArk а почему JRuby от безвыходности?
11:39@tank_bohr может, с JRuby 9000 жить наконец-то станет чуть веселее? :) blog.jruby.org/2015/07/jruby_… @anton_davydov @rubyunderhood11:39
@tank_bohr и как впечатления от jruby? :) @exAspArk @rubyunderhood11:40
@rubyunderhood нужны были библиотеки на джаве. альтернатив либо не было вовсе, либо совсем грустные @anton_davydov @exAspArk11:43
@rubyunderhood Сегодня в рамблере ruby meetup, идёт кто-нибудь?11:49
@bufo_alvarius @rubyunderhood я иду :)11:55
@rubyunderhood у нас сейчас одна из команд пилит jRuby апп (не Rails) ради Hibernate. Всё никак не соберемся рассказать где нибудь об этом12:20
. @HornedKavu было бы очень интересно, но почему Хибернейт? У меня от него осадочек остался не особенно приятный) HQL, маппинги та еще песня
12:21@rubyunderhood в тред призывается @vladson4ik12:36
@HornedKavu @rubyunderhood Есть такое дело, пилим. Хибирнейт хорош для своих задач: легаси базы, несколько представлений, кеширование.12:37
@HornedKavu @rubyunderhood Ну и самое главное — Data Mapper как паттерн. HQL пока используем, но в планах описать dsl по-удобнее.12:37
@HornedKavu @rubyunderhood А маппинги — так скорее даже хорошо, структурировано, доменные модели не загажены.12:37
. @vladson4ik @HornedKavu парни а зачем хибер, если вы уже сейчас собираетесь dsl-по удобнее?
12:37. @vladson4ik @HornedKavu с таким же успехом можно свой датамаппер на рубях соорудить, вроде паттерн не сверх сложный
12:38@rubyunderhood @HornedKavu DSL - только для запросов, чтобы все вот эти (Сriteria) скрыть, а не для описания моделей. Модели — *.hbm.xml13:08
@rubyunderhood @vladson4ik свой дата-маппер на рубях не делали, потому что ниже положить нечего. У Гибера очень большая гибкость.13:08
@rubyunderhood Несколька маппингов на 1 таблицу, несколько таблиц на один класс, ленивые коллекции и композитные элементы из коробки.13:08
@rubyunderhood @vladson4ik @HornedKavu Зачем строить свой, если есть ROM?13:20
. @suxxes @vladson4ik @HornedKavu ROM же вроде на стадии активного развития. Это очень хорошо безусловно, но если кому-то нужен продакшен
13:21. @suxxes @vladson4ik @HornedKavu прямо сейчас, то это вопрос
13:21@suxxes @rubyunderhood @HornedKavu ROM сырой. И мы не делаем свой, мы юзаем production grade Java Hibernate.13:21
@vladson4ik @suxxes @rubyunderhood @HornedKavu все ок с ним13:38
@iamstarkov Там какая-то херь со статистикой @rubyunderhood творится.13:38
@artemeff @suxxes @rubyunderhood @HornedKavu на момент начала работ, он был очень сырой. А что сейчас там, интересно!13:38
@artemeff @suxxes @rubyunderhood @HornedKavu там есть ассоциации? Композитные объекты? Ленивые ассоциации и поля?13:38
@artemeff @suxxes @rubyunderhood @HornedKavu но да, например Redis ))) так быстро не прикрутишь13:39
@artemeff @suxxes @rubyunderhood @HornedKavu к HIbernate, я имею в виду.13:39
@vladson4ik @suxxes @rubyunderhood @HornedKavu там многое от адаптера зависит13:40
test stats
14:07@suxxes @rubyunderhood ноуп, уже починил15:15
@listochkin @rubyunderhood rvm, везде и всегда16:03
Хей, @rubyunderhood вам должно нравится такое! /cc @sudodoki @mikhailbortnyk @kottans_org twitter.com/g33konaut/stat…16:47
. @listochkin @sudodoki @mikhailbortnyk @kottans_org и правда ruby:)
16:47@rubyunderhood @suxxes @HornedKavu а нашу интеграцию JRuby с Hibernate мы планируем допилить и выпустить.17:26
. @vladson4ik @suxxes @HornedKavu было бы крайне интересно посмотреть.
17:26А вот такая тема, из сегодняшнего чата, ну и вообще вопрос часто всплывает -- кто как организует код в rails-приложениях?
18:00Тот код, которому вроде бы и в app не место и в lib непонятно как складывать:) Например есть модель User, есть класс, который сериализует
18:01Коллекцию пользователей в csv. Где ему место?
18:01Я, например для /app/models/user.rb и делаю /app/models/user/csv_serializer.rb и вкладываю его как User::CsvSerializer
18:02Вообще стараюсь все жестоко неймспейсить в приложении. Такие вещи как CatalogCategory, CatalogItem, CatlogItemImage не люблю.
18:03. @mpak999 app/serializers можно вполне,но в случае/serializers/user/xml /serializers/user/csv /serializers/user/something та же вложенность
18:11@rubyunderhood хехе, "вроде бы в app не место"? сам все равно положил в app/models/.... куча вложенности бегать, не проще ли app/serializers18:11
@rubyunderhood Выношу подобные вещи в lib (lib/serializers/user/csv.rb)18:22
@rubyunderhood app/services/csv_exporter_service.rb18:22
. @svenyurgensson как вариант) а предметно-специфичные как раскладываешь? неймспейсишь внутри /app/services?
18:23@rubyunderhood в таком случае надо четко соблюдать правила рельс про наименование модуля и пути, где он лежит, ибо отломается class autoload18:32
. @svenyurgensson это да. Но конвенции вообще всегда стоит соблюдать, иначе ошибки могут быть совершенно непонятными)
18:33@rubyunderhood app/serializers?18:33
@rubyunderhood app/filters app/forms app/services app/jobs – главное не забыть добавить в autoload path чтобы работал console reload18:33
@rubyunderhood app/-folder-, если относится к частям аппа и при этом специфично приложению, lib-whatever-, если более абстрактно.18:33
@rubyunderhood на самом деле стоит всегда помнить слова @michaelklishin о том, что приложение - оно прежде всего руби, а потом уже - рельсы18:38
@rubyunderhood в том плане, что надо делать так, как считаешь правильно исходя из своего опыта и удобства18:38
. @svenyurgensson @michaelklishin все так,но часто замечаю – народ теряется за счет того, что конвенции есть, но всего не предусматривают)
18:39@rubyunderhood рельсовая файловая структура — отстой и заставляет узко мыслить. Приложения не могут состоять из одних М, V и С18:40
. @ptico я бы сказал, что рельсовая файловая структура заточена в первую очередь под M, V и C)
18:41. @svenyurgensson нуу, вот в рельсовых гайдах вроде бы об этом ничего не говорят, вот народ и делает как бог на душу положит
18:42@rubyunderhood для этого есть документация, так что RTFM18:42
. @svenyurgensson @ptico и попутно вопрос -- как стоило бы организовать файловую структуру рельсы, чтобы не было отстойно?
18:43@rubyunderhood @ptico а что еще бывает в _обычном_ серверсайде, кроме MVC ?18:43
@svenyurgensson @rubyunderhood ну вот, к примеру, как я это люблю делать: pic.twitter.com/tyoXSTGdk818:43![]()
. @ptico @svenyurgensson т.е. все сводится к расширению рельсовой файловой структуры предметно-специфичными папками
18:44@rubyunderhood я имел в виду документацию к проекту, где ты отклоняешься от рельсовых стандартов. Она должна быть18:45
@ptico @rubyunderhood выглядит устрашающе, но, думаю, вполне обоснованно и сделано не просто так18:45
И еще попутно про файлы и папки:)Есть app, в нем сайт, админка, api для мобильных устройств,ЛК для каких-нибудь партнеров.Большое приложение
18:51Как поступите?Одно большое приложение, или gem с уровнем данных, библиотечным кодом и по приложению на каждую задачу?)
18:52@rubyunderhood не совсем, тут всё ключевое в use_cases/ каждый из которых как мини-гем со свободной структурой18:52
@rubyunderhood а всё что вокруг: шареный между юзкейсами application-specific код18:58
@rubyunderhood если интересно, могу эфемерный пример на гитхаб закинуть, чтоб общий концепт можно было понять18:59
@ptico @rubyunderhood ждем-с :)19:08
@rubyunderhood слава монолитам19:29
. @Bugagazavr почему?)
19:29@rubyunderhood @Bugagazavr слава микросервисам19:32
. @TheSunwave @Bugagazavr почему? и что такое микросервис?)
19:33@rubyunderhood тестировать проще, да и все всегда под рукой19:33
. @Bugagazavr а почему тестировать проще? какая разница?
19:33. @Bugagazavr нуу, n независимых приложений у каждого своя тестовая база, можно тестировать по отдельности пока не надоест:)
19:38. @Bugagazavr Является ли максимально-шаред код добром или злом это еще вопрос для обсуждения:)
19:38@rubyunderhood это актуально для rails app, ибо на практике либо был гемор с дублирвоанием кода, либо с актуализацией19:39
. @Bugagazavr код который совсем дублируется в общий джем:) В остальном изолировать:)
19:40@rubyunderhood ну как бы среда для тестирования более замороченная, плюс код максимально shared для всех задач которые рулит монолит19:40
@rubyunderhood по отдельности оно не будет отражать реальной картины, разве что замокать все что только можно, и следить за актуальностью :)19:41
. @Bugagazavr я невполне согласен) API-для мобилок, админка, сайт вполне тянут на независимые приложения, что мокать между ними)
19:43@rubyunderhood и получаем лишнюю сущность, вместо правки, кода прийдется публиковать новую версию, и обновлять зависимости в проекте.19:43
. @Bugagazavr это да, вопрос в том кто перевешивает advantages или disadvantages
19:43@rubyunderhood gem хорошо когда одно решение на несколько проектов, а не как shared код в рамках одного.19:44
@rubyunderhood у нас был проект, один проект - 5 сайтов, пробовали разделить, но появилось куча гемора19:46
. @Bugagazavr может не так делили?) но вцелом конечно ситуации могут быть разными, да.
19:47@rubyunderhood сабж вот в jvm языках шарить код будет проще, чем в ruby, вот к примеру github.com/twitter/finatra19:48
@rubyunderhood там с ассетами было много проблем, ну и лишние действия появлялись, хотя такая архитектура выглядит и чище20:00
@rubyunderhood @Bugagazavr lotus и архитектура container вам в помощь20:00
. @artemeff @Bugagazavr Лотус интересная штука, хочу найти время подробно посмотреть
20:02@rubyunderhood помнится мне ci, vexor, кажется он был распилен на десяток гемов, контрибьютить в него было то еще удовольствие. (:20:02
@rubyunderhood ага, он самый github.com/vexor20:02
@rubyunderhood @Bugagazavr обязательно найди :)20:02
@rubyunderhood @Bugagazavr ты же сам написал :) Разбиение обработчиков задач на отдельные приложения.21:52
. @TheSunwave @Bugagazavr в случае rails врядли применимо слово "микро" :)
21:52@rubyunderhood @ptico @svenyurgensson Use Lotus, Luke!21:52
# Пятница 152 твита
@rubyunderhood @Bugagazavr в случае с Rails можно писать свои сервисы хоть на Erlang, и спокойно писать на Ruby обертку)7:54
. @TheSunwave @Bugagazavr почему-то напомнил cs4.pikabu.ru/images/preview… :))
7:56Сегодня пятница, хочется поговорить про что-нибудь легкое и не особенно существенное:) Например про linux vs OS X vs Windows для ruby dev
11:21Кто что использует? Я давно на маке, но обдумываю свитч обратно в Linux. Двое моих колег используют windows + vagrant / virtualbox)
11:22Может быть есть какие-то более экзотические варианты?)
11:22@rubyunderhood Использую Linux и Vagrant + VBox для некоторых проектов (чтобы не захламлять основную систему).11:33
. @rubyunderhood @scaint Нынче Mint в моде, так что, думаю "Linux" - это он.11:39
@rubyunderhood слишком очевидная тема!11:39
@rubyunderhood конечно! Даже без вагрантов. Но пока просто не пригождалось, разумеется вагрант нужен :)11:42
@rubyunderhood да, 14.04 LTS11:42
. @dcromster @rubyunderhood Мой выбор: Debian/Mint.11:44
. @backendsecret @dcromster debian -- добро, а вот с убунтой всегда какие-то проблемы были, не прижилась
11:45. @kDasme в макоси в частности раздражает brew, с ним головняк, когда хочется поставить пакет специфической версии)
11:46. @rubyunderhood Я привык к aptitude. Mint - та же убунту, но на родном (мне) Gnome2, проблем не испытываю. Debian - обсуждать нечего :)11:56
@rubyunderhood @kDasme macports на такое дело :) хотя с brew проблем не было11:56
. @rubyunderhood Неее, если уж хочешь нормальный holy-war, то #ruby vs #python!11:57
. @backendsecret по-моему это уже малоактуальный холивар, но вот ruby vs нодажс еще встречается:)
11:58. @backendsecret в вашем руби даже промисов нет, сказал мне однажды один js-ник:)
11:59@backendsecret @rubyunderhood хотите холивара - удалите емакс/сублайм/атом и поставте православный вим11:59
. @anton_davydov @backendsecret я кстати согласен насчет vim-а, самый лучший редактор:)
12:00. @scaint @rubyunderhood LTS рулит, слов нет. Но какое DE? Что ставил из ppa? И вот уже LTS не такой уж LTS :)12:00
. @anton_davydov @rubyunderhood Таки в чём проблема? Так и есть :) Vim заруливает!12:00
@rubyunderhood мак + вагрант для крупных проектов12:00
. @backendsecret конечно странное сравнение, но видимо в этом и смысл)
12:01. @rubyunderhood Странное на мой взгляд сравнение. Но это всё ничего - сейчас Lispеры и Perlисты подтянутся - вот тогда всем хана!12:01
. @backendsecret лисп вообще непонятно зачем нужен, если кложура есть)
12:02@rubyunderhood @backendsecret кложа/го/руби?12:04
. @rubyunderhood Lisp нужен, чтобы была кложура... Вообще, мне ML-языки больше нравятся... Но хайпа вокруг них меньше :)12:04
. @backendsecret я бы сказал лисп БЫЛ нужен, чтобы появилась кложура) Но это уже отдельная история)
12:04@backendsecret А? Шо? Холивар?! Уууэээээ... Да ну нафиг. Пойду посплю... :) @rubyunderhood12:05
. @dcromster @backendsecret да вот хз, я всего лишь про окружение разработки спросил и понеслось...
12:05. @rubyunderhood Lisp - не язык. Это подход! Так что он ЕСТЬ. Тот же #hy - всё тот же #lisp, но на #python.12:07
. @backendsecret нуу, согласен, хорошо) спорить было бы глупо)
12:07@rubyunderhood на маке, и на Xubuntu - самое то, мне графические навороты не нужны, летает12:07
. @svenyurgensson если графические навороты ненужны тогда можно fluxbox попробовать, кайфовая штука)
12:08. @backendsecret @rubyunderhood Gnome classic. PPA: Crystal, Erlang, Rust, Neo4j и всякая мелочь, вроде Heroku toolbelt, Vivaldi...12:08
@rubyunderhood для меня emacs - самый лучший редактор (в том числе и текста :)12:08
. @svenyurgensson несколько раз пытался втыкать в emacs, но в итоге vim победил) Видимо привычка срабатывает)
12:09. @svenyurgensson @rubyunderhood Просто интересно: в тунаре таки появились вкладки? или "какой file manager используете под xfce4"?12:11
@rubyunderhood @kDasme чего отказываться-то, надо совмещать просто, раз уж что-то в brew не идет, то через port попробовать и т.п.12:11
. @rubyunderhood @svenyurgensson конечно срабатывает. :wq запомнил - дальше - проще!12:12
@rubyunderhood мне же не конфиги дрочить хочется, а комфортно работать, или есть линукс с предустановленным fluxbox?12:12
. @svenyurgensson а чего там его предустанавливать, одна строчка в .xinitrc Конфигов там кот наплакал, разве что для меню, да тему выбрать)
12:13@rubyunderhood @kDasme без фанатизму главное :)12:13
@rubyunderhood для вимеров надо ставить spaceemacs - там режим evil mode включен. Хотя я считаю это извращением12:13
@backendsecret @rubyunderhood я хз как он называется, родным пользуюсь и не думаю, мне там вкладки ни разу не понадобились12:14
@rubyunderhood ну и зачем это? лишние телодвижения. Как вспомню раньше ATI карту к убунту прикрутить - на три дня веселья - так и вздрогну12:15
. @svenyurgensson удобно, минималистично) но вцелом, если xfce всем устраивает, то оно и не за чем)
12:16. @svenyurgensson @rubyunderhood Значит ничего не изменилось. Помню, как перелез с xfce4 на lxde - прям радовался!12:17
@rubyunderhood он же, этот fluxbox адово страшный fluxbox.org/screenshots/sc…, небось, какие-нибудь задроты-хакеры с немытыми головами писали12:19
. @svenyurgensson ахахах, он кайфовый, жалко тут разработчиков fluxbox нет)
12:19Еще вброшу попутно, тут зашел разговор за файловые менеджеры, а они вообще нужны в *nix?
12:20Я большинство времени провожу в консоли, файндером практически не пользуюсь вообще, ооочень редко.
12:21@rubyunderhood lxde выглядит вполне нераздражающе, возможно годная вещь12:21
@rubyunderhood ну серьезно, там же ад с иконками, с фонтами, с принципами UI, вообще куда ни ткнись, а жизнь - коротка чтоб так хуево жить12:21
@svenyurgensson @rubyunderhood чуваки, як щодо xmonad12:24
. @ilavriv @svenyurgensson опередил меня, я только хотел за тайловые поговорить) Это имхо высший пилотаж)
12:24@rubyunderhood я mc иной раз пользуюсь, забиваю список путей в лист ctrl+\12:24
. @rubyunderhood И таки зачем тогда весь этот MacOS? Linux консоль ни разу не хуже!12:25
. @backendsecret дык и я об этом же)
12:25@rubyunderhood @ilavriv кто-нибудь скажет, какую проблему они решают?12:25
. @svenyurgensson @ilavriv автоматически лейаутят окошки, можно мышью ВООБЩЕ не пользоваться
12:26. @ilavriv @rubyunderhood @svenyurgensson Годно. Только надо вникнуть.12:26
@svenyurgensson @rubyunderhood основна проблема то мабуть розміщення вікон (їх по суті нема) тайли можна більш ергономічно настроїти12:26
@rubyunderhood Kubuntu 15.04 :)12:26
. @bytecheg по-моему последний нормальный релиз KDE был 3.3, после этого все пошло под откос((
12:27. @rubyunderhood А я об этом. Вот сижу я за dell xps и ни разу не понимаю, на кой переплачивать за Mac.12:27
@backendsecret @rubyunderhood cmd+c и ctrl+c! В линуксе копировать из терминала/в терминал - это головная боль12:28
. @dimazest @backendsecret а вот и нет) есть же xclip
12:28@svenyurgensson @rubyunderhood крім того лаяути можна групувати тайли для різних задач. тобто мати різні лаяути для дева чи сервання в неті12:28
@backendsecret @rubyunderhood две вроде бы маловажные причины: зарядка и twitter.com/dimazest/statu…12:29
. @dimazest @backendsecret а что зарядка?
12:29. @dimazest @backendsecret с шорткатами конечно конфуз, но можно в конце концов пользоваться не xterm-ом а чем-то более продвинутым)
12:31. @dimazest @rubyunderhood 1. Сtrl+shift+{c,v} 2. Ты не поверишь, но можешь назначить любой аккорд.12:31
. @backendsecret @rubyunderhood У меня первый DE был Энлаймент.Я тогда пищал от восторга: на Pent75 без видеоускорителя такие эффекты делал!12:31
. @dcromster @backendsecret энлаймент всегда казался каким-то хипстерским) помню fvwm и icewm были, а потом blackbox и fluxbox
12:33@rubyunderhood @ilavriv @svenyurgensson большую часть времени провожу в терминале (tmux + vim/nvim). Тайловый wm мне вообще не нужен12:33
. @scaint @ilavriv @svenyurgensson тайлы кайфовы тем что можно много терминалов открыть, в которым будет tmux :)
12:33. @rubyunderhood @dimazest Делай утром - будешь огурцом! А про ноут - 6 часов держит - на мастер-классе пришлось поверить. Вообще, под 8.12:33
@rubyunderhood да, в жизни надо всё попробовать... :D @backendsecret12:34
@rubyunderhood @scaint @svenyurgensson і не тільки терміналів всяке буває12:34
. @dcromster @rubyunderhood e17 творит чудеса компизовости... Жаль в целом выглядит как гуано...12:35
. @rubyunderhood а хто у Львові і йде сьогодні на @pivorakmeetup ?12:36
.@backendsecret @rubyunderhood и тачпад, конечно. не видел на других ноутах адекватных тачпадов, может плохо искал12:36
@rubyunderhood @scaint @ilavriv мне терминал terminator вполне годен, делаю сколько надо в нем сплитов и вперед12:36
. @rubyunderhood @dcromster i3wm - самое норм!12:37
. @rubyunderhood @dimazest С шорткатами конфуз только в Mac- в Linux можно поставить те же Ctrl-V/C, точнее не в Linux а в прогах под него.12:40
. @backendsecret @dimazest но это разбираться надо) вцелом я не помню больших проблем с копипастом, когда в линуксе работал, как-то решалось
12:41@backendsecret я помню на убунте вставлял кликом скролом мыши, задолбался shift+insert нажимать @rubyunderhood @dimazest12:41
. @Stammru @backendsecret @dimazest сурово)
12:42.@backendsecret @rubyunderhood а как проги останавливать тогда!!!!111112:44
.@Stammru @backendsecret @rubyunderhood да, это выход12:44
. @Stammru @rubyunderhood @dimazest ой! прям мазохизм какой-то. Хоть погуглил бы...12:44
. @dimazest @rubyunderhood Начнём с того, что этот Ctrl-c - это просто сигнал, а на что ты его назначишь - твоё право.12:47
. @dimazest @rubyunderhood А продолжим: "У меня два биндинга к разным экшонам - что делать" - любой jsовец тебе расскажет.12:49
.@backendsecret @rubyunderhood это понятно, но хочется просто пользоваться и особо не думать или настраивать систему12:49
. @dimazest @backendsecret thinkpad T440s стоит рассмотреть)
12:52. @dimazest @rubyunderhood Либо ты настроишь систему, либо система настроит тебя!12:53
@backendsecret вспоминается бородатая шутка: В линуксе можно настроить всё. И ты, ****, будешь всё настраивать @dimazest @rubyunderhood12:56
.@backendsecret @rubyunderhood ладно, напильником шорткаты можно исправить, а что делать с тачпадом и зарядкой?12:58
.@backendsecret @rubyunderhood можно ли netflix смотреть и spotify слушать без бубна в linux?13:04
@backendsecret @rubyunderhood @dimazest будь не как все! fuck the systemd!13:22
@backendsecret @rubyunderhood уоу-уоу-уоу, палехше! Макбук придумал боженька и дал его Джобсу в обмен на лучшую марку13:37
. @ptico @backendsecret по-моему божественные макбуки закончились примерно на леопарде)
13:37@rubyunderhood @dimazest @backendsecret за 2+ года пока все шнурки живые от всех девайсов apple, но я аккуратный13:40
@rubyunderhood по поводу ОС: это мы привыкли и зажрались. Недавно имел дело с виндой и десктопным линухом, с тех пор не ворчу про макось13:57
@artemeff @rubyunderhood полировать нет времени, но суть должна быть понятна github.com/Ptico/rubyunde…16:12
@artemeff @rubyunderhood преимущества такого подхода в том, что легко тестировать и переиспользовать куски кода.Плюс изменения вносить проще16:12
@artemeff @rubyunderhood можно форкнуть, придумать себе модификацию и попробовать реализовать. Тестовое окружение настроено16:12
@rubyunderhood ну и можно спрашивать что да почему16:12
@rubyunderhood @svenyurgensson да, там, где нужно думать своей головой и начитается большинство проблем ;)16:13
@ptico @rubyunderhood откровенно говоря, я игрался с подобным несколько лет назад, не увидел профита и забил.16:35
@rubyunderhood и так, чтобы было нормально жить, к рельсе нужно относиться как к библиотеке, а не фреймворку.16:47
@rubyunderhood наименование папок/файлов это единственные конвенции, которые удобны (в контексте autoload), всё остальное просто код.16:47
@michaelklishin @rubyunderhood @svenyurgensson Золотые слова. Разрабатывайте приложение, которые используют rails, а не являеются частью его16:47
. @lisovskyvlad нууу, rails это все-таки фреймворк а не библиотека. Во что на практике выливается этот подход (относитесь как к библиотеке)?
16:48. @lisovskyvlad не очень понял вопрос, что именно имеешь в виду?
16:49@rubyunderhood это ты так называешь ООП дизайн?16:49
@rubyunderhood выливается это в такое - github.com/mokevnin/rails…. Бизнес логика должны быть 100% отделена от AR, контроллеров и хэлперов.16:51
. @lisovskyvlad сейчас глянем что там такое
16:51. @lisovskyvlad меня за троллить не выйдет, я всвое время александреску осиливал)
16:54. @lisovskyvlad а ценность книг по рефакторингу очень сильно переоценена)
16:54. @lisovskyvlad ну сервис объекты и что? разговор то был не про это изначально) дискас про то куда чего раскладывать)
16:55@rubyunderhood я тебя троллю, стоит почитать книги о рефакторинге, DDD, Санди Метц посмотреть доклады и т.д. Что такое разработка вообще то16:56
@rubyunderhood на современный лад это называется сервис объекты - github.com/gitlabhq/gitla…16:56
@rubyunderhood зацени как мало кода в моделях github.com/gitlabhq/gitla…, а это очень большое приложение (gitlab)16:56
@rubyunderhood если вкратце, то всё что не про http, persistency в классы, которые вообще не знают что их используют в веб-приложении.16:57
. @lisovskyvlad про то, как делать мало кода в моделях уже 100 книжек написали, разговор о том, кто как организует базу кода в рельсах)
16:59. @lisovskyvlad ага чудесно так и надо, вот ты лично как эту кухню структурируешь в рельсовом приложении?) все в либ валишь?
17:01. @lisovskyvlad Влад ворвался откуда-то с середины видимо:) Дискас был не про то, как какой код писать, гибкий и тестируемый, или негибкий
17:03. @lisovskyvlad и нетестируемый, а как его структурировать в контексте приложения на рельсах.
17:04. @lisovskyvlad app/serializers, app/services, app/something? Это мы и хотели выяснить:)
17:05. @lisovskyvlad неймспейсы-то используешь?) app/serializers/user_csv_serializer, или app/serializers/user/csv_serializer? или по всякому?:)
17:07@rubyunderhood Мой подход такой: забудь что, это прилжоение рельсовое. Просто абстрагируйся от неё. Пиши гибкий тестируемый код.17:07
@rubyunderhood @lisovskyvlad я скоріше розбиваю на неймспеси концептуально типу app/admin/ app/api/v1 і тп17:08
. @lisovskyvlad а эволюционирует в каком плане?) Типа, вначале фигачим а потом разгребаем по-возможности?)
17:09@rubyunderhood Да, видимо я не понял что вы хотели то. Ну, конечно не /lib. В либ то, что вообще к приложение не относится, но ещё не гем.17:10
@rubyunderhood @lisovskyvlad є така штука як hierarchical mvc неймспейси тут якраз грають роль модулів а mvc в середині них17:10
@rubyunderhood Зависит от насколько четко видна конечная цель (обычно нет), многие приложения живут годами и требования к ним тоже меняются.17:12
. @lisovskyvlad угу, респект за МОЩНЫЙ врыв, я вначале удивился даже:)))
17:14@lisovskyvlad @rubyunderhood якраз якщо аплікуха живе довго то неймспейси полегшують її скейлінг і дописування нових штук17:14
@lisovskyvlad @rubyunderhood тобі по суті можна не тримати в голові всю архітектуру а зосередитись на конкретному неймспейсі17:15
. @ilavriv @lisovskyvlad вот да, согласен, все что можно изолировать -- надо изолировать)
17:16@rubyunderhood красавчик, давно я такого срача из пустоты не видел! :+1:17:16
. @anton_davydov да я сам удивился, честное слово:)))
17:17. @Bugagazavr я как раз за неймспейсы и выступаю)
18:29Всем хорошего вечера пятницы, на сегодня я в оффлайн) На последок всем хорошей музыки youtu.be/FPbQ6weKh-k
18:42# Суббота 14 твитов
Если говорить об инструментах, то я (наверное, как и большинство) использую rspec, factory_girl, capybara, teaspoon.
12:49Для автоматизации выполнения тестов раньше использовал guard + spork, сейчас не использую ничего, при разработке тесты запускаю руками.
12:50С чего начинать писать тесты в новом приложении – я обычно пишу features spec-и постепенно дополняя их юнит-тестами. Важно, чтобы тестовая
12:52инфраструктура развивалась совместно с приложением.Начать писать тесты в большом,долгоживущем app, без тестового покрытия будет сложно
12:53@rubyunderhood @suxxes мне кажется, достаточно не принимать PR без тестов и поставить CI :)12:53
. @anton_davydov @suxxes еще вопрос, кто какие CI использует) Я гитлабовский.
12:53@rubyunderhood Я вот даже не тестирую. :)12:56
В продолжении разговора -- а есть адепты TDD? 100% coverage, test first вот это все
13:07@rubyunderhood не адепт TDD, раньше тесты не писал вообще и спал плохо. Сейчас на довольно большой проект стал писать тесты - сон улучшился)13:14
@rubyunderhood 100% coverage это иногда мало13:53
@rubyunderhood есть вот такая штука github.com/mbj/mutant/ покрывать ей на 100% не обязательно, но самые слабые места узнать можно14:01
@rubyunderhood @anton_davydov @suxxes GitLab CI, TeamCity - для проектов, Travis CI - для gems15:52
# Воскресенье 2 твита
@rubyunderhood есть одна очень хорошая вещь в тестах: они понижают фоновый уровень тревоги и повышают удовлетворение13:30
@rubyunderhood @anton_davydov @suxxes я использую длс CI jenkins с пробегом rubocop -> rspec -> cap deploy13:31
# Ссылки
github.com
- https://github.com/kostya/eye
- https://github.com/antirez/disque
- https://github.com/thoughtbot/suspenders
- https://github.com/alexfedoseev/generator-flux-on-rails
- https://github.com/twitter/finatra
- https://github.com/vexor
- https://github.com/Ptico/rubyunderhood
- https://github.com/mokevnin/railsify/tree/master/app
- https://github.com/gitlabhq/gitlabhq/tree/master/app/services
- https://github.com/gitlabhq/gitlabhq/tree/master/app/models
- https://github.com/ginty/cranky
- https://github.com/mbj/mutant/
other
- http://ural1.ru/
- https://www.facebook.com/groups/rndrug/
- https://music.yandex.ru/album/77947/track/691946
- https://music.yandex.ru/album/1987027/track/17370435
- http://prelang.com/
- http://www.opensourcerails.com/
- http://awesome-ruby.com/
- http://tryshoppe.com/
- http://habrahabr.ru/company/truevds/blog/263335/
- http://blog.jruby.org/2015/07/jruby_9000/
- http://cs4.pikabu.ru/images/previews_comm/2014-10_3/14132802653482.jpg
- http://www.fluxbox.org/screenshots/screenshots_full/screenshot_zan.png
- https://youtu.be/FPbQ6weKh-k
- http://guides.rubyonrails.org/testing.html