24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
ИЗУЧЕНИЕ ЯЗЫКА Q: C чего мне начать, чтобы стать рубистом? A: Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и те же вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Q: Следующий уровень, продвинутые книги по руби: A: Confident Ruby by Avdi Grimm | Practical Object-Oriented Design in Ruby Refactoring Ruby Edition | Ruby Under a Microscope
Q: Какой gem посмотреть, чтобы понять, как писать код? A: Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping. Еще можешь полистать на гитхабе гемы с нарастающей популярностю (там еще нет тысяч строк, и тебе будет легче понять): https://github.com/trending?l=ruby
О, впервые за 3 года додумался заглянуть в руби-тред на дваче. Ну-ка расскажите, что обсасываете тут? Из насущных проблем - понял, что никогда больше не буду валидации в чейнджсеты пихать. Впизду эту борозду, просто нахуй!
>>1451678 Решаем умер руби или нет. Иногда отвечаем на ньюважные вопросы. Ждем выхода 3.0, где ВСЕ БУДЕТ. Поясняем с трудом почему стоит выбирать руби, а не го/питон/джаваскрипт/скалу/хаскель. Насмехаемся на виндошизиком, но его в последнее время что-то не видно, вместо него эликсирошизик.
>>1451683 Я, если честно, тоже затрудняюсь сказать, зачем нужен руби, кроме как довольно красивого кода и скорости разработки :/ , хотя вот уже как 3 года на нем пишу. Это как с иностранными языками - тип лежит душа - ты и учишь. Попутно пишу еще на Rust и изучаю Elixir (я не ваш эликсирошизик, я только в тред вкатился).
>>1451671 (OP) рубин в хоусеки (который появлялся только в флешбеках в манге) носил понитейл, а тут на одной пикче распущенные волосы, а на второй вообще каре почти как у шинши
>>1451697 >довольно красивого кода и скорости разработки Так этого уже очень неплохо. Не забудь прибавить к этому массивную экосистему и традицию писать хорошую документацию и покрывать все тестами.
>>1451783 Не знаю, давай не будем спорить о том, что нужно, или не нужно. Раст - тоже элегантный и очень быстрый язык. В элик посредством Rustler можно встраивать NIFы на нем. Ну и я на нем эмулятор N64 написал до стадии, когда обрабатываю инструкции проца. Дальше времени перестало хватать. К элику я уже подпривык, мне очень нравится. Возможно, когда-нибудь буду его в продакшене использовать.
>>1453526 Для поделок можно и на винде. К сожалению, большая часть широко используемых гемов (сторонних либ) на винде или не скомпилится, или скомпилится через хуй пизду. Для продакшена серьезного винда категорически противопоказана. Поиграться и изучить язык и даже Rails - можно.
>>1453526 Есть ещё JRuby. Он кроссплатформенный, естественно. Одно время его рекомендовали, как раз, для винды.
И он даже несколько быстрее нативного. Руби - очень тормозной язык, с никакущей многопоточностью. И джава версия это дело, отчасти, лечит. Гемов полно. Рельсы запускаются. Разрабатывается весьма активно.
>>1453711 Потом обратно зато переходить не захочешь. Ну вообще на винде можно кодить. Плюсы, c#, вроде даже Rust нормально на винде. Elixir точно. JavaScript - само собой. Но условно для кодинга - linux - это дефолт.
>>1453756 я абсолютно серьезен,я в как то в пару тредах спрашивал,меня обоссали...там постоянно ошибки,то несовместимость,в итоге чисто случайно нашел решение на форуме юбунты,которое НИГДЕ блять не упоминалось,а перерыл я достаточно
>>1453746 Я рил не понимаю, что у тебя было не так. rbenv ставится быстро, руби через него - быстро. Рельса - тоже. Там есть некоторые проблемы с нашим проектом на работе (какие-то гемы не ставятся без зависимостей) - в ошибках указано, что не скомпилилось. Гуглится минуту, какой пакет поставить - ставится и все.
>>1453799 Есть opal - компилятор ruby в js, но особой популярность, как и другие компиляторы в js, кроме ts, он не пользуется, хотя работает вроде как стабильно. В Японии достаточно популярен mruby для эмбедед. Есть RubyMotion для мобилок, для десктопа тоже есть всякие shoes и биндинги к qt/gtk, но они совсем дохлые как и нативные приложения для десктопа. Но 90+% это бекенд, конечно.
>>1453943 Атом на десктопе, vscode на ноуте. Хочу давно полностью на код перекатиться, так как он заметно быстрее, но какой же там уебищный поиск, только из-за него на атоме сижу. Issue об его улучшение с сотнями комментов висит на гитхабе уже пару лет, но воз и ныне там.
>>1453997 Вспомнили бы. Я, как минимум. Я тоже в него вкатываюсь, и пока мне все нравится, как уже выше говорил. Годнота же. Но я и в Раст вкатываюсь, и ML на питоне пишу иногда, так что я - не показатель, наверное. Мне просто все нравится.
>>1454037 Я там issue оставлял в соларграф и куда-то еще. GotoDefinition работает в моем проекте рабочем 12 секунд. Сука это пиздец. Sublime - моментально все. В итоге перешел на вим. Потому что могу.
>>1454312 Ну изначально мне нужна была возможность копировать в OS буфер обмена. У штатного установленного вима какой-то вафел решил убрать этот флаг, и надо было бы вим пересобирать из исходников с флагом. Решил, что проще накатить neoVim и прокинуть алиас на вим. Все плагины подхватились, как влитые. Вдобавок получил более плавный скроллинг, вообще работа в виме визуально стала более плавной. Еще у него там API для многих языков, чтоб плагины писать, но я не пишу плагины для вима, так что для меня это осталось за кадром.
А у Ruby девелоперов есть тесная связь с другим каким-либо языком? Я имею в виду что вон условный рубист, он обязательно хорошо знает еще что-то, или нет такого?
>>1454861 When someone shared this charts I like it. Do u now youself? u're daun. Why? cause Java bit all framework stuff. But nobody like java, because it's awful and painfull code.
Проще? Не факт. И уж тем более потом не проще поддерживать лапшу на PHP. Если тебе нужно что-то совсем простенькое, то какого-нибудь Вордпресса хватит. А если расчехлять Ларавель, то смысла нет, проще и быстрее Рельсы как раз-таки.
>>1455445 Не на всех, иногда проскакивают и джуновские вакансии. А вообще это классика, делаешь пет-проект, пиздишь про полгода опыта и вкатываешься. Я сам вкатился в IT через Руби Хоть сейчас и JS стек, если желание есть и шаришь, то вкатишься.
>>1455556 >что-то совсем простенькое, то какого-нибудь речь была малые и средние проэкты,а не простенькое и на пхп можно сразу писать.а не пройти путь ЯП-фреймворк >А если расчехлять Ларавель, то смысла нет, проще и быстрее Рельсы как раз-таки. чем ларка не нравиться?там тоже есть библиотеки для множества вещей
>>1455592 Очевидно затем что Руби самый кайфовый язык с динамической типизацией, приятный синтаксис, большая экосистема, топовый МВС фреймворка для веба.
Любезнейшие, а есть какой-нибудь гид по бэкенду на Ruby? Типа что нужно изучать шаг за шагом, какие технологии помимо рельсов и все в таком духе. Я понимаю, что есть в шапке, я немного об ином. Если кому-нибудь будет не трудно раскидать в паре предложениях, то буду очень признателен.
>>1455663 Рельсов хватит для всего. Если у Shopify 80к запросов в секунду и они хорошо себя чувствуют (5 рельсы), то думаю маньке с Двачей и его "видеостримингом" хватит с головой.
>>1455610 Слишком абстрактный вопрос, используемые технологии зависят от проекта. Есть очень неплохой сайт с гемами сгруппированными по решаемой задаче - https://www.ruby-toolbox.com/categories, хорошо бы его, кстати, при следующем перекате в шапку добавить. Но я попытаюсь написать то что приходит в голову и то что как мне кажется стоит попробовать заранее, а не изучать по ходу дела. Из того что будет нужно почти на любой работе: sql (обычно postgresql, реже другие БД), redis, sidekiq, rspec если на работе нету тестов, то беги при первой же возможности. Реже, но тоже встречается достаточно часто: rabbitmq, actioncable/anycable, elastic, docker. Часто могут пригодиться базовые умения администрирования линукса: настроить nginx, бд, в целом перейти от чистой машины к машине обрабатывающей продакшен запросы (скорее всего тебе этого делать не придется, то все равно неплохо бы понимать что происходит на продакшене), если ты еще и все это сможешь автоматизировать с помощью какого-нибудь ansible и docker, то вообще можешь переквалифицироваться в девопсы когда руби умерет. Отдельно еще раз упомяну владение БД, тут и банальное понимание когда надо добавить какие-то индексы, и умение подкрутить настройки, настроить статистики, и разобрать вывод explain, и способность прочитать/написать/оптимизировать sql-запрос в несколько десятков-сотен строчек - все это охуенно ценные скиллы, но почему-то достаточно редко встречающийся у рубистов (и не только) скилл.
>>1455732 Да. На нем все еще куча как новых стартапов, так и активно развивающихся проектов. Просто он непопулярен в СНГ, но посмотри вакансии по миру.
То что ты, шизик, высрал hello,dvach и начитался статеек про Ruby is dead ничего не значит.
Популярность может падать вниз потому что популярность MVC фреймворков в целом падает, т.к. сейчас все дрочат на микросервисы и SPA. Но это не значит что Рельсы перестали быть отличным выбором для веб-разработки.
>>1455610 >Любезнейшие, а есть какой-нибудь гид по бэкенду на Ruby? Типа что нужно изучать шаг за шагом, какие технологии помимо рельсов и все в таком духе.
>>1455814 >Те части сайта, которые должны работать предсказуемо и надежно, пишутся на проверенных технологиях и языках. CMS написана на Ruby on Rails — этому фреймворку уже больше десяти лет, и непонятных ситуаций с ним возникает куда меньше, чем с более новыми разработками. >Meduza.io
>>1456351 Просили оплачиваемые тестовые задания выполнить, судя по истории чата в слаке не многие смогли хотя бы через первое пробиться. >>1456355 Да, это так. Но работу не искал, просто книжки читал, просто услышал что на апворке коннекты убирают, решил попробовать.
>>1456361 Не знаю, может и есть. Конкретно я из мухосрани и к перерезду не готов был, поэтому вариант с поиском работы в ДСах не пробовал. Может прокнет, как грицца стучитесь и вам откроют.
>>1456788 Ну некоторые вещи просто удобнее и привычнее. Взять тот же ROM - сломаны алиасы as: :something. Например: belongs_to :base_user_game, as: :user_game
В аггрегирующих функциях, если прокинуть этот алиас, не будет работать ни aggregate(:base_user_game), ни aggregate(:user_game). И это баг, который к мажорному релизу, вроде как, поправили (там другой ROM используется). Аггрегаты нужны потому, что ханами по дефолту не умеет в User.first.parents.first.car.seats.last . Ему надо вручную аггрегировать такие вещи под каждый запрос через репозиторий. Я слышал много хвалебных вещей в сторону разделения Entity и Repository, касаемо того, что бизнеслогика - в энтити, запросы к БД - в репозитории. Таким образом можно будет не переписывать бизнес-логику приложения, если захотим сменить БД с релятивной, например, на монго. И в таком случае ентити-репозиторий подход может помочь меньше ебаться. Однако уже на стадии разработки ебаться приходится гораздо больше, нежели чем с АктивРекорд подходом. Плюс еще фабрики с этим работают очень плохо, если хочешь сделать кольцевые зависимости. Условно, у тебя есть цепочка User -> has_many Parent -> has_many Car -> has_many Seat. И вот нихуя не получится сфабриковать пользователя, к нему двух родителей, у каждого из которых будет по машине с 4 сиденьями. Получится это сделать в самих тестах вручную. Автоматически не выйдет ни с одним знакомым мне гемом-фабрикатором. Самому только если написать :/
Хочу обсудить тему кэширования, понятно, что активрекорд тормозной и по возможности нужно его избегать, например, необязательно дергать базу данных если записи не изменились с последнего запроса. Сейчас я набросал такую схему - модель Батя имеет отношение has_many к Пиво, у бати есть поле - початое_пиво_cache_key, есть методы - пить_пиво, выбросить_пиво. У модели Пиво висит коллбэк на after_commit - Батя#выбросить_пиво. Батя#пить_пиво достает по ключу Пиво, если по ключу ничего нет - лезем в базу данных за пивом и кидаем его в кэш. Если Пиво каким-то образом изменилось, оно сообщит Бате коллбэком #выбросить_пиво. Вроде бы всё нормально, Батя не лезет в базу при попытке попить пива, если с пивом что-то случается - Батя берет новое.
Есть ли какие-то подводные камни у такого подхода? Нормально вешать такое поведение(вызов метода из другой модели) на коллбэк after_commit? Используете ли вы что-то подобное у себя?
Но я рекомендую по возможности избегать коллбеков и лучше делать это сервисом отдельным, когда ты пытаешься поменять сущность Пиво. Таким образом ты всегда будешь понимать, что происходит. UpdateBeerService.new(beer, params) - и там транзакционно обновлять и кэш у БАТИ. Это не всегда элегантно, но всегда понятно, что происходит. Но традиционный путь - как ты написал, через after_commit. Почитай статью.
>>1456572 Поверь мне, из начавших книгу осилило ее не больше пары процентов вкатывальщиков. Она простая в основе, но требует хорошего technical sophistication.
Очевидно, дальше делаешь свой пет-проект попутно гугля все проблемы и куря https://guides.rubyonrails.org/ Из книг дальше можно читать Agile Web Development with Rails или Rails 5 Way.
>>1457333 Rails 5 Way посолидней будет по моему мнению. Она более практичная что ли, да и кроме самых рельс еще и освещяет экосистему и популярные гемы.
railstutorial надо закончить чтобы уловить полностью процесс разработки от 0 до прода и увидеть все части фреймворка при этом не закапываясь на месяцы + вообще понять тебе заходит или нет.
>>1457411 Зависит от размера кодовой базы. Если допустим там моделей не больше 30 и ты не юзал ActionMailer (он теперь ActionMailbox и по-другому работает), то можно и апгрейднуться. Там по сути кардинально мало что поменялось.
mysql, как вытащить значения из decimal(10,2) Например FLOOR(column_name) просто втаскивает целое число, а после запятое не забирает, а нужно забрать рубишный флоат.
>>1458014 Это клиента для подключения к БД на рубийной стороне зависит. Во что он распарсит значение полученное из базы, то ты и получишь. Что сейчас возвращает простой запрос значения к базе без всяких FLOOR?
>>1458294 >Этот кретин просто документацию об ошибке открыл. А что я еще должен открыть, если там 2\3 так же выглядят. Например, я захотел почитать как ловить ошибку - хуй мне.
Погуглил в общем пространстве - ни одного поста про то как юзать опен УРЛ. Все только u shouldn't do this be aware, и в прочем духе.
Все больше убеждаюсь, что в скриптинг руби пиздец какой хуевый.
>>1458310 >А что я еще должен открыть, если там 2\3 так же выглядят Документацию по OpenURI, очевидно же. В поиске по "openuri" ссылку которую я скинул первой выдает.
>Например, я захотел почитать как ловить ошибку - хуй мне. Так же как и любую другую ошибку с помощью rescue. С чего бы документация какой-то конкретной ошибки будет содержать описание общей функциональности языка?
>Погуглил в общем пространстве - ни одного поста про то как юзать опен УРЛ Весь модуль это одна сранная функция, тебе статья нужна по каждой функции в языке что ли? Хочешь чего-то более гибкого юзай Net::HTTP или HTTParty тот же, по ним хватает статей. Кстати, в той ссылку, что я скинул есть и ссылка и на более подробное описание аргументов https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI/OpenRead.html#method-i-open
Ищем Эликсиро-господ, а также желающих вступить в наши редкие ряды. Фронт писать не нужно, а немного Ruby и/или Java было бы полезно. Можно не знать Elixir, главное — уметь программировать.
Вилка: 150-180к₽. Думаю, можно попробовать больше, если ты ну прям умный.
Команда порядка 10 человек. Над продуктом работаем втроем. Трудимся в ламповом офисе в 5 минутах от Электрозаводской, где есть кофе и все такое.
>>1458666 Здесь нет работы на такое количество стаффа и такой стак. 3-4 человека максимум и полвоина приведенного тобой стака - это параша, которую кидают тебе на уши ненужные в команде люди.
>>1459091 Инспект это просто метод класса Object, то есть любой класс в Руби его наследует.
Инспект представляет объект в читаемой для человека форме. Он выводит имя класса, id объекта и список инстанс переменных и их значения (вызывая на них в свою очередь inspect).
В идеале созданные классы должны переопределять метод inspect и удобно выводить инфу про объект в виде строки.
>>1459236 А ты думаешь здесь все опытные рубисты сидят? В вакансии серьезный стак, я наперед знаю что не пройду плюс как раз офер получил, так что уже не ищу работку
Руби - очень динамический язык. Наверное, самый динамический из всех. Потому и тормозит. И в смысле типизации, и в смысле выполнения.
Например, определение класса в руби именно _выполняется_. Можно просто включить произвольный сторонний код в это определение (не унаследовать) и он будет выполняться. И может менять код класса налету.
Руби - очень гибкий язык. Это и достоинство и недостаток. На нём очень хорошо писать DSL (мини-языки). Например, рельсы - это DSL, чуть более, чем полностью.
Джава - это другое. Это компилируемый язык со статической типизацией. И виртуальная машина для выполнения скомпилированного байт-кода.
На джаве можно написать руби (jruby.org). И он будет в чём-то даже лучше оригинального. А вот на руби написать джаву - нельзя.
>>1460320 >Джава, питон, джаваскрипт, руби? >А кто пятый? Пыха, что-ли? Это местный шизик. Детектится по мелкобуквенности, отсутствию пробелов после знаков препинания (или отсутствию этих знаков в принципе) и не способности высрать больше одного, изредка двух, предложений.
>Какого рода приложения на них делают сейчас в России? Зайди на hh или мой круг и посмотри вакансии. В ДС из того, что сходу вспомнил: мейлач, рамблер, рокетбанк, альфапоток, инстамарт, ржд, учи. Еще дофига не особо публично известных мест есть.
>>1460468 >mint@mint:~$ gem install rails Fetching: concurrent-ruby-1.1.5.gem (100%) ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /var/lib/gems/2.5.0 directory.
>>1460495 сначала ставишь менеджер версий - rvm или rbenv на менеджер версий ставишь нужную версию ruby потом только ставишь гемы всё это будет лежать в каталоге текущего пользователя и не потребует особых прав
конкретно твой случай - попытка поставить гем в системную директорию, т.к. ruby установлен из репозитария дистриба, для доступа нужны админские права, то есть перед gem install пропиши sudo
current directory: /var/lib/gems/2.5.0/gems/nokogiri-1.10.4/ext/nokogiri /usr/bin/ruby2.5 -r ./siteconf20190825-5161-1ve8zg7.rb extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /var/lib/gems/2.5.0/gems/nokogiri-1.10.4 for inspection. Results logged to /var/lib/gems/2.5.0/extensions/x86-linux/2.5.0/nokogiri-1.10.4/gem_make.out
>>1460527 ты просто не врубаешься что значат эти команды и что тебе система на них выдает, попробуй читать, что там написано, попутно забивая в гугл все непонятные слова.
Анон, есть один проект, в нем куча CSS и куча JS. При каждом изменении чего-то в CSS, страница грузится секунд по 20 (говорю же, проект огромный). Все советы по конфигу ассет пайплайн не помогают, так как на проекте и так все те конфиги выставлены так же, как в советах. Вопрос: поможет ли перекат проекта на вебпакер, если буду реилс сервер запускать с параллельно запущенным вебпак дев сервером? С какими подводными сталкивались лично вы сами? Стоит ли вообще? Если не стоит, то какие еще могут быть пути? Может кто-то перекатывал по той же причине
>>1460863 В рельсы, конечно, даже в ДС эликсиро-работы почти нету, да и в той, что есть обычно сразу опыта с эликсиром/руби или хотя бы просто на бекенде требуют. А если эликсир все-таки взлетит, то перекатиться будет несложно.
>>1460865 Да, скорее всего поможет, там же есть полноценный инкрементальный билд только для @import в sass он не работает азаза как минимум, да ассет пайплайн всегда был тормозным говном. Я перекатывал довольно крупный проект год назад на вебпак (без всяких вебпакеров), никаких проблем не было, но у меня уже было очень много опыта настройки вебпака. Так-то с вебпаком, пока ньюфаг, можно хорошо наебаться, не зря его за сложность хуесосят. Если не хочешь тратить время на вебпак, то можешь для начала попробовать с гема sass перекатиться на sassc, может быть этого будет и достаточно.
>>1460884 Спасибо за развернутый ответ. Блин, теперь не знаю даже. Задача интересная и в целом важная, тем более ты пишешь, что поможет. Но теперь стрёмно, раз говоришь, что можно наебаться. У нас просто овер30 самых разных JS модулей, не навернуть бы это всё к хуям
>>1461114 Языки разные, но по факту очень похожие и фреймворки тоже похожие. Из Руби перекатываются многие в Эликсир, платина, поэтому вопрос был нормальный на самом деле.
>>1461262 Я бы не сказал, что фреймворки очень похожие, все MVC фреймворки в целом похожи, просто тут создается иллюзия большей похожести из-за схожести синтаксисов языков. А уж ecto и activerecord вообще не похожи между собой.
>>1461262 Синтаксически похожи. Парадигмы разные. Рельсовик готов писать не говнокод на эликсири тогда, когда в состоянии написать что-то адекватное с dry-rb.
Мне нужно приложения на Rails + React, я могу начвать пилить обычное приложение vanilla js, а потом уже перепилить на React, или от меня уже на самых первых этапах что-то специфическое потребуется?
>>1461442 Требуется. На реакте у тебя сразу будет верстка в виде компонентов, сразу привязанная к ивентам и выводу данных. А Rails используется просто как API. Нет смысла начинать по-другому, больше времени потеряешь.
>>1461506 У реакта просто кривая обучения выше, но как только ты освоишься, сразу поймешь из-за чего хайп весь. Он удобнее, выразительней и с лучшей экосистемой, чем Vue.
Хотя безусловно, Vue тоже хороший фреймворк, но я его вижу смысл учить только если Ларавель на бекенде, там они с Vue интегрируются плотно и зачастую идут в паре в вакансиях.
>>1461632 >У реакта просто кривая обучения выше, но как только ты освоишься, сразу поймешь из-за чего хайп весь. Он удобнее, выразительней и с лучшей экосистемой, чем Vue. Вкусовщина. Я больше года и с тем и с тем работал и vue мне нравится намного больше. В реакте слишком много бойлерплейта, все эти ехал HoC через HoC; роутер который публичное api меняет постоянно хотя сейчас успокоились; редукс это вообще апофеоз бойлерплета знаю, что уже писал, но это пиздец; хуки, как попытка хоть немного решить проблему бойлерплейта, но которые при этом добавили своих проблем, вроде того, что их нельзя даже банально внутри if использовать, из-за того, что их поведение зависит от порядка вызова; vue-cli на голову выше по удобству create-react-app опять же. Во vue при этом для меня есть только два недостатка. Это то, что typescript интегрировать с ним не очень просто, но в 3 версии это пофиксят, и то, что они никак с defineProperty на Proxy не переедут и приходится иногда использовать Vue.set/delete.
>>1463708 Да, там же даже ссылки на статьи есть по поводу увеличения производительности.
Кроме того, не обязательно юзать подобную штуку. Реакту все равно на чем написан бекенд, ты просто получаешь JSON'ы. На беке ты можешь юзать что угодно, в том числе Rails в API режиме.
>>1463821 Всё является объектом Очень гибкий сам язык Система итераторов Блоки и конструкции Концепция смешанных модулей Хороший API для вызова Ruby из C Независимые от операционной системы потоки Ясность, простота и логичность
>>1463870 Все является high order function Очень гибкий и scalable language Система паттерн матчинга Структуры, модули и дифы Концепция акторов Хороший API для вызова эликсира из эрланга Независимые от операционной системы акторы, которых можно >1kk плодить Ясность и функциональность
Большая и разнообразная экосистема гемов Удобное и сильное метапрограммирование (сюда же возможность делать крутые DSL) Хорош как для быстрых скриптов, так и для больших проектов Rails (один из лучших веб-фреймворков)
Большая и разнообразная экосистема hex Удобное и сильное метапрограммирование + продакшен функциональщина Хорош для больших проектов Феникс - второй из лучших веб фреймов
А теперь, я тебя опровергну: Скрипты никто не пишет, а если и пишут - то только рубисты И DSL почти никто не делает.
>>1463920 Я считаю его самым лучшим, но у всех свои мнения. По факту язык в 90% случаев не имеет значения. Имеют значени программисты, архитектура и умение делать продукт.
- У Руби специфичная ООП модель (все является объектом, нет примитивов) - При этом есть элементы функционального программирования, которые постоянно используюся (блоки) - Специфичный Ruby-way (в Руби есть цикл for, но мы всегда используем перебор методом each) - Очень высокая гибкость языка, метапрограммирование, duck typing
Ну и изучая руби ты с 90% вероятностью хочешь в Рельсы, а это отдельный разговор.
Нахуй бы она всралась. Чтобы толпы скама прискакали засирать все своими библиотеками из говна собранными. Я когда учил жиес заебался просматривать код библиотек. Какой-то пентюх услышал что Вью КРУТА, а Жиквери немодна и побежал в нем кодить, но из-за тупости или лени вхуячивает в свою библиатеку джиквери блять. А толпа таких же слепых уебанов еще популярность ей накручивают. Потом заебываешься смотреть исходники библиотек, чтобы очередной МОДНА-алень не наподключал туда все что под руку попалось. Боль блять, какая боль от этих пидарасов с их хайпом и непролазной тупостью. Надеюсь рельсы больше не станут популярными, чтобы этого говна еще и в гемах не лицезреть.
>>1465095 Двачую адевата. В какой-то мере устоявшаяся и крепкая экосистема это плюс для Руби и Рельс. А не так что ты отправляешь код в продакшн, а там оказывается фишинговые npm пакеты.
>>1453526 Я даже рельсы запустил, но с такими плясками что лучше бы я этого не делал. Сразу скажу:
1. При попытке открыть страницу (даже "You're on rails!") выдаёт ошибку sqlite3, надо поменять в Gemfile строчку gem 'sqlite3' на gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"
2. "You're on rails!" отображаются, а свои страницы — хуй? Добавить в Gemfile строчку gem 'coffee-script-source', '1.8.0' Лучше всё-таки не трогать это говно под виндой, имхо
Есть ли тут новички, которые хотели бы заняться каким-нибудь простым, но нужным проектом? Знания подтянуть, да и ради интереса? На гите активность поднять.
Rails 6.0 Может быть в стеке с ReactJs?
Обсудим идею, реализацию и прочее.
Нужно же как-то развиваться. В одиночку руки не доходят.
>>1455556 Лол как раз таки наоборот. Руби это про скорость разработки (скорость = стоимость). На руби можно быстро сделать апи, накатить react native и пульнуть апку в апстор для проверки гипотезы стартапа и все за время, которое твой коллега на пхп симфони настроил бы окружение и роутинг и подключил базу данных, лол. Утрирую конечно но суть ты уловил.
А вот для жирных хайлоадных энтерпрайзов рубец может оказаться мало и тут скорость разработки уже может начинать проседать когда юзер кейсы и бизнес логика будет выходит за пределы твоих 25 любимых джемов
Пытаюсь перенести ассеты на вебпак, и что-то не догоняю что делать с js файлами для въюх из assets/javascript, куда кидать эти скрипты, на что менять javascript_include_tag? Кидать их в один пак? Там инициализации таблиц и чартов, id таблиц пересекаются на разных страницах, они же не будут работать из одного пака.
доброго вечера.я залетный и жс треда. вопрос-разумно ли будет использовать ралис для СПА приложения на 5 страниц?как у вас с работой с БД?авторизацией?
>>1469394 опытным путем выяснил, что проблема в точке между datatables и net-bs, ни один модуль с точкой в имени папки не загружается, даже не смог ничего нагуглить на эту тему.
>>1469029 Все хорошо. Бд подключаются, хранят данные и даже разрешают их иногда доставать и обновлять. Авторизация также присутствует, что безусловно плюс.
Как правильно обновить рельсы с 5.2 на 6? Меняю гем gem 'rails', '6.0.0' Делаю bundle update В config/application.rb прописал config.load_defaults 6.0 Поставил там же config.autoloader = :classic, так как на Zeitwerk все ломается с моими константами.
Что дальше делать? Сервер запускается, отображаются 6 рельсы. Но разве это все?
>>1453526 На последних версиях 10-ки говорят докер более менее работает. Ну или просто VirtualBox c расшаренной папкой.
>>1453199 3-е издание Rails tutorial от Хартла есть в русском варианте на рутрекере. Но на уровне чтения технической литературы английский все-таки выучи.
>>1472400 Вакансии постоянно выскакивают. У нас в Таллине, например рубистов не хватает.
Для нашего клиента - онлайн платформы, ориентированной на ставки на спорт, ищем Ruby+Vue разработчика, который присоединится к команде в Таллине. Вам будет предоставлена большая свобода в выборе инструментов и подходов для создания инновационных продуктов. Кроме того, вы будете работать в паре с опытными наставниками.
Текущий стек: Ruby on Rails, Vue, React.
Требования: опыт работы с Ruby (3+ года), Vue или React, fluent in English, хорошие коммуникативные навыки.
Помимо шанса стать частью амбициозной команды, компания предоставляет возможность профессионально расти, помогает с релокацией, а также сейчас разрабатывает пакет дополнительных бонусов для сотрудников компании, который станет доступен в скором времени.
Зарплата: 3 250 - 4 500 EUR gross. Работа в офисе, Эстония, г. Таллин. Релокационный пакет.
>>1472400 Нихуя, у меня, например, готовятся к запуску 2 проекта на рельсах: один - интернет-магазин для крупной региональной компании, в которой я ранее работал манагером, второй - стартап для партнера со своим юрлицом в штатах и счетом на кипре. На рельсах что-то вроде цмс + апи для аппа на яблофоны. Оба планируются к запуску в октябре. Нет работы? Создай ее себе сам.
>>1473455 Посмотри логи через journalctl - journalctl -b -u my-app-web-1.service.service. Сходу предположу, что в зависимостях не прописан, например, постгрес, приложение пытается стартануть раньше постгреса и падает.
Тред не читал, нихуя не читал, только немного погуглил. Есть одна браузерная игра, которую я хочу автоматизировать простенький бот для автоматизации некоторых рутинных процессов, суть проблемы в авторизации - как лучше ее реализовать, какие гемы юзать, в какую сторону копать? Заранее благодарю
Подскажите плиз, как сделать миграцию с типом enum? Нужны 3 варианта енама. Только учу руби, не обзывайтесь
class CreatePomoika < ActiveRecord::Migration[6.0] def change create_table :pomoika do |t| t.timestamps, null: false t.string :name, null: false t.enum? ..... end end end
>>1478437 разобрался, foreman по какой-то причине генерирует app.target файл с пустой секцией [Unit] и без [Install], соответственно, никаких действий не предпринимает. Непонятно пока почему он это делает, остальные юниты в порядке.
Срочно! На проде перестала обновляться schema.rb при миграции. Новая таблица в базе появилась, но схема осталась прежней. В чем проблема? Прод на Heroku.
Привет, миряне! Столкнулся с явными проблемами понимания ООП в руби, может кто подсказать хороший материал для разъяснения по типу закаса для JS. Спасибо!
>>1483503 Резюме у меня нет, как его вообще писать? Может советы какие-то дадите? О чем в нем писать, о чем не писать? Ни разу не был на классическом собеседовании, устраивался по приглашению, софтскилл нулевой, соответственно.
>>1484055 >28/09/19 Суб 21:31:43 >рубисты на месте? Все рубисты в это время были на АФТЕПАТИ RUBY RUSSIA в Москве в Paulaner Brauhaus: пили пиво и фотографировались с Юкихиро Мацумото создатель языка программирования Ruby
>>1484738 Хуита какая-то, прямо сейчас обычным помидором в ДС получаю больше, чем самая правая точка на графике - 300к нет не в секунду. Насколько мне известно другие помидоры в конторе тоже все от 250к получают.
>>1485911 В целом в ДС вполне реально, за остальную часть страны не скажу. Но заметно тяжелее, чем сеньором или хотя бы мидлом, в мою контору, например, мы джунов не набираем.
Что мы имеем в итоге к 2020 году? Какие преимущества и перспективы есть у руби по сравнению с другими языками?
Только пожалуйста, не надо рассказывать про мифическую зрелость экосистемы и относительно большое комьюнити. Все топовые гемы мейнтенят два с половиной человека.
Хуй знает, котик. Я вот хорошо знаю все возможности руби. Когда пишу код, он пишется просто чудесно, радует глаз. Лаконичность и элегантность. Пишу и на рельсах, но последнее время по большей части API на Grape. Мы не пишем безумные простыни кода в моделях и контроллерах, в любом проекте заводится слой сервисов\операций\компонентов в духе domain driven design. Мы пишем свои DSL, если это уместно. Код покрывается тестами на rspec. Это хорошие кодбазы, работать с которыми можно с комфортом даже в проектах возрастом в несколько лет. Мне повезло, у меня отличные напарники, которые в целом очень компетентны в IT, и им так же нравится писать руби-код, как и мне.
Когда я пишу на джаваскрипте реактопарашу, чувствую себя, будто мне отрезали одну руку и одновременно с этим заставили сожрать земли.
На питоне код пишется чуть получше, чем на жс, но часто далеко не так элегантно, как на руби. Динамичности тоже не хватает.
Ещё в прошлом я довольно много кода пописал на пхп, нынче от взгляда на пхп начинают кровоточить глаза.
Уверен, что в ближайшие 5-10-20 лет руби никуда не денется. Да, это не мейнстрим. Но на мой век работы хватит.
>>1489144 >скорость которого нивелируется монстром под именем RoR это специфика ORM - ActiveRecord, сам паттерн такой, подразумевает удобство в ущерб производительности, но даже на нем можно сделать всё быстро, если разобраться с конструктором запросов.
про rubyschool кто что может сказать? Как курсы для полного ньюфага, который до этого программирование видел только в кино и играх. Может тут кто-то смотрел их?
>>1491243 Открыл первое занятие, увидел шиндовс, закрыл первое занятие.
Лушче пройди курс на codecademy, затем учи новые методы решая задачки на codewars. Дальше осиливаешь QA для руби-джунов. Для начала прочти эти основы https://github.com/undr/ruby-trivia
>>1491529 Он там параллельно и на шинде учит и на маке. Просто, как я понял, сначала эти записи были платные, и группа учеников в большинстве своём была на шинде.
>>1491644 Все равно лучше не стоит тратить время на видеокурсы. С видосами ты поймешь все быстрее, но не сможешь применить эти знания для другой задачи. Ты будешь знать только как решить именно ту задачу, которая была в видеокурсе.
Другое дело понять основу и идти на какой-нибудь codewars. Сначала будет трудно что-либо решить, так ты станешь искать методы/алгоритмы в документациях рубей и знания будут глубже.
>>1491684 Руби, а особенно рельсы или другие фреймворки, пошлют тебя в пизду при написании более-менее нормального проекта на шинде. Да, можно все чинить, заняться пердолингом, но зачем? Самый нормальный вариант с виндой - это установить wsl.
>>1491736 Послушай знающего и решай задачи на руби, так у тебя появится мышление именно программное, осиль убунту, шинда это ни разу не про разработку на руби
>>1491684 >>1491736 > Все равно лучше не стоит тратить время на видеокурсы. > С видосами ты поймешь все быстрее, но не сможешь применить эти знания для другой задачи. Ты будешь знать только как решить именно ту задачу, которая была в видеокурсе.
> Другое дело понять основу и идти на какой-нибудь codewars. Сначала будет трудно что-либо решить, так ты станешь искать методы/алгоритмы в документациях рубей и знания будут глубже.
> Руби, а особенно рельсы или другие фреймворки, пошлют тебя в пизду при написании более-менее нормального проекта на шинде. > Да, можно все чинить, заняться пердолингом, но зачем? > Самый нормальный вариант с виндой - это установить wsl.
>>1491894 Сперва стоит выяснить, понятно ли тебе отличие класса от объекта. Если понял в чем их отличие, то метод класса вызывается на всём классе, а метод объекта только на отдельно взятом объекте класса
>>1494936 Гляну на днях и черкану что думаю по возможности! Звучит интересно, спасибо за статейку. Однако в целом ActionCable это просто обертка на руби для вебсокетов, так что не очень понятно как они смогли седлать обертку другого вида фундатментально быстрее без изменения языка самой обертки!
Они перенесли работу с сокетами в отдельный сервис (+ другой сервис), написанный на Go, таким образом, что рельсовое приложение продолжает быть stateless.
Вот говорят что руби умирает но самом деле в последний год стал видеть на нем новые проекты, ищут людей на работку найти не могут ЗП тоже в целом подросли. Теперь внимание вопрос, переломился ли тред с потерей популярности и просто слились хайпующие? Или просто те кто писали на рельсах уходят от них?
>>1496961 Удвою на счет зарплаты и работы. Сбер что-то там запускает и их херки прямо завалили меня приглашениями, да и в целом предложений больше, чем в прошлом году. Зарплатки то же прямо заметно выросли, ~300к в ДС стало сеньору найти достаточно просто.
>>1451671 (OP) Ктонибудь умеет в ассоциацию пихать параметр? Судя по интернетам ассоциации должны быть инстансонезависимы и единственная возможность - extends module, но что-то сделать это вместе с другими штуками и скопами у меня не получилось
>>1497462 Конкретный пример Есть Comment, has_many :child_comment class Coment, каждый коммент может иметь лайк от юзера в CommentInteraction. ДЛя Comment есть scope :with_user_like, ->(user_id) { joins('INNER JOIN comments_interaction AS ci ON ci.comment_id = comments.id AND ci.user_id = #{user_id}' #Ну на самом деле placeholder но вы поняли) } ТАк вот я хочу подгрузить комментарии к комментарию с помощь ::Comment.includes(:child_comments) так, чтобы в child_comments был посчитан лайк юзера
Насколько глубоко ты хочешь считать лайки? Что если есть коммент к комменту к комменту к комменту и зайлайкан самый нижний комментарий. Это должно считаться?
>>1497484 Да, ко всем вложенным. Структура базы такова, что каждый вложенный коммент имеет ссылку на корень дерева - parent_id и именно по нему дергаются child_comments (foreign_key: parent_id). Опустим ситуацию с комментами других уровней, т.е. хотим взять коллекцию комментов верхнего уровня, к ним предзагрузить вложенные комментарии (includes) так, чтобы лайки были посчитаны. Там еще считаются количество лайков, это тоже делается с помощью скоупа и делается нормально, ТК никакой переменной не нужно пробрасывать. А вот как посчитать относительно юзера непонятно
>>1497498 Да ты прав, но это не вариант, к сожалению. Не дадут сейчас делать такой рефакторинг. Из-за блядской структуры даже пагинации полноценной нет. Лайки в итоге пришлось взять отдельно все юзерские и проверить по собранной коллекции includes? и ручками ставить статус.
>>1497505 С критерием все ок, проблема вот в чем: скоуп, я не дописал, принимае параметр (user_id). И этот скоуп применяется только к самим элементам коллекции, но не к их ассоциациями (child_comments). Чтобы применялся скоуп к ассоциации надо в has_many указать -> { skope_name }, в частности -> { with_user_like }. Однако сделать has_many ->(user_id) { with_user_like(user_id) } не выходит
# Получение всех вложенных комментариев комментария с посчитанными количеством лайков и пролайкал ли юхер.
SELECT c., COUNT() AS likes_count, (CASE WHEN ci2.id NOT NULL THEN TRUE ELSE FALSE) as user_like FROM comments AS c LEFT JOIN comments_interaction AS ci ON ci.comment_id = c.id LEFT JOIN comments_interaction AS ci2 ON ci2.comment_id = c.id AND ci.user_id = :user_id GROUP BY c.id WHERE c.parent_id = :parent_id.
:parent_id, :user_id - параметры. parent_id может быть несколько, тогда будет IN (), вместо = но суть надеюсь понятна. PS возможно ещё GROUP BY ci2.id, с телефона пишу уже в кровати, не могу посмотреть
>>1497615 > Ты 2 раза сджойнил одну и ту же таблицу по одинаковым условиям. Это ошибка? По разным условиям. Первое - посчитать все лайки всех пользователей (likes_count), второе - поставил ли лайк конкретный пользователь). > Правильно ли я понимаю Да, за исключением того, что подсчёт общего количества лайков ВСЕХ пользователей. > COUNT() AS likes_count... LEFT JOIN comments_interaction AS ci ON ci.comment_id = c.id... GROUP BY c.id Посчитай сумму лайков всех пользователей > (CASE WHEN ci2.id NOT NULL THEN TRUE ELSE FALSE) as user_like... LEFT JOIN comments_interaction AS ci2 ON ci2.comment_id = c.id AND ci.user_id = :user_id Флаг поставил ли лайк конкретный юзер
>>1497749 Давай поясню. На самом деле я беру комментарии от ПОСТА и вместе с ними все ВЛОЖЕННЫЕ комментарии и запрос выглядит так > @result ||= ::Api::Comment .with_likes_count .with_person .with_post_mobile .where(post_id: @id, reply_to: nil) .ordered .includes(:child_comments) .page(@page) .per(@per) Код ассоциации :child_comments > has_many :child_comments, -> { with_person.with_likes_count.where.not(reply_to: nil) }, class_name: '::Api::Comment', foreign_key: 'parent_id', inverse_of: :parent_comment
>>1498073 Чтобы лучше понять задачу, давай я тебе скажу что ждет клиенский код этого сервиса. Клиенсткий код ждем ассоциацию @comments чтобы сделать что-то типо того:
@comments.each do |comment| render partial comment comment.child_comments.each do |child_comment| render partial child_comment # У детей уже нет детей end end
>>1498123 Да, именно так, только я сделал подсчёт через join, но это абсолютно не важно, ты правильно сделал. И вот теперь надо также посчитать поставил ли лайк конкретный пользователь на комментарий и на child_comments
Есть рельсовое приложение, которое стоит на VPS с nginx и passenger. Нужно подкрутить Mailer. Но до этого пользовался хостингом Heroku, там просто аддон SendGrid ставил.
А как настраивать Mailer на VPS? smtp устанавливать на свой сервер? Какие доп конфигурации нужно будет провести?
>>1502159 >smtp устанавливать на свой сервер? Какие доп конфигурации нужно будет провести? Да, либо воспользоваться сторонним сервисом (Gmail или что угодно) и вбить в настройки Mailer соответствующие адреса/логины/пароли. Я просто прикрутил яндексовскую почту для домена.
тильда специально для того, чтоб искал еще в app/assets
И пиздец, без этой строки всё билдится но в паре мест, где используется тот самый миксин, картинки по пизде пошли, с этой строкой говорит, мол, Maximum call stack size exceeded и предлагает добавить еще каких-то лоадеров, помимо тех, что идут из под коробки с вебпакером. У меня и так, помимо дефолтных лоадеров, добавлен resolve-url-loader, но этот миксин ебучий просто всё пересрал.
Может кто сталкивался? А то так и пиздануться можно. Гугл по делу мало что говорит, там не такие же кейсы
Аноны, у меня к вам важный вопрос. 3 года уже не пишу на рельсах (так сложилась карьера), но до этого 3 года писал.
Сейчас появился вариант вернуться, но мне стало немного страшно, Смотрю, уже rails 6 есть... Глаза разбегаются. Можете назвать какие ключевые изменения со времен rails 4 мне нужно изучить и узнать? То есть за эти 3 года
Появился WebPacker, удалены старые депрекейтнутные ещё при Сралине методы, всё стало быстрее работать, повился ActiveCable, ActiveStorage и новые соглашения.
ИЗУЧЕНИЕ ЯЗЫКА
Q: C чего мне начать, чтобы стать рубистом?
A: Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и те же вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby.
А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Q: Следующий уровень, продвинутые книги по руби:
A: Confident Ruby by Avdi Grimm | Practical Object-Oriented Design in Ruby
Refactoring Ruby Edition | Ruby Under a Microscope
Q: Онлайн курсы чтобы попробовать/вкатиться:
A: http://tryruby.org/levels/1/challenges/0/ | https://rubymonk.com/
http://www.codewars.com/?language=ruby | http://rubykoans.com
Q: Какой gem посмотреть, чтобы понять, как писать код?
A: Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
Еще можешь полистать на гитхабе гемы с нарастающей популярностю (там еще нет тысяч строк, и тебе будет легче понять): https://github.com/trending?l=ruby
Q: Хорошие практики по руби и рельсам?
A: Обязательно стайлгайды (как оформлять код):
https://github.com/bbatsov/ruby-style-guide
https://github.com/JuanitoFatas/fast-ruby
https://github.com/bbatsov/rails-style-guide
Руководства "для чайников":
https://www.railstutorial.org/book [en]
http://www.theodinproject.com/ruby-on-rails [en] | http://codenamecrud.ru/ [ru]
Еженедельная рассылка с новостями из руби мирка:
https://rubyweekly.com
Прочая годнота:
https://github.com/markets/awesome-ruby
Q: Документация по стандартным библиотекам руби и рельс:
A: http://ruby-doc.org/ | http://api.rubyonrails.org
http://guides.rubyonrails.org | http://ruby.railstutorial.org
Q: Можно ли на руби писать нативные GUI, мобильные приложения, игры?
A: Да, но не стоит.
Q: Что ещё изучить?
A: Английский, git, linux. Паттерны. Один из часто используемых - Service Object.
СРЕДА РАЗРАБОТКИ
Q: Как установить разные версии рубей?
A: https://rvm.io | https://github.com/sstephenson/rbenv | https://github.com/asdf-vm/asdf