Предыдущий: http://arhivach.org/thread/193265/Принимаются изменения в шапку треда в виде пулл-реквестов:https://github.com/meoweg/2ch-pr-rubyКак показывать код:Быстро - https://pastebin.comС исполнением - https://ideone.comТребуется аккаунт GitHub - https://gist.github.comКонференцияhttps://2chpr.slack.com/messages/ruby/Получить приглашение: https://invite-me-to-2chpr.herokuapp.com/FAQ:1. C чего мне начать, чтобы стать рубистом?Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.Следующий уровень, продвинутые книги по руби:Confident Ruby by Avdi GrimmPractical Object-Oriented Design in RubyRefactoring Ruby EditionRuby Under a Microscope для любителей залезть под капот.Документация по стандартным библиотекам http://ruby-doc.org/Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0И ещё раз онлайн: http://www.codewars.com/?language=rubyНе веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.comИ вот еще https://rubymonk.com/ - Матц одобряет.2. Какой gem посмотреть, чтобы понять, как писать код?Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.А еще можешь полистать на гитхабе гемы с нарастающей популярностю.https://github.com/trending?l=rubyТам еще нет тысяч строк, и тебе будет легче понять.3. Есть ли GUI для руби?Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).4. Можно ли писать на руби мобильное ПО?Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.5. Как установить разные версии рубей?Легко и просто: https://github.com/sstephenson/rbenvИ это тоже, легко и просто: https://rvm.io6. Что почитать по рельсам?http://guides.rubyonrails.orghttp://ruby.railstutorial.orgAPI: http://api.rubyonrails.orgПрекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails , а вот тут все тоже, но на русском http://codenamecrud.ru/Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/bookДля дотошных читателей есть The Rails 4 Way.7. Хорошие практики по руби и рельсам?Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.Почитайте еще Grimm A. - Objects on RailsЕще продвинутое чтиво - http://tutorials.jumpstartlab.com/8. Ruby/Rails блоги, рассылки и твитторыIRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderloveРассылки ruby-core, rails-core, rails-talkПодкасты:- http://rubyrogues.com- http://ruby5.envylabs.comСкринкасты:- http://railscasts.com- https://peepcode.com- https://www.destroyallsoftware.com- http://railsforzombies.comБлоги:- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем- rubyinside.com - новости, туториалы.- rubyweekly.com- http://37signals.com/svn- http://yehudakatz.com- http://afreshcup.com9. Я не могу в английский, что делать, анон?Идти учить английский, без него тут делать нечего.10. Есть ли у руби русское коммьюнити?Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.Яркий пример - ruby@conference.jabber.ruА еще есть русская слак конфа - https://russiandevs.slack.com она общая, но есть очень активный руби канал.Так же русская гугл группа, активная - https://groups.google.com/forum/#!forum/ror2ruЕще вот - https://onrails.club/11. Какие гемы стоит знать?capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.Поиск гемов https://www.ruby-toolbox.com12. Зачем нужны тесты и как их писать?http://rusrails.ru/a-guide-to-testing-rails-applicationshttp://habrahabr.ru/post/163597/Вместо этого можно прочитать классную книгу Everyday Rails Testing13. Где можно задать глупые и не очень вопросы?- здесь- stackoverflow.com- тематические slack-конфы- а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.15. В чём писать код?Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.16. Можно ли писать на руби с под windows?Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac17. Руби язык одного фреймворка?Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене18. Можно ли делать игры на Ruby?Можно, но не нужно. Гем Gosu.19. Ютуб каналыYoutube driven development...Вот тебе пара каналов, но никому не говори что учишься по видео.https://www.youtube.com/channel/UCIQmhQxCvLHRr3Beku77tww/videoshttps://www.youtube.com/channel/UCfWZwsP8trUy5uHJg8gcGIQhttps://www.youtube.com/channel/UCSI77lJlzlCFPLdV1RSAoYQhttps://www.youtube.com/channel/UCPIyDzf1vwWc8EQJGUX-vYw - тут на ру$$ком даже.20. Как и где искать работу?Легко и просто - http://rubyjobs.ru/Не так просто - https://upwork.com/Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.TODO лист для ньюфагов:И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidarasНачни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.Рекомендации:1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии.2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет)3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object.https://netguru.co/blog/service-objects-in-rails-will-help - о сервисахЕще паттернов - https://robots.thoughtbot.com/back-to-basics-solidНо самый читаемый код, как и следовало ожидать, даёт функциональное программирование. Начни отсюда:http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-ii/http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-iii/http://www.sitepoint.com/functional-programming-pure-functions/http://www.sitepoint.com/functional-programming-ruby-value-objects/Только не переборщи. Руби - не функциональный язык, и иногда такой код может работать медленней.Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.Ну, а мы открываем очередной Ruby Thread.
Зачем нужен руби если есть питон
>>860729зачем нужен питон если есть Perl?
>>860740Зачем нужен Perl если уже есть lisp?
>>860741Зачем lisp если уже есть фортран?
>>860742Зачем фортран если есть перфокарты?
Зачем жрать капусту, если есть картошка?))))))))
[code]"руби".capitalize=> "руби""ruby".capitalize=> "Ruby"[/code]Почему такую очевидной функциональности нету в стандартной библиотеке? В пистоне и джс изкоробки.
>>861012вроде в 2.4 запилили
Как ОТРЕФАКТОРИТЬ accepts_nested_attributes в form object?Лол, в т9 слово уже капсом. Убрал fields_for в форме, самому вручную что-ли каждый инпут теперь настраивать чтобы на сервер нормальный хеш пришёл?(
>>861012Стандартные библиотеки говно, по разным причинам.Мне сегодня нужно было написать обработчик на какие-то урлы с русскими символами для хттп-парти. Взял стандартный URI.encode. Отправляю запрос, а оттуда хуй вместо ответа. Начал разбираться. Выяснилось: стандартный кодировщик вот уже (как минимум) три года не такой rfc-compliant как хотелось бы, многие uri обрабатывает неточно, а я со своей проблемой не один такой. Там же советовали гем "addressable". Поменял, и, действительно, запросы и ответы стали такими как и должны были быть.
Подскажите как сделать лучше: есть бот для стороннего веб-сайта который работает как фоновая задача (rabbitmq+sneakers), он должен выполнять разного вида задания. В вики написано что для каждого типа задания надо создать отдельного воркера. Проблема в том что для работы боту надо залогиниться на сайте (получить куки, в будущем возможно установить постоянное соединение), как мне передать куки разным воркерам.
>>861239Т.е. например мне надо запустить 10 ботов — сначала отправляем запрос к серверу, он логинится, получает куки и для каждой задачи создаётся по воркеру с уже установленными куками, и так 10 раз.
Ребята, ваше мнение насчет form object:Должна ли форма искать модель, или контроллер передает ей уже найденное?Или может контроллер передает ей только id?
Может вопрос не в тему, но я же совсем нуб. Так вот, надо проектик сделать. Вместо стандартной базы данных надо использовать MySQL. И вот я начал. Откопал гайд по установке БД: https://www.digitalocean.com/community/tutorials/how-to-use-mysql-with-your-ruby-on-rails-application-on-ubuntu-14-04Дошёл до "mysql_install_db" и получил первый пик.Пробую "mysqld --initialize" и получаю второй пик.На стаковерфлоу советуют удалить либо сам каталок /var/lib/mysql, либо содержимое этого каталога. Удалял содержимое каталога и пробовал снова "mysqld --initialize", в результате чего команда выполнялась без ошибок и я получал заполненный каталог /var/lib/mysql. После чего снова пробую "mysql_install_db" и получаю ошибку с первого пика. Сносил MySQL и пробовал заново. Все похожие решения на стаковерфлоу испробовал. Почему я даун такой? Почему не получается? Помогите, пожалуйста.
>>862057docker run mysql/thread
>>862057это ШINDOШS? Если да, то лучше ставь линукс дуалбутом #а то и дропай шиндошс к хуям#. Руби/рельсогосподам нечего ловить на шиндошс
>>859241Элексирчик такой, вот какой)Пока некоторые вкатываются в реакт и прочую жс поебень, прошаренные поцаны щупают феникс, который по удобности, красоте кода такой же как руби, только лучше.
>>862568хуй работу найдешь
>>862578На руби пока есть места, даже новые проекты продолжают писаться (хотя и на пыхе они выходят). Я к тому, что это руби 2.0 в скором времени будет, все к тому и идет.
Матц сказал что в следующем году руби 3 точно не будет.
>>862668Это сильно плохо или не сильно плохо?
>>862688Это значит что они слоупоки и еще толком не решили как надо добавить много важных абсолютно новых фич при этом оставив совместимость с предыдущими версиями. Зато 2.4 в декабре и +5% к производительности прямо как у интелаhttps://youtu.be/8aHmArEq4y0
>>862668За 23 года появилось дошли до 2 мажорной версии, если считать что цикл разработки близится к концу, то можешь посчитать сколько осталось.Это не сильно плохо или хорошо, вообще насрать какая сейчас версия. Вот то что язык развиваится, и фичи типа гильдии (см. видосик ниже) в разработке, радует, да.Да и компилятор который умеет в минимальный статический анализ, штука Впрочем, зацикливатся на руби не стоит, в любом случае. учи эликсир хаскель.
>>860742Ты фортран с фортом попутал и все запорол.
>>861012[1] pry(main)> foo = "bar"=> "bar"[2] pry(main)> foo.capitalize=> "Bar"[3] pry(main)>
>>863040Ты совсем дурачок, да?
>>863077А ты? 2 команды вбить не можешь? мамкин програмер
>>863146А теперь подумай.
>>863155Думай сам, мудила
>>861012https://ruby-doc.org/core-2.2.0/String.html#method-i-capitalize
>>863156Ох, лол, каждому итт школьничку нужно подарить по футболке с таким принтом.
>>863157>>863159Он это имел ввиду, лалкиhttps://bugs.ruby-lang.org/issues/10085>>861134-кун
>>863229> Added by Martin Dürst over 2 years ago.=(
Спасибо, что перекатили.ОП предыдущих тредов
>>863229Ну так я на это и намекал школьничку как бы, чего ты меня хайлайтишь-то.
Как получить xcode аноны? сделал vmare эмуляцию с капитаном, из апстора не качает а левый пидорасится как сучечка. Ох уж эта анальная зависимость.
>>863367Эпплобляди должны страдать.
>>863258Ты бот.
Аноны я вообще правильно делаю? https://ideone.com/M5pVToСуть в том чтобы метод класса возвращал массив уже инициализированных объектов другого подклассаПросто класс в классе смотрится странно (я ньюфаг)
>>863595Ты нарушаешь основной принцип solid: каждый класс отвечает только за свою работу. Лучше так не делать, смешение логики превращает код в кашу. Очень невкусную кашу.Твой код, можно отрефакторить через duck typing, например, так https://ideone.com/FbALvwТеперь Api может работать с любым классом, что имеет публичные конструкторы, а не только с posts. А классы ничего не знают друг о друге. Еще, мне не понятно зачем нужна переменная post. задачу можно решить без нее, через анонимные функции (замыкания) (раз уж ты захотел поиграться с каллбеками): https://ideone.com/xYA62aпри этом обрати внимание, каждый вызов метода fetch_threads будет приводить к созданию новых объектов. И, наконец ответ: лучше не писать классы в классах. На это должны быть веские причины. И даже если они есть, ты, скорее всего, делаешь что-то, что потом придется переписывать.
>>863367Как ни странно, можно без xcode. Когда будешь устанавливать brew, то тебе предложил прямо из терминала запустить команду, которая только компилятор от xcode вытащит, а не всю программу из AppStore.
Йоу, парни!Ходил кто на RailsClub? Когда выложат видео оттуда или слайды презентаций?https://www.youtube.com/watch?v=70Q-OTl14e8
>>863620Вот ты говоришь что надо их разделить но дело в том что у меня в классе SomeApi есть метод который используется и в Post, (конкретно он генерирует часть урла для запросов, что-то вроде токена) и используется только в этих двух классах и пользователю он и не нужен (т.е. вроде и нету причины делать его публичным) но и вызвать его кроме как через instance.send :meth я не могу.
>>863683если ты хочешь нарушить инкапсуляцию объекта, то можно использовать в инстансе класса Post метод instance_eval для инстанса SomeApi. Инкапсуляцию пробьешь, но это считается плохой техникой.Альтернатива — рефакторинг SomeApi и Post, с выносом логики которая отвечает за все что связано с токенами в отдельный класс, и может быть даже в отдельный неймспейс, чтобы оградить внутренности от взгяда пользователей.
>>863724Окей, спасибо.
>>863682Какой жу уебищный акцент, прям как у индусни, хуй поймешь
>>861134Таки запилили2.4.0-preview2 :001 > "руби".capitalize => "Руби"
Посоветуйте книжку по руби для тех, кто шарит, без воды (нет, не хочу читать документацию, хочу красивую пдфку). Желательно написанную критически настроенным автором, с описанием всяких подводных камней, узких мест, спорных решений и бест практисов.А, ну и какой-нибудь хороший код небольшого объема на почитать посоветуйте, если кто-то шарит.
>>864919Удваиваю реквест. Прагматик гайд из шапки нихуя не прагматик - дропнул это промывание мозгов, не дойдя и до сотой страницы.
>>864919Тонкости по языку:Ю. Мацумото, Д.Флэнаган. Язык программирования Руби О паттернах метапрограммирования: Paolo Perrotta Metaprogramming Ruby 2Потом, можно почитатьРефакторинг. Ruby Edition 2009И где-то в конце обмазаться Rails AntiPatterns. (если рельса интересна)Это, на мой взляд, must read advanced книжки. Теорию можно надрочить, почитав Круглова и его Ruby 2.0.0.По коду, смотри сам, что по силам/интересно то и разбирай. начать можно отсюда:https://github.com/markets/awesome-rubyнапример, тебе наверняка будет интересно узнать какие методы есть в библиотеках, что расширяют базовые классы (чтобы потом не придумывать свои велосипеды). это библиотека facets:https://github.com/rubyworks/facets
>>864928Меня очень настораживает тот факт, что ты даешь русские названия книг - это вроде бы дает повод усомниться в твоей компетентности. С другой стороны - логично же прочитать книжку от Матца, раз уж он ее написал! Спасибо, ее и полистаю для начала.
Что это вообще такое, в руби что нету нормальной http билиотеки ?Использовал раньше http.rb, но в один момент он вдруг отказался возвращать внятный ответ, а дело в том что он со сжатием работать вообще не умеет. Ну я такой, ладно ведь дохуя же библиотек разных должно быть. Захожу на ruby-toolbox, 1 в списке гем rest-client: не может сам автоматом распарсить json по заголовку content-type, окей 2 гем faraday: изкоробки не работает с куками, нахожу middleware faraday-cookie_jar - с куками он то теперь работает, но я получить значение этих кук не могу. Дальше идет multipart-post вообще не отдельная библиотека а расширение стандартного net/http
>>866626Ага, faraday может, но для этого надо еще строк 20 написать, опять же из коробки такого функционала нету.
>>866642не faraday a HTTPartyписал свой буггурт а потом стер
>>866626А ответ один - юзай clj-http, clj-http-client, http-kit, etc etc
А есть какие-нибудь гемы чтобы в сложные жсон парсинге можно было ориентироваться, или сразу нужные ключи выдергивать, просто у меня пикрилейтед, и это еще не конец.
>>868059> это еще не конецА написано, что конец. ;););)
>>868059https://codon.com/refactoring-ruby-with-monads#abstract-data-types
Антуаны, а как/куда вы деплоите rails приложения? Внятных инструкций кроме как для хипстерского хероку я не нашёл, а хочется чего-нибудь бесплатного и относительно простого. Может, посоветуете чего-нибудь? Спасибо.
>>868226https://mkdev.me/posts/nastroyka-i-deploy-rails-prilozheniy-pri-pomoschi-ansible-i-capistrano
Ребят, помогите фронтенд мартышке понять РБД в разрезе рельс. Вот пример с рецептами и ингридиентами.Суть токова, что у рецепта может быть много ингридиентов с доп полем - количество.У пользователя тоже может быть много ингридиентов с количеством. Ну и рецетов много может быть, но на картинке не указано.Не слишком дичь я нарисовал тут, так и должно быть или хуйня какая-то?
>>868687хз так-то для таких ситуаций есть counter_cache http://rusrails.ru/active-record-associations#counter_cacheпишешь опцию в модель индигриенты и рецепты(для юзера), пихаешь в таблицы рецепты и юзеры столбцы с рецепты_count, и готова
>>868687Зачем тебе хранить к-во ингредиентов в базе?Ты можешь просто написать recipe.ingredients.count а чтобы это выполнялось без дополнительных sql запросов, делай как тебе посоветовали тут >>868712
Бял, тестов куча, что делать чтобы их ускорить? Больше всего занимают request тесты json api, следующими идут интеграционные с капибарой.
>>868840Я кстати попытался тестировать вручную operation'ы jsonapi-resources, вместо того чтобы гонять целый стек, но чет не вышло. заебло сурцы это гема читать
>>868845Очевидно, не пользоваться ссаным jsonapi-resources, это не гем, а какая-то инвалидная параша для неумеющих в архитектуру. И вообще сам по себе стандарт JSON API мало профитов в себе несёт и кучу уродского гемора - больше похож на корявую имитацию graphql. Можно использовать, если у тебя целый зоопарк разных девайсов пользуется api( чтобы не приходилось всем вручную обрабатывать ответы), и по каким-то причинам невозможно заюзать graphql. А так других доводов в его пользу по сравнению с ad-hoc API я еще не видел.
>>868764>>868712Так, это. Каунт != количество, не? Я конечно не сильно шарю, но по-моему таким образом я смогу узнать только size ингридиентов. Типа>recipe.ingredients.count >3А мне надо иметь количество каждого ингридиента, как-то: Сыр - 100 ед., Залупа - 5 ед., Корокодил - 0.5 ед. Ну как в рецепте.Т.е. есть таблица в которой перечислены всевозможные ингридиенты. И, например, пользователь может создавать рецепты, делая выборку из существующих ингридиентов, присваивая каждому количество. Я почитал райлсгайдсы и пришёл к выводу, что тут нужна мени-ту-мени связка. Но если между двумя моделями Recipe -> QuantityIngredients <- Ingredients всё в принципе понятно. Джоин таблица держит айди рецепта и айди ингридиента и заодно его квантити. Но если мне понадобится сюда прикрутить UserIngredients? А потом и UserRecipes, начинается казаться что получиться какая-то каша лютая из ассоциаций. Посему и советов мудрых прошу.
>>869019А вот я сразу понял, что ты имеешь в виду, в отличие от тех анонов! Лол.Если честно, я бы не стал ебаться с джойнами, тут смысла в этом нет для таких данных, как мне кажется. Просто засунь в рецепт одно жсон-поле "ингредиенты" вида айди->количество. Или юзай монго, например. Вообще, у тебя что, игра какая-то? Потому что если не игра, а действительно сайт с рецептами от юзеров, то АСТАНАВИТЕСЬ и ПОДУМОЙ - ты правда думаешь, что кто-то будет указывать точное количество крокодилов и сахарного песка, а потом еще и искать рецепты ровно с двумя крокодилами? Ето же оверинжиниринг как он есть.А если ты это в качестве упражнения, то да: айди рецепта, айди ингредиента, квантити. Айди юзера, айди ингредиента, квантити. Под юзерРесипис ты что имел в виду? Просто у рецепта добавляешь поле "автор", "оунер" или что там у тебя. Если много авторов у каждого рецепта - то да, еще одну таблицу, аналогичную тем, с ингредиентами.
Посоны, говноэникейщик в треде!Готов тратить на программирование 25 часов в сутки, 8 дней в неделю! азаза, нет конечноВ сущности я хотет вкотиться в вэб. хтмл и цсс знаю более-менее. Но хочу уметь в динамические сайты.Посему на данном этапе должен выбрать между PHP/RUBY/жабаскриптиз знаний в программировании - забытый с института паскаль.Вот пришел к вам за советами мудрыми - стоит ли мне начать мои мучения с Ruby? Или таки пиздовать в ПХП-тред?Вообще в Руби сложно вкотиться?
>>869044П.С.Тащемта я хотет себе что то типа хобби. Хочется мне изучить полезный язык программирования.есть "русские" книги для начинающих? Потому как в спец. литру на английском я боюсь не влезу.
>>869037Спасибо тебе за понимание, анон. Я сам-то обычно монгу и пользую, как-то так сложилось что в джс среде это первый выбор. Но хочется расширить горизонты.>АСТАНАВИТЕСЬ и ПОДУМОЙЯ в качестве РБД упражнения да, но что такого в точных кол-вах ингредиентов в рецептах? У меня на телефоне приложуха есть, я туда ввожу список хуйни из холодильника, а она мне выдаёт что я могу сварганить из этого. По-моему удобно.>Просто у рецепта добавляешь поле "автор", "оунер" или что там у тебяДа, это будет верным шагом, потому как рецепта без овнера быть не может в принципе, т.к. создавать рецепт может только авторизированный пользователь.Меня больше всего, что смущает: это получается, что у ингредиента будет, например, четыре ассоциации.[CODE] has_many :recipe_ingredients has_many :recipes, through: :recipe_ingredients has_many :user_ingridients has_many :users, through: :user_ingridients[/CODE]Это в порядке вещей? Ну и ещё интересно как работать будет сериализация, вот скажет Рецепт модель.[CODE]class Recipe < ApplicationRecord has_many :recipe_ingredients has_many :ingredients, through: :recipe_ingredientsend[/CODE]Если я буду эту модель сериализировать через, скажем, актив модел сериалайзер, то по первой ассоциации (has_many :recipe_ingredients) я получу то, что и должен получить: вложенный жсон аррей из { recipe_id, ingredient_id, quantity }. А вместо ingredient_id мне нужно будет подставлять реальный ингредиент, т.е. ещё один запрос в базу делать?
Хмм, поясните за assets pipeline.Вот при скаффолдинге он создает файлы типа <model_name>.js. В чем профит писать код в этих файлах, кроме, хм, разделения? Ведь все равно он сливает все в один файл и грузит все сразу в продакшене? Допустим, у меня есть редковызываемый модал в модели users, в котором есть много js событий. Если я напишу этот код в "users.js", то лишний раз нагружу канал, все будут грузить полный application.js (а он еще по-умолчанию блочит рендеринг). Логичнее ли зделать подгрузку скрипта непосредственно при клике на модал? Вот как лучше? inline код вроде бы не rails-style.Пользуясь случаем, /r/ гайдов по оптимизации asset'ов, самое узкое место в app у меня.
>>869065application.js по дефолтуТы можешь добавить сколько угодно файлов манифеста, и инклудить их на вьюхи к нужным контроллерам.
>>869049Учи английский.>>869053Ну просто если в рецепте написано "четыре яйца", то можно сделать то же самое с тремя или двумя яйцами. Непонятно, нахуй это надо тогда - я ж не повар, мне не порцию ровно в двести граммов надо, мнетпожрать надо. Короче, лично я не вижу в этом смысла, вот. Но может это джаст ми, да и оффтоп, так что ладно.Про запросы: http://apidock.com/rails/ActiveRecord/QueryMethods/includes ну и там дальше по докам смотри.
>>868973GraphQL ещё малопопулярен. jsonapi-resources выбрали, потому что у меня нету опыта в написании API, а нужно было быстрее (
Как отключить загрузку кастомных шрифтов в тестах? Писать fonts.css.scss.erb чет выглядит костылем.
>>869169>GraphQL ещё малопопуляренЗато эффективен. Ad-hoc быстрее бы получился и опыт бы появился как вообще API делать "по-обычному". А это ведро с гайками не гнётся вообще никак, только круды на нем клепать. Если REST обычно в этом винят, то он хотя бы не налагает на тебя каких-то архитектурных обязательств в отличие от.
>>869207А можешь доставить ссылок на то, как рест в этом винят? Только не кукареки от петушков, а что-о обоснованное?Мимо.
>>869207Ну, моя работа и есть ебашить круды... Я бы не смог убедить заказчика взять graphql, потому что так модно и молодежно, ему нужно быстрее, и проверенное решение.
Реквестирую архитектора в тред.Короче, вот есть статус у сущности (draft, published, archive). Статус выражает некоторое свойство. На него может быть завязана небольшая логика (типа нельзя комментировать в статью в архиве) или валидация.А есть состояние, которое выглядит на первый взгляд так же как статус (new, in_progress, executed, completed, rejected). Но в отличии от статуса с состоянием связаны процессы, которые производят много действий, могут меняют этот и другие объекты. Процессы могут быть необратимые ака нельзя повернуть время вспять, особенно если связаны с внешними системами.Вопрос - как правильно работать с состояниями?Тут нужно объяснить, а в чем собственно проблема. И объяснить мне сложно. Но кто сталкивался, тот я думаю поймет. Во-первых, валидации. Логично что объект должен валидировать свое состояние. Но процесс связанный с переходом намного шире зоны ответственности объекта и ему тоже нужно заниматься валидацией.Во-вторых, действия при переходе. Они намного шире зоны ответственности объекта. Даже не заморачиваясь по поводу лучших практик, декомпозиции и слабого связывания, начиная пихать всю логику в модель, обнаруживаешь что это воняет.В-третьих, процесс как-бы стоит над объектом, оперирует самим объектом. То есть с точки зрения объекта есть переход из A в B. А с точки зрения процесса мы из А можем перейти в B,C,D,E. И после перехода объекта сам процесс при этом еще может быть не завершен и даже откачен назад, если так решит процесс. Вроде как для этого существуют стейт-машины. Но те гемы что есть, они эти проблемы не рашают или решают частично. Максимум что дает стейт машина это валидацию переходов виде методов can?(). Гуарды раздувают модель, обработчики (собственно процессы) не могут вместиться в реальный процесс потому что не разбирают когда нужно фактически сменить атрибут, когда сделать валидацию, когда открыть и закрыть транзакцию - они как-бы внутри объекта.В общем стейт-машины не дают паттерна работы с состояниями, а только дают валидацию.Не знаю, получилось ли у меня описать проблему.Я сейчас использую ServiceObjects для самих процессов и простенькие валидаторы переходов в моделях. И в модуль вынесен небольшой функционал для трекинга истории переходов.Но все-таки получается как-то коряво. Есть ощущение, что это делается не так.Прошу совета гуру паттернов проектирования.
>>869446> объекты> объекты> объектыЯ знаю, в чем твоя проблема, дружище.
>>869472Не моя, а твоя. Тебе в другой тред.
>>869446Короче, я не гуру, но мне тоже интересно, так что напишу свои мысли, по абзацам.Зачем ты про статус вообще говорил, если у тебя вопрос про состояния? Объект не должен валидировать свое состояние, он его должен молча хранить. Отдели данные от логики же.Стейт-машина конечно нужна, но по-моему совсем необязательно тащить либы для этого в код. Тебе просто нужно нарисовать в любом редакторе эту самую стейт-машину со всеми переходами и ичпользовать ее как документацию\спецификацию.Не очень понятно, в чем именно у тебя проблема, потому что сложности тут должны возникнуть с асинхронностью, хранением истории и откатами, ненадежностью внешних сервисов и обработкой ошибок... а ты спрашиваешь, пихать валидацию в данные или нет. То есть непонятно, какая у тебя в целом структура кода. По-моему ключевым решением тут было бы, например, хранение данных в иммутабельных объектах, чтобы нахаляву получить историю и откат, ну и что-то эвент бейзед с каналами, чтобы не было коллбэк хэлл. А сверху приправить монатками чтобы грациозно ловить фейлы от внешних сервисов ладно шучу
>>869446GOF Strategy Pattern
>>869486> @strategy ||=забыл, а то ведь >>869446 недогадается, и потом: "кококо где память, Зин"
>>869508я не стал мемоизировать, потому что status может поменяться, а #strategy будет возвращать неправильный объект.
>>869726И поэтому решением будет инкапсулирование логики в фабричный метод, а не ссылка на конструктор класса напрямую. Заодно, >>869446 решит свои проблемы с > И после перехода объекта сам процесс при этом еще может быть не завершен и даже откачен назад, если так решит процесс. реализацией транзакций и валидаций.
>>869754Кстати да, спасибо. Будет время отрефакторю, там еще много дерьма всякого (
>>860724 (OP)Привет ребята! Я психолог кун, вкатываюсь в жс и заодно хочу написать о связи популярных языков (петон, раби, жиес) с нетрадиционной сексуальной ориентацией.Есть готовые поделиться своим опытом разработки?
Допустим есть паблик метод, который вызывает приватный get(args) request(args, method: :get) #приватныйendКак запретить вызов get(1,2, method: :post) ?Или я придумываю себе проблему на пустом месте и можно просто в доках написать какие параметры можно передавать в метод get и не париться ?
>>869916args.merge(method: :post)
Как бля засетапить нормально реакт-редукс хуюкс на рельсах?Примеров в нете нету, только пустой репозиторий на гите с каунтер аппом. Я даже не могу сделать чтобы js.erb говно работало.
>>870019react on rails?
>>869945Спасибо, сам до такого же додумался.
Как вкатитьсяя джуном в ДС2, если вакансий нет ? Знаю rails 5, devise/bcrypt, rspec/capybara, знаю bootstap 3, jquery (Ui тоже), scss. Скоро буду изучать либо реакт, либо ангулар (склоняюсь к последнему). На мида не потяну - инфа сотка, но вот что джунить смогу, уверен. Так как вкатиться?Аноны, поделитесь исторями успеха, а то в дизморали нахожусь.
>>870130спами повсюду свое резюме, даже если в вакансиях ты ненужен, если есть интересное портфолие то могут предлоть чтоолибо
>>870070Бля еще читать, у меня уже вкладок 15 схоронено с документацией. Конечно когда-то дойду до них, но сейчас мне бы хоть разобраться, пилить фронт нужно полностью на реакте, или только компоненты с ебанутой логикой?А то я попытался запилить примитивный хедер в котором одни кнопки у юзера и другие у гостя и соснул.Хедер это вообще компонент или контейнер?
Анонас а есть такой плагин для атома который будет предлагать автокомплит на основании rdoc/yard документации, и чтобы это работало для всех гемов а не только для файлов проекта?
>>870217
>>870200Можно и так, и так. Можно даже несколько рутов иметь. Не еби мозг, делай все через реакт.
>>870254Да бля Вопрос офк не в программач, но я не ебу какПередаю я допустим в компонент обьект юзера. Это просто джейсонина с данными из моделиЕсли мне нужно в компоненте чекнуть значения каких-то методов модели, передавать их отдельно? Ну это хуита, вот другое, пытаюсь ебануть js.erb чтобы хоть урлы забрать из аппа, инстантли сыпется и говорит browserify error import or export can be included only within sourcetype module.И в гугле нихуя по этому поводу нету
>>870019Никак, блядь. Пайплайн хуй говно остой пидорский, последний раз пользовал 4.2.6 и надеялся что в пятые рельсы наконец-таки подвезут фронтенд суппорт нормальный, но хуй там. Вчера весь вечер и пол ночи сидел ебался с этими обоссаными гемами, такая ересь ебаная. Сегодня утром сел, уебал нахуй с вертухи весь assets/javascripts, создал отдельную папку, поставил туда всю человеческую инфраструктуру, настроил вебпак с аутпутом в assets для прекомпайла, организовал себе через хелперы хотрелоад, и написал на реактоне с редаксом весь UI за пол дня. В рельсавьюшке осталось в итоге:[CODE]<% if user_signed_in? %> <main id="app"></main><% else %> <%= yield %> <-- devise login page<% end %>[/CODE]Все данные через актив модел сериалайзеры гоняю, этот джбилдер по-моему какая-то помойка. Остался конечно вопрос с менеджментом сессии в приложении, но это дело житейское. Думаю просто поллить рельсы раз в n-секунд на акшен вовзращающий стейт авторизации и на клиенте соответствующим образом реагировать.
>>870286У тя это говно ентерпрайз, или дашь попалить?
>>870258В реактовом компоненте чекнуть "значения методов" рубиновой модели? Ээ?
>>870319Ну дыкЯ же говорюЕсть обычный фронт на аштиемелеТам я вывожу Х если у юзера одно говно или У если другоеЧтобы ебануть эту же проверку в реакте, нужно датой в компонент передавать результат этой проверки, так?А что если в разных кейсах я передаю от 0 до кастомного числа таких проверок?
>>870340Ты дичь какую-то несешь. Передавай на клиент своего юзера жсоном, и там уже, на клиенте, делай с этим жсоном какие хочешь проверки. Если у тебя проверки только на сервере могут быть сделаны, то шли запрос на сервер, жди ответа, обнновляй состояние. Я вообще не понимаю, в чем у тебя проблема. У меня такое чувство, что ты хочешь руби-код с сервера на клиенте исполнять, или я не ебу, что еще.
>>870387Не, нихуяСамое элементарное, у юзера есть метод xuesos?Который пляшет не от поля в модели, а от какой-то другой хуиты. Когда я передаю юзера в компонент, и хочу заодно в компоненте чекнуть xuesos? ли он, тогда нужно ретурн велью xuesos? передавать отдельно, так?Предположу что так, тогда смотрим дальшеЕсли юзера вообще нет, я хочу рисовать две строкиЕсли есть, три, а если есть и хуесос то четыреМне в пропс нужно передавать всегда все эти значения ("типа" если юзер есть, то это user: user, xuesos: user.xuesos?) а если нет, то чтобы на клиенте это чекнуть все равно нужно передать и то и то в пропс, но пустое. Так?Сорри если хуево обьяснил
>>870406> Нихуя> Хуесос> Хуеты> ХуевоБлядь, чувак, тебя в детстве батя выебал, или что? Ебаный стыд же, господи иисусе!Ты передаешь компоненту все, что ему надо для рендеринга, а уж откуда и как - это твое дело. Ну или я нихрена не понял, что ты спрашиваешь, пусть тебе кто-нибудь еще посоветует, короче, я не врубаюсь, сори.
>>870414Деградирую, уже не могу нормально выражаться, что я сделою. Прогать на рельсах ни разу не стимулирует мозговую активность я тебе скажу
>>870419Попробуй literate programming, пока манагер не видит!
>>870217бампули
Еее, я разобрался со структурой. Следующий вопрос, должна быть возможность писать js.erb файлы с реактом или нет? Пушта у меня это не работает, а в теории должно, сначала же рельсы делают из ерб обычный жс, а уже тогда этот жс компилится в browserify, нет?
>>870635По ходу нет. Окей. Придумал следующий гениальный костыль. Написать хелпер типа link_helper.js который возвращает хеш внутри которого хеши по скоупам, внутри которых пары ключ - урла. После чего инклюдить этот хелпер в компонентах и юзать урлы оттуда. Очевидно что для этого я ембеддед руби тоже не заюзаю, значит надо как-то генерить его из роутов. Я чекнул пару результатов по generate asset rails и generate file rails но там не то. Эни айдиас? Или это вообще не нужно?
>>870286react on rails юзаешь?
>>870635ты неправильно готовишь реакт с рельсами. ВООБЩЕ СУКА НЕПРАВИЛЬНО 100500 ТУТОРИАЛОВ БЛЯТЬ ЕСТЬ
>>870686Где же они? Чет я нихуя не нашел кроме каунтер аппа, аппа для учета расходов и говночата, и все 2-3 летней давности, а самое примитивное вообще не обьясняется
>>870812инбифо у меня должен быть СПА без ссылок
В ньюфаг-треде мне посоветовали Ruby для самого быстрого вката во фриланс за еду. Вы согласны с этим?
>>871579html сначала выучи лол
>>871580Обязательно? Основы программирования и ООП я уже знаю, пишу на крестах, но деньги понадобятся раньше, чем я смогу их заработать плюсами.
>>871586Ну, я хз как можно вкатиться в рельсы, не зная html. Ты тупо не поймешь о чем идёт речь. Потрать недельку на втыкание в htmlbook и написание бложика.
>>871579> Rubyумирает> фрилансумирает> для самого быстрого вкатаумираетБери Haskell
>>871684чувак из вселенной, где трамп выигрывает пост президента.
>>871684Склонен согласится, с этим философом, всё что рождено, но не умерло — умирает.
>>871709Если-таки выиграет, сядешь Haskell зубрить?
>>871831Блядь, что-то мне не нравится такая связь между хаскелем и трампом. Трамп - это пхп. А Хиллари - это джава, угу.мимо
>>871844Они оба/обе за галерный аутсорс, так что нахуй их с пляжа!Я лично буду молиться за либертарианского кандидата Джилл Стайн.
>>871579Нет, учи Mercury и LambdaProlog.
>>871855У тебя же нет гражданства США.
>>871684>Ruby>умираетhttp://githut.info/https://github.com/blog/2047-language-trends-on-github
>>871871Даже цсс популярнее руби, лол. А ведь он даже не тьюринг полон! Wait... OH SHI~
>>871877Ясно что будет, кроме него не как не покрасить сайт Руби безумно популярен и в вебе и просто в софте
>>871871Там же инфа за 14 и 15 год.
Я вот думаю чтобы нахуй отсоединить фронтенд от рельс. Пробовал кто? Думаю юзать React On Rails + Semantic UI React для быстрого прототипирования
>>871972По-моему тебе еще неделю (или сколько там) назад об этом говорили.
>>871972вот этот хуй пили нечто подобноеhttp://alexfedoseev.com/post/55/react-and-rails-isomorphic-awesomeness
Почему вот так не работает:bets = Bet.joins(:nested_bets)bets = bets.where('nested_bets_count > 10')а вот так работает:bets = Bet.order("#{sort_column} #{sort_direction}")bets = bets.where('nested_bets_count > 0')bets = bets.where(game: a_game_filter)я знаю что joins как-то по-другому работает, но я не понимаю как сделать так чтобы я мог делать то что я хочу. Почему я не могу после joins еще делать query всякие? :(
>>872229NADO BYHNYT' i YSPOKOITCYA. I NI HADO GOVORIT' CHTO SDOHNESH OT CHAYA
>>872229Потому что скул запросв надо писать, сюрприз, на скуле, а не ебаться с ненужными слоями "абстракции".
>>872237>>872251спасибо, но ведь абстракции были для удобства сделаны, наверняка можно что-то сделать, просто я ещё не знаю как
>>872237что?
>>872255А тв на сгенеренную строку смотрел?
>>872332я не знаю как смотреть, в консоли? И что мне даст смотренье на неё?
>>872229Всё, я понял, надо использовать includes вместо joins.
>>872335Стимул пойти и выучить наконец SQL.
Когда вообще надо использовать символы как ключи в хеше? Т.е. например синтаксис для создания symbol: key намного приятнее но когда хеш приходит из другого источника то там обычно строки как ключи, и тогда ф-я в которой ты обращаешься по символу уже не работает. Это же больше невнятности вносит чем помогает.
>>872360http://apidock.com/rails/Hash/symbolize_keys
>>872363Ну я знаю что так можно, но какая вообще стандартная практика, когда их надо а когда не надо использовать ?
>>872367> но какая вообще стандартная практикаКлючи в хеш таблицах должны быть иммутабельны. Приводится 2 агрумента: 1. сравнения по иммутабельным строкам (symbols) быстрее.2. вероятность, что ты проебешь hash[key] снижается.---Ответ, когда их надо использовать, а когда нет ты найдешь если почитаешь вот эту хуйню:https://github.com/bbatsov/ruby-style-guide#symbols-as-keys
>>872335Тейблнейм.колумннейм
Как написать класс, имеющий доступ к хелперам rspec? С модулями то все ясно, пишешь модуль и config.include Module.
>>860724 (OP)Анон, что запилить на рельсах как пет проект?Что не стыдно будет показать при приеме на работу. Иными словами какой сайт сделать?
>>873799сделай двач.
>>860724 (OP)Стоит ли с Java переходить на руби?
>>873799Запили сайт с ачивками. Пользователь создает себе задачу "Накодить двач" или "выпилится" лол выставляет время 3 недели. Переодичски отмечая свой прогресс, пользователь получает это достижение. Потом в страничке своего профиля сможет пофапать на них. Можно сверху запилить сообщества, набры стандартных достижений, друзьяшек, ачивку дня и т.д.Вот такое вот вэб-приложение мотиватор.
>>873888Нет, Руби загибается, хуже Перла уже. HH ДС: Perl-215, Ruby-210.
>>873888Ну я бы не советовал. Жава господам просто неудобно будет с удобной и юзер-фредли жабы пересаживаться на руби.Хаскель норм, даже веб на нем есть.
>>873919Да нету на нем настоящего веба, игрушки только.
>>873919Заебесся ты на нем что-то писать. Нету нормальных библиотек.
>>874107>>874046почему мемы про хаскел всё ещё серьёзно воспринимаются, кек
>>874151Потому что утверждение "хаскель норм, даже веб на нем есть" истинно.
>>874107>>874151Не писал на хаскеле ничего серьезнее хелоу ворлда. НО знаю, что есть не мало сайтов на нем, даже борда русскоязычная на хаскеле написано. И это не шутка.Плюс фреймворки от эрланга набирает неплохо обороты. Там свои нюансы, но производительность и скорость выше той же ноды или руби. Имхо если вкатываться джава анону, то в какую то из этих технологий. Опять же на руби по прежнему много работы, в ближайшее время ее не убавится, а язык все такой же приятный для пользования.)
>>874271Ну вот у меня и была такая мысль, заняться руби и потихоньку смотреть/изучать на эликсиры с фениксами, а там как взлетит.Еще есть мысль в мобайл(iOS) переключиться, но не знаю стоит ли того, все таки другая область, да и не понятно как-то все будет в ближайшее время. Для себя пару приложений запилил таки.
>>873888Я бы не стал. Сам сейчас сижу на руби и эликсире + фронтенд. Но все эти рельсы, активрекорды, кукумберы, динамика, диалайзер-костыли меня уже доебали (а вот фронтенд в умеренных количествах нравится пописывать). Планирую перекатывать на скалу, в кровавый энтерпрайз, но понимаю, что джавой тоже придется скорее всего заниматься.Алсо, расскажи почему вообще возникли мысли о переходе с джавы на руби?
Меня тоже что-то заебали эти динамические языки. Первые пару месяцев это дает буст к производительности, но потом понимаешь преимущества статической типизации. Скала выглядит как донельзя перегруженная фичами жава, хаскель малопопулярен, F# тоже, C# разве что... Ну или в совсем крайнем случае писать фронтенд на TypeScript'e. React + Redux + Immutable.js пробовал, понравилось. Да, есть бойлерплейт, но это лучше, чем метаадок рельсов.
>>871869Потому я буду>молитьсяа не>голосовать
Как мне заставить regex кушать CRLF вместо обычного \n ?Можно конечно же gsub-ом заменить все \r\n но это же костыли.Пиздец как я охуел когда регекс у меня один файл парсил а второй нет из-за этой хуйни.
Анон, поясни нубу за стыковку рельс и современного фронтэнда. Для некоторых фреймворков и библиотек js не так просто даже хэлловорлд написать. Все эти транспайлеры, сборщики, менеджеры и другие инструменты далеко не всегда заводятся просто от добавления подходящего гема. На этапе изучения это становится реальной проблемой.Имеет смысл разрабатывать фронтэнд как отдельное приложение? В отдельной IDE, с отдельным проектом и все такое. Если да, то как? Где-то еще видел инфу, что для этого отдельно имеет смысл поднять ноду и весь js делать через нее, а часть представления из рельс вообще убрать. Поделись советом.
>>875787Да, фронтенд отдельно. Рельсы потом можешь выкинуть и заменить на ноду\кложурьскрип.
Если у тебя обычный круд, юзай обычный react-rails. Если нужно будет добавить redux , переходи на react on rails. Если у тебя большая тима, то имеет смысл разделить её на фронтендеров и бэкендеров, отдавать рельсам только json. 99% что тебе хватит React-Rails.
Сап, рельсач.Пилю фильтр на Ransack. Например, есть person у которого has_many cars и has_many bikes. Мне надо запилить чекбокс, который вернет всех person у которых есть хотя бы один байк.ХЕЛП!
Рельсаны, поясните пожалуйста один моментЕсть две rails-апликухи.Первая на рельсах 4.2.6, вторая на 5.0.0Из второй апликухи надо сделать mountable engine для первой.Возможно ли это с сохранением версий рельс для обоих апликух?
>>875896ransack это антипаттерн.
>>875129Я про это http://ideone.com/i5Ytay
Что скажете о геме https://github.com/globalize/globalize ?Эта штука создает для каждой таблицы в которой надо хранить поле на нескольких языках дополнительную таблицу model_translation. Я только начал создавать бд и у меня уже есть 5 вспомогательных таблиц, которые имеют связь с основной, 4 из них должны иметь переводы. Получается надо делать джоин на 5+4=9 таблиц и это только начало, это норма или нет ?
>>876752Выглядит как оверинжениринг для 90% проектов. Ты что там, фейсбук пишешь? Добавь title_ru, title_en и не еби моск.
>>876856Так это получается надо будет костыли в виде хелперов на каждый атрибут писать вроде if current_locale == :enМожно в модели виртуальный аттрибут запилить но это тоже немного костыльно.
>>876943Но ведь можно просто через локали запилить.
https://github.com/Leadformance/hstore_translate попробуй еще захочешКак globalize, только не плодит кучу ненужных таблиц. Нужен postgres, но все и так им пользуемся, верно?
>>875994Поясни
>>877157Это как?
>>877157I18n.t
>>877222Нужно писать человеческие запросы
>>877219Ты его используешь ? Просто гитхаб выглядит заброшенным.>>877283Если ты про локализацию в yml файлах то это не то, мне надо хранить данные на нескольких языках а не переводить вьюхи.
>>877315Это работа для человека-декоратора!class UserDecorator < SimpleDelegator def attribute public_send("attribute_name#{locale}") endend
>>877315Использую на 4-х рельсах, все ок. Там кода полторы строки, если чо надо - форкни да напиши.
>>877340И потом разбирайся кто где продекорирован, а кто нет. Лучше уж явно это как-то сделать.
>>863682Видео с RailsClub 2k16:https://www.youtube.com/playlist?list=PLiWUIs1hSNeOXZhotgDX7Y7qBsr24cu7o
>>877866спасибо, правда чёт пока первые две просмотренные видяшки не зашли.где Матц рассказывал про рельсу (лол).и где сорок минут какой-то хер рассказывал про ракетовелосипедостроение и основы ооп.
>>877757Ну засоряй модель, удачи.
у меня жопу рвет уже, делаю по тутору книжному, постоянно решаю какие то ребусы и ошибки, вылетающие при исполнении кода этого тутора. ТЕПЕРЬ ТО ЧТО НЕ ТАК?
>>878020Ковычки
>>878029я пробовал и ('Demo Blog') и двойные.
>>878030так вроде пишет что тут проебался
>>8780431) попробовал вообще убрать ковычки кроме ключевой фразы ("Demo Blog") - undefined method `content' for RSpec::ExampleGroups::StaticPages::HomePage:Class2) попробовал сменить '' на ' - та же ошибка, что и раньше. Попробовал скопировать код из книги без своих изменений(Demo Blog -> SampleApp) - нихуя. я испытываю анальные боли и желание начать изучать другой фреймворк для блистательного влива в быдлокодеры
>>878048в общем, нашел нестандартный солюшн.1) нужно обновить капибару до выше, чем 2.2, посылая нахуй требования учебника в 2.12) нужны gem 'database_cleaner' в гемфайл,require 'database_cleaner'require 'capybara/dsl'для спек и рейлс хелперов в папке /spec/3) много ебаться.
Есть pdf книги по Ruby?
>>878085бля парни rails / ruby учить уже реально поздно. вот реально, вы потом вспомните мои слова. спрос скатился на нет. инфа от инсайдера руби тусковки
>>878101А чо нужно учить вместо раби, мистер инсайдер?
>>878102Как будто ты сам не знаешь. haskell & clojure
>>877966Какой-то ты неумный, если для тебя декоратор здесь - серебряная пуля.
>>877966декоратор не нужен: хочешь написать свой велосипед — добавляешь в модель миксин, который подгружает аттрибутов модели, где-нибудь берет для этих аттрибутов локализакию и как-нибудь мутирует модель, добавляя названия. Но и это не нужно, потому что есть гем.
>>878048дело не в кавычках, достаточно было посмотреть что у тебя красным текстом написано: 'rack-test requires a rack application but none was given'Ну и соответственно, гугол первой же ссыкой дает решение:http://stackoverflow.com/questions/17666623/running-capybara-without-rack-produces-errors-when-using-url-parametersТак что могу предположить: ты написал какую-то дичь в config.app, а при обновлении капибары файл был перезаписан и все внезапно заработало.
>>878191ну и возможно, я бы даже почитал вторую ссылку, ответ из нее более ревалентный, на мой вгляд:http://stackoverflow.com/questions/25831227/railscapybarapoltergeist-argumenterror-rack-test-requires-a-rack-application---Кавычки в твоем случае, вообще ни на что не влияют, т.к. разницы значимой разницы междуexpect(page).to have_content ''yoba"expect(page).to have_content 'yoba'нет.
>>878194>>878191как видишь, я частично пользовался этими ссылками чтоб решить проблему. А конфиг я не трогал, такие дела.Я третий день ваш этот руби изучаю и просто делаю по книжке, ничего не кручу и не трогаю. И получаю уже третий баг. автор - пидорА другие книжки не настолько полные/удобные к прочтению.
>>878190Ты хоть понимаешь, какое говно ты щас предложил? Боги SOLID ссут на тебя
>>878309Без миксинов ты в любом случае нарушишь DRY в случае если нужно задекорировать больше одного ActiveRecord класса. 2. ActiveRecord это антипаттерн, так что SOLID боги обмазаны гавном by design, увы.3. Ты нарушаешь KISS, мне блядь нужно будет помнить о 50 задекорированных классах. Нет, спасибо, пусть миксин декорирует.Вообщем, когда я и остальные люди в подобных случаях просто будут использовать ' include MyTranslationModule' в соотв. модуле (или гем, что автоматом заинжектит 'MyTranslationModule' во все модели ActiveRecord) ты ебись со своими декораторами, кловун. Начитался блядь книжек о паттернах, а как их использовать не понимаешь.
>>878334DRY в случае рельс это нередко перегиб.То что там есть уже говно в рельсах, не значит, что нужно еще больше накидывать. У тебя весь код, нужный для presentation layer лежит в модели, да? лол, если правда.
>>878334А мутировать или перезаписывать методы эктиврекорда это вообще моветон, так пишут только мудаки, вдохновленные DHH
>>878361> А мутировать или перезаписывать методы эктиврекорда это вообще моветон, так пишут только мудаки, вдохновленные DHHДавай теперь весь параметрический полиформизм отменим, ведь анон на дваче сказал: 'ПЛОХА'> DRY в случае рельс это нередко перегиб.обоснуй где конкретно перегибы, и почему они настолько серьёзны, что перевешивают минусы влажного кода (WET).> То что там есть уже говно в рельсах, не значит, что нужно еще больше накидывать.Так ты его и накидываешь, плодя лишние сущности, там где это не нужно.
>>878372Стой стой стой, не уходи от сути. Ты считаешь, что модель должна иметь доступ к контексту I18n и вообще заниматься облагораживанием сырых данных для юзера?Не обязательно юзать декоратор, даже хелпер будет лучше того говна, которое ты предлагаешь.
>>878422Чувак же изначально говорил, что у него в базе хранятся строки на разных языках, полученные от юзеров. В таком случае это не и18н в привычном понимании. Это безусловно часть модели.мимо
>>878438Но ему нужно выбрать определенную строку, основываясь на текущей локали.
>>878445Ну? Не вижу, чем это отличается от "ему нужно выбрать определенный блог-пост, основываясь на запрошенном айди", например.
>>878446Он хочет модуль добавить, который автомагически будет всё делать, основываясь на текущей локали, а не вручную писать def translated_attribute(locale)end
>>878422> Ты считаешь, что модель должна иметь доступ к контексту I18n и вообще заниматься облагораживанием сырых данных для юзера?напрямую, не должна. Через делегаторы в миксины может, на эту тему можешь почитать rails antipatterns.Как общее решение есть drapper, но это тоже то еще говно, хотя и лучше того, что ты предлагаешь.Для единичных случаев сойдет хелпер.> Не обязательно юзать декоратор, даже хелпер будет лучше того говна, которое ты предлагаешь.Нет, не будет. Там выше, бтв, давали ссылку на гем, что делает примерно тоже самое, о чем веду речь. Подумай сколько декораторов и кода придется писать для >>877340 решения и для пикрелейд. p.s..за DRY в Rails пояснить в этот раз не забудь.
>>878453Ну этот модуль уже будет к контроллеру относиться, а не к модели, да. Впрочем, непринципиально.
>>878478>Нет, не будетПочему нет? Хелпер явно вызывается, а декоратор мимикрирует под оригинал, и поэтому не нужен. Это экономит кучу времени и нервов в будущем.
>>878478Эм, class I18nDecorator...endТверь серьёзно хочешь писать декоратор для каждоцифрового модели? Лол.
>>878619Для каждой модели *
>>878577> декоратор мимикрирует под оригинал, и поэтому не нуженОк, иди ^нахуй^ пиши всю логику модели в хелперы, он ведь явно вызывается.Спор идет о форме декоратора, хуй выше предложил на каждую модель хуярить по классу, я сказал — нахуй; хватит (неявно подгружаемого) миксина и одной строчки в декорируемую модель. >>878619> Тверь серьёзно хочешь писать декоратор для каждоцифрового модели? Лол.это вот этот >>877340 хочет писать на каждую модель по классу-декоратору. p.s. Если ты — все еще он, то, кловун, поясни чем тебе не нравится DRY в Rails (3).
>>878681Ткни, где тебе предлагали писать по декоратору на модель. То, что так делает драпер, не значит что декоратор везде так применяется, маня
>>878681>пиши всю логику модели в хелперы, он ведь явно вызываетсяЕсли так упарываешься паттернами, нахуя тебе модель? Какая в ней логика должна быть? Ее вообще нужно заменить на датамаппер, хуесос ты диванный
>>878727> Ткни, где тебе предлагали писать по декоратору на модель. Там, выше (>>878681) есть ссылка на этот код, где ты показываешь на примере UserDecorator как плодить лишние сущности, как мудак, что не знает, о понятии Бритвы Оккама.Но ты и дальше продолжай в глаза долбится, кловун.Нахватался баззвордов, а смысла не понимаешь. Даже не можешь свою позицию толком объяснить, только вопросы типа: "ОЛОЛО, а зачем нужен ХЕЛПЕР???", задаешь. Но, зачем, спрашивается, вопросы задавать, если ответы которые ломают твой мир, отрицаются, жертва Стокгольма, блядь.>>878732> Если так упарываешься паттернами, нахуя тебе модель?Иди нахуй, с такими вопросами. Разберись, для начала когда код идет в хелпер, когда в модель, когда блядь нужно подключать враппер и минусы и плюсы каждого подхода.Тогда и поймешь, когда имя аттрибута кортежа декорируется, а когда достаточно вынести код в хелпер вьюшки (подсказка, дело в DRY, за который ты по-человечески пояснить не в состоянии (три раза, кловуна, спрашивал), только громко кукарекаешь : 'ко-ко-ко DRY в рельсе не нужен, КО-КО-КО вредно, ко-ко-ко боги SOLID'. Вообщем, порвался, с придурка. В игнор, иди дальше сука плоди свое говно, вида: class UserDecorator, class OfferDecorator, class TvouaMamashaDecorator, вместо миксина и вызова однострочного метода. Да и не забывай, половину логики в хелперы пихать, чтобы твой сука, код ещё больше на лапшу походил, бог solid, блядь.
>>878748Че ты несешь, шизоид? Нас здесь больше двух.Декораторы и хелперы в данном случае - альтернативы, а не дополнения друг к другу, ебанутая истеричка.Так что там насчет датамаппера? И DRY не всегда нужен
Лол, ооп-бляди как всегща соснули. Не могут даже строку из базы дернуть без недельного срача.
Можно ли юзать популярные фронтендовские фреймворки (ангулярчик, реакт, эмбер) с рельсами? И как это вообще все происходит? Рельсы по сути высылают фронту только json, да? А он уже с ним ебется. Интересно просто как происходит написание сайтов на рельсах + фреймворках. Там же получается рельсовские вьюхи будут не нужны, да? И какой фреймворк посоветуете?
>>878796Поясни нам, далеким, как надо.
>>878748Мамкин DHH порвался, несите ActiveRecord::Base.suppress
>>878748Ты шо, даун? Это пример для одной модели же, где ты по декоратору на модель увидел ?
>>878797По разному можно. Самый простой способ реализовано в react-Rails. В react on rails уже юзается вебпак а рельсовый пайплайн лишь в продакшене
>>878797Я тоже пытался спросить об этом здесь >>875787, но на самом деле не понимал сложности вопроса. 2-3 трудных дня у меня ушло только на общение с гуглом. Признанной лучшей практики на этот счет я найти не смог и даже не совру, если скажу, что вполне равноправных рабочих решений существуют десятки.Как мне показалось, варианты с js-библиотеками запакованными в гемы не очень жизнеспособны. В современном js слишком много зависимостей от сторонних инструментов и в итоге либо ты будешь работать с неполным функционалом, либо постоянно ковыряться под капотом. "Экосистемы" рельс и js трудносовместимы, поэтому не получится просто разобраться с одним фреймворком js, а нужно научиться работать со всеми зависимыми штуками вплоть до самой ноды. Для себя я нашел два лучших решения: https://medium.com/@alexfedoseev/isomorphic-react-with-rails-part-i-440754e82a59#.qh8wp91qe и http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/Между прочим, хорошая иллюстрация различия философии руби и остальных языков. Если гемов в общем доступе на сегодняшний день около 100к, то пакетов для js уже больше 500к. При этом в js гораздо больше вариантов решений одной и той же проблемы, каждое из которых не доработано. Благодаря синтаксису и архитектуре руби люди с большей охотой разбираются в чужом коде и дорабатывают существующие решения, когда в js никто не хочет разбираться в чужом некрасивом коде, а просто начинают по сто раз изобретать один и тот же велосипед. Мне кажется, именно это и делает руби языком будущего вопреки трендам и проблемам с быстродействием.
>>878847будешь по-другому 2 модели декорировать? как?
>>878856> руби> язык будущегоАхахаха, ну ты и юморист, брат!Единственная причина, почему у жс в стопицот раз больше пакетов, до ужаса проста: он в стопицот раз популярнее руби\хуюби\языкнейм, все.
>>878857Юзать 1 декоратор?
React-on-rails это лучший компромисс ,из тех, что я видел.
>>878872ну раз один класс, то это очевидный модуль, а раз модуль, то почему бы и не миксин. верно? или ты любитель паттерна 'синглтон'?
Присоединюсь со своим вариантом.Создаем отдельный модуль с названием, например, AttributeTranslator у которого добавляем статический метод translate(object, prop, lang), который выглядит как-нибудь так: object.public_send("#{prop}_translations")[lang].Плюсы:В отличие от хелперов доступен везде, но при желание его вызов можно обернуть в хелпер.Не нужно добавлять миксины в модель и засирать ее логикой (привет, DHH).Легко тестируется + для тестирования не нужно создавать тяжеловесные инстансы AR, достаточно обычного PORO.Развели тут декораторы, миксины в модель, вообще охуеть.
>>878880> ну раз один класс, то это очевидный модуль, а раз модульС фига ли? Ты когда хочешь приклеить стикер с хуями к своей жопе, требуешь чтобы на все жопы лепили такие же стикеры?
>>878932Так вот и я о чем. Выше писал, что декоратор это просто пример, можно и хелпер, можно многое придумать, лишь бы не срать в модель как того хочет dhh-кун.
>>878864А может это просто люди пилят тот функционал который в нормальных языках уже есть в стандартной библиотеке?
>>878947Я просто жду, пока WebAssembly не станет доступным на 70%+ устройств. Пока посижу на бэкенде, устраивать анал карнавал с ЖС совсем не хочется.
>>878947Да без разницы, что они пилят, хоть твою мамашу своим хером. Язык популярнее => пакетов больше. Все, тхет симпл, бро. Кода на жс уже наверное больше, чем на джаве.
>>877340>>877315>>878932Пора двачу пилить свой гем, лол.>>878958И что тогда ? Сделают транслятор си/жабы/руби/питона в жс ? Нет, ведь тогда надо будет тащить кучу зависимостей по сети.
>>878935ты непоследовательный хуй. Давай всю логику над примитивами вынесем в отдельные модули. Не ну а чё, Матц засоряет String методами типа upcase. Если в дефолтном руби держатся библиотеки, типа Enumerable, то почему ты, хуй, кукарекаешь на библиотеки с аналогичной логикой работы уже в Rails? То, что модели active record перегружены — другой разговор.Короче говоря, ты призываешь велосипедить, потому что до тебя повелосипедили, я понял.>>878932Если бы так изначально предложили, я бы и спорить не стал, просто этот вариант с class UserDecorator < SimpleDelegator…endсовсем уж уебищный, по мне так.
>>878967Не в JS, а в байткод webassembly.
>>878968Причем тут нахуй примитивы?
>>878969>>878958Когда я последний раз на него смотрел, они говорили, что это не будет заменой жс в качестве компайл-таргета. Что-то изменилось? Или чего ты ждешь?
>>878971Почему в одни объеты ты срешь и не замечаешь, а для других объектов внезапно просыпается чистоплотность? Избирательный говноед?
>>878962Какой злой школьник.>Кода на жс уже наверное больше, чем на джаве.Я то думал что предназначение динамических языков в том чтобы писать меньше а делать больше, оказывается во вселенной джса все по-другому.>>878969Сути не меняет.
>>878981Как раз таки будет.
>>878984Не увиливай, примитивный. Не вижу связи между String и ActiveRecord::Base
>>878932Вот, двачую тебя. Только зря ты распинался перед тупарями, пускай опыт зарабатывают.
>>878994в String включен модуль Comparable, который делает какую-то полезную работу.в ActiveRecord::Base, есть миксин Translate4OTOTAM, который делает какую-то полезную работу.В первом случае ты жрешь что дают, а во-втором внезапно просыпается твое: 'КО-КО-КО миксины не нужны, давайте захуярим классы, наследование и далее по списку'. Нечистоплотный дурачек, да и только -.-
>>878984Предупреждаю, я другой анон.Потому что блять любой хуесос как ты может открыть документацию и прочитать про офффициальный насраж от рельс и т.п. Да, это говно, но это знают ВСЕ. А мне разбираться в твоей личной недокументированной дрисне потом? Да ну нахуй.
>>879014эм, ну открой тот же hstore_translate, там все задокументировано.
>>879020Ну ок, но он же предлагает самому замиксинить, вот это и есть самое западло.
>>878989> злой школьникСамокритичненько.>>878993А что там с гц?
>>879058> Пошли проекции от мамкоеба
>>879058напишешь - будет.
>>878984>>878984Тебе 3 анона сказали, что ты со своими миксинами можешь идти ебаться с DHH, а ты стрелки переводишь.
>>879066Проекции от тебя еще в прошлом посте пошли, привет.>>879080Ну так именно поэтому они (авторы стандарта) и говорили, что оно не будет являться заменой жс в качестве компилейшен таргета. Где ты увидел противоположное утверждение, можешь линк доставить?
>>879082Из вас троих только один отвечал адекватно >>879014 Ты со своим дружком задавал бессмысленные вопросы, да сводил все к личному срачу, кловун.Это решение, с миксинами, бтв используется в globalize и его производных.И ни одного валидного армента против ты не смог привести.Единственное, что мне разумным показалось, так это аргумент по усложнению уже засранного active record. Впрочем, это в первую очередь, к мейнейнерам active record вопрос. Но, есть и другие решения. вот, Draper::Decorator, например. Близко к варианту с кучей классов декораторов. Можешь почитать, как поливают говном,Или простое, по-своему красивое, решение, в виде хелперов:module ApplicationHelper def present(model) klass = "#{model.class}Presenter".constantize presenter = klass.new(model, self) yield(presenter) if block_given? endendВообще много чего есть. ----А теперь ты можешь и дальше покрывать меня говном, приводя в аргументы количество, лол, человек.Но уж прости: в этот раз уж постараюсь не реагировать буду на подобные высеры, хватит уже, покормил.
>>879105>Да без разницы, что они пилят, хоть твою мамашу своим хером.Залетный петушок обитает в нашем уютном треде
>>879107Я от всех хуйни с локализацией и просто отпишусь о декораторах.Декораторы в том виде в котором их зачастую используют в рельсо-комьюнити и как предлагаешь их использовать ты - это полная хуйня. Я понял бы, если создавалось много декотораторов для каждой модели, например, UserDecoratorForProfile, UserDecoratorForBilling и тд, а не как сейчас одна модель - один декоратор. При таком подходе фактически код модели размазывается на два файла, профита от таких декораторов никакого, да еще и оверхед от кучи вызовов method_missing.
>>879157да, презентеры полезнее.
>>879157Да, понял. Сильно проект большой?
4 года провел на одном проекте и слегка отстал от последних веяний. Как теперь деплоят? Что используют вместо фронтенда? Какие вообще новости, ребята?
>>879403Все перешли на эликсир и кложурь, можешь не париться.
>>879403мало что изменилось. разве что реакт добавляют на фронтенд, если jQuery стало мало.
>>879403chef+capistrano, из того что я видел.
Аоноы, есть ли какие-нибудь видосики где создают йоба сложный проект с нуля по шагам? Хартла прочел, но там примитив
https://repl.it/E84g/5Поясните почему не меняются значения в хэшэ?Нужно заменить ["1","2","3"] на ["a","b","c"], но почему-то изменения не сохраняются.
>>881636пиздуй на udemy, но там нужны бабосики (не рубли) платить
>>882942require 'json'data = '{"json_class":"RPG::EventCommand","type":"Show Text","parameters":{"json_class":"TranslatableArray","original ":["xuy"],"translation":["1","2","3"]}}'hash = JSON.parse(data)words = ["a", "b", "c"]hash['parameters'].each do |ex| if ex[0] == "translation" ex[1].each_with_index do |el, index| ex[1][index] = words[index] end endendputs hash.to_json
Аноны, нид хелп.Как выполнить действие точно при наступлении конкретной даты и времени указанного в поле бд. Поясню на примере: есть приложение для мониторинга выполнения задач. Создаем задачу, устанавливаем дату+время до которого задачу надо выполнить. Позже при наступлении указанного времени надо проверить завершена ли задача, если нет, надо отправить email о том что сроки нарушены.Из очевидного приходит в голову дергать бд каждые n минут, но возникает подозрение что это немного костыльно. Алсо задания могут создаваться отдельным приложением к оторому я не имею доступа.
>>883269def date @date ||= db_get_attrend
>>883280это чтобы не дергать каждый раз бд. Чтобы действие выполнять по сроку пощупай cron обертку какую.
>>883282Меня интересовало можно ли это сделать на уровне бд, что-то вроде триггеров.
>>883316Это костыль с точки зрения Unix philosophy. Она хоть, устарела в части 'use text streams', но неважно.Я предлагаю, простое решение. Отдельно менеджер, который запустится. Проверит задачи на ближайшие n часов, добавит нужные в крон, уснёт.Задача. Вызывается из кроном, порождает дочерний процесс, снимает с него результат. Что-то делает на основе результата.Всё что нужно, аккуратно выбрать пару гемов.
>>883269>>883269ActiveJob
>>883345Ну я уже вижу баг - а что если время окончания задачи поменяют уже после того как менеджер проверил задачи ?Алсо я говорил о задачах которые таски в проекте (для управлениями которыми созданы basecamp/jira/trello) >>883385Вот этой штукой я буду отправлять email, с этим вообще проблем нету, вопрос то не в этом.
>Programming Ruby (The Pragmatic Programmers Guide)Ничего что книжке почти 4 года а язык модный современный развивающийсянет?
>>883389> Ну я уже вижу баг - а что если время окончания задачи поменяют уже после того как менеджер проверил задачи ?Погуглил чуть-чуть, если нельзя перекэшировать даные каждые n минут, то другой вариант заключается в том чтобы повесить триггер на базу данных, дабы она уведомляла менеджер о своем изменении.Но звучит как оверинжинеринг. Неуверен, что 1 легкий запрос раз в n минут в твоем случае — это проблема.> Алсо я говорил о задачах которые таски в проекте (для управлениями которыми созданы basecamp/jira/trello)Идея та же самая, но нужен интерфейс для определения состояния тасков. Если его нет, как вариант, подмешивать в таск модуль с методом status для работы с ad-hom айпи basecamp/jira/trello и и т.п. сервисами.
>>883417Это нужно решать в интерфейсе, а не на уровне базы данных. Если проверяется, то заблочить все изменения нах.
>>883269Ты даже не сказал, какая у тебя субд, но при этом спрашиваешь, как это сделать на уровне дб.
Блин, понять не могу. Есть апи контроллер, выдает на экшене json по get. Пытаюсь это затестить рспеком. Рспек видит респонс. expect(response.content_type).to eq('application/json')Есть. Но его тело пустое почему-то. Как тут не получается https://gist.github.com/jayncoke/4a7c1a67fdc464ad66e8body = JSON.parse(response.body) выдает [] Хотел затестить что конкретно приезжает такой json с полями или конкретно .to include_json ЧТо я упускаю?!
>>883808Блять, код контроллера в студию.
>>883808фикстуры для среды тестирования не забыл?
>>883814>>883821Разобрался, там вышла путаница в конструкторе. Говнокода того. Выборка из базы в переменную, удаление записи и рендер переменной. Рспек получается ее не видит и не рендерит.
Рубаны, поясните за RubyMine. Почему его так не долюбливают? Пытался юзать vim, emacs, atom - всё это опенсорсное говно, сколько не допиливал, всё равно чего-то не хватает, а в RubyMine всё из коробки. Ну да нужно платить, пожалуй единственный минус
>>884660недолюбливают*очевидный фикс
>>860724 (OP)На RubyMotion можно писать под Android. Шапка обновляется вообще?
>>884660Юзай что тебе удобно и всё.
>>884660Раньше он тормозил пиздец, да и юзали его в основном спермоблядки.
>>884672>Принимаются изменения в шапку треда в виде пулл-реквестов:>https://github.com/meoweg/2ch-pr-ruby
Привет всем. Кто нибудь использовал монгоид ?Я хочу сделать хрень, которая от рандомного объекта произвольного уровня вложенности достает все поля по определенному пути. НапримерAccount.(здесь произвольная вложенность).user_data.shops.orders.items.nameМне нужно получить наименования всех товаров всех магазинов заказанных пользователем в плоском списке из любого места в иерархии. То есть, я должен по пути, включающем в себя как массивы, так и вложенные документы, выдать от произвольного embedded документа список значений полей.
>>886289Используешь монго для описания реляционных отношений - страдай. Если при этом ты используешь embedded массивы и/или embedded сущности, которые описывают объект, связанный не только со своим родителем - ты дебил. Если у тебя еще и вложенность многоуровневая - ты просто космический дебил, извини.
>>886323Извини, эту хуйню не я придумывал, я тут человек маленький, и стиль нашей великой разработки "Лучшей команды в компании" мне оспаривать запрещено.
Анон, помогай. Короче в рельсах хочу сделать конфиг для класса, чтобы можно было писать```# config/initializers/my_lib.rbMyLib.configure do |conf| conf.val = 42end```Делается это просто (и работает):```module MyLib class << self attr_accessor :configuration end def self.configure self.configuration ||= Configuration.new yield(configuration) end class Configuration attr_accessor :val endend```Но проблема в том, что в development-окружении рельсы делают лайв-релоад кода. А после реалоада класса настройки, как можно догадаться пропадают, потому что сделаны были в инстанс-переменной в инициалайзере.И не в этом даже проблема - рельсы не перезагружают класс, если он не менялся. А вот ебаный delayed_job перезагружает классы после каждого таска - https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/worker.rb#L321У меня есть надежда, что есть какой-нибудь способ заставить настройки сохраняться/переинициализироваться. Ведь это распространенная практика и не видел чтобы кто-то жаловался на такие проблемы. Я читал сегодня что-то релевантное про функционал в railties, какие-то хуки там есть, но так и не разобрался, как это работает и применимо ли к этой задаче. Анон, что можно сделать?
>>887320я не совсем понял зачем нужен class ConfigurationПопробуй так: http://pastebin.com/71YjvLgbи опиши юзкейс, когда ломается.
>>887352Посмотрел код delayed_job.Есть такой метод:``` def self.reload_app? defined?(ActionDispatch::Reloader) && Rails.application.config.cache_classes == false end```Из него вытекает два варианта :1. выставить Rails.application.config.cache_classes = true, для development.rb в environments.Тогда кэширование будет включено, как в production mode. Минус в том, что не будет работать hot code reload.2. Прочитать документацию, по ActionDispatch::Reloaderhttp://api.rubyonrails.org/classes/ActionDispatch/Reloader.html#method-c-to_prepareТам рассказывается о каллбеках: to_prepare, to_reloadкоторые вызываются перед вызовом Reloader. Обрати внимание, на контекст где вызываются каллбеки.Зарегистрировав вызовы, можно сохранить и восстановить состояния библиотеки, немного костыльно, но для development mode сойдет, а hot code reload для остальной части проекта будет работать.Вот тут можно почитать о решении похожей проблемыhttp://stackoverflow.com/questions/8895103/how-can-i-keep-my-initializer-configuration-from-being-lost-in-development-mode
>>887352>>887393Большое спасибо тебе, анон! to_prepare решило мою проблему. Я вчера был очень близок к нему, но неправильно начал делать - пытался создать рейлти для своего классаMyLib::Railtie < ::Rails::Railtie; def to_prepare ... end; endСделать переинициализацию таким образом не получилось.Первый твой способ не заработал хотя я не понял в чем его суть.
>>887559> Первый твой способ не заработал хотя я не понял в чем его сутьПросто не понял зачем код переусложнять. Если предполагается, много конфигураций, то инстансы Config не надо создавать через синглтон модуля. Как вариант:module MyLibclass Configattr_accessor :vardef initialize(args)yield self@var ||= args[:var] || 17endenddef self.config @config ||= MyLib::Config.newenddef self.config=(other) @config = other if other.kind_of? MyLib::ConfigendendТогда текущая конфигурация будет настроена, например, такMyLib.config = MyLib::Config.new do |config| config.var = 42endИли так MyLib.config = MyLib::Config.new(:var => 5 )Или такMyLib.configА как хранить все варианты конфигураций, это другой вопрос (если коротко: Hash внутри MyLib). Если вдруг решишь поиграться, то прости код писал вслепую, могут быть ошибки.А первый вариант, это еще более простой вариант, так как я полагаю, что одного конфига хватит за глаза.---Ну а потом, я слепое, прочитал что ты на самом деле спрашивал и полез смотреть в рельсу…
Двач, а как лучше реализовать связь между таблицами когда в одном случае надо сделать C->B->A а в другом случае напрямую C->A , потому что иногда записи в таблице B, которая связанна с записью в A просто не существует. Конкретно бд связана со скинами в игре cs:go. Возьмем например Desert Eagle | Бронзовая декорация, тут Desert Eagle - базовый предмет(оружие), Бронзовая декорация - название скина(который влияет на внешний вид но не характеристики предмета). Соответственно информацию о самом предмете храним в таблице A, а о скине в отдельной таблице B, потому что скинов для одного вида оружия может быть много. Проблема в том что существуют предметы для которых в принципе нету скинов они сами по себе предметы которыми можно обмениваться (т.е например Desert Eagle отдельно без скинов вообще не существует но есть например ключ для открытия кейсов который можно обменять)
>>888384Тут либо STI (как самое простое), либо полиморфная связь.
Посоветуйте толковый планировщик задач. С функцией выполнения задачи в определенное время и эту задачу может ставить пользователь. + возможность повторять задачу.Сначала был whenever + cron, но чет неудобно crontab обновлять из апп.Решил остановиться на sidekiq + sidetiq. Но последний оказался... каким-то конченным. Всем подходит (даже при факапе может "задним числом" выполнять и вебинтерфейс няшный), но вот, сука, выполняет задачу сразу после запуска, хотя она поставлена на опр. время. Как будто там собственный таймер и вообще хуй проссышь, че и как там. Issues дохуя и не мейнтейнится активно.
Уволился с работы, устроился на новую. Скоро мб снова буду тут тусить.ОП предыдущих тредов
>>888895Sidetiq не нужен, юзай sidekiq-cron, самое толковое.
>>889162сунь себе свой sidekiq-cron в пердачеллоrufus-scheduler - годнота
>>889162Спасибо, по сравнению с sidetiq прям годнота из коробки, еще и проблем с дублированием нет.>>889200Но он на базе rufus-scheduler, хули ты.
Есть модель Period, User и PeriodActivityВ периоде тупо даты начала и конца (периода).В PeriodActivity активность юзера для данного периода.Собственно, нужно сделать стату для юзеров для каждого периода.Схема:User has_many PeriodActivitiesPeriod has_one PeriodActivity норм?
>>888384> Тут либо STI (как самое простое)Я что-то вообще не пойму как его тут использовать.> либо полиморфная связь.А вот это то что надо, похоже.
>>889200> rufus-scheduler - годнотаговнокод, хотя и работает.
Хотя как поле назвать тогда? В гайдах у них pictures -> imageable_id, у меня item -> ?
>>889503skinnable?
>>889635Но ведь skinnable имеет смысл только когда связь с таблицой skins, а в другом случае получается вообще itemable ?
Может кто-нибудь книгу подсказать, она именно по ruby (не rails), типа ебанутая книга какая-то, тут еще говорили, что крышак от нее может съехать, если вдумчиво изучать. Сорян, больше ничего о ней не помню.
>>891249> крышак от нее может съехатьМожет это все-таки была книжка про жс, а не про руби?
Чо за эликсир скажете, рубаны?
>>892811Недавно на него съебал, оче годно. Единственный минус - молодая экосистема, поэтому многое приходится писать самому, но так как комьюнити достаточно активное - то это временная проблема и уже не так ощутима, как, например, год назад.
Анон, как определить, на каком языке написан сайт, если это php, то там сразу видно, тоже самое и про js. Но, как определить, что это питон или руби.Простите, за глупый вопрос.
>>893046Там сразу видно.
>>893050Можешь привести примеры, если не трудно?
>>893055Давай сначала ты, если не трудно. Как определяешь - php или js?
>>893124Заранее хочу оговорить, что я еще на стадии изучения Ruby, RoR и метапрограмирование не изучено. html знаю но не 5.php сам говорит, что сайт написан на нем, а в js все действия (Не только анимация.) выражены через оные скрипты. Если что, то я смотрю, через просмотр кода браузера.
>>893143wappalyzer
>>893232Спасибо.
Анон, есть ли смысл учить рельсу? Судя по тырнетиками популярность падает и пик популярности прошел.
>>893373ну иди в ноду, коль тебе хайп нужен.когда закончишь ебаться с конфигами, отпишись
>>893753>с конфигами ебатьсяты че это раскукарекалась руби-мразь
>>893763нодошваль пригорела
>>893769вас рубиблядков, давно пора из списка вычеркнуть, паскудники ебаные
>>893780чо за список?
Книга по руби переведена на рус. покупать я ее конечно не буду, но прочитать - бы прочелЕсть "Электронная версия" на том же сайте издателя.Если кто найден - закидайте линками.http://www.piter.com/collection/new/product/ruby-obektno-orientirovannoe-proektirovanie
>>893948Съеби отсюда.
Анон, расскажи или дай хороший пример или статью про так делать FormObject. Видел кучу примеров, типа как на пикрелетед, но это не то и слишком поверхностно, не решает реальных задач, для которых действительно был бы полезен форм-обжект. Всегда речь идет только о создании, апдейта нет. Постоянно пытаются впихнуть этот Virtus кстати, поясни за него, анон, есть ощущение, что это раздутая магическая еба, не понятно как быть с валидациями (оставлять в моделях или уносить в FO, есть разные подходы), не понятно как быть с has_many вложенностью. И тд и тп.
>>894466Валидации конечно должны быть в FO, иначе весь смысл проебывается, а смысл - не нагружать наследников ActiveRecord::Base всякой ебалой, которой там не место, это должен быть всего лишь маппинг к ряду в базе со скоупами и ассоциациями. По поводу того как быть has_many, прелесть FO как раз именно в том что ты что хочешь то и делаешь, код же экспликтный никаких колбэков и прочей хуеты. Попробуй создать свой форм объект без использования каких-либо гемов, чтобы понять суть, вот какой интерфейс сочтешь логичным и приятным такой и пили. Сорян если сумбурно
>>894466А виртус действительно раздутая магическая ебала, особенно неебический интерфейс коерций, который нахуй никому не сдался
>>894495А может можешь дать пример какой-нибудь из практики?
Dry-types.
>>895073class UserForm include Virtus.model include ActiveMode::Validations attribute :email validates_presence_of :email attr_reader :user def initialize(user = User.new) @user = user self.attributes = user.attributes end def submit(params) self.attributes = params return unless valid? user.update!(attributes) # Можно еще какую нибудь хуйню сделать с пользователем # И никаких говноедских колбэков endend# Создать, напримерform = UserForm.newif form.submit(params) # Все ок, можно юзать form.userelse # Ошибки валидации, можно юзать form.errorsend
>>895865В разметку не умею, сорян
Хм, пацаны, а как быть в простой ситуации - есть меню в layout, там перечислены статьи из базы. Причем статьи меняются очень редко.Как их не дергать на каждый экшн из базы? Это, как я понимаю, не оче хорошая практика. Кешировать это все? Это нужно in-memory базу или че? Built-in решения есть?
>>895920во вьюхе cache(articles) doИнвалидироваться будет автоматически
>>895920Built-in решения есть?Да, есть http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-memorystore и потом >>895931
А как успешные рубисты автоматизируют запуск различных серверов/фоновых задач (postgre/redis и т.д.) в девелопменте, как я понял есть всякие chef / capistrano но они для развертывания в продакшене ? Открывать по сотне вкладок в терминале для запуска всего этого добра как-то неправильно.
>>896263так все это дерьмо фоновыми демонами же всегда крутится в системе (как именно - зависит от конкретной ос)
>>895865Спасибо.Пару вопрос, если можно:- Зачем там Virtus?- Почему объекты передаются в инициалайзере, а параметры в сабмите. Почему не наоборот? Просто если наоборот, то форму можно использовать как `form.valid?`, а так можно использовать только `form.submit(params)`.- Что на счет практики сохранения в FormObject - стоит ли ее там держать или лучше уносить в ServiceObject?
>>896314- Можно без виртуса, но с ним удобнее (есть более приятные альтернативы, гугли)- И там и там нужно. Представь что у тебя модель с дефолтом, при инициализации этот дефолт должен быть в атрибуте форм объекта, при этом сабмит - это отдельная операция сохранения, переданный параметр должен опять записаться в атрибут- Нет никаких форм объектов или сервисных объектов, эти ограничения и рамки ни к чему, есть просто plain old ruby objects, где и как считаешь нужным так и сохраняй
>>8963221. Просто в примере он не используется. Как раз сейчас читал про dry-types упомянутый выше. И чет прихуел от их dry-проектов.2. Э нет. Форма - работает с формой мне больше нравится слово input. Если есть дефолты, то они на ней и должны быть определены. А сабмит да, операция сохранения (которой в некоторых реализациях может не быть) и объекты нужны только ей. До момента сохранения мы абстрагируемся от хранилища.3. Ну речь же про паттерны. Вот форм-обжект это недообъясненная вещь. Возможно даже недопаттерн. Я так понял, что это composition-pattern, но обросший особенностями конкретного применения в рельсах. Я для себя понял это так: форм-обжект про композицию и валидацию, сервис-обжект про процесс. В простых случаях, когда нужна только персистенция, мы можем процесс сохранения добавить в форм-обжект. Если процесс чуть более сложен , то его стоит уносить в другое место.Не спора ради, а понимания для, анончик.
>>896263foreman/docker. Докер моднее и в последствие удобнее, если у тебя будет большая команда, форман намного проще настроить.
>>8963411) В примере используется, смотри attribute2) В твоих словах есть смысл, а теперь представь что эта же форма используется для апдейта и ты закидываешь туда готового юзера например. Атрибуты должны подхватиться для отображения ДО того как ты вызвал submit, потому что какой нахрен сабмит, еще ничего не показывали3) Я бы рассказал что паттерны не нужны, но закидают помидорами, поэтому попробую ответить на твой оригинальный вопрос: если бы атрибуты сохраненного объекта приходили из юзер инпута, я бы сохранял в форм обджекте, если из моей же системы и мне не нужно ничего валидировать то в сервис обджекте
>>896470не показывали = не сабмитилификс
>>896408> 2017> Докер> Ебаться с орекстрированием, пробросом портов, персистенцейРасслабься хипстерок, все уже забили на твой докер, мода прошла, можно больше не вставлять везде
>>896263https://github.com/ddollar/foreman
>>896470>Атрибуты должны подхватиться для отображения ДО того как ты вызвал submitБля, вот я пиздоглазый, ты прав.Благодарю за разъяснения, анон.
>>896479>пробросом портоводна строчка в docker-compose>персистенцейпол строчки volumes>орекстрированиемзначение знаешь?>Расслабься ку-ка-ре-ку!Так бы сразу сказал что нюфаг и не осилил. Но лучше подразберись, а то скоро без знания докера вакансий не останется, только пхп-параши драить разве что.
>>896784> docker compose> одна строчкаБлог деплоил, девопс мамин?Уже давно все поняли что докер это параша https://news.ycombinator.com/item?id=12872304
Если уже знаю пару ЯП, и представляю что такое ООП, и всё такое, подойдёт ли learnxinyminutes для ознакомления с синтаксисом? Или в руби есть особые подводные камни?
Блин, не могу понять че за фигня. Кароче есть СИнатра, пытаюсь добавить webshim-polyfillerкак тут написано добавляю в layout.haml %script(src='/javascripts/js-websim/minified/polyfiller.js' type='text/javascript')хотя type вроде и не обязателен javascripts ложу в public. Получаю "NetworkError: 404 Not Found - http://localhost:9292/javascripts/js-websim/minified/polyfiller.js"ФФ еще говорит The resource from “http://localhost:9292/javascripts/js-websim/minified/polyfiller.js” was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).Если просто ложу в корень javascripts скрипт файл - не ругается. ЧЯДНТ?
>>897291Если тебе нужно понять поверхностно код на руби, то подойдет. Если хочешь начать писать на нем как можно быстрее, минуя подводные камни, то не подойдет.
Я нуб, пилю закрытый сайт уютненького сообщества с регистрацией по инвайтам и элементами социальной сети. На сайте есть пользователи, некоторые пользователи могут быть админами. Возможно потом добавятся и другие роли.1. Как реализовать инвайты? Я хочу чтобы пользователи могли регаться и по почте и через вконтакт, как им удобнее. Гем devise_invitable как я понял работает только с почтой, поэтому я запилил свой велосипед. Пользователь жмёт кнопку и создаёт ссылку с инвайт-кодом вида site.ru/register?invite_id=<UUID> (код - это просто UUID). Код сохраняется в БД. Потом передаёт ссылку любым способом своему другу, тот переходит по ссылке, RegistrationsController проверяет код и разрешает другу зарегистрироваться. Регистрация обычная, через devise. В будущем я добавлю разные виды инвайтов для админов и простых пользователей, сделаю ограничение срока годности и количества создаваемых инвайтов. Это норм способ? Есть варианты получше?2. Как правильно запускать сайт в продакшен, если регистрация только по инвайтам? Сейчас я создаю аккаунт суперадмина с максимальными правами через seeds.rb, логин/пароль храню в ENV. Потом приглашаю обычных админов и больше не пользуюсь этим аккаунтом. Это норм способ? Как поступают взрослые дяди в таких случаях?
>>897485А что подойдёт? Чтобы без всяких очевидных вещей, а-ля "класс это то-то, объект это то-то"
>>897677Если для тебя это очевидно, то ты не будешь долго задерживаться на этом момементе, так что я считаю, что ты можешь пройтись по рекомендованному списку. Также советую эту книжку https://pragprog.com/book/adrpo/ruby-performance-optimization
>>8975111) Норм.2) Точно также, через seeds
Мёртвый тред мёртвого языка.
>>899099Пока мне за него деньги платят - не мертвый
>>860724 (OP)Imagemagick отказывается читать файлы.Нужно что бы пользователь загружал изображения, а потом могу их простейшим образом редактировать. Редактирование работало бы если бы не одно но - сейчас rmagick (как и minimagick) выдаёт ошибку -couldn't find file or directory. То, что файлы есть в нужной папке 100%, не работают как абсолютные, так и относительные пути. И браузер тоже открывает эти файлы. Что это может быть?
>>899910виртуалку юзаешь?
>>899921Да, но на сервере та же беда.
Поясните ньюфага разницу в FactoryGirl между attributes_for и create
>>902597Английский учи сначала, потом погромирование
Хочу сделать чтобы ассоциацию habtm можно было установить только для определенного подмножества модели. Например есть 3 модели: Товары, Типы товаров, и 3 таблица которая может быть связана только с товарами определенного типа. Вроде бы STI то что нужно: создаем дочерний класс для отдельного типа товаров (Sock) и в 3 модели(SocksSet) пишем has_and_belongs_to_many :socks. Но я не пойму как вместо того чтобы делать отдельное поле type в таблице товаров (чтобы хранить имя дочернего класса) узнавать имя из связи товары<>типы товаров.
>>902797Чет херню какую-то пишешь. Нахрена тут STI? Зачем усложняешь? Товары, категории, джоин таблица. Все
>>902829Ну так допустим у меня есть набор носков (который относится к отдельной модели наборов), я не хочу чтобы к этому набору можно было добавить трусы ( а если будет простая ассоциация товары <>наборы то это можно будет сделать)
>>902832такая задача решается на уровне приложения а не базы, просто храни в наборе разрешенные категории и не разрешай добавлять товары из других категорий
Хочу создать простенький веб-сервер и клиент.Использую TCPServer из 'socket'.Вопрос: можно ли с его помощью создать сервер, видимый из интернета?И если да, как ему отправить сообщение? (Можно ли отправить, используя telnet?)
>>902843Т.е. надо сделать валидацию ассоциаций ?Опять же не пойму как это сделать validate :method_name вызывается только при сохранении , а если устанавливать связь через = или << этот метод не будет вызван.
>>904040Тебе нужно, чтобы твой компьютер был доступен из ынтернета. Разбирайся с провайдером, короч. А так разницы нет.
>>904231Забудь про колбэки и валидации в моделях, ни один приличный рубист в 2017 таким заниматься не будет, пили форм объект в котором экспликтно все и провалидируешь
>>904628Охуеть, а если у меня эти ассоциации устанавливаются не через форму в веб интерфейсе?
>>904738Причем тут ассоциации? они как раз остаются в моделях
>>896341Ты всё правильно думаешь по 3 пункту, не слушай того анона.Мимо-слоупоке
>>904783>храни в наборе разрешенные категории и не разрешай добавлять товары из других категорий
Анон, что думаешь о Hanami? Каждый день вижу новые статьи или как минимум упоминания в англоязычных твиттерах и медиумах, а по-русски ничего нигде ни разу.
>>904628Форм объект это не про веб формы, гугли
>>904868Хорошая штука, но слишком поздно появилась. В 2017 году, если уж отказываться от инфраструктуры рельсы, то проще сразу эликсир с фениксом взять.
Пилю систему с использованием внутреннего баланса. Быстрым гуглением вроде прояснил все моменты: локаю баланс покупателя и продавца, в транзакции продавцу начисляю деньги, у покупателя снимаю(с учетом комиссии сайта), записываю в таблицу истории операций ид товара, сумму, ид покупателя, ид продавца, время операции, тип(покупка/пополнение/вывод). Собственно как еще обезопасить (что еще надо делать, какую еще информацию хранить в бд), чтобы потом не охуеть от того что деньги проебались/спиздили.
>2017>RailsЛол. Рельсы давно мертвы, вы просто не хотите это признать.
>>906667Все велосипеды уже изобретены. Вот наш:https://github.com/openbill-serviceСмотри, пользуйся.
>>906675А кто не мертв?
>>906686Node, Elixir, Go, Java, да даже сраный PHP.
>>906675Рельсы справляются с задачами, решения которых от них ждут, а на дешевые вбросы вроде твоего здесь еще не было реакции более активной чем этот мой ответ.
>>906675Все адекватные уже давно понимают, что рельсы мертвы, даже по рынку вакансий это можно взглянуть и понять, ибо их все меньше и меньше с каждым годом. Да и все крутые компании уже ушли с рельс на что нибудь типа ноды или низкоуровневое. Другое дело, что программисты на руби все еще имеют смысл, так как кода написано куча и кто то его поддерживать должен.
>>906691>NodeЭто шутки такие? Туда до сих пор нормальную работу с базой не завезли, в 2017-то! Не знаю какие хипсторы в это играются, ни одного здравого проекта на ноде я ещё не видел за 6 лет.
>>906787"Нормальная работа с базой" - это что такое?
>>906787Толсто.
>>906801Это типичный вопрос нодофага? Да хотя бы транзакции, например. Может я чего-то не знаю, и за этот год действительно кто-то там скакнул вперёд, но чет не слышал.>>906820Поясни.
>>906685Так у вас там на pgsql все, ладно попытаюсь понять.
>>906821Это типичный ответ от рельсофага? В npm куча модулей для транзакций. Давай на конкретном примере, что в рельсах лучше чем в ноде или чего в ноде нет, что есть в рельсах.
>>906903>В npm куча модулейИ все работают через жопу. Конкретный пример с транзакциями: чтобы воспользоваться транзакциями - поставьте вот этот модуль.. или вот этот, или вон тот. Нахер так жить? Одной ORM недостаточно для этого? Для чего ещё нужно поставить модули, что и так должно работать искаропки? Удобства в ноде нет, зато есть ненужная асинхронность, которую тоже надо отдельно выключать.
Что означает <<: *default в database.yml?
>>907076Что-то вроде "используй ту же базу данных, что и деофл"например, если у тебя в дефолте постгре, то остальные тоже будут с постгреДа, еще там кодировку ту же использовать и еще какое-то свойство (рооl, как понял - ставит максимум для тредов)
>>907081А где дефолтные настройки хранятся?
>>907083А, проебался. В этом же файле, только выше?
>>906959http://docs.sequelizejs.com/en/v3/Вот же, первая ссылка в гугле. Не знаю, о чем с тобой говорить, если ты не можешь 2 секунды потратить, прежде чем начать нести чушь.
>>907085да
>>907111Ну молодец, подебил. Удобнее разрабатывать от этого не стало.
Проясните, пожалуйста.Веб-сервер и рельсы конструктивно находятся в одном приложении?Или это два процесса, общающихся между собой? (еще +бд)И еще. Веб-сервер нужен лишь затем, чтобы ловить запросы из внешней сети? То есть это просто посредник между рельсами и юзером? Веб-сервер просто передаёт HTTP без изменений маршрутизатору рельс или как?
>>907709>Веб-сервер и рельсы конструктивно находятся в одном приложении?Это одна программа.>Или это два процесса, общающихся между собой? (еще +бд)Обычно БД это как раз отдельная программа(postgresql/mysql/oracle). Хотя можно сделать на sqlite который будет встроен в виде gem'а в процесс рельс (руби который всё это загружает). Но конкретно рельсы это одна программа которая принимает HTTP-запросы (собственно это и есть веб-сервер) сидя на каком либо порту.Однако для распределения нагрузки, безопасности или другим причинам рельсы часто ставят за прокси типа nginx.
>>907709> Веб-сервер и рельсы конструктивно находятся в одном приложении?Конструктивно, есть выбор между разными веб-серверами, выполнив достаточно простые (скажем https://devcenter.heroku.com/articles/rails-unicorn) можешь поменять дефолтный. При этом на одном веб-сервере может крутится несколько rails приложений. Одно из крупных обновлений 5 рельсы, когда осуществили переход с single-thread веб-сервера webrick на пуму бтв.Ассоцировать рельсу и web-сервер как неделимую сущность не нужно, так как на той же пуме ты можешь (запустить веб-приложение, написанное на другом фреймворке, скажем, на синатре.В тонкости различий веб-серверов можешь вникнуть погуглив по ключевым словам: webrick, puma, unicorn, passenger, у меня если честно нет желания пересскажывать этот интернет, спасибо.
>>908139Они не умерли, а умирают. Причем только в начальных стадиях отмирания, даже новые проекты на руби/рельсах еще начинают, а уж легаси хватит на многие годы. Минимум лет 5 еще можно о недостатке работы не беспокоиться.Я бы на твоем месте лучше побеспокоился о том, что через пару месяцев заканчиваю универ и все еще не нашел (не искал?) работу.
>>908169Так и вижу, как ты 24/7 диплом ботаешь. Я вот себе преддипломную практику нарисовал, а сам в это время нашел работу и к моменту написания диплома у меня уже было по чему писать, хоть и тема выдалась смехотворной, но многие и этого не осилили.
Почему в рубимайне у первого <tr> отступ 2 пробела а у второго 4? Как чинить?
>>908381Эээ, из твой картинки очевидно же.
>>908445Если ты про continuation ident то это перенос длинных строк(и в erb/html он походу вообще не работает)
>>908381пользуйся slim@haml, erb ненужен.
>>908453А можно менее радикальное решение ?ноги_не_нужны.jpg
>>908458в таком случае у тебя локальная проблема; попробуй обновить ide на 2016.3 версию, у меня соотв. значение в поле indent расставляет отступы правильно.
>>9084732016.3.1 стоит
>>908539Весной поздно, пока туда-сюда - уже диплом писать надо будет. Рекомендую с февраля или вообще сейчас. Не надо искать "практику", просто ищи работу, а там уже себе бумажку вырулишь, типа практику прошел.
Анон. Можно ли в where() передать релейшен?не arel-условие, а relation
>>909380Можно было что-то подобное, но это в любом случае не лучшее решение.
>>909463Вот он - ерохин от программирования!"можно", "что-то подобное", "не лучшее решение".Что ты блять несешь, хуесос? Иди активными продажами занимайся, там любят такие разглагольствования.
>>909380relation.merge(other_relation)
>>860724 (OP)Не понимат, что смешного во второй картинке ОПа. Ну пакетный менеджер и что?composer installbrew installnpm installМама смотри, я петросян
>>910185Найс дауничу подпекло. Еще и какел небось, да?
Анон, а ты там зареган или может даже находил работу мечты?Короче не знаю как продать пост, просто поясните за сракедин. Насколько он популярен в it-среде, имеет ли смысл в рашке, что это вообще и как работает? Просто все чаще попадается на глаза и не в связи с блокировкой.
>>911205> Насколько он популярен в it-средеМеня там регистрироваться заставляли как-то в добровольно-принудительном порядке, но через полгода примерно положили болт. Эта штука больше популярна в околоменеджерских кругах наверно.
>>911214>регистрироваться заставляли как-то в добровольно-принудительном порядкеКто, зачем?
>>911205смысл был несколько лет назад, сейчас сдохла и заспамлена
Как понять строку identified_by?В Rails API написано что это метод. Это код внутри класса или что?
>>911877Это значит что в момент загрузки кода этого класса будет вызван метод ApplicationCable::Connection.identified_by(:user)И больше ничего в этом магического нет.
>>911945>момент загрузки Это когда?
Так я таки не понимаю, стоит ли мне лезть в руби и рельсы в 2017 с первой работой? Вообще я мамким борщехлеб уже года 3 и знаю довольно много всего: jsы, ангуляры, с + opengl, андроед(есть пару прилаг), джавастафф(мог устроиться мартыхать на спринге), в последнее время активно эрганг колупал, ну и хачкелем раньше щекотал себя, куда уж без него. Разумеется все это знаю не на охуенном синиор уровне, но сейчас приперло с едой деньгами и надо искать работу. Вот думаю куда коммитить время\силы. Этот ваш рубин нравится, все охуенчик, но не хочу проебаться с тем, что джуна хуй куда возьмут(я из бульбы).У вас тут кстати самый ламповый тредик на зекаче
>>912401От джавы блевать хочется(особенно после рубей) а котлин мало кто юзает, там хоть кучу сахарком посыпалиЕще у меня такое чувство что в андроид сейчас каждый 1 школьник идет, куча знакомых дрочит, бывших одногруппников, в pr треды активные и там 90% вкатывальщиков. Мне кажеться от такого предложения работодатели совсем охуевшие будут.
>>912388Стоит. Джуна хуй возьмут везде. С Руби сложно устроиться имея из опыта только учебники и простые приложения(бложики, тудулисты, клоны твиттера и ну ты понил). При этом Руби в большей мере предрасполагает к тому, чтобы ты получил нужный опыт без работы в конторке. Сделать интересное приложение или вложиться в опенсорс на Руби определенно проще, чем где-либо еще. Руби в 2017 лучше и живее чем раньше.
>>912422А можешь накидать каких годных идей уровня: с чем возьмут? Только не ебучие имиджбордыБля, я сам думал неспешно кодить в удовольствие, наваять пару веб-апп(идеи есть, но это месяца на 3-4 минимум) и поизучать сорцы разных интересных гемов, но сейчас настал пиздец в жизни и у меня максимум 2 месяца чтобы пойти на работу и не сдохнуть через пол года от голода, но в джавапарашу мне все равно очень не хочется валить
>>912429>в джавапарашу мне все равно очень не хочется валитьДжава отличный язык с кучей отличных технологий и людей вокруг, зря ты так. Да и JRuby во многих случаях лучше простого Руби.>А можешь накидать каких годных идей уровня: с чем возьмут? Только не ебучие имиджбордыСлово "накидать" трудно применить в отношении чего-то годного. Конкретно действительно не могу сказать, индивидуально же все. Самих по себе годных идей нет, бывает только годная реализация. Я бы выделил как критерии: пользуешься ли ты сам тем, что сделал, пользуются ли другие и многие ли могут так же. Если в один из них попал, то это гораздо лучше типовых гостевух. Если интересные идеи в голову не приходят, то можно взять первое, что пришло в голову и сделать это с нетипичным стеком технологий. Главное движение, на волшебные идеи надеяться бесполезно.Просто не будет, но ты не выглядишь как неосилятор. Должен справиться.
>>911973А вот это уже хуй его. Попросту говоря в момент когда ты скармливаешь интерпретатору файл с кодом. Или когда внутри другого кода реквайришь зависимость. Короче гугли как рубишный интерпретатор работает.
>>912452>пользуешься ли ты сам тем, что сделал, пользуются ли другие и многие ли могут так жеПервые два сразу мимо т.к. я сыч и в инете сижу на 2-3 сайтах(youtube, двач и вк), не считая сайтов с доками, репозиториями и туторами и переполнениестека, мне от интернета нихуя не надо. А чтобы пользовались другие,даже с божественной и всем нужной прогой, должно пройти время и надо хотябы минимально пиарить на всех этих харбах редитах, конфах и т.д. Остается только третье. С другой стороны меня блевать тянет от мысли реализовать что-то, чего и так, как говна в авгиевой конюшне, все эти туду листы, имиджборды, блоги. Ну хз сейчас начну на листик выписывать все что приходит в голову подряд, комбинировать и думать что из этого можно выбрать для реализации. Но надеюсь двач тоже подкинет каких-нибудь идей или направлений.Кстати, ебашить буду на rails + react + postgre + yaml/препроцессоры и джаваскрипты , это норм стек, смузи нальют? Для скриптов что лучше брать, кофевара или es6 какой-нибудь?
>>912862>Первые два сразу мимо т.к. я сыч и в инете сижу на 2-3 сайтахДаже к этому можно подойти с фантазией. Кто-то, например, Перекотер для двачей сделал. Хорошая предметно-ориентированная штука. Автоматизировать можно очень многие повседневные задачи. Хоть таск-менеджер в области ухода за домашними моллюсками, имеющий вменяемый интерфейс и посылающий уведомления в телеграмм когда нужно помыть террариум. Смотри на мир шире двача и вк.>пиарить на всех этих харбах редитах, конфах и т.д.Пиарить нужно то, что само по себе никому не нужно. Что-то интересное разойдется мгновенно. Да и нужно ли тебе, чтобы разошлось? Для портфолио и опыта будет отлично, даже если твоим микросервисом просто по вечерам будет пользоваться твоя мама. Я серьезно.>Кстати, ебашить буду на rails + react + postgre + yaml/препроцессоры и джаваскрипты , это норм стек, смузи нальют?Нассать в уши эйчарам - норм, они эти слова не понимают, но любят. Еще про тесты в список что-нибудь добавить и резюме готов. По факту ты вряд ли будешь знать больше чего-то одного на нужном уровне, так что по делу будет важнее и полезнее разобраться во всей архитектуре веб-приложений. Для начала нужно врубиться как это все работает и соединяется между собой начиная с низа. Что происходит на уровне ОС, сетИ, какие объекты-методы-модули что-куда вызывают и зачем. Можно насмотреться курсов по реакту и ес6, которых теперь тысячи из-за трендовости, но не улавливать самые базовые механизмы. Если время поджимает, то лучше просто очень хорошо понять сам язык, рельсы и полезные гемы, на реакте за тебя кто-то наверняка напишет, тебе важнее это быстро и правильно интегрировать в бэкэнд.>Для скриптов что лучше брать, кофевара или es6 какой-нибудь?Если ты имеешь в виду кофескрипт, то не трать на него время. Он больше не актуален. JS стоит опять же хорошо понять в чистом виде и если будет время то es6 и утилиты для сборки на ноде.
На девелопера руби / рельсы есть работа вообще?Для автоматизации тестирования связка руби/капибара/гем на page object актуальна, или эта ниша тоже загнулась к хуям?Руби вообще жив?
>>912934>Руби вообще жив?Такой вопрос звучит очень часто, но только на русском языке. Есть несколько знакомых, которые спрашивали о том же будучи в целом далекими от мира веба. Оказалось, все их знания о Руби это несколько антирельсовых статей с хабра. Полагаю, сказывается природная восприимчивость русского менталитета без малейшей обработки складывать к себе в голову любую информацию из СМИ, насильно хоронить и страстно превозносить что-то, если кто-то так сказал.>На девелопера руби / рельсы есть работа вообще?Есть, много. >Для автоматизации тестирования связка руби/капибара/гем на page object актуальна, или эта ниша тоже загнулась к хуям?Актуальна, но нишей это не никогда не называлось.
>>912942Поясню. Я тестировщик.Года три назад щупал руби когда только вкатывался в автоматизацию, но по итогу меня взяли на проект с имеющейся базой, и пришлось осваивать жабу.Сейчас меня малёх подзаебала жизнь, и я пошёл искать другой участи на галере. Пока фронт работ ограничивается ручной работой (хотя весьма интересной) пушто я один на проекте, а новые фичи выкатывают со скоростью света, тут бы новое тестить успевать. Но уже в ближайшем будущем появится пару макак рангом пониже, которым на откуп можно будет отдать новоиспекаемое говно, а самому заавтоматить функциональщину. И тут мне вспоминаются зелёные дни, и каким удивительно простым и логичным казался руби, но...Чёт не хочется угробить время на разбор чего-то, что не апдейтится N лет, с мёртвым сообществом и логикой через жопу, а именно на это намекают вот такие вот самоплодящиеся слухи вроде того, что ты привёл.Собсна, хотелось бы узнал реальное положение дел.
>>912947>другой участиЛучшей участи на другой галере*
>>912947Самые сильные места и сама идея Руби в том, что его логика максимально удалена от жопы, а коммьюнити одно из самых сильных, пусть и не больших. Его слабое место в другом и прямо следует из вышесказанного: у него медленный интерпретатор и громоздкая архитектура(с точки зрения машины). Может быть даже самый медленный. ПейПэл перешли с рельс на ноду не потому что Руби умер, а потому что кто-то схавал "актуальную" технологию не подумав, что для высоких нагрузок она решительно не подходит.Первое, что делают начинающие рубисты когда собирают свой клон твиттера -- пишут тесты. Для тестов он подходит лучше чем что-то еще, если скорость не критична.А какие для твоих целей есть альтернативы?
>>912952Альтернатива — жмуметр, пресловутый селениум и джава. Потому что это почти всё, что я умею.
>>912934Интересный вопрос, на который очередной фелосаф-рубисектант ответит "да".Но ирл, можно сказать на 100% - руби (именно руби) - это мертворождённый язык. Он слишком сложен для решения любой нетривиальной задачи, содержит слишком много синтаксического сахара, и главное - в нём нет ничего феноменально нового.Рельсы - это хороший фреймворк, который таки родился, но к сожалению умер. Всё дело в несоответствии концепций и целей. Либерахи и хипстерьё отчаянно пиарили этот рор везде, где только можно - предполагая, что он найдёт свою нищу в больших и сурьёзных тырпрайз-приложениях, конкурируя с громоздкими жабами и шарпами.Но опять же - принципиально новых концепций не вышло, так что слишком сурьёзные и суровые тырпрайз-боссы не рискнули давать бабла на переписывание.Так рельсы стали конкурентом пхп - где бодро соснули хуец, ибо пхп-макакинг сильно ниже по рейтам, и на слуху у заказчиков - а пхп тырпрайз, опять же, не рискнул.Работы по руби нет - а если и есть, то "знание пхп", чтобы в один момент смог перепилить своё говно на него.
>>911277Директор, у нас компания небольшая. Он когда в силиконовую долину летал наш стартап представлять, говорил что на эту хрень будут смотреть. Но раз все на него (всмысле на линкедин) сейчас болт положили, значит не особо то и нужен. Если есть какие скиллы - регайся, но так наверно всем похуй. Больше репозиторий важен и владение какими-нибудь современными йобами.
>>912985>Больше репозиторий важен и владение какими-нибудь современными йобами. Но это ведь не про профиль в сети сам по себе. СрекедИн он же про коммуникацию. Лично мне очень понравилась идея "перманентного поиска" работы. Ты там присутствуешь, и потенциальный работодатель или партнер может найти тебя в любой момент, а не тогда, когда тебе приспичило и пошел размещать резюме на хедхантере.Это очень здорово (если это работает), потому что смена места работы всегда вынужденная и всегда компромисс и стресс. Охуенно, если действительно работа сможет сама меня находить, а не я ее что было бы справделиво.Вот только не знаю, насколько это работает у нас в стране.
Возможно ли задеплоить проект с ActionCable на heroku БЕСПЛАТНО?В оф гайде пишут про какой-то аддон для редиса, я так понял его надо КУПИТЬhttps://blog.heroku.com/real_time_rails_implementing_websockets_in_rails_5_with_action_cable#step-2-provision-the-redis-to-go-addon
>>912955Тогда это скорее всего вопрос скорости против архитектуры. На Руби это можно сделать архитектурно красивее, хотя это и по-своему субъективно. Если ты испытываешь к нему некую симпатию и предрасположенность, то смело бери его. Он не умер и жив не меньше, чем раньше. Другое дело, что его плюсы при строго техническом сравнении мягко говоря не очевидны. >>912963>Он слишком сложен для решения любой нетривиальной задачиЧем сложен?> содержит слишком много синтаксического сахараА сколько должно быть, где по-твоему граница?> в нём нет ничего феноменально нового.А в чем есть? >Всё дело в несоответствии концепций и целей>свою нищу в больших и сурьёзных тырпрайз-приложениях, конкурируя с громоздкими жабами и шарпами.Тырпрайз это всегда основательный подход к проектированию, строгие спецификации еще до начала разработки и высокие нагрузки. Масштабирование вертикальное, а не горизонтальное. Только идиот может считать, что Руби когда-то на это претендовал. >Так рельсы стали конкурентом пхпК этому момента стало очевидно, насколько твое виденье вопроса далеко от реальности. На Руби кто-то пытался сделать Вордпресс или Битрикс? У Руби своя ниша, которая даже близко не пересекается с пхп или шарпами. Это ниша, которую принято ассоциировать со стартапами. Горизонтальное масштабирование, быстрая и гибкая разработка. И то, что многие проекты с Руби потом переписываются это не оскорбление в его сторону и знак, что он умер. Это инструмент, который отлично справляется с тем, для чего он предназначен.
>>913136>И то, что многие проекты с Руби потом переписываются это не оскорбление в его сторону и знак, что он умер.А кто это делает вообще? Твиттер и гитхаб? Их по пальцам пересчитать. В основном никто ничего не переписывает, потому что, как правило, нет таких нагрузок, чтобы это было целесообразным.
>>913377Что планируешь в портфолио пилить
>>913372Спасибо, просто карту просил привязать, побоялся.
Как переопределить root_path для залогиненных пользователей в пятых рельса?authenticated :user doroot 'welcome#index', as: 'authenticated_root'endэто в 5 рельсах не работаетгем devise конечно же
>>913800Почему бы не сделать редирект на уровне контроллера? Какое техническое обоснование?
>>913823я сделал специальный контроллер для root_path, пусть будет welcome контроллер. В нем определен метод index. соответственно, зайдя на домашнюю страницу, редирект идет на welcome#indexНО, если юзер логинится со страницы users/sign_in , то его должно редиректить на другой на друго контроллерб допустим, documents#index
Аноны, вот эти гвард тесты из хартла годнота? Ими пользуются? Вроде годнота, машина тебе сама тестики после каждого изменения запускает, но просто нехочется сейчас тратить время разбиратся, а потом обранужить какой-нибудь фундаментальный недостаток времени нет
>>913927Проходил самый свежий перевод Хартла около полугода назад уточнить версию лень и там был таки Rspec.
Да, у хартла с 4 рельс рспек/капибара
>>913927>Во-вторых, конкретно разработка через тестировку сейчас сдает позиции. Есть много спекуляций, что это хуйня.Ну не знаю, с одной стороны действительно не очень удобно сразу думать над тестами, но с другой это позволяет тестировать без лишних ручных манипуляций. Для себя я нашёл оптимальный вариант: пишу небольшой кусок кода, когда приходит время проверить как это работает - покрываю его тестом вместо того, чтобы тыкать вручную. Если happy path проходит, проверяю всё живьём. Потом уже добавляю всякие корнеркейсы и unhappy path. А вы как делаете, анонасы?
>>913377Да не за что. Не забывай, что впереди тебя ждет хардкорный путь и у тебя есть свой шанс облажаться со сроками. Задача все-таки вполне амбициозная. Желаю успехов, заходи еще, спрашивай.Все Рубисты быстро смиряются с отсутствием литературы на русском и осваивают английский, а после этого уже точно не возвращаются на хабр и куда-нибудь в руби-паблики-вк. Работают вообще поголовно удаленно и укатываются сидеть с макбуками на Гавайи. Никаких тебе митапов и воркшопов в коворкингах. Отсюда и впечатление скудности коммьюнити: книжек нет, людей нет, упоминаний нет - еще и тренды пошли совершенно в другую сторону. хороним ООП, дрочим на ФП Меж тем подошли свежие цифры о реальном положении дел. https://infinum.co/the-capsized-eight/analyzing-rubygems-stats-v2016 Не то что бы это большой повод для восторга, но по крайней мере сомневающиеся будут чувствовать себя спокойнее. А хабрапидоры останутся хабрапидорами.
>>878101Дико двачую. 7 лет на рельсе, раньше сильно лучше было.
>>912963Вообще руби без рельсы практически нигде не нужен. Рэйлс стал умирать после 13 года, с активным пиаром нод-макакинга на бэк/фронт-енде за еду и скорость выполнения. Параллельно большое число любителей с рубигайдом в хиленьких ручонках влилось на рынок, сильно обваливая прайсы и создавая очень плохую репутация фрейморку путем написания чудовищного кода и, следовательно, отправлением очередного говностартапа на помойку ит. Инвесторы просекли и продолжают сечь фишку и деньги на такие проекты дают все реже и реже.
>>914104> Работают вообще поголовно удаленно и укатываются сидеть с макбуками на Гавайи. Взоржал с зазывалы. Ну-ка, пруфани видами, лол. Типичный держатель подвальной галеры с прыщавыми студнями "воспитывает" подрастающее поколение в пр.
>>914210И куда идти тем, кто не хочет нод\го макакинга за еду?
>>914216Смотря сколько ты хочешь. Го - это голанг? Не встречал макак на нем.
>>914235Разумный баланс между кэшем и интересной работой(читай, хотябы не унылой шаблониной, которую спустя пару месяцев делаешь с закрытыми глазами)Я на самом деле хз насчет го, но на двачах его форсяк как езык макак, этакая нода от империи зла гуглей
А что делать если ты любишь руби, но ненавидишь рельсы с его активрекордом?
>>914239Работы интересной не бывает. Чтобы решать сложные задачи, нужно много учиться и практиковаться, где-то здесь со временем интерес пропадает. Ты проиграл.>>914240Писать на руби, жить с мамкой.
>>914239Голанг не плох, лучшее из лимбо без костылей си. Но в рашке и аутсорсе не приживется, потому что не веб. А это значит мало заказов и значит галерам нет смысла набирать гребцов.
>>914211Ну, я например не на Гавайях только потому, что нафиг не упало. Мне не 20 лет, чтобы тратить бабки направо-налево. А так все успешные пацаны теперь, кто со мной начинал.
>>913989Отвечайте на мой ответ. Или тут только умир или ниумир обсуждают?
>>914244TLD, TDD не нужно.
>>914247Просто вот так? Потому что тесты - это скушна?
>>914248ты не знаешь что такое TLD, это не отказ от тестов. TDD хорош только для тривиальной хуйни.
>>914243Я тебя услышал.
>>914249Я понял, что не отказ. Просто интересно - как писать, если сначала ты хуяришь код без разбору от и до (хуже всего если проверяешь вручную при этом), потом полностью пытаешься написать на это всё тесты, потом они фейлятся, и ты долго и нудно расставляешь везде точки останова, шаришь по переменным, вот это всё, да? Потом находишь какую-нибудь, не относящуюся к конкретному тесту, ошибку, потому что пока хуярил - всё усложнилось и ты потерял из вида какую-то деталь. Мне кажется, если не всё напропалую за раз тестить, а помаленьку - на дебаг времени меньше тратится. Хотя возможно для кого-то медленным окажется прыгать туда-сюда из тестов в код и обратно.
>>914253Тебе бы начать в шеколадный глаз давать и фалафель сосать. Глядишь и тесты пройдут и кофаундер приголубит. (Автор этого поста был предупрежден.)
Антуаны. Есть одна вакансия: Требования: Уверенное знание: Ruby; Знание основ работы и разработки современных web-приложений (фоновые задачи, очереди сообщений, API); Понимание механизмов работы реляционных и noSQL БД (структура, нормализация, объединение, индексы); Знание: Ruby on Rails, PostgreSQL, CoffeScript, Sidekiq, Linux, Git Знание принципов Unit-тестирования и умение писать тесты с использованием rspec; Знание Unix на уровне пользователя командной строки Будет плюсом: Опыт работы с: Angular, Backbone, React Node JS; Знание алгоритмов и структур данных; TDD, TBD Знание других языков программирования. И есть я - пару бложиков и реддитов на руби, с кодекадеми и прочим говном. Без опыта работы. Вопрос: Насколько велик шанс, что я соснул?
>>914302100%
ПЕРЕКАТЫВАЙ !
>>914241>Ты проиграл>2 поста маневров и так и не ответилЯсно, понятно
>>914256В треде завелась обиженка
>>914390И кто тебя обижает?
>>914302Почти наверняка, но попытка не пытка. Игнорируй запрос резюме, оно сразу улетит на помойку повышая при этом показатели эйчарщицы вчерашней выпускницы провинциального вуза. Вместо этого надо найти все телефоны, звонить и запрашивать тестовое задание и по возможности разговор с кем-то из технического отдела.
Почему ActionCable нормально работает в девелопменте, а в продакшене нет? Браузер будто бы и не пытается проапгрейдить соединение. В компилированном js разобраться невозможно, но такое чувство, что там не хватает куска кода. Или от чего это может быть? В cable.yml вместо редиса поставил везде async.
>>914418Я бы попробовал отключить часть модулей компиляции до минимальной читаемости и попытался проследить до дыры в коде. Какая там в целом компиляция? Склейка в один файл и аглифай? Если так, то соответственно аглифай убрать и смотреть что получится.
>>914446Так и хотел сделать, спасибо.
>>914448Поделись потом, что получилось. Самому до сих пор с ЭкшнКейблом не приходилось иметь дела, но обязательно нужно освоить, 2к17 же. Какие вообще ощущения от работы с ним?
>>914452Я юный вкатывальщик, это (рор) мой первый фреймворк, так что думаю тебе не интересны мои ощущения. (А вообще всё очень просто, как и всё остальное в рельсах)Действительно, углифаер проебывает куда-то кусок кода, ответственный за подписку, но пока я не могу включить углифаер обратно, лол. Вроде удаляю ассеты, компилирую снова, а в браузере всё так же. Походу у браузера в кеше остались, как у него их почистить?
>>914465Если хром - то да, там, есть полное обновление страницы.
>>914470Мозилла. Кеш удалил, проблема не в нем, руками проверил файл в public/assets -- почему-то не прикручивается углифаер обратно. Вроде как я только одну строку менял в production.rb.
>>914473Тут опять таки трудно что-то насоветовать не зная всей последовательности действий и остального контекста. Разве что напомню, трудно сделать большее что всегда можно откатить все изменения в гите и повторить все шаги более внимательно и осознанно. Я в половине случаев именно так нахожу выход.
Ничего не понимаю, если config.assets.compile = true, то углифаер замечательно работает, но assets:precompile выдает результат без него.Алсо, в первом случае ВНЕЗАПНО заработал акшон кабель. Вообще ничего не понимаю.>>914495Пожалуй, и правда, сделаю как ты советуешь.
Посоны, ну расскажите успешные истории, кто как из страны свалил?
>>914513Поддвачну т.к. у самого такой же пашпорт
>>914452Мне вот довелось, стрёмные ощущения. Всё равно это чисто "чтобы была". После эликсира особенно заметна разница.
>>914627Вот да, слышал похожие отзывы и что рельсо-звезды из Злых Марсиан именно поэтому сделали свой AnyCable как более человеческую альтернативу. При всем моем Руби-оптимизме не могу не отметить, что сами Рельсы не очень хорошо адаптируются к современной разработке. Минитест - меняем на Рспек, Экшнкейбл - на Эникейбл, Спрокетс под нужны современного JS без Вебпака не подстраивается, Кофескрипт тоже отдельная история. И что удивительно, коммьюнити под все это так быстро и ловко подстраивается, что не успеваешь ощутить дискомфорта от неудачных решений DHH.
>>914641Двачну пожалуй. И скорей всего мне ещё предстоит перелезать на AnyCable.
>>914627Где и что гавнакодил на елексире? Успешно?
>>914627Да вот биллинг вбрасывал недавно, для него вебхук-оповещатор запилил:https://github.com/openbill-service/openbill-webhooksРаботает вроде по сей день.
>>914875>>914921
>>914927Книжку лучше почитай по нему. На руби он похож только буковками.
>>914927>совсем другой язык>не отличил его от РубиПопробуй пока на паскале писать.
Анон, что можешь сказать про тейлблейзер? Вообще свои мысли на этот счет.Особенно интересно мнение этого >>913136 анона
https://2ch.hk/pr/res/916183.htmlhttps://2ch.hk/pr/res/916183.htmlhttps://2ch.hk/pr/res/916183.html
Сап сосач, ситуация очень тяжелая, нуждаюсь в любой хелпе.В в общем делаю веб-парсер сайта, всё шло гладко, пока я не наткнулся на выпадающий список.. Как спарсить названия из списка, и ссылки на картинки, соответствующие выбору? (curb/nokogiri/xpath)http://www.sammccauley.com/Product/loreal-colour-riche-lipliner/27631/2224.14.0 к примеру эта страничка
>>860724 (OP)Анончик, хелпани чем сможешь, вопрос жизни https://toster.ru/q/391272Создал тему на тостере, дабы не засорять харкач множеством букоф
Аноны, нужна помощь.Есть такой тест:http://pastebin.com/APJC3QibЕсть следующие моменты:1)FactoryGirl все создает в дб, я провеляб byebug'ом2)Эта сраница налокалке все рендерит, то есть присутствуют все нужные атрибуты, в том числе и name3) Тест выдает ошибки, причем и в случаем с просты RSpec'om, так и с shoulda-matchers версиейошибки/контроллер/страница пикрелейтед