Это копия, сохраненная 30 марта 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
https://hotwired.dev/
https://rubyonrails.org/2022/1/6/Rails-7-0-1-has-been-released
https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/
ИЗУЧЕНИЕ ЯЗЫКА
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: https://ruby.github.io/TryRuby/ | https://rubymonk.com/
https://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/rubocop-hq/ruby-style-guide
https://github.com/JuanitoFatas/fast-ruby
https://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-ruby
Q: Документация по стандартным библиотекам руби и рельс:
A: https://ruby-doc.org/ | https://api.rubyonrails.org
https://guides.rubyonrails.org
Q: Можно ли на руби писать нативные GUI, мобильные приложения, игры?
A: Да, но не стоит.
Q: Что ещё изучить?
A: Английский, git, linux. Паттерны. Один из часто используемых – Service Object.
https://www.sitepoint.com/7-design-patterns-to-refactor-mvc-components-in-rails
СРЕДА РАЗРАБОТКИ
Q: Как установить разные версии рубей?
A: https://rvm.io | https://github.com/rbenv/rbenv | https://github.com/asdf-vm/asdf
Q: Есть ли чат в Telegram?
A: @rubylang | @rubyschool | @rubyrush | @ruby_talks | @ruby_wdh
РАБОТА
https://hh.ru/search/vacancy?text=ruby
https://t.me/rubyjob
https://rubyjobs.dev/
https://www.upwork.com/
Не надо так перекатывать - обезьяна включила фильтр, спасибо /po/ и /wm/.
Достаточно одной ссылки.
Но ведь... Но ведь.. Пирикот всегда копипастился минимум три раза... Это же... Традиции...
Обычно три раза ссылка на тред и один раз линк.
Начни с себя, хуесос. Там и закончи.
Небо голубое, трава зеленая, а руби мертый.
Dolittle сука блядь, ёбаный андроид, ебать мой хуй. Программисты-пидарасы, блядь, Microsoft Word в 1997 году на компьютере Pentium 200 MMX безо всяких нейросетей и даже без интернета знал все словоформы и даже пунктуацию правильно подчёркивал иногда, а ёбаный телефон 24/7 подключённый к сети, передающий все данные Великому Богу-Машине, над которым трудятся лучшие умы человечества, подчёркивает мне красным слово «пункнтуация». Да вы, блядь, совсем там охуели что ли, пидарасы, блядь.
Японцы, хули с них взять.
Не мертвый, а вызревший, твердо и четко!
def memoize(func)
cache = {}
lambda { |args| cache[args] ||= func.call(args) }
end
Кеширование результата вызова функции. Чтобы не перевычислять ее заново для тех же аргументов. Называется memoization.
а в чем проблемо? call просто вызывает функцию
https://www.notonlycode.org/12-ways-to-call-a-method-in-ruby/
Если мемоизатор немного подругому написать и производительность сравнить
https://pastebin.com/cS0ujPpv
call работает на блоках/проках
ты же не можешь сделать
def hello...
hello.call
Но это работает внутри lambda {}
Сработает только если метод вернет lambda { p "hello" }
А может и не понятно. Ну ладн поизучаю. спс
Я читал well grounded rubyist и github. Да в принципе любая литература подойдет, главное читать и писать код. В руби я пришел с нетривиальным опытом в ФП(lisp, haskell, ml-family) и c++. Так что например и метапрограммирование и Enumerable мне были понятны сходу и интуитивно.
Параллельно уже начал курс по хтмс, ксс и джс, для общего развития и один хер надо знать базу. пожелайте удачи!
И еще вопрос, на рубях можно, что угодно написать? Типа приложение в которое как в личных дневник писать заметки и чтобы сохранять? Или например, свой блог, чтобы там заливать фотки или типа того? Или для всего этого нужно прям джс изучать и на нем писать фронт часть и только тогда будет работать?
Извиняюсь за тупые вопросы, просто интересно.
Хочу использовать файлы scss для стилей. Но не могу нагуглить как это реализовать.
Добавил гем sass-rails, но scss файлы не работают.
Помогите нубу.
>Роман Пушкин Программист Из Сан-Франциско(тм) свои книги и курсы бесплатно выложил на сайте
Первый раз вижу, честно говоря, 100 часов видео и книга на 400 страниц это серьезно, в том же metaprogramming ruby всего 250 страниц, скринкасты drifting ruby по 10-20 минут длятся, походу Роман Пушкин тот еще любитель присесть на уши и налить воды в текст.
> И еще вопрос, на рубях можно, что угодно написать?
С веб-интерфейсом - да.
> Типа приложение в которое как в личных дневник писать заметки и чтобы сохранять? Или например, свой блог, чтобы там заливать фотки или типа того?
> Или для всего этого нужно прям джс изучать и на нем писать фронт часть и только тогда будет работать?
Основной функционал можно с помощью HTML и ERB сделать, если надо какой-то суперкрутой интерфейс - жаваскрипт.
Есть две ветки: backend и full-stack. Во второй жабаскрипт знать надо, в первой - без него можно обойтись (грубо говоря, фронт будут писать другие люди, и это может быть мобильное приложение, например, которое разговаривает с твоим сервером). Ну ты сам поймёшь, нравится тебе жс или нет. В принципе, есть места, куда можно прийти джуном на фуллстак вообще не зная JS и CSS, и там по месту подтягивать, так что дальше основ фронта идти не надо, сфокусируйся на руби именно.
Свинина, эта лахта сейчас с тобой в комнате?
Зачем вы учите руби? (нахуя)
Тут учат не руби. Тут учат веб разработку. Второй ЯП выучить, дело месяца.
Кулстори
как выучить разработку?
Двачаю, то пыхтит работает, то хуяк хуйпоймичего и простой запрос сходить в БД на 2 селекта и вылюнуть жсон обрабатывает почти секунду. Потому хуяк все заработало
Получается, что здесь, как и в пыхе, только один путь - веб приложения по всеми вытекающими? Мне очень понравился язык, да и рельса тоже. Но вот перспектива сидеть и крудошлепить, верстать и ковырять js - такое себе.
>>390854
Спасибо. сохранил дрифтинг руби себе
Со всем этим, я думаю, можно разобраться, нужно время. Тут меня даже интересует перспектива хотя никто не может знать заранее, что если вкладываться в руби и рельсы, чтобы потом можно было либо на бек, либо на фуллстек идти.
Просто не хочется вложиться в одно и потом все равно через жс заходить на работу. Пока что навскидку жс меньше понравился синтаксисом и представление ооп в руби тоже ближе.
Пизжю, я всё же установил и чувствую вкус победы
Ну хз, ходи по аутсорс-студиям, там часто JSON API делают, а фронт какая-нибудь мобилка. Кто ищет - тот найдёт, у меня такой проблемы особо не возникало, только на одной работе типа-фуллстеком был (и там жсом не кормили, только html+css)
Какая ОС, какой шелл? Напиши /bin/bash --login и попробуй ещё раз
rbenv
«А что случилось», ты? Там уже даже до глубинного народа доходить начало, а хули, такие вещи они понимают. Рубль-то у нас вон какой, видали? Здоровый, сука! Правда, цены чё-то не падают, а наоборот. И где же работа, ведь я программист...
чёрт, как же хочется научиться кодить на руби......
я сам особо не программист, пишу на работе в жупитер ноутбуках на питоне скрипты, хочу вот в бекенд влетать, но говорят питон слишком популярен и тяжело вкатываться, я не обосрусь с руби и тем что он недостаточно популярен?
Я скорее вот об этом >>394014 (Del)
>>394032
Что это за рейтинг? По нему у рубей всё плохо. Вообще, поговаривают, что рубистам наиболее близок перекат в еликсир с фениксом потому что на хайпе или в свифт если хочется постоянства, но он не опенсорс.
>Что это за рейтинг?
Количество запросов в гугл, ясное дело в топе будет тот, на котором студенты лабы сдают.
>А хули там учить, он очень лёгкий как бейсик.
Без гугла сможешь пояснить за передачу аргумента в функцию?
Это тот самый Дэвид Хейнемейер?
Питон слишком популярен в качестве клея для других технологий. Если сравнивать конкретно веб-разработку бэкэнда на джанге и веб-разработку бэкэнда на рельсе - разрыв куда меньше. А если учесть, что 99% вкатунцов прут в питон, и смотреть на соотношение вакансий к соискателям, то руби выигрывает.
Ну и фуллстак на рубях попроще и поинтереснее, наверное, с хотваером и всем остальным. Но это если проникнуться.
500-800 часов, наверное, если есть предрасположенность.
Если "с нуля" - это ещё и с нулевым знанием английского, то больше, тут сам понимаешь.
Да.
Работаем.
Я, например, на двух проектах - один большой проект фуллтайм с легаси кодом в команде, один парт-тайм небольшой интернет-магазинчик в соляного, где я стараюсь все поддерживать в современном состоянии, насколько хватает времени.
>>395987 (Del)
Приведи примеры. ЗА 4.5 года ни одного мертвого гема не встретил, кроме всяких пейперклипов, которым еще года 3 назад пора было на свалку.
Что скажешь про вкат сейчас нубу в рф. Как учить и что учить. Сейчас книгу читаю. Видимо рельсы и где-то годик нужен?
Как потом работу искать? Ты на фрилансе?
В марте двух джунов взяли без опыта (я был против, но не мне решать - это даже не джуны, а стажеры - вообще без знания языка, один после пайтона, другой после жопы одина).
Сейчас немного освоились через тесты и анализ структуры проекта, получают от манагеров таски уже поинтереснее, пока не смотрел как справлются, своего хватает.
Как учить и что учить - вроде в шапке все есть, все актуально, даже если каким-то книжкам 3-5-6 лет, это не великая проблема.
Если надумаешь вкатываться - забудь про всякие хх.ру и т.п., юзай рекрутинговые агентства (вот эти джуны к нам так и пришли) либо сарафанное радио.
Я сам вкатывался несколько лет назад, работая манагером на кабанчика, параллельно решив сделать ему ИМ как пет-проект (это и есть теперь мой теперешний парт-тайм).
Не фрилансил никогда, только инхаус.
А, ну за синатру не знаю ничего, я только по рельсам, увы.
>>396297 (Del)
Ну повезло, рад за тебя, вполне искренне. Много народу жалуется, что через хх, суперджобы, сложно найти подходящее, плюс с противоположной стороны знаю, что хорошие кабанчики на этих сервисах почти не размещаются. Самому не доводилось пробовать, как-то сама работа приходила всегда.
>>396299 (Del)
37, вкатывался уже за тридцатник, до этого в старших классах на крестах рогалики пилил, потом много лет не до погроммирования было.
Ну, кстати, этож опенсорс, кто тебе мешает заняться, ххе?
Вон в том же evrone, говорят, доплачивают за коммиты в опенсорс-проекты в свободное время.
Спс за ответ.
>>другой после жопы одина
Это что значит?
>Как учить и что учить - вроде в шапке все есть, все актуально, даже если каким-то книжкам 3-5-6 лет, это не великая проблема.
Понял, с жс я заметил другая ситуация, тупо всякие статьи больше 2х лет уже совсем ниче не пашет...
Про агенства не знал, спс. Такие агенства типа берут мзду и создают CV, а потом уже предлагают тебя или как это работает?
Алсо, слышал, что хоть курсы всяких гикбрейнс и подобных контор хрень, но мол там есть плюс, что HR ждут тех кто закончил и предлагают работу. Но у меня один хуй нет столько денег сейчас, чтобы потратить 100к на курс или сколько там сейчас
>>другой после жопы одина
>>Это что значит?
Odin Ass. Битрикс, короче.
>>Понял, с жс я заметил другая ситуация, тупо всякие статьи больше 2х лет уже совсем ниче не пашет...
Ну если ты в рельсы вкатываешься, то либо бэкендером - там жс другие люди заниматься будут, либо фуллстэк, тут жс нужен, да, но, по сути, только азы:
https://learn.javascript.ru/ - вполне достаточно и трети/половины, остальное покрывают всякие встроенные в релься ujs/hotwire/turbo и т.п. В легаси проектах активно jquery еще крутится - там вообще все просто.
>>Такие агенства типа берут мзду и создают CV, а потом уже предлагают тебя или как это работает?
Вроде того, но потом можешь через эту тему уйти в инхаус и перестать башлять проценты агенству.
>>слышал, что хоть курсы всяких гикбрейнс и подобных контор хрень
Правильно слышал. Почитай вот, например: https://vc.ru/search/v2/content/relevant?query=geekbrains
>>мол там есть плюс, что HR ждут тех кто закончил и предлагают работу.
Неправильно слышал. Сертификаты этой хуеты ничего не стоят, т.к. учат там хуй пойми чему и зачем, плюсом, бабки ты не вернешь, если просечешь на середине курса, что это лажа и тебя там никто ничему учить и не собирался. Инфонаебизнес как он есть. Подробности по той же ссылке выше.
>>396360
Не в курсе, сорри, не узнавал откуда нам джунов прислали, знаю только что рабочая тема.
Спс еще раз, теперь лучше врубился. Я как раз про фулстек думал, чтобы врубаться че происходит. Мне современный веб не очень нравится, потому что жс стал чем-то типа флеша, но его не отключишь, сайты тупа не работают если отрубить.
Еще и башлять процент агенству с зп, звучит пиздецово, но я все равно пока не шарю че как.
Почитаю с сылку, спс.
>Нет ли ощущения тумана в голове или постоянной ленивости?
Дохуя и больше. Мотивация - жена, ипотека, кот, хех.
На самом деле за последние пару лет чуть не спился к хуям, кое-как вылез, когда понял сколько трачу и сколько недополучаю.
>Еще мало сплю, может дело в этом.
Тоже немаловажный фактор, к слову.
Можешь еще ответить на пару вопросов, плс.
Ты на удаленке и джуны тоже?
Я из мухосрани где вообще таких работ не бывает, максимум пара вакансий одна на пыху, другая на жс в веб студию +пыха ковырять вордпресс
Так что мне либо удаленка, либо переезжать.
Как считаешь сколько нужно вложить человекочасов, чтобы попытать удачу через эти агенства или еще как?
Так как тут анон писал? >>395684
Мне можно, например, по пути сделать пару ИМ для знакомых, пару одностраничников для всяких знакомых репетиторов и тп. думаю вот, это вообще релевантный опыт или нет, потому что на рубях наверное легаси в основном всякое?
>Ты на удаленке и джуны тоже?
Да. У нас так устоялось еще до ковида.
>Я из мухосрани
Конкретнее?
>Как считаешь сколько нужно вложить человекочасов, чтобы попытать удачу через эти агенства или еще как?
От тебя зависит, на самом деле.
Тот анон писал про 500-800 часов - имхо, завышенная цифра. Актуально только если ты вообще ноль в вебе. Если есть базовое понимание того, что вообще происходит в плане MVC, HTML, CSS и проч, то я бы сказал, что часов 300, если заниматься хотя бы по 3 часа в день. Это получится 5 месяцев, если на выходных заниматься своими делами. Вполне джун.
>по пути сделать пару ИМ для знакомых, пару одностраничников для всяких знакомых репетиторов и тп.
>это вообще релевантный опыт или нет
Более чем релевантный. Про легаси - ну да, его очень много на рынке, но это не сильно принципиально, на самом деле. Рельсы - это convention over configuration, в первую очередь. Поэтому вкатиться в легаси-проект, изучая актуальные версии, не очень сложно (наоборот - не факт).
Тем более что ветка 5.2.х (самая распространенная, пожалуй) 1 июня сего года EOL, сейчас многие легаси-проекты будут думать об апгрейде.
Спс за развернутые ответы.
Я скорее нуб, чем нет, хтмл, ксс ковырял, жс мало.
>Конкретнее?
В.Новгород, который под питером грубо говоря.
Ты поехавший какой-то. Любой может написать: "Можешь еще ответить на пару вопросов, плс.", где там отсылка к предыдущему анону который вопросы задавал?
Мимопроходил - не гони на Новгород, это далеко не мухосрань, бывал в вашей области по работе часто. Ладно если бы ты в каких-нибудь Боровичах сидел. Вот тогда бы и ныл. В твоем случае можно без сложностей рассматривать варианты из Питера, в случае необходимости прыгнуть в ласточку и докатить за 3 часа или сколько там у вас до СПб.
Я и сам Новгород люблю. И все мои друзья, знакомые тоже Просто, что локальных работ нет, а каждый день по 3ч. туда и обратно на ласточке гонять сам понимаешь вариант так себе.
> Если надумаешь вкатываться - забудь про всякие хх.ру и т.п., юзай рекрутинговые агентства (вот эти джуны к нам так и пришли) либо сарафанное радио.
Можно подробнее про это?
Вопрос: сильно ли будет сложнее сделать это всё на электроне? Чтобы юзверь кликнул на иконку и запустил окошко? Или я заебусь руби к нему прикручивать? Там много джаваскрипта надо знать?
Я рекрутингом и собесами не занимаюсь, делюсь только инфой о том, откуда к нам люди приходят + привожу подобные доводы, учитывая некоторые собственные наблюдения. Прав я или нет - хз, на самом деле. Т.ч. подробностей давать не буду, чтобы не получилось так, что я что-то посоветовал, а оно не взлетело в каком-то частном случае. Единственный момент - обязательно проверять агентство на скам хотя бы немного + сразу разворачиваться и уходить если, например, начнут впаривать какие-нибудь негосударственные пенсионные фонды, расширенны пд и подобную хуету.
>>398857
>Чтобы юзверь кликнул на иконку и запустил окошко
Ты только что PWA, зачем тебе еще и электрон?
>Там много джаваскрипта надо знать?
Нет. Можно даже почти совсем не знать.
>>398859
Ну "с нуля" можно по-разному понимать. Секретутка или хрюша, которая на клавиатуре ищет эскакдоллар или жэкакгермания - это тоже "с нуля".
>поднимать веб-сервер на синатре на локалхосте и говорить юзеру, чтобы открыл браузер
>на электроне?
>заебусь руби к нему прикручивать?
Да, просто запустишь электрон на руби, ярлыком с рабочего стола стартанешь веб-сервер синатры на локалхосте, та через FFI отдаст веб-интерфейс.
>Хочу сделать маленькую приложуху с веб-интерфейсом для конфига и раздавать её домохозяйкам. Самый простой способ - поднимать веб-сервер на синатре на локалхосте и говорить юзеру, чтобы открыл браузер. Вроде работает как надо.
>Вопрос: сильно ли будет сложнее сделать это всё на электроне? Чтобы юзверь кликнул на иконку и запустил окошко? Или я заебусь руби к нему прикручивать? Там много джаваскрипта надо знать?
>Glimmer DSL for LibUI supports bidirectional (two-way) data-binding
Неужели у кого-то дошли руки допилить гуй на руби до вменяемого состояния, даже не верится что это случилось.
Нах те мертвый руби, когда есть питон и по любому запросу типа tg python bot тебе миллион инфы выдаст?
Я не умею кодить, хочу научиться и хотел на рубях, вот по этому.
Посмотрю по твоему запросу что в гугле.
Были два первых языка которые много лет назад попробовал: ruby и java но я всё дропнул тогда
Ну ты понял шо засело мне в подсознание, закрываю гештальт.
У питона всратый синтаксис, как уважающий себя человеком может на нем писать?
А после руби я вообще не знаю на чём можно писать, это лучший синтаксис ever.
Питон и правда всратый, назови хотя бы еще один язык, в котором принято отбивать вложенность кода табами? Кому вообще пришла в голову такая дурная идея? Не говоря уже про объектную модель, по своей организованности которая не далеко ушла от пыха.
не стоит вскрывать эту тему, анон) Иди в питонотред
Нишмагли в JIT-конпелятор.
Убедительного ответа никто не дал до сих пор.
А как оно работает? Рубишный рантайм запаковывает?
>Получается, что здесь, как и в пыхе, только один путь - веб приложения по всеми вытекающими?
По факту, так и есть. Большинство вакансий - фуллстек. Перспектив практически нет. Унылое старое легаси с тучей гавно кода, как на руби так и на жаваскрипте....
>А зачем ему обновляться?
После джаваскрипта непривычно видеть что то, что не обновляется каждый день лол, хотя репозиторий живой.
>>408857
>Перспектив практически нет. Унылое старое легаси с тучей гавно кода
Че рил все так плохо ? Я изначально в жс вкат начал, но нода мне показалась не оч дружелюбной да и вакансий на ней так же мало как на руби для ждунов.
>Унылое старое легаси с тучей гавно кода, как на руби так и на жаваскрипте....
Суть любой работы, даже если ты запилишь собственный проект с нуля и он начнет развиваться, через несколько лет программа превратится в легаси с тучей хуиты, это неизбежный жизненный цикл любой более-менее сложной программы, независимо от языка.
И к слову о говнокоде, у руби есть все инструменты чтобы не превращать код в говно, собственно в этом и смысл существования руби, сам Матз постулирует - the language is “optimized for programmer happiness.”, а какой первый пункт этого самого happiness? Поменьше говнокода разгребать, и вся экосистема руби в целом с этим успешно справляется.
>Ruby 3 реально работает очень быстро?
Скорость это не про язык и не про фреймворк, это про архитектуру самого приложения, как кэши организованы, как данные хранятся, какое количество запросов требуется для извлечения информации, блокирующие операции и так далее, синтетические бенчмарки и таблицы с цифрами, которые показывают скорость отображения пустой страницы - не имеют практического смысла, если всё же хочешь бежать за цифрами - тебе в go или rust, а скриптопараша вся идет мимо когда появляется критерий "очень быстро", потому что в программировании "быстро" и "легко в разработке" - взаимоисключающие понятия.
>После джаваскрипта непривычно видеть что то, что не обновляется каждый день лол, хотя репозиторий живой.
Так ты про софт или про сайт? Софт (RVM) вполне себе обновляется изредка (а ему и не нужно часто - он просто работает). А сайт.. а зачем? Вся инфа в одном месте, разложена по полочкам, старикан с тростью на месте, чего еще надо-то? ) У rbenv вон вообще сайта нет.
Shoes -- всё, после исчезновения автора ещё тянули, но теперь помер
Загод дата анализа)
Пчел, почему ты не решил вкатиться в джанго, если как-то знаешь python
>Shoes -- всё, после исчезновения автора ещё тянули, но теперь помер
Есть же нормальный гуй https://github.com/AndyObtiva/glimmer-dsl-libui
Уже прикрутил себе формочки для пары консольных утилит, даже переписывать не пришлось, вполне юзабельная штука.
>Стоит катиться в руби?
Во всех языках сейчас одна сложность - до мидла наковырять опыта. Для мидлов работа есть. Как ты станешь мидлом уже никого не ебет,
в некоторых вакансиях уже стали писать ДЖУН ПЛЮС )) и 2 года опыта ))) что бы отсеять еще больше вкатунов.
Можешь взять с ютуба уроки по рельсам, ставишь рельсы, запускаешь проект и ковыряешь сайт, синтаксис языка и так понятен если уже с каким то знаком. Я щас так и делаю.
Ну потратишь месяц условно, зато разберешься как сайты работают. Базы данных одни и те же везде - монга и sql.
Принципы везде похожие как я понял, по сути ничего не теряешь.
Чатики в телеге по руби живые, вакансии для джунов - 1-2 в месяц появляются )).
Ну рисовать линии на канве - такая хуйня, чарты под капотом это везде треш и угар, без исключения.
а сохранять в бд там можно или это больше как клиент?
выбор даты кажется работает не оч. Нет системного календаря
Да вроде обычный календарь.
В БД твоё приложение сохраняет, а это просто компоненты на форме, которые цепляются к данным.
У меня окошка этого не появляется
Хотя все начинает тормозить если много записей. Но добавить ui к скриптику норм тема
А ты на нём писал? Ну как, уже встречался со сценариями, когда какой-то АПИ может вернуть (но по факту никогда не возвращает) nil, и как после этого код вызова этого АПИ выглядит?
>протирал 2 года штаны
Для меня ответ да, потому что мидол в моем вкатунском понимании это чел который уже самостоятельно работал с боевыми задачами, большими проектами, плавал в говнах, багах и т.п.
Возможно этот опыт можно и самому дома получить, если запилить какой нибудь огромный проект с кучей зависимостей, баго, но так делают только чеды.
Хайп прошел. Сейчас на хайпе пайтон, php, java. Когда-нибудь их хайп тоже пройдет, и они станут как руби. Это закон-условность круговой поруки. Ничего личного, просто людские умы (стадный разум).
Так-то можно жс отключить, может даже всё норм будет.
Посоны, каким вержн-менеджером пользуетесь?
- rbenv
- asdf
- rvm
- что-то еще?
Уходили ли с одного на другое из-за каких-то проблем?
Потому что он остался в своем времени когда все остальные языки двигались дальше. Только к 3 версии что-то попытались JIT например, но было уже поздно. Надо отдать должное руби мир в свое время был впереди всех и принес много новых вещей. Короче его эпоха уходит
>>430160
Благодарю за отзывы, аноны.
Эх, мало здесь людей.
>>431337
А кто как двигался? И какие альтернативы у рубей?
Тоже спршиваю не холивара ради, а потому что недоумеваю.
Я в своей практике работал на руби, потом на го. Ну и немного общался с бывшими питонистами, немного с джсерами, плюс информация "из фона", типа подвернувшейся статьи в интернете, о том как кто-то пересаживался с руби на джс, например.
Короче у меня сложилось впечатление, что с точки зрения классической веб-разработки руби и рельса - авангард по сей день. Судил я по разным аспектам типа орагнизации проекта, тестирования, орм и тп - там эти вещи какие-то деревянные/необтесанные. (Конечно, я не писал ни на питоне на на джсе, могу сильно заблуждаться).
И вот как-то так сложилось, что рынок у питона, джс (тем более пхп) сильно больше. Бизнесу гораздо выгоднее начинать новые проекты на популярном стеке - факт. Но чисто с технической точки зрения, конкретно для веб-разработки, я не понимаю, в чем руби может уступать. Скорее только наоборот.
Но вот пописав на гошке у меня порвался шаблон. Поскольку все типизировано, то стек вызовов прозрачен насквозь, в пару кликов можно добраться до самых кишок библиотек, видеть что и где вызывается, четко понимать что на входах и выходах. И это блять прям другой мир. Хоть я и плевался и плююсь от го, там полно дерьма, но реально теперь даже не знаю каким путем идти дальше.
>орм
Активрекорд полное говно, тормознутое пиздец, а ещё бывают криворукие дебилы начинают неправильно её юзать, например в сериалайзере писать так чтобы волнялся запрос, вместо того чтобы приджойнить снаружи в контроллере и получаются запросы в цикле и ещё 1000 и 1 способ выстрелить в ногу. Как она мне не нравилась. Сейчас пишу чистые SQL запросы это небо и земля, вместо того чтобы ебать себе мозги с орм я иной раз всю логику убираю на уровень запроса.
>Но вот пописав на гошке у меня порвался шаблон. Поскольку все типизировано, то стек вызовов прозрачен насквозь, в пару кликов можно добраться до самых кишок библиотек, видеть что и где вызывается, четко понимать что на входах и выходах. И это блять прям другой мир.
Я тоже в ту сторону ушёл, только в раст, тут аналогично всё можно поглядеть от и до, а ещё компилятор лютый помогает косяки исправлять и заставляет задумываться над владением, мутабельностью и временем жизни у переменных, если ошибки и есть то только в логике.
>А кто как двигался?
Почти все пошли в сторону ввода в языки тайпхинтинга, пыха с питоном ввели в синтаксис, для js сделали тайпскрипт по сути можно даже питы не прописывать и писать как в обычном js только единственно не даст в ногу выстрелить например когда строки с числом складываешь вот только у руби получился какой-то костыль из отдельных файлов, оно и понятно синтаксис не позволит нормально такое провернуть.
Еще все движутся в сторону jit компиляции, где руби отстаёт и в сторону асинхронности, даже в пыхе что-то делают.
И какие альтернативы у рубей?
php, python, js
Чего тебя порвало так?
ты че, пес, я cto
В Ruby 2 JIT'а, один от Shopify
Типы вынесены отдельно, по аналогии с HTML / CSS
Наоборот красиво сделано
>у руби получился какой-то костыль из отдельных файлов
>синтаксис не позволит нормально такое провернуть
Смешно, это вопрос не синтаксиса а подхода, тайпчекинг в скриптовых языках это просто этап тестирования, ты же не пишешь тесты в исполняемом файле? (хотя я видел такое в питоне практикуют)
Утилита rbs тебе под проект генерирует untyped-скелет с классами, которые и правишь по необходимости, вообще не прикасаясь к рабочему коду, это и есть нормальный подход.
>руби отстаёт и в сторону асинхронности
Асинхронность в языках с глобальным локом вообще отдельная тема, почти везде это коллбэчное наебалово и хаки, достаточно загуглить "Async Python is not faster" чтобы прикинуть фундаментальность проблемы, и в руби 3 завезли настоящий параллелизм в виде акторов, только чтобы писать такой код нужно внезапно быть в состоянии реализовать архитектуру программы с параллельным выполнением, так что вкатунам я бы не советовал забивать голову такими вещами.
Получается править нужно в двух местах при необходимости, мне нравится как в пхп и питоне это реализовано просто пишешь типы в этом же коде и все наглядно видно
>все наглядно видно
"Наглядно видно" с определенным количеством кода превращается в "насрано на экране", чего руби всеми силами старается избегать, такая уж философия языка, программист сам решает посредством IDE какую информацию он хочет видеть а какую нет, если прописываешь типы прямо в коде у тебя такого выбора уже нет.
Юзаю Faraday, у него дефолтный адаптер Net::HTTP.
Составил запрос, выставил заголовки как надо. В курле - все ок. Из скрипта получаю 403.
Бред какой-то. Единственное, что мне приходит в голову, что поведение библиотеки на уровне протокола как-то отличается и сервер фильтрует запросы по этому признаку слышал, что в туркменистане так голенговская библиотека попала под пиздорез.
Как проверить вообще такое?
А как можно посмотреть фактический https-запрос который уходит?
Эмм, вот ты меня в тупик поставил.
Но нет, ссылка https-ная и если обращаться по http, то 301 редирект. А я 403 получаю.
Сейчас не могу проверить, но планирую попробовать какой-нибудь curb использовать. Если его пропустит, то это будет конечно ахтунг.
Дебс, а скинуть ссылку в тред тебе не пришло в голову. Думаешь тут экстрасенсы твоей криворукости?
добавлю что пздц конеш. А почему faraday, а не httparty?
>Дебс, криворукости...
Господи, сколько же вас болезненных озлобленных униженных калек.
Парень, ты настолько уверен в своих знаниях? Настолько невъебенно крут, что считаешь, что можешь так обращаться к первому встречному?
По поводу ссылки, я не свечу ее сознательно. По поводу криворукости, не тебе быдлотине судить.
Больше мне, дебил ебаный, не пиши.
Да не трясись ты так, подсос
Например? Что он должен оборачивать, и как будет выглядеть код, использующий твою либу?
> Бред какой-то. Единственное, что мне приходит в голову, что поведение библиотеки на уровне протокола как-то отличается и сервер фильтрует запросы по этому признаку
Я постоянно, когда натыкаюсь на непонятные баги, грешу на рукожопов, которые своим гемом что-то манкипатчат.
В 95% случаев рукожопом оказываюсь я.
В 95% случаев рукожопы манкипатчат и метапрограмируют все, до чего руки дотянутся, вместо того, чтобы сделать обычный изолированный прямолинейный интерфейс без выебонов. Фарадей хороший пример такого.
Вообще да. Когда впервые открываешь для себя динамическое генерирование методов или ещё какую хуйню - выглядит суперкруто. А когда в консолечке в очередной раз пишешь Klass.instance_method(:zalupa).source_location, потому что хуй пойми, откуда оно берётся, и натыкаешься на вот такое - что-то восторг подувядает.
Рельсе, конечно, можно, хули мы ей предъявим, но когда гем простой как два пальца - брррр
РЖД - передовые технологии
Дошли сегодня руки поразбираться.
Короче, вот если кому интересно, на скрине результаты моих мытарств - все клиенты работают, кроме родного рубишного.
В проекте пока решил просто поменять клиента на Typhoeus (под капотом либкурл).
Что это такое хз. С одной стороны вряд ли это какой-то фильтр, потому что тогда не должны были бы работать, например, гошные запросы (ибо известно, что их можно различать). С другой стороны 403 на нормальный запрос это мммаксимум странно.
Сайт который я паршу - одна достаточно известная доска объявлений
Метасплоит же через рубишные либы работает с сетью, легко мог попасть в блеклист какого-нибудь фаервола, есть за что его блочить - инструмент хакера как ни крути.
Новую базу данных можно развернуть из файла schema.rb, после того как миграция выполнена везде где требуется обновление и откат исключен - эти файлы можно просто удалить.
>Есть какая-то литература для продолжающих?
Для продолжающих уже более фундаментальные вещи - sicp можно почитать (позиционируется для начинающих но по факту без опыта эта литература не заходит), Страуструпа, Банду четырех, кароче классику. Конкретно по руби есть почтовые рассылки - ruby weekly, ruby digest, из них попадаешь на блоги грамотных разрабов, которые глубоко копают в своих исследованиях, у них можно почитать и предыдущие публикации.
> одна достаточно известная доска объявлений
Пчел, ну ты и одибиливший швайнокорась. Почему бы просто не дать ссылку на пример объявы или на весь сайт пздц прост
Еще зачем-то в текстовый редактор вставил. Проорунькал чет
Никак нагуглить не могу. Загадка.
Я о том и говорю что может быть клиенты требующие старый протокол идут нахуй на Cloudflare а остальные давайте сюды
Что с клиента приходит то и попадает, похоже на какие-то манипуляции с календарем.
Ебанутые числа это, очевидно, unixtime.
Если ты вкатыш, гугли; если джун, обратись к ментору; если ты мидл, то нет, ты не мидл.
> Что это такое хз
Может быть это: https://daniel.haxx.se/blog/2022/09/02/curls-tls-fingerprint/
Ага, а 1662548583660 - это тоже вложенность?
>>457817
Ды фулл-стак приложение на рельсе, simple_form присылает формочки.
>>458112
Ага, то есть, вечером одного дня было 1662479789022, утром следующего - 1662548595470
Тогда получается, если это секунды, то за ночь прошло 19112 часов, если миллисекунды - то 19 часов, охуенно, да?
Да хоть бы и юникс тайм, вопрос не в этом, вопрос - почему оно там берётся.
А браузерный инспектор во вкладке "Сеть" для post-запроса этих заголовков не показывает? TLS и cloudflare в теории могли насрать туда, точнее веб-сервер или прокси который всё это терминирует мог добавить какой-нибудь мусор, но на дев-машине всего этого нет и было бы чисто.
Таймстемпы в миллисекундах делает джаваскрипт. Ты на работе эту хуйню ковыряешь или где? Спроси у фронтовых разработчиков, что они там засылают и когда.
> Тогда получается, за ночь прошло 19 часов, охуенно, да?
А что не так? Я столько обычно и сплю.
На работе, да, но там фронта выделенного нет, рельсовские формочки просто. Короче, я забил и перестал полагаться на значения ключей.
Погоди, ну тебе прилетают параметры в контроллер, ты же их фильтруешь всё равно? Аналог private person_params как в пикрил у тебя же есть?
Да просто там уровни вложенности косячно расположены (потому что там некоторых объектов может не существовать, и вложенные формы в них не отрендерятся, поэтому некоторые инпуты кладутся напрямую, но потом их надо запихать поглубже (то есть ручками парсить эту структуру, обычные permit-require не то вернут), чтобы передать правильный хэш в update_attributes или что-то такое. Я уже из головы этот кошмар выкинул.
Хули ничего не работает тут у вас?
Поставил пакет ruby в debian 11 и получил ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux-gnu]на самом деле это wsl, а не debian)
Поставил vscode в винде.
Поставил расширение https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby
Делаю debug и ничего не происходит!
Мне обязательно теперь ставить ruby3.1 и как все додидки ставить rvm ? Не хочу систему засирать просто.
Не мог же debian11 устареть?
отбой
кое-как разобрался https://github.com/rubyide/vscode-ruby/blob/main/docs/debugger.md
плохо что ничего не работает само и в инсталляторе нет никаких описаний
блин, а с этим багом что делать?
https://github.com/rubyide/vscode-ruby/issues/618
вообще ничего не понял что он сделал чтобы проблема исчезла
подчеркну: я не собираюсь глубоко изучать ruby.
Мне просто нужен отладчик в vscode и незасранная система
https://bugs.launchpad.net/ubuntu/+source/puppet/+bug/1875848
export RUBYOPT='-W0'
ну, спасибо, блять.
господи, что за отсталое коммуники? как вы не этом пишете?
>Windows
>WSL
>debugger
Ну так и ищи как в винде под всл настраивается дебаггер, причем тут руби? Сам же ставишь экзотику какую-то через костыли.
Доброго вечора.
у меня все остальные языки (python, go, nodejs) обычно заводились с первого раза. Эффект масштаба зашлифовывает мелкие проблемы.
А тут у вас что-то все плохо.
На самом деле тут обычный debian 11. Считать это костылями нельзя.
Просто все (зачем-то) привыкли ставить ruby version manager.
А я так не люблю.
Кому нужна шинда в 2022?
1. Не ойтишникам нужен телефон или планшет с iOS
2. Директору Mac чтобы графики прибыли смотреть
3. Ойтишникам PC c Линукс.
4. Школьникам консоль чтобы играться.
Так у тебя какая проблема, кнопка debug не работает в vscode для руби запущенного под wsl не костыль, ага?
>зачем-то) привыкли ставить ruby version manager
Как раз чтобы не засирать систему, rvm ставит руби в домашнюю директорию пользователя, с правами пользователя, apt поставит пакет в /usr/bin и /var/lib, еще и будет просить админских прав на каждое шевеление бандла с гемами, так что вопрос чистоты системы и последующей мозгоебки с программами как раз в пользу менеджера версий. Ну если тебе это всё не нужно то всегда можно добавить репу со свежей версией руби и поставить свежий пакет оттуда, точно так же как это делают для питона, го, ноды и вообще почти любой программы в дебиане.
Так debian 11 - это и есть незасранная система.
"не засирать систему" для меня означает, что у меня только системные пакеты и я могу из единой точки обновлять и устранять уязвимости. Вот вот такие бывают интересы у людей, представь себе.
Да ладно, че вы возбудились?
Работает у меня. Но руби все равно хуевый и непопулярный.
В смысле умер? Всегда примерно такой постинг был.
для вката и работы спрашиваю, но пока учусь понятно, что буду что-то своё делать. вроде всё указывает на пыху, такой уж рынок рф, но хочется рубями обмазываться и хотвайром в перспективе....
Когда ты доучишься IT рынок РФ буде представлять из себя кучку задротов в НИИ, которые пилят прошивки для ракет, так что лучше вкатывайся сразу в сишку под эмбеддед.
Я вот кстати тоже перед таким выбором стоял в своё время, в универе были лабы на пыхе, сделал условный интернет-магазин, потом сделал тот же самый магазин на asp.net, потом на рейлс, в итоге через один курс диплом защищал уже на руби он рейлс с более сложной программой. Руби для студента очень хороший выбор как мне кажется, простой и выразительный язык с очень мощными возможностями, логичный и хорошо структурированный, после джавы и шарпа с его asp mvc я просто как свежего горного воздуха вдохнул разбираясь с руби, как сейчас помню это ощущение. Так что тебе как студенту лучше пробовать писать на всём до чего руки доходят.
> Школьникам консоль чтобы играться.
Анекдот в тему!
Плейстешен демонстрируют игрокам распродажу.
— Вот, товарищи геймеры, скидки до 75%! Петров!
— Я!
— Купи наши игры.
Петров тужится, пыжится, не купить.
— Не получается.
— Сидоров, помоги Петрову
Пытаются вдвоем, та же ситуация.
— Не получается.
— Иванов, помогай.
Пыхтят втроем. Купить не могут.
— Никак не купить, товарищ издатель!
— А хули вы хотели? Данный товар недоступен в вашем регионе...
add_reference :books
добавляет foreign_key: true автоматически. Или я не понимаю смысла foreign_key?
Да, можно явно указать
add_reference :posts, :author, null: false, foreign_key: { to_table: :users }
промазал
>Всегда думал что
>add_reference :books
>добавляет foreign_key: true автоматически. Или я не понимаю смысла foreign_key?
Хороший вопрос. Нет, не добавляет, по дефолту только индекс и поле id.
В чем же тогда смысл foreign_key, если рейлс его по умолчанию игнорирует? С foreign_key во время записи база данных будет проверять наличие id, на который создается ссылка, если его нет то транзакция упадет. Если внешнего ключа на уровне бд нет то запись будет добавлена, и во время обращения к ассоиации активрекорд тебе вернет nil и в базе данных будут ссылки на записи, которых не существует. По уму конечно внешний ключ лучше прописывать, безе будет чище.
Когда генерируешь миграцию (rails g migration .... references: books) - то добавляет. Если ручками миграцию пишешь, то ручками foreign key и дописывай.
>Что ты несёшь?
https://guides.rubyonrails.org/active_record_migrations.html
В официальной документации ровно то, что я "несу".
ещё жысоны перекладывать
в SketchUp используется как внутренний язык
>RubyRussia
>2022, 30 сентября - 1 октября, онлайн
>Два дня, 14 новейших докладов, запись в 4К - всё это RubyRussia’22. В конце сентября мы соберём рубистов со всей России и ближнего зарубежья, чтобы с ведущими разработчиками обсудить будущее нашего любимого языка и всего, что построено вокруг него.
Есть 15 2015
Рассматриваю прошки 14/16 (с 16 наверно имеет смысл брать 32/32 1tb)?
Sequel вместо ActiveRecord
GraphQL вместо REST
Fibers вместо Threads
<secret> вместо Sidekiq
Kafka вместо Rabbit
(c) samokat.tech
Sequel вместо ActiveRecord
GraphQL вместо REST
Fibers вместо Threads
<secret> вместо Sidekiq
Kafka вместо Rabbit
(c) samokat.tech
Что мертвей, lua или ruby?
Не нишевый, но мертвый?
Аноны, есть ли смысл вкатываться в раби?
В унике пишем на си и перл, но боюсь что с этим работу не найти.
Живу в Эр Эф если что
Я остановился бы на бэкенде веб приложений, наверное, почему то считаю это самым лёгким для вката. База в программировании есть у меня и на работе на питоне пишу скрипты. Не понимаю что лучше: популярный язык, много материалов, вакансий, но и конкуренции со вкатунами. Или менее популярный язык, с меньшим количеством материалов для обучения и с меньшим количеством вакансий, но и с соответственно меньшей конкуренцией для вката. Возможно это так не коррелирует, но я пока так думаю.
Чел, так ты не хочешь программировать, ты хочешь чтобы полегче вкатиться и чиллить на удалёночке за 300к.
Катись в похуйпэ. Упругим зумерам оно не интересно, а работы ёбнешься.
Меня беспокоит, что я выбрал стек рор и чето работы на хх и хабр вакансиях вообще нихуя. Переодически чекаю и например на хх, выбираю рф, выбираю программирование и мне выдает типа 100 вакансий на всю страну, к тому же, после первой же страницы уже вакансии без рельс, какие-то системные администраторы и т.п. Что-то меня удручает такая картина и я не понимаю, что хантят после курсов вкатунов или что? Потому что курсов по рубям тоже не мало в рф. Меньше чем по пихону или жс, но они есть и интересно почему если вакансий практически нет.
Ответ прост: если что-то не устраивает, то перекатывайся на другой стек. В рф, очевидно, руби медленно умирает (хз как за бугром). Работа, конечно, ещё будет лет пять, но вакансий, как ты заметил, мало. Значит и выбор не такой широкий будет у тебя. Попробуй посмотреть в сторону пайтона, ноды, го, с#. Ну ещё пыхи и жабы (если хочешь колупать говно мамонта).
>Есть в треде
Есть. Не могу говорить за других, но лично у меня все ок.
По поводу вакансий - смотри в шапке, в том же канале в телеге каждые пару дней что-то выкладывают.
>Что-то меня удручает такая картина и я не понимаю, что хантят после курсов вкатунов или что?
После курсов не хантят никого и нигде. Разве что аутсорсинговые агентства.
Кстати, можешь к ним и попробовать обратиться, но комиссии у большинства конские, а серьезные конторы типа evrone хантят от мидла и выше.
Ну в целом руби - неплохой язык для вкатуна в веб. Потом в тот же питон очень просто будет вникнуть. А от пыхи будешь плеваться, да.
Ну а жс один хрен на базовом уровне хотя бы нужен везде.
>Пятая пыха и седьмая+ это дохуя разные вещи
Дело не в версии пыха а в его кодовой базе, с которой предлагают работать и за которую платят, битриксы-хуитриксы, вордпрессы, сляпаные на коленке цмс, вот это вот всё имеют в виду когда говорят про плохой пых, а не версию интерпретатора.
>это примерно как шиндовс и (догоняющий, ололо) реактос
Не понял, кто кого догоняет? С чем ты вордпресс сравниваешь?
Вкатись в пыху, отработай годик, перекатись в рельсы - война закончится, вакухи появятся да и с попытом в вебе работу гораздо легче искать будет.
Да я тоже так подумал. Пока все равно изучаю только руби и рельсы. Хтмл, ксс и жс немного знаю. Мб ещё год на обучение уйдет, а там посмотрю. Пока самое подходящее это пыха+ларавел, а потом уже с опытом на рельсы.
Я хочу в продуктовых компания работать, знаю в каких и их стек, но это нужен опыт+эмиграция и т.п. а это ещё лет на 5 думаю.
Если там карту банка получить, то ей можно расплачиваться за сервисы за пределами Грузии, например на Amazon книгу купить? И какой у вас банк. Я слышал что в Bank of Georgia есть какие-то ограничения, но не в Liberty Bank.
Но никто так не делает.
Да есть вакансии, просто #джуныненужны
И так не только с RoR
Вкатывайся на фронт и параллельно учи RoR, а там видно будет
чем ты управлять собрался, управленец)
>Руби, блядь, как Ленин
Как говори Маяковский: "Ленин - жил, Ленин - жив, Ленин - будет жить!"
И Руби будет жить пока всю его синтаксис и семантику не перенесут на что-то более производительное, такие вещи как эликсир и кристал в общем-то показывают направление движения, но ресурсов для реализации нужно несопоставимо больше, как в более совершенном обществе будет построен коммунизм, так и на более совершенных технологиях будет построен Руби 4.0, главное не терять верный курс, товарищи!
Сам отвечаю. Нужно ставить brew для i86 и устанавливать i86 версию rbenv и другие gem'ы С новыми гемами может все и хорошо, но со старыми есть проблемы
> эликсир
Ужас ужаснейший с постоянными провалами в абстракциях, чуть что - беги читать доки эрланга. Да и в целом не представляю, как без ООП писать жирные системы. Но как упражнение - сойдёт, немного функциональщины в голове не помешает.
> кристал
Уже лучше. Если только на сервере, то вообще хорошо (нужен целый ворох библиотек в рантайме, а со статической линковкой, как я понял, в LLVM-based везде всё очень грустно). Там вроде интерпретатор допиливают, чтобы на каждый чих в девелопменте не перекомпилировывать по часу.
> чуть что - беги читать доки эрланга
что вполне логично, когда под капотом ERTS
>Да и в целом не представляю, как без ООП писать жирные системы
Зачем и кому ты пишешь тут о своих личных проблемах?
> Зачем
Чтобы пообщаться.
> кому
Тебе.
Ты необщительный какой-то. Девку-то нашёл уже, или всё сидишь как сыч за компутатором?
да и ты сгодишься
Удаляй это говно и используй ноду. Если перекатиться на ноду будет невозможно (оно того стоит), то меняй работодателя, у тебя хуевая работа.
Я есть.
Сейчас ТБС можно получить, а так у меня ещё есть SOLO (премиумка BoG) и кредо.
Сервисы платятся, про ограничения не знаю что сказать, я что-то краем уха слышал, что бог картами нельзя в нескольких странах по типу Бразилии платить (но это не точно).
Братишка, я ОП, уже тоже в Грузии и с картами разобрался, так что тоже отвечу себе.
Получил обычную BOG мастеркард(уже в амазоне расплачивался, все работает), также зарегил ИП и открыл обычный и бизнес счет в TBC, ибо там сходу дают бизнес счет для людей без подтвержденной истории(выписка и договор) работы по ИП, а в BOG для бизнес счета обязательно подтверждать историю.
Калоед, срыгос оформи из треда
Интерпретируемых языков как грязи, от Перла до Дарта. В основном эта ниша занята Python и JavaScript. А вот компилируемость спасла бы Ruby от вымирания.
> Почему в Ruby не добавят нормальный компилятор, как в C# и Java?
Потому что это интерпритируемый язык, много магии делается в рантайме
>Интерпретируемых языков как грязи, от Перла до Дарта.
Dart может компилироваться в байт-код для VM как у жабы
> А вот компилируемость спасла бы Ruby от вымирания.
Нет, уходят больше не потому что руби какой-то не компилируется и медленный, это задача девопса поднять еще пару контейнеров с приложением на сервере. Основная проблема что руби теряет популярность это то что его основной фреймворк RoR устарел, в свое время он принес много нового, но сейчас большая часть этой магии нихуя не нужна, особенно с фронтендом, ActiveRecord нахуй не нужон поскольку он тормоз ебучий, да и много где можно обойтись без ORM вообще и многое другое.
Смысла использовать целенаправленно именно рельсы становится мало
Для сферического в ваккуме круда в духе создали Dog с привязкой к User, поменяли ей буковки, удалили, показали всех собак хозяин и тп это самый топ. Как и сами рельсы, из консоли все сгенерировали в одну команду и CRUD готов.
Но как начинается что-то более сложное что то-то типа выводить хозяев собак которые были на площадке, когда хозяин id 100500 выводил срать свою собаку, отсортировать по дням, внутри дня отсортировать сначала собак с красным ошейником, потом по убыванию веса и выводить не больше 5 результатов за день. Примерно такое говно постоянно делал для отдела продаж и отправлял на почту эксельки раз в месяц/неделю
И ты сидишь и думаешь как бы этот запрос сделать правильным с точки зрения ORM и изобретаешь всякие нелепые конструкции которые под капотом делаются в какой-то там sql запрос, и люто бесит когда ты не можешь использовать фишки того же постгреса. Иногда запросом можно вытянуть большую часть данных в каком нужно виде без писанины кучи кода.
это edgecase, есть sqlviews
но ведь он прав
зачем хранимки? просто запросы в свободной форме, без ограничения под требования ORM
>RoR устарел
>ActiveRecord нахуй не нужон
Изобрели что-то получше? Нужно больше конкретики, что за продукты, какие технологии, функционал?
>можно обойтись без ORM
Реально предлагаешь хардкодить SQL и без маппинга в объекты ебошить логику на сырые массивы из базы? Или что ты предлагаешь вместо ОРМ?
>Реально предлагаешь хардкодить SQL и без маппинга в объекты ебошить логику на сырые массивы из базы? Или что ты предлагаешь вместо ОРМ?
Язык в котором есть структуры, вытащил из базы и записал в массив структур
>что за продукты, какие технологии, функционал?
1. паттерн activerecord (берёт название от рубишного гема) делает каждую сущность объектом, что не совсем правильно. нахера делать entity.save ведь под капотом происходит db.save(entity). если убрать лишнее говно, вдруг окажется что сущности - это плоские структуры, что упрощает понимание всего.
2. он же смешивает слои приложения - уровень entity оказывается гвоздями прибит к уровню persistence, то есть ты просто перебирая коллекцию вдруг начинаешь ходить в базу, тут тебе и N+1, а если ты передашь коллекцию в html-шаблон - у тебя вдруг шаблон начнёт подсасывать из базы лол
3. паттерн uow (он есть в джаве в hibernate и пхпшном клоне - doctrine) - это большой оверхед
От orm нужны генератор миграций, конструктор sql-запросов и маппер ответов субд в сущности. остальное говно говна перегружает либо железо либо голову
Короче, в руби есть https://sequel.jeremyevans.net/ , в эликсире https://github.com/elixir-ecto/ecto . В экто вообще кстати нет проблемы N+1 by design, там запросы отдельно, данные отдельно просто потому что как я написал выше сущности - это просто структуры без капли логики.
хуясе ты треснул пополам
>просто структуры без капли логики
Так и в чем смысл данных без логики? Вся фишка AR как раз в богатых возможностях для работы с данными, валидации, кооллбэки, удобным тестированием, полная поддержка ООП, инкапсуляция, полиморфизм, наследование, миксины. Пока ты будешь долбиться в db.save на каждый entity и рожать очередного архитектурного монстра с god-объектом, за это время ActiveRecord легко и непринужденно позволит описать любой бизнес-процесс, вообще не отвлекаясь ни на какой db.
>в чем смысл данных без логики?
наглядность, очевидность, простота отладки, сериализации или отправки по сети
> валидации, кооллбэки, удобным тестированием
разница между validate(entity) и entity(validate)
> полная поддержка ООП, инкапсуляция, полиморфизм, наследование, миксины
ненужно
>ActiveRecord легко и непринужденно позволит описать любой бизнес-процесс, вообще не отвлекаясь ни на какой db
Активрекорд - это абстракция, связывающая вышележащий уровень (бизнес-логики) и нижележащий уровень (хранилище). Как и любая абстракция она покрывает лишь часть кейсов для вышележащего уровня и может использовать лишь часть возможностей от нижележащего уровня. ORM вообще и AR в частности - это инструменты быстрого прототипирования и перестают быть эффективными при нестандартной бизнес-логике или для хайлоада.
>validate(entity)
Требуется сущность validate в неймспейсе, validate должен знать как работать с entity, которых могут быть сотни.
>entity(validate)
Для rails это entity.valid? - грамотно спроектированный вызов, скрывающий не интересующие детали реализации.
>перестают быть эффективными при нестандартной бизнес-логике
При нестандартной бизнес логике АР как раз помогает не скатить программу в архитектурного монстра, изолируя все сущности в своих файлах, четко прописывая связи между этим сущностями, и эти сущности не растекаются по абстракции как в случае c validate(entity), где validate должен содержать в себе логику для работы с каждый из entuty, а изолированы строго в своих файлах.
>validate должен знать как работать с entity, которых могут быть сотни
Можешь писать валидатор для агрегата целиком. Агрегатор - это термин из DDD, иерархическое и логически связанное объединение энтити. Например ShoppingCart содержит в себе товары, каждый из которых связан с таблицей цен, и цена ещё может зависеть от региона покупки, и где-то там же болтается дисконтная программа, ну такое. Всё вместе это агрегат.
Причём дохвати фишку: главная сложность валидации - это не валидация длины строки, которая решается аннотацией, а кросс-энтити валидация, например "покупателю из Сызрани можно заказать не более трёх рубашек одинакового цвета дешевле 400 рублей каждая". Такую валидацию сложно сделать только в рамках одног объекта, потому что она будет лазить в несколько. Поэтому внешняя функция.
>Требуется сущность validate в неймспейсе
Это не проблема вообще, положи валидатор куда тебе надо и какой надо.
>Для rails это entity.valid? - грамотно спроектированный вызов
Честно, даже разбирать не хочу, что там спроектировано в rails, причины описал выше: как только валидация становится кросс-энтити - её приходится кастомить, и хорошо если AR-валидатор не мешает это делать, не хочется тратить силы на борьбу с грамотно спроектированными вызовами.
>изолированы строго в своих файлах
В небольшом проекте это часть решения, в большом - часть проблемы. AR подходит для быстрого прототипирования.
Есть конфиг-файл гитлаба gitlab.rb
Там задаются пароли и токены, типа
gitlab_rails['db_password'] = password
Как не писать их в открытом виде, а передать в виде линуксовых пременных окружения.
Пытался сделать так:
gitlab_rails['omniauth_providers'] = [
{
name: "google_oauth2",
# label: "Provider name", # optional label for login button, defaults to "Google"
app_id: "GOOGLE_API_KEY",
app_secret: "GOOGLE_APP_SECRET",
args: { access_type: "offline", approval_prompt: "" }
}
]
Но ruby не воспринимает их как переменные, говорит, что они не заданы.
В общем, хелпуйте аноны
Переменная ENV, например ENV["GOOGLE_API_KEY"]
Господа не подскажете какой хостинг используете для Rails, чтобы идеи потестить?
На любой vps ставить пуму и пердолишь капистрано. А если потестить, то ставишь докер и пишешь docker-compose
И тогда вопрос зачем нужны веб сервера типа апача нгинкс и остальных? Я похоже не совсем понимаю схему работы, как правильно загуглить? Мне нужно не как работает интернет, а как взаимодействует рельсо приложение, руби сервер и сам апач / нгинкс
> а передать в виде линуксовых пременных окружения.
Ну так и передавай.
https://ruby-doc.org/3.1.3/ENV.html
>как взаимодействует рельсо приложение, руби сервер и сам апач / нгинкс
рельсы - самодостаточный http-клиент
самым околосистемным уровнем является например passenger
дальше задействуется ruby rack
дальше уже сами рельсы
nginx/lighthttpd - это реверс-прокси. они принимают http-запросы на 80й порт и адресуют на этот же хост на порт например 8080, который слушает твоё рэйлс-приложение.
разница в том, что nginx
а) может проксировать трафик с нескольких виртуальных жостов, например site1.com -> порт 8080, site2.com -> 8081 итд
б) эффективнее раздаёт статику, например site1.com/account - обрабатывает твоё приложение, а site1.com/images - отдаётся напрямую
в) на нжынкс проще навешивать ssl-сертификаты. а между nginx и твоим rails траф может быть не зашифрованным
https://github.com/jenseng/hair_trigger/blob/64339cd0df77a837a6e3c53d667624ec9f24b385/lib/hair_trigger.rb#L90
Как я понял, это когда в качестве аргумента туда должен прилететь какой-то объект, который встроенной магией можно разбить на несколько (а-ля a, b, c = [1, 2, 3]), и мы это делаем на лету? Вроде начинаю понимать, но хз, как по-человечески сформулировать. Впервые такую хуйню увидел. И не гуглится толком.
Помогите, пожалуйста, с задачей.
Нужно в модуле создать метод класса, который возвращает количество объектов класса. И этот метод соответственно подключить к классу.
Если делать это просто в классе то все понятно, переменная класса и она в конструкторе инкрементится.
А в модуле как это сделать? Переменную класса объявить в модуле не проблема. А вот как сделать, чтобы она увеличивалась при создании объекта класса?
Задача по идее для новичков, поэтому вариант, которые предлагают тут кажется не подходят https://stackoverflow.com/questions/17497771/is-it-possible-to-override-initialize-in-a-ruby-module
Ну, это использует информацию от GC, оно не предсказуемо ибо сейчас у тебя живо 3 объекта, через секунду может быть 0(например на твоем скриншоте они не присвоены к переменными поэтому будут garbage collected.
Я знал, что с этого начнётся) Братан, я вкатыш, хочу понять куда пойти учиться. Если можешь посоветуй что-то дельное, а не рофли
Ага, это самый оптимальный вариант. Руби не мой основной язык, то что у модулей есть initialize я не знал.
Тут фишка именно в prepend. Это include, но в случае одноименных методов при препенде приоритет берут методы модуля, а при инклюде - непосредственно описанные в классе.
Можешь погуглить про ruby method lookup chain
Ну нормальная, я был. Правда, не закончил, и потом всё равно сам допинывал. Вкатывался с полного нуля.
Начни сам с основ руби и основ rails (guides.rubyonrails.org тебе в помощь), это всё примерно везде одинаково подаётся и есть бесплатно. И если после этого застрянешь - тогда уже думай, какой платный курс брать.
Не знаю, как они поспевают за обновлениями. Когда я проходил, там скринкасты были где-то на год-два протухшие, в целом тогда было норм, но если не обновляли до сих пор - тогда фигня какая-то.
>> Можешь погуглить про ruby method lookup chain
Ага, знаю про нее.
Тут можно и без препенда.
Только если супер руками звать в нем. Либо можно препендить и звать супер в initalize модуля.
Еще в чем руби меня удивил это то, что он не инициализирует base class по умолчанию.
Второй пик не то прикрепил
Если в классе будет initialize, без prepend работать не будет
Не помню уже - или не буде работать с параметрами
Параметры можно форвардить в супер, а так да - препенд тут лучше подходит
repl.it
Какой ужас.
Блять, чел. Зачем ты задаешь вопрос, не ответив на мой? Если у тебя в проекте 1000+ миграций и добавляются еще миграции, что будешь делать???
Если кто-то новый начинает работатать над проектом, их все надо прогонять.
Если я переключаюсь между бранчами и иногда делают RAILS_ENV=test db:drop db:create.... чтобы восставновить schema это занимает время
Возьми и сделай сквош миграций. Дропаешь старье и актуальную схему импортируешь. Джун за час такое тебе сделает.
http://www.libgen.is/book/index.php?md5=FB0DD27971D54F6345345706B14DC242
кушай с булочкой. :)
>Зачем ты задаешь вопрос, не ответив на мой?
Это называется "уточнить что подразумевается в изначальном вопросе".
>Блять, чел.
Хамить маме своей будешь. Я знаю ответ, но не пошел бы ты на хуй.
Зумерки вкатываются в рельсы. А говорят, что джунов не берут.
>Если я переключаюсь между бранчами и иногда делают RAILS_ENV=test db:drop db:create
Однажды ты поймешь, где здесь ошибка.
Дебс, это хак чтобы постоянно не делать rollback. Делая на test, в dev остаются данные, но schema приводится к актуальному виду. Для тебя-додика дополню что в конце еще migrate
Если ты такой "умный", зачем спрашиваешь? Больше тебе писать не буду, хамло трамвайное. Еще раз, иди на хуй.
Ты делаешь неправильно.
>Ты предлагаешь грузить сразу из schema
Это твои собственные слова, нет, не предлагаю. Сука, вынудил таки ответить.
Обратно в /b, быдло.
Чел, зачем ты тролируешь, если сам не знаешь ответа. А как тебя попустили, плачешь и кричишь "в b"? Это прям классЕка поведения шизика
Что-то типа такого. Схему несложно руками импортировать, но проверьте что у вас чистая база без данных, или делайте вторую миграцию на импорт фикстур.
> но проверьте что у вас чистая база без данных, или делайте вторую миграцию на импорт фикстур.
Так то что выше написано это прогоняется локально, а не на сервере. Когда например несколько человек делают что-то связанное с миграциями и ты забываешь сделать роллбэк перед пулом или происходит что-то подобное.
Через drop create... на тестовой бд можно восстановить схему и использовать в dev(все данные в dev)
Существует нормальная полная обновляемая документация по Руби, с полным описанием языка и тонкостям программирования на нем? Дока на официальном сайте ужасная. Всего лишь небольшое введение в язык, справочники по апи, и зачем то куча устаревших книг и туториалов.
Ишь чего захотел.
или нет, лучше сам язык так назвать
А чо нет-то. Прочитай книжку, как разберёшься с объектной моделью и метапрограммированием - в 95% случаев будет хватать АПИ доков с офффициального сайта.
Я не понимаю, чего ты хочешь, и зачем тебе это? До инициализации чего, приложения?
> Я не понимаю,
томушо ты вкатун
Если у тебя в ApplicationRecord есть хук inherited(base)
И в этом хуке тебе нужно узнать какие inherited classы являются abstract или найти среди них класс где объявлен определенный объявлен определенный private метод
у тебя base.abstract_class? будет показывать nil
можно прямо в inherited сделать after_initialize, то это не производительно для того что нужно
Ты занимаешься каким-то извращением. Можешь попарсить ast, но вообще тебе нужно переформулировать задачу.
Не представляю ситуации в которой понадобилось бы выяснять абстрактный класс или нет, у него даже метода save нет чтобы что-то с ним сделать, очевидно что это какой-то косяк в архитектуре если приходится такими проверками заниматься.
>>557756
И что? Ты сам-то пробовал что-нибудь сложнее хело ворлда отправить в браузер из раста? Мне кажется что нет.
Там где нет dominant framework проект в говно превращается всего за пару лет разработки. Фреймворк где все включено конечно не гарантирует отсутствие говна, но куча микро библиотек 100% превращается в кучу говна за короткое время.
Ты какой-то хуйнёй занимаешься, есть такое подозрение. У тебя там каждый день новые классы появляются, из которых половина - абстрактные? Захардкодь те, что абстрактные, да и всё.
> Не представляю ситуации в которой понадобилось бы выяснять абстрактный класс или нет,
Ты слился, чел
Блять, ок. Пусть в каждом классе есть приватный метод
def pidor
true
end
Нужно при инициализации приложения нати всех пидоров унаследованных от главного пидора active_record и выполнить какое-то действие. after_initialize do в self.inherited использовать нельзя
включайте маневры
быстрофикс application_record *
private_method_defined?(:pidor) не вернет true тк по факту еще нет инициализации
>томушо ты вкатун
А то. Как раз когда смотрю на свой вкатунский код двухлетней давности, охуеваю от тонн динамической генерации говна, чтоб МЕТАПРОГРАММИРОВАНИЕ УУУ и АБСТРАКЦИЯ ООО и ЗАТО НЕ ПОВТОРЯЮТСЯ ТРИ ПОХОЖИХ МЕТОДА и плевать, что итоговое решение в два раза больше, чем эти самых три метода, а зачастую ещё и медленнее, и хуй поймёшь, что оно делает.
>>557776
>Пусть в каждом классе есть приватный метод
>Нужно при инициализации приложения нати всех пидоров
У тебя или с русским языком проблемы, или ты решаешь не ту задачу, что нужно решить.
ЯННП, но я серьёзно тебе говорю, невкатун, захардкодь просто, что бы там ни было.
Что захардкодить пчел?
Ладно. Мне нужно на основе нескольких правил, например абстрактный класс или класс-пидор заинклудить в каждый унаследованный класс кое-какие модули и добавить какие-то скоупы, вызвать какой-то метод внутри класса который унаследовал от application_mode
Какие-то классы нужно пропустить, какие-то выбрать, понимаешь?
Я могу создать список классов исключений, но их слишком много чтобы этим заниматься.
Загрузить все константы через Rails.autoloaders.main.preload, дальше уже и штатные способы будут работать и всех наследников можно вытащить.
Rails.application.config.after_initialize do
ApplicationRecord.descendants.each |d|
if d.abstract_class?
...
Я то делал все прямо в хуке application_controller
application_record
Это для случаев, когда в модели объявлен enum, и объекту пытаются присвоить туда непредусмотренное значение - это не ошибка валидации при сохранении, а эксепшон при присвоении.
Условная конструкция и raise exception немного смущают, но хз, как лучше.
https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#autoload-on-boot-only
Кажется он не может в reload!
Сколько лет еще тонуть будем?
Или все заебись?
Ведомый додик, спок
И происходит это до вызова save, то есть нормальную валидацию в модели на это не написать.
Так для этого и создана валидация при сохранении в моделях?
Можно сделать form_object, но если у тебя такое только в 1 месте, то ок
Перехватывать все ArgumentError во всех контроллерах, парсить регекспом тело сообщения и вываливать на клиент сам экспшон - как-то не очень выглядит, лучше уж этим заниматься когда делаешь пермит параметров и падать оттуда в конкретных ситуациях несоответствия енума, по крайней мере это логичное место для таких ситуаций.
Есть смысл самому поковыряться и написать своё на ракторах? Или просто выдрать ActiveJob (заодно и сайдкик какой-нибудь можно будет прикрутить, если вдруг понадобится в будущем)? Просто я в асинхронщине ни бум-бум, только один раз с каким-то асинк гемом написал небольшой разгребальщик очереди в 10 тредах. Я получу ЦЕННЫЙ ОПЫТ, или нагеморроюсь больше?
Для опыта пощупай sidekiq. У ракторов в мире рельсовых (и аналогичных) приложений назначение специфичное - выполнять сетевые пачку сетевых вызовов.
С таким на работе будешь развлекаться, если сильно (не) повезет.
Для опыта пощупай sidekiq. У ракторов в мире рельсовых (и аналогичных) приложений назначение специфичное - выполнять пачку сетевых вызовов.
С таким на работе будешь развлекаться, если сильно (не) повезет.
https://rubygems.org/gems/annotate_routes
https://rubygems.org/gems/annotate_controllers
Вот типа такого, только чтобы работало.
https://github.com/mmichael0413/annotate_controllers/blob/master/lib/annotate_controllers/annotator.rb
Хотя я вот этот по диагонали посмотрел - вроде код написан, только у меня крашится. Можно форкнуть-починить.
> I wonder why this gem (or any gem like it) doesn't see development, seems like a useful tool to me.
Нафиг не нужны аннотации:
можешь смотреть роуты в консольке (либо пишешь свои rake таски для rpc/кастома)
либо в тестах как монкей пишешь полный урл и по нему грепаешь в поиске в редакторе.
> можешь смотреть роуты в консольке
Ну ты хоть видел, как это выглядит в любом приложении больше хелловорлда? Там разобраться невозможно даже с грепами и авками.
> либо в тестах как монкей пишешь полный урл и по нему грепаешь в поиске в редакторе.
Не понял. Каждый раз ходить в routes.rb, что ли? Там в нём до меня могли, например, наколдунить трёхэтажных заклинаний вместо простых resources и get "ыкс", to: "ыгрек"
> либо пишешь свои rake таски для rpc/кастома
Так зачем, если вот оно, один раз прогнал - и готово.
> Там разобраться невозможно даже с грепами и авками
Все разбирается, у тебя есть часть пути
> Не понял
В тесте формируешь uri без домена. Тест проверяет контракты и возвращаемый респонс. А вот говно-гем с аннотациями в большой проект я не апрувну на ревью, ниже пара очевидных причин.
> Так зачем, если вот оно, один раз прогнал - и готово.
конфликтики с тобой влом решать. При рефакторинге контроллеров комментарии будут ломаться, дублироваться.
Не используй комментарии, они устаревают. Градуал тайпинг можно, иде умная.
Рельса сама знает какой экшн ей нужно вызвать. Чтобы найти экшен тебе нужно не аннотации делать, а выбрать одно из трех мест куда воткнешься и что-либо там сделать. Вторым по сложности решением является логгирование в сервисах. Третьим - растормошить кишки рельсы, и вот я уверен что ты найдешь эти гемчики.
Давно не открывал эти темы, но stimulus тыкал какое-то время назад
> На проекте до сих пор используют jquery
Во-от пидарасы! Гвозди до сих пор молотком забивают. Все вокруг-то уже давно забивают пневмо-турбо-хаммером.
Мудаки вы, программисты, всё-таки. Ебёте мозга себе и людям.
Инструмент надо выбирать исходя из задачи, а не высирать новые ежегодно, старые выкидывая на помойку, и потом судорожно учиться с ними работать и перетаскивать старые проекты на новые...кхм.. рельсы.
А что к остальному не докопался? Вот мне hotwire и turbostreams вообще не доводилось использовать. А если куда-то перекатиться и там будет такое в проекте ммм???
При чем тут английский? Книга единственная, кроме старой макулатуры. Годная
Да. DHH же сказал что RoR стал фреймворком одной персоны
Понятно что массово не скоро перелезут на Hotwire
dhh все предвидел
Так и есть. Тебе не нужны всякие циклы, когда есть map, filter, reduce и прочее говно
> То что перечислено это больше для реальных задач, не?
> А если решить подрочить на литкод, то там нужно
Ну да. Сравни:
5.times do
puts "zhopa"
end
i = 0
while i <= 5 do
puts "zhopa"
i += 1
end
Или через в си-подобном варианте
for (i=0, i<5, i++) {
...
}
У тебя вылезает какой-то нахуй не нужный счётчик, и off-by-one ошибки (как в моём втором примере, например, спорим), зачем? Если можно просто декларативно написать "сделай вот это 5 раз".
На каком-нибудь литкоде, где ты ебёшься с ручными сортировками и прочим, этот самый i, может, и пригодится. Может, пригодится его увеличивать не на 1, а на какое-то другое число. Или уменьшать. А когда надо просто пройтись по массиву или сделать что-то икс раз - нет.
В данном конкретном примере, кстати, метод times может отдавать в блок этот самый счётчик, т. е. 5.times { |i| print i } напечатает 01234
Написал плюсы, так напиши и минусы.
Планирую тыкать с целью переката, за 2 месяца по своему стеку не нашел работы, мимо мидл
Пчел, а почему ты написал что мидОл, но не указал стек?
Почему считаешь что здесь будет лучше?
Может тебе оформить срыгос в говно или стать зеленой шарпомухой? мм?
Итераторы же, но иногда применяют эту классику
for например в шаблонах короче, хотя это то же что и each
Ещё loop, но его обычно неправильно используют
В 2001 многие еще хер без соли доедали. Особенно в глубинке. А у кого-то в деревне батя проволокой подпоясовался вместо ремня.
С линуксом будешь перолиться. Во всяких гайдах больше инфы для мака.
Старые маки будут греться если использовать докер.
Купил 16, но пока что очень медленно перехожу на нее с 15 2015
Как-то задавал вопрос мистеру девиду - пик. Он вроде сейчас купил m2?
Добавлю что на m1 сейчас есть нюансы так что может и тут пердолиться придется
я поставил 2 версии brew для arm/x86
Были кое какие проблемы с некоторыми гемами если ставить rbenv arm версию.
В итоге поставил rbenv для x86, его и использую
В этом плане старые маки лучше
>>571025
спс бро
я как раз из за нюансов с m2 и сомневался
я девелоплю на линуксе 3 года на разных языках и чувствую себя на нем норм, но хочется купить мак ибо все без исключения PC ноуты выглядят эстетически омерзительно
в принципе на новых маках можно гонять в UTM арм версию убунту почти на нативном перфомансе, так что должно быть норм
Ну хингпады достойный вариант. После мака я бы рассматривал только их
ThinkPad X1 Nano
ThinkPad X1 Carbon
А на сервере у тебя тоже MacOS будет? Linux однозначно
Дороже мака и что особенного?
Какое в итоге решение было с дисконнектом? Или это твой ответ про ssl?
Ну и чем плох перл. На hh есть вакансии. Сотыгу платят
Зачем мне го, это язык говна же
И мне нравится руби, вообще я бы в эликсир перекатился, но там нужно что то еще доп знать, а туда обычно катятся после рельсов
Но ладно, это мои манямечты все же
Уже прочетал 50 страниц вашей "топ книги". Пока всё нравится. До этого копался в пхп пару месяцев, стажировался в битрикс, но передумал в итоге.
>стажировался в битрикс, но передумал в итоге
Ну и лох. Мог бы щас бабло зашибать, а не хуй сосать.
Ты получается тоже лох, раз тут сидишь, ведь работы в руби НЕТ.
помню с этим руби бегали, как сейчас с растом
и нахой кому сейчас эта залупа нужна
все нормальные, как кодили на PHP так и продолжили.
а восторженные ебанаты потратили время впустую
ничего нового.
Почему впустую? Опыт на руби релевантен в любом другом динамикоязыке: пайтон, пхп, нода. Помимо них еще на эликсире приветствуют етот опыт. Что означает легчайший свитч на любой из них при необходимости.
получается ты выучил это говно, чтобы потом быстрее выучить другое говно. А могу бы сразу учить то что надо.
И потратить сэкономленное время на получение опыта.
Хули вы мечетесь? Хватаются, блядь, то за один ящик с инструментами, то за другой, дружно учатся с ним работать, а потом бросают нахуй — всё, уже нимодненько.
Вкатуны и нюфаги мечутся, боятся время своё драгоценное потратить не на тот язык, не дай бог прочитать не ту книгу и прослушать не тот видеокурс, вдруг еще голова устанет, и всё в пустую.
Расскажи про свою мотивацию. Спрашиваю без подъёба.
На 1С почему-то принято смотреть свысока, хотя на поверку оказывается, что свысока смотрит крудошлёп или того хуже — джаваскрипт-макака. А туда же.
>Расскажи про свою мотивацию. Спрашиваю без подъёба.
Учился в айтишном вузе, там с мотивацией попроще - сдавай лабы или тебя отчислят, а если отчислят то поедешь в армию, в конце обучения нас всех отправили работать на местный завод и я вытачивал там детали на станке, в процессе этой деятельности познал прелесть и красоту языков программирования.
Всё так плохо или это от ВУЗа зависит?
Скажите честно: кто из вас читает высеры мелкобуквенных даунов, а потом ещё и отвечает на них? Нахуя вы это делаете? Они от этого начинают думать, что их мнение кому-то интересно, и продолжают срать в публичных местах.
Slim.
Zupa
Не стоит с этого начинать. В любом случае возникнут проблемы, а у sinatra уже есть ответы если гуглить
Он один этот проект поддерживает. Что будет когда сфидит
Так, чтобы за зарплату - да, особого смысла нет. В FOSS есть пара проектов без rails (homebrew/linuxbrew, metasploit), ну можешь ещё всяких ботов писать на фрилансе.
Наверное, есть какие-нибудь вакухи, где ты сервисы на синатре пердолишь. Или где руби в проекте - скриптовый язык уровня питона или луа. Но там по-любому нужно будет знать всякий обвес технологий помимо руби. Да и даже там, если ты скажешь, что пишешь на руби без опыта в rails, могут подумать, что ты странный какой-то, небось, проституток расчленяешь ещё.
Печально все это. А Синатра это разве не упрощённая версия рельс? Все что пишешь ручками в синатре уже прописанно в папках рельс. Смысл от этого рудимента?
Пчел, ты рудимент этого треда. Срыгос оформи
> Все что пишешь ручками в синатре уже прописанно в папках рельс
Да, только в синатре это можно не прописывать, если оно тебе не нужно. Да и не в папках, а в гемах.
> Смысл от этого рудимента?
Чтобы быстрее реквесты обрабатывать, например.
My dude, ты точно с рельсами работал хотя бы на уровне туториала из официальной документации?
https://guides.rubyonrails.org/getting_started.html#using-strong-parameters
>принято проверять их в контроллере
Да. Контроллеры как раз и существуют для обработки реквестов/респонзов.
> или специфицировать ограничения в модели в виде валидаций и тупо скармливать nil в модель(если параметров нет) и ожидать ошибки от модели?
Второе.
book_params = params.permit(:author_id, :title)
book = Book.new(book_params)
if book.save
# всё ок
render json: book, status: :created
else
# в author_id пришёл nil, title пустая строка или nil и т. д.
render json: book.errors, status: :unprocessable_entity
end
Вот это типичный код контроллера в вакууме, все ошибки в модели.
>>586546
Хуйню ляпнул, strong params - это про то, какие именно параметры ты принимаешь, а не проверка их на наличие или валидность.
> My dude, ты точно с рельсами работал хотя бы на уровне туториала из официальной документации?
Но вот это метко заметил.
На самом деле по-разному можно:
есть гем rails param: https://github.com/nicolasblanco/rails_param,
есть dry-validation: https://dry-rb.org/gems/dry-validation/1.8/
Вот пример: https://danielshow.dev/posts/dry-validation-for-validating-ruby-on-rails-controller-params/
Я этот, отвечаю всем
>>586546
>> My dude, ты точно с рельсами работал хотя бы на уровне туториала из официальной документации?
братишк я знаю о стронг параметрах, мне сложно в не бесконечном сообщении указывать весь контекст в котором я спрашиваю, поэтому уточняю - вопрос был изначально в максимально широком смысле, о том какие есть варианты и какие tradeoffs у всех, моя цель была стартануть небольшую дискуссию(что и получилось) ибо думать это хорошо
насчет туториалов, их далеко не святые пишут и мир ими не исчерпывается
пример
представь я спросил бы "куда в рейлз совать бизнес логику"
и ты бы мне в ответ кинул
https://guides.rubyonrails.org/active_record_basics.html
где написано что она должна жить в модели:
"layer of the system responsible for representing business data and logic"
и сказал бы мне что я не читал туториал, в то время как я не только туториал читал но и еще несколько вариантов знаю, типа service objects или hexagons например
>>587172
А вот этот dude написал более полно
>>587195
А этот еще полнее
А сам я просто пилю себе проект для прикола и написал себе модуль Monadic где лежит реализация Either монадки, только заместо Right/Left у меня Ok/Error и контрол флоу идет через блок(см пик)
Я выучил и освоил этот функционал из списка:
ruby language basics +
rails install +
rails console basics +
rails MVC:
Controllers creation +
Models creation +
Views creation +
View refactoring (render partial) +
Forms creation +
Model relationships (has_many\belogns_to)
Validation +
Concerns (Modules) +
http basic auth +
Routing system +
Database Migrations +
Redirection +
ActiveRecord +
CRUD +
Helper file modules try +
Console scripts (rake tasks from /lib/tasks) [can be in use for cron, for example] +
env files implementation with additional env variables (dotenv-rails gem) +
cache system connection and use (redis with redis gem) +
queue functionality (rails jobs creation with resque job provider) +
Assets connection +
JS implementation (rails structure [from javascript folder]) +
Mailer + (DMARC local problem, but mailer works and mailer active job executes)
Additional gems\libs installation via bundler and gemfile +
Login\Registration functionality (devise gem lib) +
Планирую выучить и это:
Another web server out of puma (Nginx)
Another database out of sqlite (mariadb\mysql)
RBAC
Flash errors
Sessions
unit tests
Active storage
И почитать вот что:
API quick look
security aspects
best practices
ЧТО ЕЩЕ Я ДОЛЖЕН ОСВОИТЬ, ЧТОБЫ ДОБАВИТЬ rails и ruby в свой CV без угрызений совести, чтобы гарантировать знания мидла?
Я выучил и освоил этот функционал из списка:
ruby language basics +
rails install +
rails console basics +
rails MVC:
Controllers creation +
Models creation +
Views creation +
View refactoring (render partial) +
Forms creation +
Model relationships (has_many\belogns_to)
Validation +
Concerns (Modules) +
http basic auth +
Routing system +
Database Migrations +
Redirection +
ActiveRecord +
CRUD +
Helper file modules try +
Console scripts (rake tasks from /lib/tasks) [can be in use for cron, for example] +
env files implementation with additional env variables (dotenv-rails gem) +
cache system connection and use (redis with redis gem) +
queue functionality (rails jobs creation with resque job provider) +
Assets connection +
JS implementation (rails structure [from javascript folder]) +
Mailer + (DMARC local problem, but mailer works and mailer active job executes)
Additional gems\libs installation via bundler and gemfile +
Login\Registration functionality (devise gem lib) +
Планирую выучить и это:
Another web server out of puma (Nginx)
Another database out of sqlite (mariadb\mysql)
RBAC
Flash errors
Sessions
unit tests
Active storage
И почитать вот что:
API quick look
security aspects
best practices
ЧТО ЕЩЕ Я ДОЛЖЕН ОСВОИТЬ, ЧТОБЫ ДОБАВИТЬ rails и ruby в свой CV без угрызений совести, чтобы гарантировать знания мидла?
Бро, выучить и почитать это ок. Есть кое что поважнее. Рекомендую написать проекты и реально понять что ты выучил.
Так я сделал проект бложика для реализации написанного с целью обучения. И некоторые моменты именно для обучения, потому как удаление всех комментов в очередь и бэкграунд процесс ставить не нужно, или мне вовсе не нужен таск выводящий список статей в терминале для крона. Все написанное я правда реализовал же.
Это ты где и как осваивал интересно
RSpec и все потроха нему: Factory Bot, Shoulda Matchers, etc.
И довольно, а там вкатунить или что-то пилить и видно будет чего не хватает
Молодец бро. Могу порекомендовать еще сам язык ruby(без rails), рефакторинг кода, дизайн паттерны.
>RSpec и все потроха нему: Factory Bot, Shoulda Matchers, etc.
Спасибо
>Это ты где и как осваивал интересно
Ну я имею многолетний опыт коммерческой веб разработки, все фреймворки примерно одинаковый функционал несут, если основаны на mvc, то написание простого crud приложения тянет за собой 80% задач в повседневной жизни, также я понимаю, что может быть нужно дополнительно - вынести что-то в систему очередей, к примеру, или иметь какой-нибудь скрипт для запуска по крону, повторяющийся код вынести в хэлпер файлы или закрутить наследование или что-то уровня concerns модулей в моделях. Вот я сам себе написал этот список, что выше в другом посте, но т.к. я понимаю, что особенности у фреймворка или языка могут быть свои особенные, то решил спросить и тут.
А зная другой язык программирования, достаточно понять синтаксис нового, т.е. я же не с нуля вкатываюсь, мне не надо учить основы или элементарные вещи, я заню что такое массивы или операторы ветвления, регулярные выражения и прочее, мне не надо изучать базы данных и системы кеширования, я знаю, допустим, как работает redis, мне надо было просто нагуглить, как работает redis библиотека в ruby и врубиться в это за 10-20 минут, а не за несколько часов или дней, не зная про кеширование вовсе, зачем и когда это приеняют, что такое хайлоад и нагрузки на бд и прочее, что нарабатывается годами.
Теперь по источникам:
Я очень в восторге от видео freecodecamp на тытрубе, если мне что-то надо освоить, то я ищу видео там от этих ребяток. Обычно, крутые ребятки с крутых известных контор там говорят что-то емкое и кратко. А иногда бывают малоизвестные ребятки с неизвестных контор малого масштаба, тем не менее, если видео одобрено сообществом, значит оно крутое, обычно. В общем, для меня freecodecamp - показатель качества за малый объем времени.
Я посмотрел два видео:
1. https://www.youtube.com/watch?v=t_ispmWmdjY - основы руби (рекомендую в шапку добавить) от каких-то неизвестных чуваков.
2. И половину видео по рельсам - https://www.youtube.com/watch?v=fmyvWz5TUWg&t=7950s (мне видео показалось не очень, хотя авторы видео вроде как из известных контор, потому как половину видео от мною просмотренного там натягивают бутстрап, т.е. совсем для малокомпетентных), т.е. я не досмотрел до конца даже,
3. после чего я пошел на https://guides.rubyonrails.org/ и начал с getstarted, потом почитал кратко, гугля, то, что мне надо для остального, реализовав это в качестве примера простых задач для себя.
Т.е. многолетний опыт и освоенные фундаментальные знания + полтора видео (6 часов) + чтение официальных доков на rubyonrails.org - несколько часов Почему, кстати, у вас нет в шапке треда ссылки на официальные доки? + гугл со вставками кода со стековерфлоу и примерами его и вот я написал бложик уровня б.
Я, может, и быстрее освоил бы, если бы сразу знал, допустим, что выбирать sidekiq хуже, чем resque провайдер для очередей, потому что под линуксом он что-то работал у меня криво.
В общем, я ковырял руби совакупно около недели по пары часов в день, начав с 4-х часового видео, на которое ушла вся ночь с паузами на кофе и осмысливание услышанного и с отвлечением на прочий интернет, до этого я работал с ним тоже, т.к. он есть в проекте по работе, но без серьезных задач, из простых, из разряда добавить post параметр в массив или сгенерировать pcks7 ssl ключ с gem библиотекой, но я, можно сказать, более менее плотно начал изучать это неделю всего назад. Такие дела.
На пикче 3 разных способа создания комментария через ActiveRecord, к примеру, понятно, что в жизни использовался бы первый вариант, остальные два "для обучения", мол, записать напрямую в бд через модель другим способом, или третьим. Т.е. я немного игрался еще с этим со всем. А как иначе учить? Чтобы что-то выучить, нужно начать писать, параллельно учить. Всегда так делаю. Такие дела.
>RSpec и все потроха нему: Factory Bot, Shoulda Matchers, etc.
Спасибо
>Это ты где и как осваивал интересно
Ну я имею многолетний опыт коммерческой веб разработки, все фреймворки примерно одинаковый функционал несут, если основаны на mvc, то написание простого crud приложения тянет за собой 80% задач в повседневной жизни, также я понимаю, что может быть нужно дополнительно - вынести что-то в систему очередей, к примеру, или иметь какой-нибудь скрипт для запуска по крону, повторяющийся код вынести в хэлпер файлы или закрутить наследование или что-то уровня concerns модулей в моделях. Вот я сам себе написал этот список, что выше в другом посте, но т.к. я понимаю, что особенности у фреймворка или языка могут быть свои особенные, то решил спросить и тут.
А зная другой язык программирования, достаточно понять синтаксис нового, т.е. я же не с нуля вкатываюсь, мне не надо учить основы или элементарные вещи, я заню что такое массивы или операторы ветвления, регулярные выражения и прочее, мне не надо изучать базы данных и системы кеширования, я знаю, допустим, как работает redis, мне надо было просто нагуглить, как работает redis библиотека в ruby и врубиться в это за 10-20 минут, а не за несколько часов или дней, не зная про кеширование вовсе, зачем и когда это приеняют, что такое хайлоад и нагрузки на бд и прочее, что нарабатывается годами.
Теперь по источникам:
Я очень в восторге от видео freecodecamp на тытрубе, если мне что-то надо освоить, то я ищу видео там от этих ребяток. Обычно, крутые ребятки с крутых известных контор там говорят что-то емкое и кратко. А иногда бывают малоизвестные ребятки с неизвестных контор малого масштаба, тем не менее, если видео одобрено сообществом, значит оно крутое, обычно. В общем, для меня freecodecamp - показатель качества за малый объем времени.
Я посмотрел два видео:
1. https://www.youtube.com/watch?v=t_ispmWmdjY - основы руби (рекомендую в шапку добавить) от каких-то неизвестных чуваков.
2. И половину видео по рельсам - https://www.youtube.com/watch?v=fmyvWz5TUWg&t=7950s (мне видео показалось не очень, хотя авторы видео вроде как из известных контор, потому как половину видео от мною просмотренного там натягивают бутстрап, т.е. совсем для малокомпетентных), т.е. я не досмотрел до конца даже,
3. после чего я пошел на https://guides.rubyonrails.org/ и начал с getstarted, потом почитал кратко, гугля, то, что мне надо для остального, реализовав это в качестве примера простых задач для себя.
Т.е. многолетний опыт и освоенные фундаментальные знания + полтора видео (6 часов) + чтение официальных доков на rubyonrails.org - несколько часов Почему, кстати, у вас нет в шапке треда ссылки на официальные доки? + гугл со вставками кода со стековерфлоу и примерами его и вот я написал бложик уровня б.
Я, может, и быстрее освоил бы, если бы сразу знал, допустим, что выбирать sidekiq хуже, чем resque провайдер для очередей, потому что под линуксом он что-то работал у меня криво.
В общем, я ковырял руби совакупно около недели по пары часов в день, начав с 4-х часового видео, на которое ушла вся ночь с паузами на кофе и осмысливание услышанного и с отвлечением на прочий интернет, до этого я работал с ним тоже, т.к. он есть в проекте по работе, но без серьезных задач, из простых, из разряда добавить post параметр в массив или сгенерировать pcks7 ssl ключ с gem библиотекой, но я, можно сказать, более менее плотно начал изучать это неделю всего назад. Такие дела.
На пикче 3 разных способа создания комментария через ActiveRecord, к примеру, понятно, что в жизни использовался бы первый вариант, остальные два "для обучения", мол, записать напрямую в бд через модель другим способом, или третьим. Т.е. я немного игрался еще с этим со всем. А как иначе учить? Чтобы что-то выучить, нужно начать писать, параллельно учить. Всегда так делаю. Такие дела.
>RSpec
Вот, посмотрел видео: https://www.youtube.com/watch?v=3ku89naLPg8 потом глянул бегло официальный сайт, установил gem, но не заводилось с bundle exec rspec file.rb или с rspec file.rb из терминала, ругался на то, что не может найти require файл. Я пол гугла переискал и видео по 2 раза пересмотрел отрывками, в итоге запускать тесты надо было с "rails spec", я бегло глянул основные expectations тут: https://relishapp.com/rspec/rspec-expectations/v/3-12/docs/built-in-matchers, в итоге у меня есть результат обучения и ссылка, где я могу быстро посмотреть ожидания полностью, попив кофе, чтобы начать писать тесты, если понадобится.
>установил gem
Какой? В rspec-rails описана установка, в которой генерируются хелперы со всеми необходимыми require, емнип.
>В rspec-rails описана установка, в которой генерируются хелперы со всеми необходимыми require, емнип.
Да, я запускал rails g rspec:install и у меня был файл rails_helper, но если запускать rails spec - он require видит, а если rspec или bundle rspec - нет. Я пару часов не мог понять почему не работает, пока не запустил через rails spec.
>гору ненужного текста
Я внес разнообразие в ваш тред из двух человек, принес пару полезных видео, мог бы и потерпеть пару прилагательных с речевыми оборотами уровня б.
Ну Presenter, например. Когда у тебя во вьюхе надо отобразить что-то со сложной логикой, ты вытаскиваешь это всё из вью и модели в презентер и рассчитываешь в нём это всё. А в самой вьюхе для каждого куска информации вызываешь на нём метод - все методы модели он направляет к модели.
https://www.youtube.com/watch?v=yYTkLUEdIyE
Ну там, скорее, способ был известен 8 лет, руби разрабочики прочли через неделю после обращения к ним персонально и пофиксили. Тем не менее, получается, 8 лет был уязвим фреймворк.
В телеграм-канал из шапки, главное, не заходи. И в чат тамошний ничего не пости. А то манямирок твой сломается.
На этих сайтах по поиску работы какая-то своя атмосфера, то вышку требуют, то на собесах дрочат алгосами, то ещё что-то, ни разу там ничего не находил. Успешно получалось только в LinkedIn и этом канале.
Вот такие советы какие-то пиздец костыльные, имхо проще уже в контроллере создавать этот пост и там же строить жсон с ошибками
https://stackoverflow.com/questions/39404435/rails-validates-associated-and-error-messages
Скрин для грубого примера, там ещё у поста ошибка будет из-за пустого user_id, но суть вы поняли, думаю
>Как правильно валидировать вложенные ресурсы, которые создаются в коллбэках?
Ну создавай модели, повторяющийся код, который нужен для валидации в каждой модели, - выноси в модули.
Это копия, сохраненная 30 марта 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.