24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
1. C чего мне начать, чтобы стать рубистом? Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
2. Какой gem посмотреть, чтобы понять, как писать код? Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping. А еще можешь полистать на гитхабе гемы с нарастающей популярностю. https://github.com/trending?l=ruby Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби? Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО? Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.
7. Хорошие практики по руби и рельсам? Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes. Почитайте еще Grimm A. - Objects on Rails Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
13. Где можно задать глупые и не очень вопросы? - здесь - stackoverflow.com - тематические slack-конфы - а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это? Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код? Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows? Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка? Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby? Можно, но не нужно. Гем Gosu.
20. Как и где искать работу? Легко и просто - http://rubyjobs.ru/ Не так просто - https://upwork.com/ Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.
TODO лист для ньюфагов: И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь. Рекомендации: 1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии. 2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет) 3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch 4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой. Ну, а мы открываем очередной Ruby Thread.
Так то смотрю за тредом и понимаю, что походу в Руби и Рельсы смысла вкатываться нет. Деманд слабенький. Наверное, лучше пхп джаваскрепт макакой стану.
Слышьте, поясните за работу asset pipeline. Он же тупо берет все картинки из load path'ов и отдает их?
Допустим, у меня есть куча изображений, специфичных для конкретного пользователя или группы пользователей (аватары, например). Мне эти изображения скармливать пайплайну не нужно? (чтобы не грузить неиспользуемые файлы)
Сап, снова нубас и его вопрос. У меня есть 2 независимых контроллера: posts, files. Есть лэйаут application в нем есть бутстрап навбар в котором 2 ссылки(posts,files). Собсна вопрос, как сделать так, что бы в /posts в навбаре у ссылки posts был класс эктив( и аналогично с files)? Неужели придется делать лейауты для обоих контроллеров с разницей лишь в том у какой ссылки класс эктив?
>>744918 Пользователь ничего лишнего грузить не будет, assets pipeline просто прекомпилирует всё в папку public/assets. В браузер что-либо загрузится только при первом просмотре данной картинки/стилей/скрипта. Если речь идешь про совсем большое количество картинок, которые еще и могут менеджиться через некую админку, то использовать надо какой-нибудь гем для загрузки файлов, типа paperclip или carrierwave. К Assets Piperline он отношения не имеет. >>744939 Это же тривиальная задача. По такому тебе сюда http://google.com и сюда http://stackoverflow.com Например, http://stackoverflow.com/questions/17481812/dynamically-add-active-class-to-bootstrap-li-in-rails
>>745227 >Js (так и так понадобиться), Ок. >Python (котовасия с ветками), Пишешь на третьей и не ебёшь мозг. Двойка мертва. >Go Разве что как задел не будущее. Работы то не завезли.
>>745211 > Development felt cool Тащем-та вся суть статьи в одной фразе. Хипстору было охуенно ебаться с всратыми рельсами версии так второй до мержа с Merb-ом, а потом когда самые охуительные косяки в дизайне починили, запилили Arel вместо ста нерасширяемых ad-hoc велосипедов, потом год фиксили баги и ими наконец стало можно пользоваться без анальных спазмов, ему стало "ne cool". Это ж теперь бля работу придётся работать, а не анус себе расширять. Пойду искать новый фреймворк, хуле.
>>745487 >Мне очень нравится руби, гемчики, МВС модель, но мне нужна работа, возможно руби станет просто хобби. Работы жопой жуй. Или это вечный семен решил действовать более аккуратно и начал говорить намёками?
Есть две модели: А has_one B. Можно ли в форме для редактирования записи из модели А сделать селект для выбора ассоциации из модели В? Для has_many вот был бы метод b_ids, но для has_one ничего такого не могу найти.
Всем кукареку. Я ньюфаг, не знаю куда вкатываться. Цель - быстрее начать уже что-то делать, быстрее заиметь базис и вкатиться в реальный кодинг. Руби подходит или нуфагом с инглишом уровня "читаю 1 страницы книги 15 минут" нет?
>>745689 Руби неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит руби, а потом не знает что делать с ней. Плюс вся инфа на английском, заебёшься переводить. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell. После него другие языки будут учиться за неделю. Работы полно, платят отлично. Много инфы на русском. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.
Важно здесь наличие метода allow_nested_attributes_for в модели А, ибо модифицировать придется поле в B (has_one - ассоциация, при котором внешний ключ находится в аасоциируемой "справа" модели)
>>745731 >14634798532460.jpg А чего там такого непонятно? Я думаю, даже 9-классник осилит основные моменты, если попутно будет изучать основы так называемой дискретки.
>>745864 Ну ты писал что за 15 минут можно всё это изучить. Я если что имел ввиду именно эту книгу. Ещё гревне-дреческий алфавит надо выучить и книжку по дискретной алджебре. Да и через 3 года после ВУЗа я уже не могу ничего вспомнить пор матешу.
>>745933 Да и теории категорий там нет. В хаскеле нельзя сделать свою собственную категорию. Даже свой собственный функтор (в математическом смысле) нельзя ввести.
>>745936 List - это категория, Maybe - это категория, любой кастомный data - категория, все остальные примитивные типы - лежат в Hask категории. Функтор в хаскеле отличается от теоркатного только тем, что он переводит морфизмы и объекты не из произвольной категории в привольную, а только из Hask в произвольную.
>>746168 >>745936 Вы заставляете меня и остальных находящихся здесь рубистов чувствовать себя неполноценными неучами, которым никогда не суждено оказаться среди хаскелл-элиты. Пожалуйста, перенеситесь в соответствующий тред
>>746221 Почему? Судя по названиям уроков, просмотрев это всё от начала до конца, ты увидишь приблизительно 100% базовых и чуть более продвинутых вещей, которыми придется заниматься практически при разработке любого приложения. Всё, что выше - частные вещи, уникальные для конкретных задач, туториалы или статьи по которым либо не найти вообще (читай документацию и делай сам), либо их мало. Начать можно с этой пачки видеоуроков (за качество которых ничего сказать не могу, не смотрел)
Почему RubyMine считается типа перегруженой хунтой, а СублимеТекст для нормальных пацанов? По мне так удобно, быстро и красиво. У меня лицензия как студенту. Чяднт?
>>746413 Многие начинают с саблайма, так как качать много гигов ради попробовать покодить - глупо. Ну а потом привычка, вот и остаются. И начинают другим срать в уши, мол я сижу и ты так делай.
>>746421 Так нет же, это вы постоянно срёте своими IDE - ну там жи автокомплит, можно найти этот клас и кнопка рифакторинг еба, сразу как прафсианал))). Это стоит денег, времени и зависонов, о да.
>>746442 В рубимайне есть не менее 10 крупных функций, значительно повышающих удобство при разработке, а также десятки вспомогательных плюшек. Ключевые из функций настолько полезны и удобны, что пересаживаясь в простой текстовый редактор, где их нет, чувствуешь себя словно без одной руки. Я могу начать перечислять, если кому-то реально интересно.
Мелкие скрипты удобнее делать в атоме каком-нибудь, это да, потому что часто лень проект поднимать в рубимайне, да и незачем это делать, если работы на полчаса.
Но что-то хоть немного регулярное или длительное, среднего или более размера делать без рубимайна... очень не комфортно. Я честно пытался в своё время пилить среднего размера проект исключительно в саблайме, обмазался плагинами там... выдержал две недели и дропнул это самоистязание к хуям.
По поводу тормозов, зависонов, трудностей настройки и денег - это всё враки и хейтерская антипропаганда. Рубимайн работает очень шустренько, настроить его нужно всего один раз, ну и китайские публичные серверы лицензий никто не отменял пока.
>>746455 Не думаю, что я на него пересяду(примерно раз в год пробую ставить, трачу минут 10 на настройку и удаляю к хуям), но узнать, что же там такого есть, было бы интересно. Когда-то давно пускал емакс по вене, но у меня от него реально заболел мизинец на левой руке. В 21 год нахуй, я охуел и удалил его навсегда к хуям. Потом года четыре сидел на саблайме, пока прошлой осенью после очередного обновления либ он не развалился нахуй. Можно было откатиться обратно и подождать, но саблайм вонял мертвичиной и надежды на новый билд не было. Перекатился на моднявый атом, в принципе меня бы все устраивало, если бы это говно не падало к хуям примерно два раза в день. В рот ебал такую жизнь, но альтернатив-то нет. Короче везде полное говно и в ебаном 2016 мне нечем редактировать ебаный текст без анальной боли. Пиздос просто.
>>746468 Странно слышать об удовлетворении Атомом после саблайма. Этот браузерный сблёв по своей "отзывчивости" - как КПК на Windows Mobile рядом с iPhone в свое время.
А что именно ты там настраивал в Rubymine? Я почти не меняю дефолтные настройки, ставлю Darkula тему и вперед + парочку плагинов, которые даже не смогу вспомнить сейчас.
>>746473 Я не чувствую принципиальной разницы в отзывчивости. Подсветка и (по-моему самый большой косяк, ибо блокирует весь интерфейс) перенос строк на файлах в 3к+ строк занимаюе 2-3 секунды после открытия, но такие файлы лично я открываю редко и поэтому лично меня это не ебет. Хуже конечно чем у саблайма, лучше чем обвешанный плагинами емакс. Насчет рубимайна не скажу, потому что никогда подолгу им не пользовался, но по-моему там охуительной отзывчивости тоже не чувствуется. > А что именно ты там настраивал в Rubymine? Все, начиная от хоткеев и заканчивая назойливым автокомплитом.
>>746481 Алсо, что скажете на счет Руби на винде? Старые форумы 2008 годов плевались, что руби на винде это тормознутый провал, но сейчас вроде как все ок?
>>746484 Може и ОК, но разработчику сидеть на винде это ПРОВАЛ. Тебе сделали линукс, запили мак ос (или хакинтош), но нет хочу жрать виндус. Пора переставать быть необучаемым и выбирать нормальные системы, а не прошивки для игр. если надо играться собирай отдельную пекарню с прошивкой или покупай PS4
>>746484 Хуй знает, но мой хозяин хочет, чтобы к осени наша с ним гостевуха заработала под спермой на IIS. Выдержит ли это моя жопа не знаю, но думаю на пару охуительных историй хватит.
>>746530 Никаких охуительных историй на самом деле, если не будешь использовать особо шизанутые или заброшенные джемы. Из особо шизанутых я встречал только libv8 (в зависимостях therubyracer) и unicorn, которые под винду собираться не умеют. Но ассеты последнее время модно вытаскивать из рельс и собирать через gulp\webpack, так что необходимость в libv8 остаётся только для ОСОБЫХ проектов, которые реально интегрируются с сим замечательным движком js. А unicorn на девелопменте не нужен, а на продакшене вместо него сносно работает thin, если сильно приспичит.
Продакшен под виндой - это, конечно, вопрос спорный. Я бы не стал так делать.
Ну и зависимости от линуксового софта могут ещё стать непреодолимым препятствием.
В обычных проектах под виндой ВСЁ НОРМАЛЬНО. Ну, почти всё. Но обычно работать вполне можно. Все популярные джемы, даже нативные, могут в винду. Для сборки нужно установить ruby-devkit, о существовании которого многие почему-то не подозревают.
Руби тормозит раза в 2 по сравнению с линупсом. Не критично на самом деле. Ах да, ещё не дадут обмазаться spring - для запуска тестов приходится использовать spork, а запуски rake терпеть по 5-10 секунд в зависимости от жирноты инициализации вашего environment.
Для некоторых проектов я держу рабочее окружение в виртуалочке, а работаю в рубимайне в режиме deployment. Это такая достаточно успешная попытка seamless интеграции IDE с удалённой средой, в которой запускается проект. Работаем как с локальным проектом, но вертится всё под виртуалочкой, мне очень нравится. И даже отладчик работает :3
>>746550 > Продакшен под виндой - это, конечно, вопрос спорный. Тащем-та это и нужно, какие-то клиенты-ретрограды не доверяют интернетам и хотят держать гостевуху у себя в локалке. И шоб обязательно под видной и IIS, развернуть докер это бля сложно и непонятно.
Поковырял немного рубимайн, его пока настроишь весь день уйдет, уродский он по дефолту, все эти полосочки, переносы, подсветки, уебищные цветовые схеми и тд, аж писать противно в нем, плюс куча визуальной хуйни, а я консольный пердолик, вот почему в атоме все так красиво и легко? И платиновый вопрос, стоит ли тратить весь день что-бы таки настроить рубимайн? Мне по большему счету нужна только визуальная часть как в атоме, шрифты, цвета етц. мимо эстет
>>746550 ну йобанныйврот, для вас же сделали вагрант, в 2 клика из коробки всё работает, а потом начинают срать вопросами как блядь им никсы настроить, потому что привыкли дабл клик на десктопе.
>>747030 Я как-то хотел по работе запилить на этой хуйне небольшой микросервис. Дочитал до Entity/Repository, охуел сколько говна мне надо будет из себя выдавить, чтобы замапать несколько таблиц на сраные модели, и расчехлил рельсы.
>>747064 >>747052 Тоже считаю, что если сейчас что-то принципиально новое осваивать, то лучше выбирать что-то, что сейчас традиционно считается "высоконагруженным". Какое-нибудь джаваскриптообразное говнецо, или хотя бы Phoenix (который по большей части - копия рельс, но, вроде как, за счет того, что написан на Elixir, охуенно многопоточно)
>>747098 нахуй этот элексир, когда может подтянут rust-bridge(helix), к тому же https://habrahabr.ru/post/300954/ отлично, сам думаю что может нахуй я решил делать приложение на express, когда тут всё кошерно.
>>747143 >может подтянут А эликсир уже работает. Че хотел сказать этой статьей? Вообще ничего нового оттуда не узнал, еще и ангуляр используют в 2016..
>>747183 А че еще в 2016 году использовать? инб4 ты мне щас предложишь обмазаться ублюдочным высером от пыхомак с фейсбука, которым в приступе белой горячки пришла охуительная идея не только на серверсайде использовать шаблонизатор вместо языка программирования, но и на клиенте точно так же блевать разметкой внутри кода.
>>747582 Хуярю формы с помощью чистеньких AR-моделей без бизнес-логики, как в учебнике от dhh написано. А всю логику вывел в insert/update/delete rules, хранимки и вьюшки. Боже, какое job security.
>>747827>>747831 В руби результат последнего выражения в теле функции будет возвращён в качестве результата. Чувак собирает данные и генерирует какой-то HTML-блок вёрстки.
>>747832 Блин наверное я неправильно понял вопрос, на картинке рубимайн уже задолбал этими своими: «Псс, пссс, чувак-чувак давай я найду тебе дополнительные источники данных. Хочешь апдейты тебе подгоню!? МНЕ СКУЧНО»
>>747882 content_tag, как и все остальные _tag, вынесли в отдельный гем, так как многим сейчас от рельс нужна только генерация json. Если ты генерируешь HTML, какие проблемы подключить гем и юзать content_tag? Или у тебя есть варианты поудобнее?
>>747098 >Тоже считаю, что если сейчас что-то принципиально новое осваивать, то лучше выбирать что-то, что сейчас традиционно считается "высоконагруженным" >хотя бы Phoenix (который по большей части - копия рельс, но, вроде как, за счет того, что написан на Elixir, охуенно многопоточно) Или перестать ебать мозги и взять JRuby, который в продакшене давнее ноды.
>>748083 >за хтмл вне вьюхи нужно рюки отрывать В хелпере можно. Впрочем, это именно то, что мне не нравится в рельсах по-умолчанию - мешанина самого разного кода в хелперах. Есть какие-то современные шаблоны проектирования на замену хелперам? Потихоньку переходу на view models (decorators), но там получается тот же html, размазанный по файлам.
>>746468 >Когда-то давно пускал емакс по вене, но у меня от него реально заболел мизинец на левой руке. В 21 год нахуй, я охуел и удалил его навсегда к хуям
Удаленку и фриланс видимо не придумали. И не надо начинать, что на удаленку джуниоров не берут, ни дня в офисе разработчиком не проработал. С самого начала на удаленке.
>>749661 Даже не знаю, что на это сказать. Мой начальник, обмазавшись es6, зачем-то тоже запилил импорты в руби, хотя пока меня они не коснулись. Кому они упрощают жизнь - честно, так и не понял. Просто импортишь всё как дурак постоянно, будто если захочешь узнать откуда берётся та или иная хрень - без импортов не сможешь. Не сможет в это только полный нубас.
>>749797 Например, в rspec можно стабить и мокать методы как отдельных экземпляров, так и классов, можно переопределять константы (а классы - тоже константы). Потому что руби почти полностью динамичен и позволяет делать такие трюки в рантайме.
Применимость DI - это только ко-ко-ко-конфигурабельность классов-сервисов и подмена классов в тестах. Но это говно нужно только в джавке и пхп, где классы прибиты гвоздями.
Т. е. когда вы, петухи, притаскиваете DI в руби, знайте, что оправдываете полезность этого лишь исходя из привычного вам порядка вещей и из религиозных убеждений. Либо от неопытности.
Я придумал!!!11 Давайте в раби сделаем статическую типизацию и... и... и интерфейсы добавим!!!!!11 И аннотации, хуле мы без аннотаций как негры, а????77
>>749948 В джаве нет good parts кроме богатой библиотеки компонентов и огромного legacy (ну, наличие работы тоже сорт оф good part). Сам язык - убогое говнище, сишарп и то повеселее будет. Я бы ещё понял, если бы ты упомянул scala или groovy, но джава...
>>749172 Ну, все те разы, что я откликался на вакансии 4 переписка заканчивалась после того, что я сообщал о своей ньюфажности и отсутствии коммерческого опыта. При том, что имею опыт в других языках, который честно написал Так что и правда, не нужно проецировать. Я вообще не ебу, как можно найти удалённую работу, будучи без опыта. Ну а про невозможность набежать в ДС я вообще молчу.
>>749797 Все верно, так же делаю, но это не тот DI, который выносит мозг в руби.
>>749951 Энжой ё каплинг. Программирование на уровне интерфейсов никак не зависит от конкретной реализации ООП. В руби интерфейсы не завезли вот, но код все равно их подразумевает.
>>750013 > я сообщал о своей ньюфажности и отсутствии коммерческого опыта. Ты совсем ебло что ли? а) Тебя не спрашивают про опыт. Ты молчи сука. б) Спрашивают, но не очень настойчиво. Ты гостевуху по книжке dhh делал? Делал. Ну так спиздани, что насосал джуниором год-два. в) До тебя реально доебываются, чем ты занимался. Или ссылки на гитхаб требуют. Ну тогда хуй знает, можешь попробовать напиздеть что-нибудь или в конце концов слиться. С гитхабом кстати смело нахуй посылай, либо у тебя квалификации не хватит, либо(скорее всего) работодатель - охуевшее мудило, которое за $20 в час хочет раба c топ-100 http://contributors.rubyonrails.org
И вообще сразу же переводи разговор со своей сукаличности(поверь, всем нормальным людям на тебя глубоко похуй, ты кто такой вообще для рандомного дядьки из интернетов?) на то, что что ты полезного можешь сделать. Задавай больше вопросов про проект куда тебя берут, быстро прикидывай возможные решения, можешь припиздеть что ты такое уже делал. Учись продавать свою жопу, сука, и подороже. И это, не перегибай палку, когда пиздишь.
>>750024 Ну вот смотри, одно из последних писем Переведу на русский сразу :
- Вы работаете сейчас? Какой у вас в данный момент уровень занятости? - Работе в сити_нейм на полный день. Вы можете позволить себе работать полный день? - Где вы работали ранее? Укажите список фирм Блядь, я в CV всё написал, хуле так сложно посмотреть? - Проекты, в которых вы участвовали и ваша роль в них. - Какие финансовые ожидания?
Ну вот как думаешь, что ответить, чтобы он не слился, как это случилось со мной?
>>750019 Например, пополнение баланса пользователя. Способов оплаты может быть сколько угодно, но сам сервис пополнения не должен от них зависеть, поэтому он просто подразумевает общий интерфейс этих сервисов, которые могут быть переданы ему в конструктор. А как б бы ты это сделал без IoC? И как потом было бы с переиспользуемостью и гибкостью таких связанных конструкций?
>>750155 IoC не нужен для решения этой проблемы. Фасад + адаптеры + стратегии, чтобы уменьшить связность. Мы не переключаем систему оплаты каждый день, так что изменение пройдёт в рамках планового апдейта.
И подобных примеров - единицы. И обычно всё касается какого-то внешнего сервиса, который может ко-ко-ко-поменяться ВНЕЗАПНО блядь.
Давай, ну покажи же мне. Какой профит ВСЁ ГОВНО ДО КУДА ДОТЯНЕМСЯ укладывать в IoC контейнер? В рельсопроектах, где вообще строгая ООП-архитектура не практикуется в целом?
>>750273 Мы тут говорили, вроде, про повсеместное внедрение IoC + DI в рельсопроектах. Я спросил пример и ожидал увидеть что-то, что откроет мне глаза и подтвердит всю разумность и философию того подхода. А в ответ вижу типичное кукареканье про внезапную гибкую замену одного из центральных компонентов системы.
>>750270 В рельсопроектах она не проектируется потому, что dhh и rails core team долбоебы которые плевали на заветы ооп. Видели ActiveRecord::Supress в 5 рельсах? это как открывать окно, когда у тебя газ утекает.
>>750283 да нахуй строгое, хотя бы минимальное. а в рельсах все вокруг эктиврекорда строится. посмотри на крупный проект - gitlab - там в коде ебаная мешанина потому что rails way. никто не говорит про то, что нужно быть architecture astronauts, но блять, не такой же говнокод проповедовать. кэлбак на кэлбаке и method_mssing подгоняет.
>>750278 Про повсеместное было написано в статье, алё. Мы здесь говорили про использование элементарного DI в сервисных объектах для упрощения жизни, а некоторые почему-то начали гореть и визжать что в руби оно нинужно, мы всё застабим, потому что можем.
А как насчёт того, что при стаббинге тесты начинают знать о внутренностях тестируемого? Их рефакторинг неизбежно повлечёт за собой падение тестов. Если же снаружи передавать зависимость, то никому не будет дела, что именно произойдёт внутри "чёрного ящика". Так что вот вам ещё один камень в огород.
>>750352 это как говорить, "да похуй, что у нас воруют, У МЕНЯ ТО НИКТО НЕ ВОРОВАЛ". Вместо того, чтобы начать признавать свои ошибки, они блять обмазались говном, и примотали костыль синей изолентой. ну а хуле, работает же! удачного дебаггинга, блять
>>750430 > начать признавать свои ошибки Какие ошибки-то блять? Это AR, хули ты хочешь? Можешь оборачивать всё сервисными объектами, а можешь как DHH говно по своей груди сапрессом растереть и широко улыбнуться. Хули тебе не нравится-то, пидор?
>>751325 http://www.martinfowler.com/eaaCatalog/activeRecord.html > An object carries both data and behavior. Much of this data is persistent and needs to be stored in a database. Active Record uses the most obvious approach, putting data access logic in the domain object. This way all people know how to read and write their data to and from the database. Что хотел-то, ептабля?
>>751120 Вот я другой пидор, а дхх хуйню сморозил какую-то. Зачем запиливать во фреймворк общего назначения костыль под конкретный юзкейс (ещё и основанный на плохой практике использования коллбэков) - мне тоже непонятно. Не хотел бы я в подобном потом копаться. А активрекорд как паттерн здесь вообще не причем.
DHH просто нежный диктатор https://github.com/rails/rails/issues/18847 > You're a year late to the discussion and you didn't bring any new arguments to the party. Feel free to write your own code without callbacks, but this chef's knife is staying in the drawer. :-1: 32 :+1: 5 :thinking_face: 5
>>751708 Глядя на тенденции треда, могу предположить, что сейчас сюда набежит какой-нибудь непризнанный гуру программирования и насоветует тебе какую-нибудь малоизвестную неюзабельную хуйню. А нормальные люди сейчас используют ActiveModelSerializers, а с выходом Rails 5 их станет еще больше, ибо AMS будет включен в Core
>>752307 Согласен, но мои познанания показывают, что этого фреймворка нет как правило, а если есть, то заебешься городить костыли, чтобы заточить под свои нужды.
>>751635 > фреймворк общего назначения Совсем ебанулся? Рельсы - это фреймворк, на котором DHH пишет себе бейскемп. С каких это пор DHH стало ебать мнение плебеев или рельсы вдруг стали "общего назначения"?
Чет я хз, очень няшный синтаксис без ебаных закорючек, от которых в глазах рябит. И без поноса в тредах типа СТАВИТЬ ОТКРЫВАЮЩУЮСЯ КОВЫЧКУ НА ОДНОЙ СТРОКЕ ИЛИ НА СЛЕДУЮЩЕЙ ПОКПОКПОК.
>>752500 >Он вызывается не как метод Kernel, а как метод текущего объекта (Kernel включен во все), соответственно, стабить нужно на вызывающем объекте. Хотя наверное я туплю и стаб на Kernel тоже должен работать, потому что он просто включается в цепь наследования. Но тогда непонятно, почему у тебя не работает.
>>752502 Я немного запутался в начале, но теперь понял, что как раз Kernel.rand - метод класса. По идее твой способ должен работать. Сейчас потестирую немного, мб найду решение
>>752538 Довольно годная статья. В основном там бугурт на ActiveRecord, с чем я не совсем согласен, посколько сам пока не перешёл ни на ROM, ни на Sequel хотя бы - меня AR устраивает. Но круто то, что автор обозначил, какие именно прблемы решаются в альтернативных решениях и прорекрамировал Hanami :3
Антуасы, начал учить Ruby, получил довольно хорошую подготовку, но потом дропнул в сторону JS и AngularJS. Теперь постоянно с грустной мордой смотрю в сторону Rails. Но Ruby уже прилично позабылась, и много нужно будет вспоминать.
Стоит возвращаться? По фану почитывать Рельсы, за которые я так и не успел взяться? Или крики мамкиных икспертов что им скоро конец правда, и лучше уже браться за NodeJS и покорять MEAN Stack?
Прошу прочувствовать всю скорбь моей души, и дать дельного совета.
>>753287 Меня терзает что я много времени потратил на первый Ангуляр, который скоро будет ненужным, не хотет так же тратиться на рельсы. Куда не глянь, всюду пророчат их гибель
>>753291 За все шесть или сколько там лет пророчеств смерти руби и рельс, потенциальный убийца появился пока только один, и в настоящее время он безработный.
>>753291 > первый Ангуляр, который скоро будет ненужным Что за хуйню ты несешь? Посмотри на свою мамку. Она старая уебищная жируха с хуевым характером. Но даже, она, сука, нужна. Тебе, чтобы варить борщи, твоему бате чтобы приносить пиво и стирать его грязныетрусы, в конце концов она неплохо сосет мне под столом прямо сейчас. Так вот, технологии - они как твоя мамка. Даже старые, уебищные и не развивающиеся вперед будут нужны еще много лет после того, как хипсторы их оффициально закопают. И это не считая того, что с первого ангуляра на второй перейти пиздец как просто.
>>754093 У меня такое чувство, что ты неправильно понял инфу по той ссылке. Вариант в any выполняется дольше, чем с each. Но это было в 2014 году, с тех пор многое могло измениться. Советую тебе заюзать те бенчмарки и посмотреть, может быть стало быстрее.
Т. е. из всех подстрок твоей строки можно построить trie, а потом через него быстренько проверять, есть ли нужная подстрока или нет. Вон, у него там скорость поиска 2 млн в секунду.
И, думаю, можно загнаться и построить два trie: одно из всех элементов массива, вхождение любого из которых нужно обнаружить, а второе из построк целевой строки. А потом рекурсивно СРАВНИТЬ ДВА ДЕРЕВА, и если есть общий путь от корня, значит вхождение есть! Базарю, быстро работать будет.
>>754986 Нет ты иди в баню. Мелкобуквенный еблан. Либо ты тот единственный придурок, что постит здесь все отмороженные мелкобуквенные посты, либо теория о том, что мелкобуквенность - признак слабоумия, только что ещё раз подтвердилась.
>>754820 Контроллеры хуяришь вручную. JSON выгружаешь вьюхами на jbuilder-е. Документацию пердолишь тоже вручную как хочешь, лично я со своими пацанами сру доками на http://www.mkdocs.org Короче как нормальный пацан ебешь в рот систему и педерастов с http://jsonapi.org и подобной хуйней.
>>755527 Ну да, медленный и DSL немного фекалиями попахивает. Но блять разве есть альтернативы, чтобы по-человечески выгружать JSON с вложенными структурами и полями в зависимости от авторизации?
>>755973 > как пидор > In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of sexual identity and orientation.
>>756110 Делать стартапы на "других технологиях" дорого и в целом нинужно, ведь взлетает один из тысячи.
pusher ещё, например, на руби был. У них там eventmachine и в целом всё работало стабильно и с охуенной производительностью. Но потом у них появились клиенты, "онлайн" стал миллионы. И они неторопливо переписали ядро на го, потому что вопрос экономии серверов стал действительно насущным. Алсо, выигрыш там был что-то типа 4х по пропускной способности, т. е. это не так уж и существенно, ну серьёзно блджад, лучше начинать делать проекты на нормальных фреймворках и красивым кодом, а пердолиться в сракотан и угорать по экономии байтов нужно начинать, если проект стал успешен.
Другая история - реальные нагрузочные требования от заказчика. Часто бывает в системах, связанных с бизнесом и автоматизацией. Но эту хуйню на руби никто и не делает.
>>756189 "Пидор" - это оскорбление, негативно оценивающее тот факт, что я ебусь в жопу. То есть называя меня пидором ты подразумеваешь не только то, что я ебусь в жопу(тогда бы ты назвал меня нейральным словом "гей"), но и то, что долбиться в сракотан - это что-то плохое. А это уже предъява к Иэну Маккелейну и Алану Тьюрингу. Так что назвав меня пидором ты на самом деле поставил меня в один ряд с этими великими людьми, подняв мою самооценку. Да, я еще тот пидор и горжусь этим.
аноны, объясните про двоеточие, что это показывает? вот есть хэш b = {:one =>1, :two => 2} Захуй это? Что бы означало без этих двоеточий? b = {one =>1, two=>2} Какие тут проблемы? one и two могут быть объектами? Еще поясните пожалуйста, что это за хуйня в циклах с ||, смысл понимаю, но нужно четкое определение. Спасибо, хули.
>пердолиться в сракотан и угорать по экономии байтов нужно начинать, если проект стал успешен. Или если ты нищееб, который хочет сэкономить на серверах.
>>756334 не понял, что ты написал, но все понял, что ты мне рассказал, т.е. когда пишем :asdf, это означает, что asdf это не переменная, определенная где-то выше, а символьный ключ, так?
>>755506 >Оп, поясни по-хардкору за Chef, Puppet. Что за штуки такие и для чего? ОП в треде. Chef, Puppet - системы управления конфигурациями серверов. Для небольших проектов тебе хватит Capistrano, но когда серверов тысячи (или хотя бы больше нескольки), Capistrano соснёт, и ты вместе с ним. Из аналогичных проектов моогу назвать ещё Ansible и Salt, обе на питоне. Про Ansible ничего сказать не могу, а вот Salt позиционируется как убийца всех систем конфигураций, потому что он дохрена декларативный и распределённый. Тем не менее, на практике рулят Chef и Puppet. У меня друг работает в Badoo, у них тысячи серверов, вовсю используется Puppet.
А вообще, советую взглянуть на Docker. Его сложновато освоить (сложнее Capistrano), но оно того стоит. Я вот приложение заказчика перевожу на него. Это совсем другой инструмент, используется зачастую вместе с названными, но может выполнять многие из задач того же Capistrano намного эффективней.
vargant – поднимает полноценную виртуалку (обычно путем virtualbox) c дев-окружением. Есть синхронизация директории на диске и директории в виртуалке. Можно в винде поднять виртуалку с линуксом.
docker – контейнерная виртуализация. Все контейнеры используют одно и то же ядро (хостовой системы). Сможешь в линуксе поднять 10-20 виртуалок с линуксом, при этом будет потребляться меньше ресурсов.
>>756393 >Но ведь Docker не относится к сonfiguration management tools, как Chef и Puppet. Я же написал >Это совсем другой инструмент, используется зачастую вместе с названными, но может выполнять многие из задач того же Capistrano намного эффективней. В задачи докера в определённой степени входит управление конфигурацией (читай, средой выполнения). Имеется ввиду состояние системы, в котором она должна находится для запуска приложения. И с докером это намного проще, чем с капистрано, поэтому я и перехожу на него.
>>756457 Вводное задание Занятие 01. Основы Ruby. Часть 1 Занятие 02. Основы Ruby. Часть 2 Занятие 03. Основы ООП в Ruby Занятие 04. Интерфейсы, наследование и полиморфизм Занятие 05. Методы класса, Модули и объектная модель Ruby Занятие 06. Исключения Занятие 07. Блоки, Proc и lambda Занятие 08. Идиомы в Ruby и хороший стиль Занятие 09. Метапрограммирование Занятие 10. Введение в веб-разработку на RoR Занятие 11. mvc и rest Занятие 12. Связи и ассоциации Занятие 13. Виды Занятие 14. Ветки в git и pull requests Занятие 15. Расширенные возможности ActiveRecord Занятие 16. Контроллеры и нестандартные формы Занятие 17. Аутентификация пользователей Занятие 18. Локализация и внешний вид приложения Занятие 19. Последние штрихи и деплой Занятие 20. Основы javascript и jQuery Занятие 21. Javascript в Rails-приложении
>>756418 Я несколько лет назад купил ебучий рубимоушен за 8 тысяч, а теперь они поменяли лицензию и говорят хуй тебе давай плати еще по 200 баксов в год. Я ебал просто.
Ребят, а ruby ещё жив? Думаю перекатываться в back-end разработку и пока не могу определиться, что выбрать Ruby(Rails) или Python(Django)? А может нырнуть с головой в nodejs? Вообщем, подскажите куда податься? Где больше вакансий и возможностей устроиться джуном? похапе не предлагать
>>756785 Вполне жив, не знаю как в замкадье, в ДС и ДС2 работы достаточно. Хотя я бы на твоём месте катился к хуям в сторону ноды, но если больше нравится руби, то это тоже нормальный выбор.
>>756785 node > rails > django это про популярность, но с первым легче работу найти, потому что ты можешь претендовать на фронтенд зная жс, а там работы дохуя и порог вхождения низкий довольно
Для говнопрототипирования рельсы все ещё топчек, джанго не так популярен, хотя сам питон в пару раз популярнее руби.
>>757192 Мы так один проект завалили нахуй. Потому что в работу пришёл чужой говнокод на ноде, который, видимо, благодаря волшебству только и работал. Лапша коллбэков ВПЕРЕМЕШКУ с НЕСКОЛЬКИМИ пулами промисов это волшебно...
>>759117 Нехватка рубипидоров на рынке, расхватывают как горячие блинчики. Работаем на двух-трёх работах, времени на бордосрачики совсем не остаётся. Оживёт тредик в выходные.
Заказ может состоять из множества продуктов. Очевидные «has_many» отношения. Если оформить связь, то все будет работать, но products состоит из множества полей, которые будут дублироваться, что не кошерно. Короче говоря, надо оформить has_many связь, чтобы ids product содержались в каком-то поле для orders. И при этом была связь типа has many. Рельса вообще так умеет? Или нужн костыль сделать.
>>760563 Заказ не из продуктов состоит, а из OrderItem'ов, привязанных к продуктам. Если где-то есть поле ids, значит дизайн хуёвый и рано или поздно придётся всё равно переходить на нормальную связь M:M через кросс-таблицу.
>>760563 >>760581 Хуже того, дублирование в order_items даже нужно, т.к. товары имеют свойство меняться со временем, а заказы должны показывать историю.
Поясните за гемы. Читаю http://guides.rubygems.org/what-is-a-gem/ > Platforms are based on the CPU architecture, Я думал, что подобное верно только для компилируемых языков, потому что там генерируются ассемблерные команды. А руби же интерпретируемый, почему выполнение кода на руби зависит от архитектуры?
>>761505 Гем может содержать нативные расширения. Алсо, он может вызывать внешние команды или использовать некие внешние пути, которые от POSIX-платформы к Windows-платформе могут различаться.
Господа, подскажите годный гем сделать для бложика редактор с разметкой и картиночками и как потом отображать эту разметку. Попробовал bootsy но мне не нравится, что у неё своя таблица для картинок и вообще пиздец нихуя не понял. Есть что-то годное?
Поясните за authenticity_token, где его брать и куда его пихать? Хочу постманом сделать запрос, но выдает 422 unprocessable entity и ActionController::InvalidAuthenticityToken.
>>762124 А да, запрос, если че localhost:3000/articles/2/comments/1
В браузере это делается нажатием на ссылку <a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/articles/2/comments/1">Delete</a>
>>762123 Лучше tinymce пока ещё ничего не придумали. Есть море хипстерских редакторов типа MediumEditor, но это уже по обстоятельствам, у них обычно упор на "простоту", которая выражается в отсутствии важных фич.
Давайте начистоту. Рельса - говно. ActiveRecord вместо ORM - очевидно, что рельсодауненок не осиливает божественную ORM. Нет генератора миграций, изволь печатать миграции ручками. Нет генератора интерфейса администратора, извольте проебать две недели рабочего времени на очередную велоадминку. Изкоробочные вещи (авторизация/аутентификация), нужные на каждом проекте, надо ставить отдельными гемами. НИНУЖНО.
>>762857 >ActiveRecord вместо ORM - очевидно, что рельсодауненок не осиливает божественную ORM Сам понял, что сказал?
>Нет генератора миграций Вообще-то он есть.
>извольте проебать две недели рабочего времени на очередную велоадминку http://activeadmin.info/
>Изкоробочные вещи (авторизация/аутентификация), нужные на каждом проекте Расскажите этому парню кто-нибудь про архитектуру в виде микросервисов (и почему не нужно пихать эту парашу по-умолчанию в каждый микросервис).
>>762937 > capybara Не рекомендую это дерьмо, братишка. Юнит-тесты писать легко и приятно, а на это говнище дохуя времени уходит(во всех смыслах, писать долго и автотесты запускать тоже пиздос долго), и потом еще хуй проссышь, из-за чего тесты крашатся. Гораздо проще девочку-тестершу с селениумом за $500 в месяц нанять, день на настройку виртуалки и говноскрипты, а потом один профит.
>>764133 TDD/BDD — ещё один анальный способ выслужиться перед рабовладельцем. Ничем не лучше нормальных юнит/интергрейшен тестов, только название громкое.
О, я смотрю наконец-то в треде начали мелькать ключевые слова докер, ансибл, деплой. Помню год назад заходил сюда про докер спросить - либо мычали, либо говном кидались.
Я это, чего пришел. Давайте что-ли поделимся лучшими практиками. Я сейчас немного под впечатлением от нового проекта и еще понял, что слишком отстал, такое ощущение, что мир уже довольно давно живет по новым стандартам, а мужики-то и не знают.
Как вы там репозитории свои строите? Как деплоитесь? Как отказоустойчивость обеспечиваете? Как логи ведете? Как бекапы делаете? Отделяете бек от фронта? Припекает ли от микросервисов?
Я помню раньше все настраивали на своих машинах - базу там (хорошо если майскуэль), рвм-ы, гемсеты, имеджмеджики всякие. Не то что верстальщик, девелопер порой приходил и полдня пытался запустить проект. Вместе с каждым проектом шел почти одинаковый капистрано-конфиг, который настраивал вместе с проектом в гите один матерый программист, никто не знал, что там, оно просто работало. Добавление в него всяких хуков вызывало копротивление. Про то как там настроены стейджинг и продакшен тоже никто не знал - воспринималось как данность. Кто-то что-то слышал про вагрант, но на практике особо не юзали. Так это было.
>>764145 Как делали, так и делаем. Одна впска под проект. Дебиан. Скрипт для установки стандартного необходимого говна. Деплой через капистрано.
Проекты новые не каждый день, всё устраивает. Проекты обычные, никакой ёбли не надо, им даже выделенный сервак не нужен обычно, впски хватает, какая уж тут кластеризация и масштабирование...
Докер знаем, можно и через докер деплоить, но и без него норм. Дробление на десять контейнеров не имеет смысла, когда у нас выделенная впска под проект.
Ёба-проектов с миллионной посещаемостью, приватными облаками и десятком инженеров вокруг шефа\ансибла у нас нету, к сожалению. Как будет, так обязательно поиграемся.
>>764154 Да, анон, вот именно так все и происходит как ты описал - ХВАТАЕТ, и все это новомодное не нужно. Но в определенный момент, кажется, начинает работать синергетический эффект от новых технологий и они оказываются лучше даже для старых задач.
Я вот описал, что мол по полдня проект можно поднимать. А просто я внезапно открыл для себя элементарную штуку - докер-компоуз. Теперь в проект кладется один файлик docker-compose.yml, где описаны все компоненты - база, редисы, эластики, логстеши, и любой участник поднимает все окружение в один клик, даже на винде. Есть вагрант для таких целей, но этот вариант пизже. Когда все компоненты описаны докер-файлами, на сервере можно больше ничего вообще не настраивать, а брать и тупо запускать эти контейнеры. Дальше больше, лол. Делать это удобнее всяким ансиблами. А там описаны все таски и стенды - стейдж, продакшен. Все разработчики явно видят, как устроена система целиком - от топологии до нюансов настройки репликации. Дев от продакшена при таком подходе почти ни чем не отличается. Дальше еще больше. Система становится контекстно-независимой. И появляется желание вместо впс-ок, засунуть ее в какой-нибудь мезос-кластер (а там все тоже красиво выглядит - деплой сводится к тому, что нужно отправить json-таск с указанием запустить контейнеры и выделить им ресурсы, система сам рашит на каких машинах ее запустить и перезапустит в случае креша или выхода ноды из строя).
Каждый следующий этам конечно требует некоторых телодвижений и модификации, но проект становится все более целостным.
>>764160 Я не работал с ними, но есть мнение, что Ансибл пизже. Еще там анон вверху писал про какой-то Salt, вот про него не слышал, может что-то крутое. А вот за папет и чеф слышал что они < ансибла. По крайней мере знаю что ансибл лучше капистрано. И не понимаю, нахуя капистрано сделали стандартом де-факто в рейлс-мире.
>>764172 Ну вообще, да. Их все-таки нужно осваивать. Не думаю, что это стоит делать просто так, без нужды. Просто считаю, что эти вещи гораздо лучше подходят в качестве стандарта, даже для сайтов визиток. Что капистрано, что ансибл нужно просто один раз настроить. Но ансибл гораздо более гибкий.
>>764051 На русском не советую, непротухшее редко бывает. Советую читать на английском через силу, спустя какое-то время будет намного легче понимать. >>763413 Ищи на архиваче по словам ruby thread >>764133 Не согласен. В моей проекте, например, важна консистентность данных в БД, тут без юнит тестов никуда. А благодаря тому, что бизнес-логика из контроллеров убрана, их очень сложно сломать, так что интеграционные тесты не особо нужны (мне). >>764145 >Помню год назад заходил сюда про докер спросить - либо мычали, либо говном кидались. Сейчас можно что-то нормально обсудить, только приходится вылавливать сообщения в куче шитпостинга. >>764150 >девочку-тестершу с селениумом >Вау, бывают такие девочки? Тестировщики почти все девочки >>764164 >Да, анон, вот именно так все и происходит как ты описал - ХВАТАЕТ, и все это новомодное не нужно. Но в определенный момент, кажется, начинает работать синергетический эффект от новых технологий и они оказываются лучше даже для старых задач. Важно не проебывать такие моменты, чтобы быть в курсе актуальных технологий.
>>764351 >А благодаря тому, что бизнес-логика из контроллеров убрана, их очень сложно сломать, так что интеграционные тесты не особо нужны (мне). Но ведь почти все высокоуровневые тесты поведения как раз таки являются интеграционными по сути... При чём тут контроллеры, блядь?
>>765036 Чому это? Это интеграционные тесты для бедных же. Я вот один раз покрыл полностью небольшой проектик капибарой. Больше не хочется. Чуть что изменилось - переписывай. А вот важные контроллеры тестирую. Например, что итоговый json со статистикой правильно посчитан, если он считается в контроллере. Ну и так иногда из-за какой-нибудь глупой ошибки где-то появится 500 или 404. Если контроллеры покрыты, это быстро поймается.
>>765082 Не обращай внимания, это местный BHH-дебил. Он тебе не только работу девочек-тестерш на себя взять предложит, но еще и огурец в жопу вставить и ходить так по офису жопой вверх. Шоб хозяева видели, что раб покладистый.
Посоны, расскажите, какие есть лучше практики для реализации json-апи? Нужно в проекте сделать апишку, в общем-то не особо большую и сложную, но тем не менее нормальную, по правилам, с прицелом на будущее. Собственно как лучше? Знаю что есть active model serializers, а еще есть гем json-api. Второй хорош тем, что полностью соответствует стандартам и не нужно придумывать велосипеды в плане форматов и соглашений. Но слишком высокоуровневый, resource-ориентированный. А первый наоборот низкоуровневый. Короче посоветуйте, как лучше делать, что использовать, каких стандартов/форматов придерживаться.
>>765856 >json-api-resources Вот да, я про них и говорю. А не слишком ли они, что называется, овер-инжинеред? От кого-то слышал, что с этим гемом есть какая-то мозгоебля.
Анон, нужны советы. Уже больше года как вкатился в кодинг, ебашу фуллстек макакой (бек руби-рельсы очевидно, раз в этот тред пишу), поучаствовал в нескольких проектов разных размеров. Есть подозрение что я уже перерос свое текущее место работы, и могу получать намного больше денег, но т.к. в моем мухосранске вакансии на рубях появляются раз в год, то сходить на собеседование и проверить это предположение нет возможности. Реквестирую какие-нибудь годные онлайн тесты или другие варианты проверить уровень своих скиллзов, может я уже годен для фриланса/удаленной работы.
алсо половина проблем из-за того что нужных пакетов не ставят, обычно хватает следующую строчку ввести чтобы без проблем все поставить >sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev nodejs
>>766405 ruby, ror, ostgresql неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит ruby, ror, ostgresql, а потом не знает что делать с ней. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell. Работы полно, платят отлично. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.
>>766306 Не все безработные, просто у тех кто работает нет ни времени, ни желания сидеть в бессмысленных социоблядских конфах или разруливать элементарные проблемы в треде. Что значит "поддерживать профессиональные контакты"? "Привет конфа, я прошел railstutor, дайте парочку профессиональных контактов"?
>>766406 мб удалишь к хуя пакеты и поставишь из репок убунты sudo apt-get install postgresql postgresql-contrib libpq-dev потом создаешь пользователя как в мануале sudo -u postgres createuser -s pidarok228
>>766045 Эмм, может быть я плохо читал. Я короче работал с ним уже, подключал как гем в 4-х рельсах. И все что он дает это классный инструмент для сериализации объектов - определение атрибутов, методов, короче инкапсуляции логики отображения объекта в json. Но там нет ничего про формат и соглашения. Например, как должен выглядеть json, как должны выглядеть ошибки, форматы ответов при ошибках/успехе и т.п. Все это как решишь, так и будет. А между тем для json-апишек уже есть спецификация http://jsonapi.org/, где все это продумано и регламентировано. Если все ее соблюдают, то клиент-серверное взаимодействие становится универсальным один из секретов успеха рельс - соглашения. Хорошая практика в общем. Но реализовывать спецификацию самостоятельно геморно. Вот гем jsonapi-resources ее реализует. Но он там, насколько я понял, гемор с его высокоуровневостью (типа как формтастик - лепить стандартные формы заебись, но шаг влево-право и нагородишь больше, чем если бы писал все на чистом html).
>>766753 >>766754 В робототехнике, искуственном интеллекте, космической промышленности, робуст скелейбл веб приложениях и секс-игрушках. В дата саенсе, само собой, и машинном обучении. У многих Fortune 500 компаний бизнес логика написана на Haskell, ровно как и боевые дроны-беспилотники, которые недавно уладили конфликт в Сирии. Благодаря полиморфным контейнерным типам подобный Haskell-дрон может не только уничтожать террористов, но и оказывать секс-услуги в мирное время. Повсеместно Haskell используется в медицине, где программируемые нанодроиды следят за состоянием пациента и при необходимости впрыскивают ему наркотики. Иммутабельность данных и ленивые вычисления позволяют впрыскивать именно те наркотики, которые нужно, еще до того момента, как это стало необходимо.
Лучше спроси, где Haskell не применяется. Бухгалтерию на нем не ведут и гостевух не делают. А ruby сейчас каждый школьник учит, а потом не знает что с ним делать.
>>766828 В том и дело, что нет. username@usernamepc:~$ sudo -u postgres psql psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
>>766829 А тебя случайно компьютер не страдал от выключения света или чего-то такого? Локфайл сокета мог остаться в /var/tmp (в современных системах в оперативке только /tmp) и при загрузке скрипт запуска может думать что постгрес уже стартанул и ничего в итоге не запускать. Удали "/tmp/.s.PGSQL.5432" и попробуй перезапустить постгрес.
>>766867 Неее, он как раз таки лучший инструмент из реляционных СУБД, что сейчас есть. Но какая-то ебля с новыми версиями. Кластеры-хуястеры, сокеты-хуекеты, ещё что-то там, блядь, зависимости. Но сам инструмент мощный и простой в то же время.
>>766868 Ну да, как бы постгрес зашибенный проект, но тот же psql работает хуй пойми как, какие-то роли непонятные. В том же мускуле есть утилита mysql, нажимаешь энтер и получаешь консольку и оттуда уже можно соединяться с любой базой без каких либо ролей. Чужими для хищников сделано.
Суп 2ч Не знаю как тут у вас, если что не насовывайте хуев Есть работа, горит дедлайн и я горю пиздец
Сделал в дешборде админки страницу чтобы добавлять в базу заинвайченных юзеров Надо как-то добавить метод мейлера на экшен по сохранению этой формы в activeadmin а я не ебу как.
Думал еще создать кастомную вьюху для эктивадмина с формой и таблицей, но так и не раздуплился с синтаксисом, потому что для глориус пехопе разработчика ето пиздец. Превентивно спс за помощь гайс
Принимаются изменения в шапку треда в виде пулл-реквестов:
https://github.com/meoweg/2ch-pr-ruby
Как показывать код:
Быстро - https://pastebin.com
С исполнением - https://ideone.com
Требуется аккаунт GitHub - https://gist.github.com
FAQ:
1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Следующий уровень, продвинутые книги по руби:
Confident Ruby by Avdi Grimm
Practical Object-Oriented Design in Ruby
Refactoring Ruby Edition
Ruby Under a Microscope для любителей залезть под капот.
Документация по стандартным библиотекам http://ruby-doc.org/
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
И ещё раз онлайн: http://www.codewars.com/?language=ruby
Не веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
И вот еще https://rubymonk.com/ - Матц одобряет.
2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
А еще можешь полистать на гитхабе гемы с нарастающей популярностю.
https://github.com/trending?l=ruby
Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.
5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
И это тоже, легко и просто: https://rvm.io
6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
API: http://api.rubyonrails.org
Прекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails , а вот тут все тоже, но на русском http://codenamecrud.ru/
Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/book
Для дотошных читателей есть The Rails 4 Way.
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
Почитайте еще Grimm A. - Objects on Rails
Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
- http://afreshcup.com
9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]
А еще есть русская слак конфа - https://russiandevs.slack.com она общая, но есть очень активный руби канал.
Так же русская гугл группа, активная - https://groups.google.com/forum/#!forum/ror2ru
Еще вот - https://onrails.club/
11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.
Поиск гемов https://www.ruby-toolbox.com
12. Зачем нужны тесты и как их писать?
http://rusrails.ru/a-guide-to-testing-rails-applications
http://habrahabr.ru/post/163597/
Вместо этого можно прочитать классную книгу Everyday Rails Testing
13. Где можно задать глупые и не очень вопросы?
- здесь
- stackoverflow.com
- тематические slack-конфы
- а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код?
Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows?
Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка?
Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby?
Можно, но не нужно. Гем Gosu.
19. Ютуб каналы
Youtube driven development...
Вот тебе пара каналов, но никому не говори что учишься по видео.
https://www.youtube.com/channel/UCIQmhQxCvLHRr3Beku77tww/videos
https://www.youtube.com/channel/UCfWZwsP8trUy5uHJg8gcGIQ
https://www.youtube.com/channel/UCSI77lJlzlCFPLdV1RSAoYQ
https://www.youtube.com/channel/UCPIyDzf1vwWc8EQJGUX-vYw - тут на ру$$ком даже.
20. Как и где искать работу?
Легко и просто - http://rubyjobs.ru/
Не так просто - https://upwork.com/
Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.
TODO лист для ньюфагов:
И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras
Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.
Рекомендации:
1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии.
2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет)
3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch
4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object.
https://netguru.co/blog/service-objects-in-rails-will-help - о сервисах
Еще паттернов - https://robots.thoughtbot.com/back-to-basics-solid
Но самый читаемый код, как и следовало ожидать, даёт функциональное программирование. Начни отсюда:
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-ii/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-iii/
http://www.sitepoint.com/functional-programming-pure-functions/
http://www.sitepoint.com/functional-programming-ruby-value-objects/
Только не переборщи. Руби - не функциональный язык, и иногда такой код может работать медленней.
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.
Ну, а мы открываем очередной Ruby Thread.