The Future of Ruby(3)Предыдущий тред: https://arhivach.ng/thread/489585/ИЗУЧЕНИЕ ЯЗЫКА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 RubyRefactoring Ruby Edition | Ruby Under a MicroscopeQ: Онлайн курсы чтобы попробовать/вкатиться:A: https://ruby.github.io/TryRuby/ | https://rubymonk.com/https://www.codewars.com/?language=ruby | http://rubykoans.comQ: Какой gem посмотреть, чтобы понять, как писать код?A: Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.Еще можешь полистать на гитхабе гемы с нарастающей популярностью (там еще нет тысяч строк, и тебе будет легче понять): https://github.com/trending?l=rubyQ: Хорошие практики по руби и рельсам?A: Обязательно стайлгайды (как оформлять код):https://github.com/rubocop-hq/ruby-style-guidehttps://github.com/JuanitoFatas/fast-rubyhttps://github.com/rubocop-hq/rails-style-guideРуководства "для чайников":https://www.railstutorial.org/book [en]https://www.theodinproject.com/tracks/1 [en] | http://codenamecrud.ru/ [ru]Еженедельная рассылка с новостями из руби мирка:https://rubyweekly.comПрочая годнота:https://github.com/markets/awesome-rubyQ: Документация по стандартным библиотекам руби и рельс:A: https://ruby-doc.org/ | https://api.rubyonrails.orghttps://guides.rubyonrails.orgQ: Можно ли на руби писать нативные GUI, мобильные приложения, игры?A: Да, но не стоит.Q: Что ещё изучить?A: Английский, git, linux. Паттерны. Один из часто используемых - Service Object.СРЕДА РАЗРАБОТКИQ: Как установить разные версии рубей?A: https://rvm.io | https://github.com/rbenv/rbenv | https://github.com/asdf-vm/asdfhttps://www.youtube.com/watch?v=IhTXDklRLME
>>1505729 (OP)> The Future of RubyВсегда, когда вижу на сайте какой-нибудь библиотеки или другой технологии новость с заголовком "the future of технология_нейм", это означает, что разработка прекращается, и будущего у неё нет.
>>1505818Всегда когда вижу комментарий о том, что какая-то технология себя изжила, это означает мамкиного эксперта.
Ребята, если Ruby умрёт, на какой язык перекатиться среди тех же задач и с таким же сладким синтаксисом?
Из Java-макаки имеет смысл перекатываться в Ruby, имея опыт в Java Spring около года?Заебало настраивать эти бесконечные modelDatasourceDependenciesManagerFactory и ждать, пока проект, писавшийся 6 лет, наконец запустится через 10 минут после нажатия кнопки.Почитал Agile Web Development on Rails - понравилось, так как в полной мере понимаю, о чём идёт речь.
>>1507255Завсисит. Ruby и рельсы хороши тем, что они до сих пор является некоторым маркером "правильных" людей. Если для тебя это важно и вокруг тебя есть работа на RoR, то имеет смысл попробовать.http://www.paulgraham.com/pypar.html
>>1507677Там даже над шуткой, где мол каждый год говорят, что руби умер, не посмеялись. Настолько люди верят в кончину рубина.https://youtu.be/IhTXDklRLME?t=94
>>1507723А, ты в общем про доклад. Не, я до конца не смотрел. Да и думаю создатель ЯПа до последнего будет пытаться реанимировать свой язык, вряд ли он скажет RIP
>>1507546>является некоторым маркером "правильных" людейВ смысле осиляторов непростого и продуманного фреймворка, или о чём ты?
>>1507546У меня нет задачи ощущать себя "правильным" человеком.Для меня этот аспект неважен, значение имеет вопрос - реальна ли возможность смены стека (хотя фактически поменяется 20%) и поиск работы в Москве, если раньше именно на Ruby не было коммерческой разработки
>>1507897Без руби-опыта может быть тяжеловато, хотя в целом в ДС проблем быть не должно. Готовься в первый год по зарплате просесть.
>>1507897> У меня нет задачи ощущать себя "правильным" человеком.А какая у тебя задача? Ты залётный что-ли в ойти?> реальна ли возможность смены стека Да, очевидно реальна. Ради чего?> поиск работы в МосквеРынок RoR в Москве после крысиса так и не оправился (источник: я работал в самой большой Ruby команде в городе). Найти можно, но, например, я бы на твоё резюме даже и не посмотрел. Нужен опыт.
>>1507998> Рынок RoR в Москве после крысиса так и не оправился (источник: я работал в самой большой Ruby команде в городе). Найти можно, но, например, я бы на твоё резюме даже и не посмотрел. Нужен опыт.Ну и на хуй вас тогда, элитариев
>>1507701>Там даже над шуткой, где мол каждый год говорят, что руби умер, не посмеялись.А хули над ней смеяться, когда уже который год каждый раз ее шутят? Ну блять. Тебе будет смешно, если я расскажу тебе один и тот же анекдот раз пять?
>>1509041Еще как надоел, только у них как бы есть большая разница. ПХП технология уровнем ниже и там больше клиентуры, меньше требований, купил книгу по пхп и пошел зарабатывать деньги, одна хуйня никто не понимает как писать правильно, так зачем замарачиваться, если тебе это не нужно, а большинству это не нужно. Есть люди которым вообще группы в быдлятне хватает, чтобы толкать свой товар, там еще больше чем клиентуры пхп, но это не значит что создание групп в ВК лучше языка программирования ПХП.Питон форсят как лучший язык для новичка, естественно пропаганда делает свое ЛОЛ. Ты же не удивляешься почему Пыня президент в РФ, ну вот по этому и питон популярен. Без пропаганды он бы загнулся еще лет 10 назад, потому как какой человек будет писать на этом дерьме осознанно.
>>1509052>ПХП технология уровнем нижеПиздец я сказанул. Заняла место на рынке уровнем ниже конечно, сам технология та же, обычный текстовый редактор.
>>1509052>ПХП технология уровнем нижеэто почему,говно скрипт и на руби написать можноплюс магия иногда боком встает
>>1509033Спрос не на руби падает, а на уеб CRUD поделки на коленке (и это хорошо). Есть несколько факторов почему так:- Сегодня никому в голову уже не приходит писать свой собственный магазин, сайт визитку и прочие CRM. Не только на рельсах, а вообще.- Фокус переключился на SPA. А на бекенде? Да похуй! Раз уж мы тут ебёмся в присядку с JS и реактом, давайте на сервере тоже JS захуярим.- Рельсы перестали быть такими модными и молодёжными. К тому же DHH и кампания не понятно чем последние 5 лет занимаются. Ничего нового крутого и революционного за всё это время добавлено не было.
>>1509245>Фокус переключился на SPAЧто кстати довольно забавно и говорит о большинстве программистов как о животных. Реально СПА нужно в 10% из 100 где ее применяют. Появилась новая технологиянейм и все тупо рванули ее хуячить и похуй зачем ее придумали, главное смари как умеет делать ЫЫЫЫЫЫ. Так же было и с Рельсами, лепили всюду и потом дико рыдали что не робит. Знакомый парень в Яндексе на реакте кодил, такого рассказал и показал что я в ахуе. Я раньше считал Яндекс дегенератами, но вот так откровенно их код никогда не видел и признаться честно, такого говна, я даже представить себе не мог, что можно кодить буквально как в мусорное ведро без какой либо структуры в принципе, 1500 строк в роутере на сервисе уровня сайта-визитки - говно вопрос. Прямо как та обезьяна из басни Крылова. Зачем Реакт в сайт визитку, это я уже молчу, Яндекс то лучше меня небось знает.>Раз уж мы тут ебёмся в присядку с JS и реактом, давайте на сервере тоже JS захуярим.Гениальная мысль, узнается подчерк Шарикова в подобной логике КЕК Похуй бизнес, похуй деньги, давайте хуйню вытворим, ну прикольно же ребят.
>>1509033Для мелкосайтов рельсоподобных фреймворков достаточно уже и на других языках.А для крупных сайтов нужна асинхронность.
Вопрос.Зачем использовать делегирование связанных атрибутов, например пик1>delegate :name, :domain, to: :company, prefix: true Если вызов>@user.company.nameбыстрее на бенчмарке? пик2или я что-то неправильно понимаю?
>>1509807Я не гонюсь за скоростью.Но делегирование распространенная практика.Хотя мне больше удобнее через дот-синтаксис писать. >user.company.nameНаткнулся в одном проекте снова на методику делегирования, решил проверить скорость. Шина не произошло. Заинтересовался, в чем тогда смысл? Просто в удобстве?
>>1509628>>1509823Потому что это банальная абстракция. Делая parent.child.attribute ты течёшь деталями имплементации и выкручиваешь самому себе из будущего яйца.Почитай про Interface Segregation Principle.Гораздо проще тестирировать и поддерживать код где отдельные куки проекта не зависят от всех остальных кусков.
Здоровеньки булы! Как именно себя проявляет полиморфизм в рельсовых проектах? Правильно ли я понимаю, что в руби из-за строгой типизации ad-hoc полиморфизм?
Почему на рубях нет какой-нибудь крутой cms для блоггинга?Я понимаю что можно наскафолдить свое поделие, но оно не будет таким годным как https://ghost.org/Конечно же загуглил, но ничего годного не нашел. Почему до сих пор никто не сделал что-то подобное госту?После такого начинаешь верить что он и правда умирает.
>>1509984Мы используем термин duck typing вместо полиморфизма.> ad-hoc полиморфизмRuntime polymorphism скорее. Сложно назвать то что у нас есть ad-hoc в класcическом смысле.
>>1510025> Почему на рубях нет какой-нибудь крутой cms для блоггинга?Как насчёт https://github.com/opoloo/lines-engine или той же Spina CMS?> не будет таким годным как https://ghost.org/И что конкретно годное там?> Почему до сих пор никто не сделал что-то подобное госту?Потому что Medium очевидно. И jekyll и Gatsby.
>>1510035Видел спину и lines перед тем как написать сюда.У спины уебищная админ панель. Посмотрел скрины lines - чуть не блеванул.>И что конкретно годное там?Она охуенно выглядит. Скрин сверху. Это первое что бросается в глаза.Много позитивных постов, что народу нравится.Medium превращается в говно. Они вроде начинают вводить подписку или что-то в этом духе.Так-то jekyll это не cms. Будет не совсем удобно.Вот есть же discourse, написаный на рубях. Всем он заходит.
>>1510025>Почему на рубях нет какой-нибудь крутой cms для блоггинга?потому что это тот самый CRUD и ActionText, который rails умеет из коробки?зачем плодить то, что делается за вечер даже без подключения сторонних компонентов.
>>1510220Не все хотят с этим разбираться или тратить время на создание с нуля.Вот например, решил я создать блог и писать на определенную тему. Видя что есть решения которые достаточно развернуть на впску, я отдам предпочтение им, даже если знаю rorА так, я начну создавать велосипед и в итоге у меня пропадет желание заниматься блоггингом
>>1510233Наверное потому что похапе - говно для вчерашних расклейщиков объявлений, а руби - стильный и выразительный язык для интеллектуалов.
>>1509819Я про то, что в руби не нужен do при определении метода, а он спросил про do как раз по этой причине, хуле не понятно
Есть одна index страница, у которой есть две линки с 'remote: true'. И есть index.js.erb файл, конечно. Проблема в чем: одна линка долна делать одно, другая совершенно другое. А index.js.erb один же. Вопрос: можно ли по клику на линку с 'remote: true' передать в index.js.erb что именно нажато? Или надо говно затея и надо писать отдельный AJAX для одной линки, а у другой оставлять 'remote: true'.
>>1512416Или говно затея и надо писать отдельный AJAX для одной линки, а у другой оставлять 'remote: true'?слоу фикс
У каминари можно сделать так, чтоб, например, страница 2 содержала в себе элементы первой и второй страницы, а страница 3 соответственно содержала в себе элементы первых двух и т.д? В доках не могу такого найти, может кто сталкивался
>>1512540Всё, нашел. Достаточно в page всегда передавать единичку, каждый раз умножая то, что передаешь в per на номер страницы
9 Industries where Flagship Companies Choose Ruby on RailsTourism and Hospitality• AIRBNB• COUCHSURFINGMarketing• CRAZY EGG• BBDO• ACCENTURESocial Media• ASK.FM• WE HEART IT• GOODREADSSoftware Development• GITHUB• ZENDESK• MICROSOFTHuman Resources• FIVERR• HELPING• YELLOWPAGES.COME-commerce / Retail• SHOPIFY• GROUPON• NEDAPFinance• BLOOMBERG• KICKSTARTER• FUNDERAEntertainment• NETFLIX• HULU• TWITCHReal Estate• SPACELIST• PROLOGIShttps://medium.com/@rubyroidlabs/9-industries-where-flagship-companies-choose-ruby-on-rails-839b7e21812b
Поясните мне за руби, хайп по нему же прошёл уже? И ничего нового на нём не пишут (потому что тормозной и кроме рельсов нет нихуя), только легаси осталось? Или я неправ и у рубистов есть какие-то перспективы?
>>1518477Написал за этот год два новых проекта на рельсах, теперь сижу сеошу один и наполняю контентом другой. Все хорошо.Про руби в целом ничего сказать не могу. В том числе плохого.Пикрелейтед с руби-ивентов evrone. Неплохая самоирония.
>>1518478Мил человек, подскажите как сеошить рельсовые проекты?Наклепал только альты для пикч, метатеги и манифест. Что для сео еще нужно?
>>1519184>Наклепал только альты для пикч, метатеги и манифест. Что для сео еще нужно? Шаги правильные но этого очень мало.Для интернет-магазина (если это он):sitemap_genarator, скармливаем выхлоп поисковикам. По моему опыту карта сайта таки дает выхлоп,что бы не говорили на этот счет.robots.txt с удалением вообще всего, связанного с внутренним поиском и любыми параметрами урла (эти ваши фильтры, страницы кроме первой и т.п.). Ибо дубли и мусор - это чистить обязательно. Микоразметка а-ля schema.org для снипеетов поисковиков - в обязательном порядке.Дескрипшены разделов - в обязательном порядке. Можно разгрузить ручную работу взяв перечень ключевиков из товаров категории и накидать пару десятков вариантов текстового сопровождения для воды и избежания переспама и тошностности. Раздробить на логические части, рандомизировать выборку/порядок для каждого раздела.Дробление каталога на СЧ/НЧ запросы с автогенерацией посадочных под них. У меня, например, товары разбиты по категориям, внутри них по группам и производителям. Посадочные у меня являют собой связки 1 группа и 1 производитель, при условии что товары, подпадающие под эти условия есть и нет категории, которую эта связка продублирует (т.е. категории с одной группой и одним производителем). Плюс посадочные по СЧ запросам по каждому производителю и группе товаров отдельно, опять же, следим за дублями существующих разделов каталога.Генерация около 2к таких посадочных у меня заняла 3 нескучных вечера.<noindex> для яндекса где надо, чтобы не индексировал всякие "Добавить в корзину", и т.п. Для гугла не помню как это делается, у меня с него трафика мало, пока смысла не вижу, да и снипеты у него сразу подхватились от meta-descrition, ничего лишнего не вылазит.Про бэклинки, если проект молодой, забудь на время. Про покупку ссылок вообще навсегда, в 2к19 они даже вредны. Трафик с соцсетей переоценен, причем сильно.Всякие Яндекс.справочники, карты и прочее - вполне полезны, кто бы что ни говорил, но это в моем случае, тут оффлайн-сеть из 14 магазинов в одном миллионнике.Внутренний поиск по сайту лично я делал с использованием триграмм через pg_search, мб в чьем-то случае больше подойдет full-text. Вообще по каталогу в любом случае нужно очень много ручной работы - прописывать словари синонимов и т.п. Без этого никуда.Перелинковка-перелинковка-перелинковка. Не забываем разгрузить главную от кучи ссылок - никаких выпадающих каталогов на всю левую часть страницы. Ссылок 10-15 на самые популярные разделы и посадочные хватит, остальное в поиск и отдельную страницу каталога.Это только первичные работы, все остальное, в основном, идет от ПФ, поэтому колдуй над юзабилити и поиском. Следи за поведением пользователей на сайте. Можно кучу всего прописать для самостоятельного анализа ПФ, например, сохранять пустые результаты пользовательского поиска внутри сайта для корректировки релевантности синонимаов товаров и т.п.За первые 2 месяца переработки с нуля на рельсах полудохлого ИМ на опенкарте с кучей грубых ошибок траф взлетел со 150 уников в день до 450. Ряд ключевых СЧ позиций сразу прыгнули в топ-3, причем у гугла тоже. Не исключено что роль сыграл еще возраст домена (он не менялся), но я не профессиональный сеошник, чтобы сильно вникать. В целом, вся информация в сети есть.Собственно, рельсы мне дали возможность большую часть этого оавтоматизировать + контролировать все и вся, ибо самопис.Для блогов/шмогов ничего не подскажу - никогда не занимался. Полагаю, все то же самое, в целом, кроме манипуляций с выдачей.
>>1519226А, да, ЧПУ для урлов забыл. Готовые решения не используй, это легко пишется самостоятельно.Например:routes.rb get ':category_seo_name/:product_seo_name', to: 'products#show', as: :productproducts_controller.rb def show if params[:product_seo_name] && params[:category_seo_name] @product = Product.find_by(seo_name: params[:product_seo_name]) @category = @product.category end end
>>1505729 (OP)А руби действительно не умирает что ли?Зачем он нжуен вообще. По размеру экосистемы сильно уступает питону, по производительности интепритатора просто сосёт у жс (V8). На реальных задачах, где важно ещё IO - тоже днище, ни грин тредов, ни крутой асинхронщины. По мощности и монструозности фреймворков какой-нибудь Spring куда обширнее и сбольшим количеством интеграций. Сириуслуи нахуя нужен руби?
>>1519291тоже самое можно сказать и про пистон (но вообще субъективщина, кому-то и ML-языки кажутся удобными)
>>1519295Пистон не является языком одного фреймворка мимо ябусь с ебенячей асинхронщиной и дата процессингом
>>1519302Да, много блокировок io, т.к. работа со сторонними апи, запросами в бд, тот же фауст и прочая залупа
>>1519302Асинхрощины во мне дохуя, рубист стоит передо мной и рельсы свои дрочит, я говорю: "Старина, съеби нахуй". Даю ему корутины и все: "Забирай и проваливай"Паша Питонист
Есть задача распарсить цены на товары в магазине.Все товары находятся на одной странице, но отображается лишь часть и остальные подгружаются по нажатию кнопки.Мой вопрос заключается только в том, как загрузить страницу сразу со всеми товарами?
>>1519822Разобрался сам. На самом деле там есть страницы и они грузятся отдельно. Надо просто перебирать их до первого редиректа.
>>1519950А, ну тогда зря я по SEO расписывал - тут только бэклинки, имейл-маркетинг, оффлайн-продвижение, в зависимости от того, что за товар/услуга.
>>1520027>>1520036Долгая история почему на рельсах.Если бы знал сразу, что будет одностраничник, наклепал бы на реакте в один компонент. нетНо по сложившимся обстоятельствам выбор пал на рельсы. >>1520037Не зря. Мне seo был интересен для общей картины, а не для данного сайта.
Поцаны думаю вкатиться а точнее перекатиться на руби, какие подводные?За бугор смогу срулить с руби? Как по заказам и аутсорсу на руби? В рф ясно что почти нету руби.
>>1520101В основном конечно США, но в у нас руби тоже весьма популярен, думаю по популярности стоит после США/Японии.
>>1520138Кто и почему думает, что на руби рельсах существуют только легаси прожекты?Это утверждение тех, кто не работал руби-разработчиком, я так понимаю?мимо-рельсо-макака
>>1520138Да легаси это 80 процентов рынка если не больше в любом языке. Только в стартапах пилят какие то с нуля штуки.>>1520175На ру сегмент работаешь или на забугорных господ?Стоит вообще вкатываться туда? Рельсы немного мне напоминают питон с их джангами.
>>1520198>На ру сегмент работаешь или на забугорных господ?На забугор из России. Рельсы у них ценятся лучше, чем у нас. И заказов для ру-девелопера больше, по понятным ценовым причинам.>Стоит вообще вкатываться туда?Если тебе подходит по душе стек, то вкатывайся, на руби приятно писать код. Зарплаты нормальные есть. ну смотря куда попадешь
Есть страница https://www.petsonic.com/vetnova-glyco-flex-lll-snacks-para-perro.htmlВ ней надо достать текст с radiobutton'ов. Делаю так:html.xpath("//fieldset/div/ul/li").each do |item| puts item.xpath("//label/span").first.contentendНо мне трижды возвращает текст первой кнопки (30 Comprimidos). ЧЯДНТ?
>>1520736jQuery не подойдет тебе? Что-то вроде этого>Array.from($('.radio_label').map( (item) => $('.radio_label')[item].textContent ))Вернет массив с текстами радио.
Короче, я понял что проблема не совсем в том, что возвращаются не те значения, а в том, что я неправильно их ищу. Приfile.xpath('//fieldset/div/ul/li/label').each do |item|puts item.contentendвыводится весь контент (название и цена) корректно, без повторов.Но тогда остается вопрос, как достать не весь контент, а c каждого span'a по отдельности.
>>1505729 (OP)Сап, антуаны!Помогите понять, пожалуйста. Задача не очень кодерская, но слишком завязана на руби и его особенности.Поставил Редмайн, хочу учтановить на него плагин, выполняю команду, как описано в мане (https://framagit.org/infopiiaf/redhopper)root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopperПолучаю ошибку:Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.Run `bundle install` to install missing gems.Вроде, по человечески написано, делаю (оно не рекомендует делаться от рута, но иначе ругается на дефицит прав):root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# ./bin/bundle installмноготекста, затем Installing nokogiri 1.10.4 with native extensionsGem::Ext::BuildError: ERROR: Failed to build gem native extension.ещё многотекстаTo see why this extension failed to compile, please check the mkmf.log which can be found here: /var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/nokogiri-1.10.4/mkmf.logextconf failed, exit code 1В этом "логе" какая-то ересь:"gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.5.0 -I/usr/include/ruby-2.5.0/ruby/backward -I/usr/include/ruby-2.5.0 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.5-TeLQY5/ruby2.5-2.5.5=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -lruby-2.5 -lpthread -lgmp -ldl -lcrypt -lm -lc "checked program was:/ begin /1: #include "ruby.h"2:3: int main(int argc, char argv)4: {5: return 0;6: }/ end /Всё, на этом месте я сломался. Спасите, пожалуйста.
>>1521085ну тут очевидно нокогири просит установить либу которая на сишке написана, а она сбилдиться не может вероятно из-за того что какие-то пакеты не устанволеныпопробуй sudo apt-get install libpng-devsudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
>>1521093>sudo apt-get install libpng-dev>sudo apt-get install --reinstall zlibc zlib1g zlib1g-devНе помогло.>>1521090>Гугли как поставить acts_as_list в руби Нашёл это:/opt/redmine-4.0.5-0/ruby/bin/gem install acts_as_list --source 'https://rubygems.org/'Но на сервере ограничения на работу с сетью вернее от не доверяет сертификату на проксе, но с этим я, наверное, возиться буду ещё дольше. Пытаюсь понять, как сделать это локально и что и откуда для этого надо скачать.
>>1521090>>1521128Как раз этим занимался.Кажется, не работает. Я ХЗ:root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# gem install ~/acts_as_list-1.0.0.gemSuccessfully installed acts_as_list-1.0.0Parsing documentation for acts_as_list-1.0.0Done installing documentation for acts_as_list after 0 seconds1 gem installedroot@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopperCould not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.Run `bundle install` to install missing gems.root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# gem install ~/acts_as_list-1.0.0.gem Successfully installed acts_as_list-1.0.0Parsing documentation for acts_as_list-1.0.0Done installing documentation for acts_as_list after 0 seconds1 gem installedroot@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopperCould not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.Run `bundle install` to install missing gems.Если делать bundle install, то он опять спотыкается о нокогири:Fetching nokogiri 1.10.4Installing nokogiri 1.10.4 with native extensionsGem::Ext::BuildError: ERROR: Failed to build gem native extension....An error occurred while installing nokogiri (1.10.4), and Bundler cannot continue.Make sure that `gem install nokogiri -v '1.10.4' --source 'https://rubygems.org/'` succeeds before bundling.Ну и дальше по кругу.
>>1521174Я тут заметил...# grep "acts_as" /opt/redmine-4.0.5-0/apps/redmine/htdocs/Gemfileничего не говорит, а# grep "acts_as" /opt/redmine-4.0.5-0/apps/redmine/htdocs/plugins/redhopper/Gemfileговоритgem 'acts_as_list', '~> 0.9.17'Ещё по первому пути есть дополнительно файл "Gemfile.lock", а по второму - нет.Может это быть критично?
>>1521237acts_as_list тут не причем. У тебя nokogiri не собирается, он тебе об этом и пишет. Попробуй sudo apt-get install ruby-dev, судя по логу тебе именно его не хватает.
>>1521402>apt-get install ruby-devНаходил этот совет в интернетах и уже пробовал, ничего не изменилось.Видимо, у редмайна в сборке зашиты свои руби... Впрочем, даже если использовать bundle из системы, где стоит в том числе ruby-dev, то падает точно так же.
>>1524065как то такdef _store_accessors_module if @_store_accessors_module == nil mod = Module.new include mod mod else @_store_accessors_module end end
>>1523856на html что-то хуячить - это так себе идеялучше руби-врапперы для этого юзать и не ебать себе мозги//рубист с 4летним опытом
>>1519290у руби своя ниша - быстро писать аппликухи под не очень высокую нагрузку. кроме рор там ничего нет (и не надо, лол)джава со спрингом быстрее, но смысл с ними трахаться и тратать время, если ты даже не знаешь, взлетит ли твоя идея.мне кажется что в целом все идет к тому, что есть чистый фронт (на каком-нибудь реакте или вьюжс) и бекенд на rest-e (похуй что)// мимо жава-макака
РЕПОСТНУ СЮДА ПОЖАЛУЙ Ruby meetup #11 пройдет в Москве 28 ноябряПриглашаем вас на уже традиционную встречу рубистов и к ним стремящихся, которая пройдет в Rambler 28 ноября 2019 года. Обсудим, что происходит в Ruby в текущий момент, угостим всех пиццейМитап бесплатный, предварительная регистрация обязательна: https://railsclub.timepad.ru/event/1109233/Начало: 19.00.Организаторы: EvroneЛокация: Rambler Group - Варшавское шоссе, д.9, стр 1, Даниловская мануфактура, ряды солдатенкова, подъезд 5.
>>1505729 (OP)Как для rails app определить, сколько нужно кластеров application puma сервера, тредов, воркеров? Сколько connectiohns к БД? Как это мапиться физически (сколько нужно) на железно, ядра и треды процессора?
>>1530823Ясен хрен! А теперь проверь FPS здесь на условном 2.3 и 2.7https://github.com/mame/optcarrothttps://www.downloadroms.io/roms/nintendo/https://github.com/colby-swandale/waterfoulhttps://www.downloadroms.io/roms/gameboy/
Здарова, бандиты! Проконсультируйте по циферкам, пожалуйста. Тружусь рубистом в мухосрани, пришол на галеру с пыхобэкграундом 1 год как джун на зпху 60 кесов, и вот я хуй его знает, норм ли это зп, что просить после испыталки? Скока примерно рейт у рубиста в замкадье? Тасочки закрываю самостоятельно, без надзора и контроля.
>>1531043Хз, все зависит от резюме.Кажись у тебя норм ЗПшка.У нас стажеры получают 0-20, джуны 20 - 50, мидлы - 50 - 90, синьоры 90-120.Гавноконтрорам нет смысла в крутых разрабах и повышении квалификации - им достаточно иметь пачку джунов, еще столько же мидлов и 1-2 синьора без амбиций, ибо размеры проектов диктуют.
смотрел сравнение эни кабла с другими системами,там он неплохо держит 20к холостых клиентов.а если эти 20к начнут что то слать на обработку,рельсы наебнуться?
Ньюфаг в треде.Нужно ваше разъяснение.На пикче программа аля рулетка, и я только начал изучать хэши. И никак не могу понять, как так получается, что в первом случае, при if, hh[a] берётся ключ, к примеру 111, а во втором случае hh[a] уже берётся значение 10?
>>1535447Ну не знаю, у тебя вообще почти всегда будет nil в hh[a]. rand(111..555) супер редко будет попадать на твои ключи хеша
>>1535492Да это то я знаю.Вот, попытался на пикче объяснить.Почему первый hh[a] принимает значение key (111), а второй hh[a] принимает значение value (10), а не два раза принимает 111, к примеру?Всё работает правильно, но я не понимаю почему это работает именно так.
>>1535502Книжку пробовал открывать вообще? hh[a] твое в любом случае интерпретируется именно как значение. А запись if hh[a] говорит о том, что значение выражения под ифом конвертируется в булеан и проверяется на истинность.
>>1535621>Все скриптовые ускоряются по немногу,а рубен как старый дед кряхтит У тебя проблемы развести заказчика на более дорогой тариф из облака?
>>1535621Он дохлый уже, а один из разработчиков взял и запилил Elixir, который тоже медленный как числодробилка, но охуеть какой быстрый как язык для хайлоад конкаррент / дистрибьютед систем.
Приветствую всех этом чатике, есть вопрос по организации работы сервисадано: рейлс, сайдкик, редис, еще одна программа на рубицель: отправить программе задачу из рейлс, выполнить действие программы, передать в рейлс результаты (задача может выполняться часами, рельса должна отображать состояние задачи)какое я вижу решение: рейлс и программа висят на одном канале в редис, рейлс публикует задачу, программа отчитывается о состоянии в процессе и публикует результат по окончанию работы. Однако, мне не понятно, как подписать рейлс на события? Возможно ли такое сделать средствами сайдкик, стартовать джоб с пришедшими данными? Как вообще решаются подобные задачи?
>>1536028Есть два стула. Либо сделать программу частью рельсового приложения (вынести в какой-то сервис, я хз, че там у тебя вообще за программа). Либо сделать это рубишное приложение чем-то типо rack приложения, в которое ты стучишься из рельсы и получаешь ответ.
>>1536028>Однако, мне не понятно, как подписать рейлс на события?Просто посылай HTTP запрос в рельсы из своей программы с названием канала в параметрах. Вообще, если инстансов программы одновременно будет запускаться немного, то можно ее в отдельном треде в рельсовом приложение запустить.
>>1536246программа работает с железом, которое висит на ком-портах, я хочу запускать инстанс на каждую железку, в том числе иметь возможность подключить удаленно, например, поднять инстанс на ноутбуке, чтобы он регистрировался в рейлс-приложении.на сервере думаю сделать отдельный воркер, который будет стартовать рейк таск с эвент машиной и слушать каналы, раскидывая джобы в сайдкик по событиям.по-сути нужен просто надежный меседж брокер, который обслужит шину передачи данных, непонятно пока, подходит ли редис для этого.
>>1530338Короче я загуглил. Если кому интересно, вот что я выяснил.Говоря про пуму (puma) и однопоточный сишный руби (MRI), то количество воркеров = количество тредов процессора с учетом гипертрединга (hyper threading). Это связано с тем, что однопоточный руби внезапно однопоточен, полностю thread-safe.Каждый кластер или каждый воркер будет выступать в качестве форка (подпроцесса) системного виртуального ядра и будет работать в рамках этого ядра.То бишь 8 ядерный 16 поточный ксенон = 16 воркеров ака кластеризированная пума (puma workers, web concurency, clusters).Эта конфигурация даст кластер из 16 однопоточных приложений.Каждый воркер независимо от других принимает реквесты от веба, в нашем примере 16 одновременных соединений.Не очень много, но тут на помощь приходят треды пумы (puma threads). У одного пума воркера может быть много тредов, по дефолту 1 воркер = 16 тредов. Каждый воркер внутри себя распределяет полученные реквесты по этим самым тредам, при этом в рамках своей однопоточной работы может переключать процесс выполнения пума тредов для оптимизации, например если какой-то пума тред ждет ответа на чтение/запись в бд, то пума передаст управление другому, который ждет просчета на ресурсах процессора прямо сейчас.Все это безобразия, судя по всему, хорошо работает в случаях с задержками I/O и не очень в случае с ЦП зависимыми приложениями - там не получиться просто передавать управление от медленных I/OПомимо этого есть еще пулл соединений к базе данных (pool connections).Так как все воркеры пумы, или ее кластеры, независимы, то и пул соединений у каждой из них свой, независимый.Конфигурация выставляется как "пул соединений с БД на один воркер" = "количество тредов в воркере".В нашем случае - 16.Итого получается 16 воркеров по 16 тредов = 256 кластеризированных тредов и соответственно 256 соединений к БД.То есть мы готовы одновременно принимать 256 реквестов с веба.Но это в теории. С одной стороны часть этих реквестов уйдет с помощью nginx на статику и даже не затронет rails, с другой есть еще бэкграунд джобы и прочие операции, которые также кушают ресурсы.Соединения к БД можно утилизировать с помощью дополнительной прослойки к базе данных - балансировщик, например pg-bouncer.Тогда весь пул будет держать именно он, а воркеры будут обращаться к нему за соединениями для своих тредов. Это уменьшит количество простаивающих в холостую соединений и сэкономит память.Из минусов - приложение лишиться ряда плюшек СУБД, например в pg-bouncer потеряются параметризированные подготовленные выражения aka prepared staements (.where('user.name = :name', name: my_name_var)), рекомендательный блокировки aka advirsory lock и что-то там еще.
>>1537155>потеряются параметризированные подготовленные выражения aka prepared staements (.where('user.name = :name', name: my_name_var))Prepared statements это другое (https://www.postgresql.org/docs/current/sql-prepare.html), where который ты написал работает и с pgbouncer.
Посоветуйте книгу по руби, желательно на русском, ангельский у меня только в процессе изучения и книги пока тяжело на нём даются.
>>1537797>>1537799Ну вот для тебя специально на русском туториал:https://ruby.github.io/TryRuby/пройди его для начала. Когда пройдёшь может и найдём тебе книгу по руби/рельсам НА РУССКОМ лол бля серьёзно в 2k20 просто ебануться
>>1537319Я понял о чем речь, спасибо большое.https://postgrespro.ru/docs/postgrespro/9.5/sql-prepare>Подготовленные операторы могут принимать параметры — значения, которые подставляются в оператор, когда он собственно выполняется. При создании подготовленного оператора к этим параметрам можно обращаться по порядковому номеру, используя запись $1, $2 и т. д. Дополнительно можно указать список соответствующих типов данных параметров. Если тип данных параметра не указан или объявлен как unknown (неизвестный), тип выводится из контекста, в котором этот параметр используется впервые (если это возможно). При выполнении оператора фактические значения параметров передаются команде EXECUTE. За подробностями обратитесь к EXECUTE.
>>1537961Первым языком в руби для самостоятельного изучения? Ну такое. Если стажером на галеру на стабильную маленькую зарплату и гарантированный рост - еще можно, а так... лучше ух пыху подергать, там хоть работы побольше
>>1507255 >>1507262 >>1507897 >>1507928 >>1507998 >>1508159>>1509033 >>1518477 >>1519290 >>1520101 >>1520117 >>1520138>>1520175 >>1520181 >>1520198 >>1520237 >>1520654 >>1531043>>1531094 >>1536097 >>1536136 >>1536174 >>1536340 >>1538737ПОЛОЖНЯК ПО РУБИ И РЕЛЬСАМ НА КОНЕЦ 20191. В Москве руби-вакансий БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО2. Платят БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО3. В LinkedIn на РЕМОУТ предложений летит БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО (компании из США/Европы/Азии и даже есть Бангладеш и Африка) платят обычно $4-6,5k в месяц, похуй какая часть мира4. В LinkedIn на РЕЛОКЕЙТ (в основном Германия/Польша/Скандинавия) предложений летит БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО5. Рублёвые зарплаты в Москве не меньше чем на Java вообще в целом, что из Java в руби перекатываются, что из руби в Java6. Никакой ПОДДЕРЖКИ ЛЕГАСИ ПРОЕКТОВ НА ПЛАВУ, в основном СТАРТАПЫ и НОВЫЕ ФИЧИ ПАЧКАМИ БЫСТРЕЕ БЫСТРЕЕ В ПРОД7. Московская конференция Ruby Russia собирает народу БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО и в Питере тож оживилась Питерская конфа.>Рынок RoR в Москве после крысиса так и не оправилсяЧто это за ПИЗДЁЖ?>(источник: я работал в самой большой Ruby команде в городе)Это в какой? АТ-консалтинг? ПрогрессСофт? Лига Цифровой Экономики? Evrone? Rambler? в разное время разные Ruby-команды были самыми большимиисточник: мой опыт и опыт знакомыхмимо долларовый удалёнщик $5,5k в месяц после налогов, ≈5 лет опыта работы на руби
>>1537881Нет, все верно расписал. Я бы только добавил, что 16 тредов на воркер это по-моему опыту дохуя, если у тебя не одни запросы к базе делаются, обычно 5-8 тредов достаточно.
>>1538824Только зачем нужны ссаные рельсы, если есть охуенный эликсир с не менее охуенными экто и пениксом? Лучшего экспириенса с языком у меня за весь опыт работы еще не было, а уж от его модульности, производительности и ненагруженности концепциями любая рельсошлюха будет течь как водопад уже через неделю работы. Думаю через полгодика мой основной рельсопроект будет полностью на нем и в освободившееся время можно будет пойти нести свет еще не прозревшим рельсоблядям.
>>1538892>Лучшего экспириенса с языкомСразу видно человека, не познавшего кложу.А чо по эликсиру? Я знаю руби, но рельс не знаю, но знаю джанго. Рекомендуешь сразу вкатываться в эликсир?
>>1538948Кложа у меня следующая в очереди на изучение, я знаю, что она тоже охуенная, но руки пока не доходят.>Рекомендуешь сразу вкатываться в эликсир? Если тебе нужна работа джуна чтобы вот прям выучил и пошел на галеру, то не рекомендую, лучше любой мейнстрим язык/фреймворк. Но если уже есть несколько лет программистского бэкграунда и можешь себе позволить месяц-другой поизучать новый стек, то разумеется.
>>1539427Вообще все так. Матц и компания слишком консервативны (хули еще ждать от японцев), но иногда на Матца видимо накатывает и он начинает мерджить рандомные фичи в язык.
>>1539601А зачем вообще пытаться сделать из говна конфетку запилить функциональщину в руби, если уже есть эликсир? Я в упор не понимаю этой логики, в итоге вместо нормального старого руби и нормального нового эликсира будет эликсир и его франкейнштейновского вида подобие. Нахуя?
>>1539601> начинает мерджить рандомные фичи в языкэто примерно как острую боль запить аналгином,а не понять причину
не задумывался что происходит в скриптах типа:blah.rb:def blah; endкуда крепятся определения?я высмеивал жабу за все то дерьмо в которое нужно завернуть print "hello". но с руби тоже самое.blah.rb:def blah; end1.blah => nilт.е. простые скриптики не очень то писать, нужно оборачивать в какой-то метод/модуль.
>>1539816дело в том, что метод blah добавится к Object от которого наследуют все остальные. вот это не очень. к примеру, если где-то:if obj.respond_to?(:blah) .. do_smthend
Щито делать если потерял интерес к rails, а может вообще к макакингку?До этого делал для себя проекты и немного макакил на фрилансе в течении нескольких лет.Потом вкатился в депрессию и ничего не делал год+-, потом меня потянуло на эликсир и я делал задания из книги с большим интересом.Сейчас опять год ничего не делал. Начал повторять ruby/rails и как-только начинаю во что-то вникать, то какое-то сильное ощущение грусти и тяжести в груди.Хотел устроиться на галеру, но теперь у меня еще и неуверенность. И вообще кажется что нужно деградировать до qaИли это депрессия и все же придется пить колеса?А может мне запостить это в тред депрессии? :(