Этого треда уже нет.
Это копия, сохраненная 5 марта 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
47 Кб, 446x512
3862 Кб, 3596x1648
519 Кб, 450x675
Ruby Thread #860724 В конец треда | Веб
Предыдущий: 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 Grimm
Practical Object-Oriented Design in Ruby
Refactoring Ruby Edition
Ruby Under a Microscope для любителей залезть под капот.
Документация по стандартным библиотекам http://ruby-doc.org/
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
И ещё раз онлайн: http://www.codewars.com/?language=ruby
Не веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
И вот еще https://rubymonk.com/ - Матц одобряет.

2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
А еще можешь полистать на гитхабе гемы с нарастающей популярностю.
https://github.com/trending?l=ruby
Там еще нет тысяч строк, и тебе будет легче понять.

3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).

4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.

5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
И это тоже, легко и просто: https://rvm.io

6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
API: http://api.rubyonrails.org
Прекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails , а вот тут все тоже, но на русском http://codenamecrud.ru/
Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/book
Для дотошных читателей есть The Rails 4 Way.

7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
Почитайте еще Grimm A. - Objects on Rails
Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/

8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
- http://afreshcup.com

9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.

10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - rS4subyANUSconference.R|OjabberPUNCTUMrvxxu
А еще есть русская слак конфа - https://russiandevs.slack.com она общая, но есть очень активный руби канал.
Так же русская гугл группа, активная - https://groups.google.com/forum/#!forum/ror2ru
Еще вот - https://onrails.club/

11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.
Поиск гемов https://www.ruby-toolbox.com

12. Зачем нужны тесты и как их писать?
http://rusrails.ru/a-guide-to-testing-rails-applications
http://habrahabr.ru/post/163597/
Вместо этого можно прочитать классную книгу Everyday Rails Testing

13. Где можно задать глупые и не очень вопросы?
- здесь
- stackoverflow.com
- тематические slack-конфы
- а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.

14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.

15. В чём писать код?
Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.

16. Можно ли писать на руби с под windows?
Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac

17. Руби язык одного фреймворка?
Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене

18. Можно ли делать игры на Ruby?
Можно, но не нужно. Гем Gosu.

19. Ютуб каналы
Youtube driven development...
Вот тебе пара каналов, но никому не говори что учишься по видео.
https://www.youtube.com/channel/UCIQmhQxCvLHRr3Beku77tww/videos
https://www.youtube.com/channel/UCfWZwsP8trUy5uHJg8gcGIQ
https://www.youtube.com/channel/UCSI77lJlzlCFPLdV1RSAoYQ
https://www.youtube.com/channel/UCPIyDzf1vwWc8EQJGUX-vYw - тут на ру$$ком даже.

20. Как и где искать работу?
Легко и просто - http://rubyjobs.ru/
Не так просто - https://upwork.com/
Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.

TODO лист для ньюфагов:
И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras
Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.
Рекомендации:
1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии.
2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет)
3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch
4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.

После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object.
https://netguru.co/blog/service-objects-in-rails-will-help - о сервисах
Еще паттернов - https://robots.thoughtbot.com/back-to-basics-solid

Но самый читаемый код, как и следовало ожидать, даёт функциональное программирование. Начни отсюда:
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-ii/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-iii/
http://www.sitepoint.com/functional-programming-pure-functions/
http://www.sitepoint.com/functional-programming-ruby-value-objects/
Только не переборщи. Руби - не функциональный язык, и иногда такой код может работать медленней.

Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.

Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.

Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.
Ну, а мы открываем очередной Ruby Thread.
#2 #860729
Зачем нужен руби если есть питон
860740
#3 #860740
>>860729
зачем нужен питон если есть Perl?
860741
#4 #860741
>>860740
Зачем нужен Perl если уже есть lisp?
860742
#5 #860742
>>860741
Зачем lisp если уже есть фортран?
860743862859
#6 #860743
>>860742
Зачем фортран если есть перфокарты?
#7 #860750
Зачем жрать капусту, если есть картошка?))))))))
#8 #861012
[code]
"руби".capitalize
=> "руби"
"ruby".capitalize
=> "Ruby"
[/code]
Почему такую очевидной функциональности нету в стандартной библиотеке? В пистоне и джс изкоробки.
#9 #861134
>>861012
вроде в 2.4 запилили
863229864786
#10 #861151
Как ОТРЕФАКТОРИТЬ accepts_nested_attributes в form object?

Лол, в т9 слово уже капсом. Убрал fields_for в форме, самому вручную что-ли каждый инпут теперь настраивать чтобы на сервер нормальный хеш пришёл?(
#11 #861154
>>861012

Стандартные библиотеки говно, по разным причинам.

Мне сегодня нужно было написать обработчик на какие-то урлы с русскими символами для хттп-парти.

Взял стандартный URI.encode. Отправляю запрос, а оттуда хуй вместо ответа. Начал разбираться.

Выяснилось: стандартный кодировщик вот уже (как минимум) три года не такой rfc-compliant как хотелось бы, многие uri обрабатывает неточно, а я со своей проблемой не один такой. Там же советовали гем "addressable". Поменял, и, действительно, запросы и ответы стали такими как и должны были быть.
#12 #861239
Подскажите как сделать лучше: есть бот для стороннего веб-сайта который работает как фоновая задача (rabbitmq+sneakers), он должен выполнять разного вида задания. В вики написано что для каждого типа задания надо создать отдельного воркера. Проблема в том что для работы боту надо залогиниться на сайте (получить куки, в будущем возможно установить постоянное соединение), как мне передать куки разным воркерам.
861246
#13 #861246
>>861239
Т.е. например мне надо запустить 10 ботов — сначала отправляем запрос к серверу, он логинится, получает куки и для каждой задачи создаётся по воркеру с уже установленными куками, и так 10 раз.
#14 #861965
Ребята, ваше мнение насчет form object:

Должна ли форма искать модель, или контроллер передает ей уже найденное?
Или может контроллер передает ей только id?
17 Кб, 561x43
26 Кб, 566x104
#15 #862057
Может вопрос не в тему, но я же совсем нуб. Так вот, надо проектик сделать. Вместо стандартной базы данных надо использовать 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 и пробовал заново. Все похожие решения на стаковерфлоу испробовал. Почему я даун такой? Почему не получается? Помогите, пожалуйста.
862297862299
#16 #862297
>>862057
docker run mysql
/thread
#17 #862299
>>862057
это ШINDOШS? Если да, то лучше ставь линукс дуалбутом #а то и дропай шиндошс к хуям#. Руби/рельсогосподам нечего ловить на шиндошс
#18 #862568
>>859241
Элексирчик такой, вот какой)
Пока некоторые вкатываются в реакт и прочую жс поебень, прошаренные поцаны щупают феникс, который по удобности, красоте кода такой же как руби, только лучше.
862578
#19 #862578
>>862568
хуй работу найдешь
862596
#20 #862596
>>862578
На руби пока есть места, даже новые проекты продолжают писаться (хотя и на пыхе они выходят). Я к тому, что это руби 2.0 в скором времени будет, все к тому и идет.
#21 #862668
Матц сказал что в следующем году руби 3 точно не будет.
862688862752
#22 #862688
>>862668
Это сильно плохо или не сильно плохо?
862700
#23 #862700
>>862688
Это значит что они слоупоки и еще толком не решили как надо добавить много важных абсолютно новых фич при этом оставив совместимость с предыдущими версиями. Зато 2.4 в декабре и +5% к производительности прямо как у интела
https://youtu.be/8aHmArEq4y0
#24 #862752
>>862668

За 23 года появилось дошли до 2 мажорной версии, если считать что цикл разработки близится к концу, то можешь посчитать сколько осталось.

Это не сильно плохо или хорошо, вообще насрать какая сейчас версия. Вот то что язык развиваится, и фичи типа гильдии (см. видосик ниже) в разработке, радует, да.

Да и компилятор который умеет в минимальный статический анализ, штука

Впрочем, зацикливатся на руби не стоит, в любом случае. учи эликсир хаскель.
#25 #862859
>>860742
Ты фортран с фортом попутал и все запорол.
#26 #863040
>>861012
[1] pry(main)> foo = "bar"
=> "bar"
[2] pry(main)> foo.capitalize
=> "Bar"
[3] pry(main)>
863077
#27 #863077
>>863040
Ты совсем дурачок, да?
863146
#28 #863146
>>863077
А ты?

2 команды вбить не можешь? мамкин програмер
863155
#29 #863155
>>863146
А теперь подумай.
863156
#30 #863156
>>863155
Думай сам, мудила
863159
#32 #863159
>>863156
Ох, лол, каждому итт школьничку нужно подарить по футболке с таким принтом.
863229
52 Кб, 640x360
#33 #863229
>>863157
>>863159
Он это имел ввиду, лалки
https://bugs.ruby-lang.org/issues/10085
>>861134-кун
863232863325
#34 #863232
>>863229

> Added by Martin Dürst over 2 years ago.



=(
#35 #863258
Спасибо, что перекатили.
ОП предыдущих тредов
863392
#36 #863325
>>863229
Ну так я на это и намекал школьничку как бы, чего ты меня хайлайтишь-то.
#37 #863367
Как получить xcode аноны? сделал vmare эмуляцию с капитаном, из апстора не качает а левый пидорасится как сучечка. Ох уж эта анальная зависимость.
863391863679
#38 #863391
>>863367
Эпплобляди должны страдать.
#39 #863392
>>863258
Ты бот.
#40 #863595
Аноны я вообще правильно делаю?
https://ideone.com/M5pVTo
Суть в том чтобы метод класса возвращал массив уже инициализированных объектов другого подкласса
Просто класс в классе смотрится странно (я ньюфаг)
863620
#41 #863620
>>863595

Ты нарушаешь основной принцип solid: каждый класс отвечает только за свою работу. Лучше так не делать, смешение логики превращает код в кашу. Очень невкусную кашу.

Твой код, можно отрефакторить через duck typing, например, так https://ideone.com/FbALvw

Теперь Api может работать с любым классом, что имеет публичные конструкторы, а не только с posts. А классы ничего не знают друг о друге.

Еще, мне не понятно зачем нужна переменная post. задачу можно решить без нее, через анонимные функции (замыкания) (раз уж ты захотел поиграться с каллбеками):

https://ideone.com/xYA62a

при этом обрати внимание, каждый вызов метода fetch_threads будет приводить к созданию новых объектов.

И, наконец ответ: лучше не писать классы в классах. На это должны быть веские причины. И даже если они есть, ты, скорее всего, делаешь что-то, что потом придется переписывать.
863683
#42 #863679
>>863367
Как ни странно, можно без xcode. Когда будешь устанавливать brew, то тебе предложил прямо из терминала запустить команду, которая только компилятор от xcode вытащит, а не всю программу из AppStore.
#43 #863682
Йоу, парни!

Ходил кто на RailsClub? Когда выложат видео оттуда или слайды презентаций?

https://www.youtube.com/watch?v=70Q-OTl14e8
864357877866
#44 #863683
>>863620
Вот ты говоришь что надо их разделить но дело в том что у меня в классе SomeApi есть метод который используется и в Post, (конкретно он генерирует часть урла для запросов, что-то вроде токена) и используется только в этих двух классах и пользователю он и не нужен (т.е. вроде и нету причины делать его публичным) но и вызвать его кроме как через instance.send :meth я не могу.
863724
#45 #863724
>>863683

если ты хочешь нарушить инкапсуляцию объекта, то можно использовать в инстансе класса Post метод instance_eval для инстанса SomeApi. Инкапсуляцию пробьешь, но это считается плохой техникой.

Альтернатива — рефакторинг SomeApi и Post, с выносом логики которая отвечает за все что связано с токенами в отдельный класс, и может быть даже в отдельный неймспейс, чтобы оградить внутренности от взгяда пользователей.
863826
#46 #863826
>>863724
Окей, спасибо.
#47 #864357
>>863682
Какой жу уебищный акцент, прям как у индусни, хуй поймешь
#48 #864786
>>861134
Таки запилили
2.4.0-preview2 :001 > "руби".capitalize
=> "Руби"
#49 #864919
Посоветуйте книжку по руби для тех, кто шарит, без воды (нет, не хочу читать документацию, хочу красивую пдфку). Желательно написанную критически настроенным автором, с описанием всяких подводных камней, узких мест, спорных решений и бест практисов.

А, ну и какой-нибудь хороший код небольшого объема на почитать посоветуйте, если кто-то шарит.
864927864928
16 Кб, 814x93
28 Кб, 730x168
#50 #864927
>>864919
Удваиваю реквест. Прагматик гайд из шапки нихуя не прагматик - дропнул это промывание мозгов, не дойдя и до сотой страницы.
#51 #864928
>>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
#51 #864928
>>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
865233
#52 #865233
>>864928
Меня очень настораживает тот факт, что ты даешь русские названия книг - это вроде бы дает повод усомниться в твоей компетентности. С другой стороны - логично же прочитать книжку от Матца, раз уж он ее написал! Спасибо, ее и полистаю для начала.
#53 #866626
Что это вообще такое, в руби что нету нормальной http билиотеки ?
Использовал раньше http.rb, но в один момент он вдруг отказался возвращать внятный ответ, а дело в том что он со сжатием работать вообще не умеет. Ну я такой, ладно ведь дохуя же библиотек разных должно быть. Захожу на ruby-toolbox, 1 в списке гем rest-client: не может сам автоматом распарсить json по заголовку content-type, окей 2 гем faraday: изкоробки не работает с куками, нахожу middleware faraday-cookie_jar - с куками он то теперь работает, но я получить значение этих кук не могу. Дальше идет multipart-post вообще не отдельная библиотека а расширение стандартного net/http
866642866685
#54 #866642
>>866626
Ага, faraday может, но для этого надо еще строк 20 написать, опять же из коробки такого функционала нету.
866643
#55 #866643
>>866642
не faraday a HTTParty
писал свой буггурт а потом стер
#56 #866685
>>866626
А ответ один - юзай clj-http, clj-http-client, http-kit, etc etc
2 Кб, 402x256
#57 #868059
А есть какие-нибудь гемы чтобы в сложные жсон парсинге можно было ориентироваться, или сразу нужные ключи выдергивать, просто у меня пикрилейтед, и это еще не конец.
868071868184
#58 #868071
>>868059

> это еще не конец


А написано, что конец. ;););)
#60 #868226
Антуаны, а как/куда вы деплоите rails приложения? Внятных инструкций кроме как для хипстерского хероку я не нашёл, а хочется чего-нибудь бесплатного и относительно простого. Может, посоветуете чего-нибудь? Спасибо.
868245
47 Кб, 931x622
#62 #868687
Ребят, помогите фронтенд мартышке понять РБД в разрезе рельс. Вот пример с рецептами и ингридиентами.
Суть токова, что у рецепта может быть много ингридиентов с доп полем - количество.
У пользователя тоже может быть много ингридиентов с количеством. Ну и рецетов много может быть, но на картинке не указано.
Не слишком дичь я нарисовал тут, так и должно быть или хуйня какая-то?
868712868764
#63 #868712
>>868687
хз так-то для таких ситуаций есть counter_cache http://rusrails.ru/active-record-associations#counter_cache
пишешь опцию в модель индигриенты и рецепты(для юзера), пихаешь в таблицы рецепты и юзеры столбцы с рецепты_count, и готова
868764869019
#64 #868764
>>868687
Зачем тебе хранить к-во ингредиентов в базе?
Ты можешь просто написать recipe.ingredients.count
а чтобы это выполнялось без дополнительных sql запросов, делай как тебе посоветовали тут >>868712
869019
#65 #868840
Бял, тестов куча, что делать чтобы их ускорить? Больше всего занимают request тесты json api, следующими идут интеграционные с капибарой.
868845
#66 #868845
>>868840
Я кстати попытался тестировать вручную operation'ы jsonapi-resources, вместо того чтобы гонять целый стек, но чет не вышло. заебло сурцы это гема читать
868973
#67 #868973
>>868845
Очевидно, не пользоваться ссаным jsonapi-resources, это не гем, а какая-то инвалидная параша для неумеющих в архитектуру. И вообще сам по себе стандарт JSON API мало профитов в себе несёт и кучу уродского гемора - больше похож на корявую имитацию graphql. Можно использовать, если у тебя целый зоопарк разных девайсов пользуется api( чтобы не приходилось всем вручную обрабатывать ответы), и по каким-то причинам невозможно заюзать graphql. А так других доводов в его пользу по сравнению с ad-hoc API я еще не видел.
869169
#68 #869019
>>868764
>>868712
Так, это. Каунт != количество, не? Я конечно не сильно шарю, но по-моему таким образом я смогу узнать только size ингридиентов. Типа

>recipe.ingredients.count


>3


А мне надо иметь количество каждого ингридиента, как-то: Сыр - 100 ед., Залупа - 5 ед., Корокодил - 0.5 ед. Ну как в рецепте.
Т.е. есть таблица в которой перечислены всевозможные ингридиенты. И, например, пользователь может создавать рецепты, делая выборку из существующих ингридиентов, присваивая каждому количество. Я почитал райлсгайдсы и пришёл к выводу, что тут нужна мени-ту-мени связка. Но если между двумя моделями Recipe -> QuantityIngredients <- Ingredients всё в принципе понятно. Джоин таблица держит айди рецепта и айди ингридиента и заодно его квантити. Но если мне понадобится сюда прикрутить UserIngredients? А потом и UserRecipes, начинается казаться что получиться какая-то каша лютая из ассоциаций. Посему и советов мудрых прошу.
869037
#69 #869037
>>869019
А вот я сразу понял, что ты имеешь в виду, в отличие от тех анонов! Лол.

Если честно, я бы не стал ебаться с джойнами, тут смысла в этом нет для таких данных, как мне кажется. Просто засунь в рецепт одно жсон-поле "ингредиенты" вида айди->количество. Или юзай монго, например.

Вообще, у тебя что, игра какая-то? Потому что если не игра, а действительно сайт с рецептами от юзеров, то АСТАНАВИТЕСЬ и ПОДУМОЙ - ты правда думаешь, что кто-то будет указывать точное количество крокодилов и сахарного песка, а потом еще и искать рецепты ровно с двумя крокодилами? Ето же оверинжиниринг как он есть.

А если ты это в качестве упражнения, то да: айди рецепта, айди ингредиента, квантити. Айди юзера, айди ингредиента, квантити. Под юзерРесипис ты что имел в виду? Просто у рецепта добавляешь поле "автор", "оунер" или что там у тебя. Если много авторов у каждого рецепта - то да, еще одну таблицу, аналогичную тем, с ингредиентами.
869053
#70 #869044
Посоны, говноэникейщик в треде!
Готов тратить на программирование 25 часов в сутки, 8 дней в неделю! азаза, нет конечно

В сущности я хотет вкотиться в вэб. хтмл и цсс знаю более-менее. Но хочу уметь в динамические сайты.
Посему на данном этапе должен выбрать между PHP/RUBY/жабаскрипт
из знаний в программировании - забытый с института паскаль.
Вот пришел к вам за советами мудрыми - стоит ли мне начать мои мучения с Ruby? Или таки пиздовать в ПХП-тред?
Вообще в Руби сложно вкотиться?
869049
#71 #869049
>>869044
П.С.
Тащемта я хотет себе что то типа хобби. Хочется мне изучить полезный язык программирования.
есть "русские" книги для начинающих?
Потому как в спец. литру на английском я боюсь не влезу.
869093
#72 #869053
>>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_ingredients
end
[/CODE]
Если я буду эту модель сериализировать через, скажем, актив модел сериалайзер, то по первой ассоциации (has_many :recipe_ingredients) я получу то, что и должен получить: вложенный жсон аррей из { recipe_id, ingredient_id, quantity }. А вместо ingredient_id мне нужно будет подставлять реальный ингредиент, т.е. ещё один запрос в базу делать?
869093
#73 #869065
Хмм, поясните за assets pipeline.
Вот при скаффолдинге он создает файлы типа <model_name>.js. В чем профит писать код в этих файлах, кроме, хм, разделения? Ведь все равно он сливает все в один файл и грузит все сразу в продакшене?

Допустим, у меня есть редковызываемый модал в модели users, в котором есть много js событий. Если я напишу этот код в "users.js", то лишний раз нагружу канал, все будут грузить полный application.js (а он еще по-умолчанию блочит рендеринг). Логичнее ли зделать подгрузку скрипта непосредственно при клике на модал? Вот как лучше? inline код вроде бы не rails-style.

Пользуясь случаем, /r/ гайдов по оптимизации asset'ов, самое узкое место в app у меня.
869078
#74 #869078
>>869065
application.js по дефолту
Ты можешь добавить сколько угодно файлов манифеста, и инклудить их на вьюхи к нужным контроллерам.
#75 #869093
>>869049
Учи английский.

>>869053
Ну просто если в рецепте написано "четыре яйца", то можно сделать то же самое с тремя или двумя яйцами. Непонятно, нахуй это надо тогда - я ж не повар, мне не порцию ровно в двести граммов надо, мнетпожрать надо. Короче, лично я не вижу в этом смысла, вот. Но может это джаст ми, да и оффтоп, так что ладно.

Про запросы: http://apidock.com/rails/ActiveRecord/QueryMethods/includes ну и там дальше по докам смотри.
#76 #869169
>>868973
GraphQL ещё малопопулярен. jsonapi-resources выбрали, потому что у меня нету опыта в написании API, а нужно было быстрее (
869207
#77 #869192
Как отключить загрузку кастомных шрифтов в тестах? Писать fonts.css.scss.erb чет выглядит костылем.
#78 #869207
>>869169

>GraphQL ещё малопопулярен


Зато эффективен. Ad-hoc быстрее бы получился и опыт бы появился как вообще API делать "по-обычному". А это ведро с гайками не гнётся вообще никак, только круды на нем клепать. Если REST обычно в этом винят, то он хотя бы не налагает на тебя каких-то архитектурных обязательств в отличие от.
869237869278
#79 #869237
>>869207
А можешь доставить ссылок на то, как рест в этом винят? Только не кукареки от петушков, а что-о обоснованное?

Мимо.
#80 #869278
>>869207
Ну, моя работа и есть ебашить круды... Я бы не смог убедить заказчика взять graphql, потому что так модно и молодежно, ему нужно быстрее, и проверенное решение.
19 Кб, 266x123
state #81 #869446
Реквестирую архитектора в тред.

Короче, вот есть статус у сущности (draft, published, archive). Статус выражает некоторое свойство. На него может быть завязана небольшая логика (типа нельзя комментировать в статью в архиве) или валидация.

А есть состояние, которое выглядит на первый взгляд так же как статус (new, in_progress, executed, completed, rejected). Но в отличии от статуса с состоянием связаны процессы, которые производят много действий, могут меняют этот и другие объекты. Процессы могут быть необратимые ака нельзя повернуть время вспять, особенно если связаны с внешними системами.

Вопрос - как правильно работать с состояниями?
Тут нужно объяснить, а в чем собственно проблема. И объяснить мне сложно. Но кто сталкивался, тот я думаю поймет.
Во-первых, валидации. Логично что объект должен валидировать свое состояние. Но процесс связанный с переходом намного шире зоны ответственности объекта и ему тоже нужно заниматься валидацией.
Во-вторых, действия при переходе. Они намного шире зоны ответственности объекта. Даже не заморачиваясь по поводу лучших практик, декомпозиции и слабого связывания, начиная пихать всю логику в модель, обнаруживаешь что это воняет.
В-третьих, процесс как-бы стоит над объектом, оперирует самим объектом. То есть с точки зрения объекта есть переход из A в B. А с точки зрения процесса мы из А можем перейти в B,C,D,E. И после перехода объекта сам процесс при этом еще может быть не завершен и даже откачен назад, если так решит процесс.

Вроде как для этого существуют стейт-машины. Но те гемы что есть, они эти проблемы не рашают или решают частично. Максимум что дает стейт машина это валидацию переходов виде методов can?(). Гуарды раздувают модель, обработчики (собственно процессы) не могут вместиться в реальный процесс потому что не разбирают когда нужно фактически сменить атрибут, когда сделать валидацию, когда открыть и закрыть транзакцию - они как-бы внутри объекта.
В общем стейт-машины не дают паттерна работы с состояниями, а только дают валидацию.

Не знаю, получилось ли у меня описать проблему.
Я сейчас использую ServiceObjects для самих процессов и простенькие валидаторы переходов в моделях. И в модуль вынесен небольшой функционал для трекинга истории переходов.
Но все-таки получается как-то коряво. Есть ощущение, что это делается не так.
Прошу совета гуру паттернов проектирования.
19 Кб, 266x123
state #81 #869446
Реквестирую архитектора в тред.

Короче, вот есть статус у сущности (draft, published, archive). Статус выражает некоторое свойство. На него может быть завязана небольшая логика (типа нельзя комментировать в статью в архиве) или валидация.

А есть состояние, которое выглядит на первый взгляд так же как статус (new, in_progress, executed, completed, rejected). Но в отличии от статуса с состоянием связаны процессы, которые производят много действий, могут меняют этот и другие объекты. Процессы могут быть необратимые ака нельзя повернуть время вспять, особенно если связаны с внешними системами.

Вопрос - как правильно работать с состояниями?
Тут нужно объяснить, а в чем собственно проблема. И объяснить мне сложно. Но кто сталкивался, тот я думаю поймет.
Во-первых, валидации. Логично что объект должен валидировать свое состояние. Но процесс связанный с переходом намного шире зоны ответственности объекта и ему тоже нужно заниматься валидацией.
Во-вторых, действия при переходе. Они намного шире зоны ответственности объекта. Даже не заморачиваясь по поводу лучших практик, декомпозиции и слабого связывания, начиная пихать всю логику в модель, обнаруживаешь что это воняет.
В-третьих, процесс как-бы стоит над объектом, оперирует самим объектом. То есть с точки зрения объекта есть переход из A в B. А с точки зрения процесса мы из А можем перейти в B,C,D,E. И после перехода объекта сам процесс при этом еще может быть не завершен и даже откачен назад, если так решит процесс.

Вроде как для этого существуют стейт-машины. Но те гемы что есть, они эти проблемы не рашают или решают частично. Максимум что дает стейт машина это валидацию переходов виде методов can?(). Гуарды раздувают модель, обработчики (собственно процессы) не могут вместиться в реальный процесс потому что не разбирают когда нужно фактически сменить атрибут, когда сделать валидацию, когда открыть и закрыть транзакцию - они как-бы внутри объекта.
В общем стейт-машины не дают паттерна работы с состояниями, а только дают валидацию.

Не знаю, получилось ли у меня описать проблему.
Я сейчас использую ServiceObjects для самих процессов и простенькие валидаторы переходов в моделях. И в модуль вынесен небольшой функционал для трекинга истории переходов.
Но все-таки получается как-то коряво. Есть ощущение, что это делается не так.
Прошу совета гуру паттернов проектирования.
#82 #869472
>>869446

> объекты


> объекты


> объекты



Я знаю, в чем твоя проблема, дружище.
869475
#83 #869475
>>869472
Не моя, а твоя. Тебе в другой тред.
#84 #869478
>>869446
Короче, я не гуру, но мне тоже интересно, так что напишу свои мысли, по абзацам.

Зачем ты про статус вообще говорил, если у тебя вопрос про состояния?

Объект не должен валидировать свое состояние, он его должен молча хранить. Отдели данные от логики же.

Стейт-машина конечно нужна, но по-моему совсем необязательно тащить либы для этого в код. Тебе просто нужно нарисовать в любом редакторе эту самую стейт-машину со всеми переходами и ичпользовать ее как документацию\спецификацию.

Не очень понятно, в чем именно у тебя проблема, потому что сложности тут должны возникнуть с асинхронностью, хранением истории и откатами, ненадежностью внешних сервисов и обработкой ошибок... а ты спрашиваешь, пихать валидацию в данные или нет. То есть непонятно, какая у тебя в целом структура кода. По-моему ключевым решением тут было бы, например, хранение данных в иммутабельных объектах, чтобы нахаляву получить историю и откат, ну и что-то эвент бейзед с каналами, чтобы не было коллбэк хэлл. А сверху приправить монатками чтобы грациозно ловить фейлы от внешних сервисов ладно шучу
14 Кб, 945x115
#85 #869486
>>869446
GOF Strategy Pattern
869508
#86 #869508
>>869486

> @strategy ||=



забыл, а то ведь >>869446 недогадается, и потом: "кококо где память, Зин"
869726
#87 #869726
>>869508
я не стал мемоизировать, потому что status может поменяться, а #strategy будет возвращать неправильный объект.
869754
#88 #869754
>>869726

И поэтому решением будет инкапсулирование логики в фабричный метод, а не ссылка на конструктор класса напрямую.

Заодно, >>869446 решит свои проблемы с

> И после перехода объекта сам процесс при этом еще может быть не завершен и даже откачен назад, если так решит процесс.



реализацией транзакций и валидаций.
869758
#89 #869758
>>869754
Кстати да, спасибо. Будет время отрефакторю, там еще много дерьма всякого (
#90 #869810
>>860724 (OP)
Привет ребята! Я психолог кун, вкатываюсь в жс и заодно хочу написать о связи популярных языков (петон, раби, жиес) с нетрадиционной сексуальной ориентацией.
Есть готовые поделиться своим опытом разработки?
#91 #869916
Допустим есть паблик метод, который вызывает приватный
get(args)
request(
args, method: :get) #приватный
end
Как запретить вызов get(1,2, method: :post) ?
Или я придумываю себе проблему на пустом месте и можно просто в доках написать какие параметры можно передавать в метод get и не париться ?
869945
#92 #869945
>>869916
args.merge(method: :post)
870085
#93 #870019
Как бля засетапить нормально реакт-редукс хуюкс на рельсах?
Примеров в нете нету, только пустой репозиторий на гите с каунтер аппом. Я даже не могу сделать чтобы js.erb говно работало.
870070870286
#94 #870070
>>870019
react on rails?
870200
#95 #870085
>>869945
Спасибо, сам до такого же додумался.
#96 #870130
Как вкатитьсяя джуном в ДС2, если вакансий нет ? Знаю rails 5, devise/bcrypt, rspec/capybara, знаю bootstap 3, jquery (Ui тоже), scss. Скоро буду изучать либо реакт, либо ангулар (склоняюсь к последнему). На мида не потяну - инфа сотка, но вот что джунить смогу, уверен. Так как вкатиться?
Аноны, поделитесь исторями успеха, а то в дизморали нахожусь.
870181
#97 #870181
>>870130
спами повсюду свое резюме, даже если в вакансиях ты ненужен, если есть интересное портфолие то могут предлоть чтоолибо
#98 #870200
>>870070
Бля еще читать, у меня уже вкладок 15 схоронено с документацией. Конечно когда-то дойду до них, но сейчас мне бы хоть разобраться, пилить фронт нужно полностью на реакте, или только компоненты с ебанутой логикой?
А то я попытался запилить примитивный хедер в котором одни кнопки у юзера и другие у гостя и соснул.
Хедер это вообще компонент или контейнер?
870254
24 Кб, 300x300
#99 #870217
Анонас а есть такой плагин для атома который будет предлагать автокомплит на основании rdoc/yard документации, и чтобы это работало для всех гемов а не только для файлов проекта?
870219870470
#100 #870219
#101 #870254
>>870200
Можно и так, и так. Можно даже несколько рутов иметь. Не еби мозг, делай все через реакт.
870258
#102 #870258
>>870254
Да бля
Вопрос офк не в программач, но я не ебу как
Передаю я допустим в компонент обьект юзера. Это просто джейсонина с данными из модели
Если мне нужно в компоненте чекнуть значения каких-то методов модели, передавать их отдельно?
Ну это хуита, вот другое, пытаюсь ебануть js.erb чтобы хоть урлы забрать из аппа, инстантли сыпется и говорит browserify error import or export can be included only within sourcetype module.
И в гугле нихуя по этому поводу нету
870319
#103 #870286
>>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-секунд на акшен вовзращающий стейт авторизации и на клиенте соответствующим образом реагировать.
870292870684
#104 #870292
>>870286
У тя это говно ентерпрайз, или дашь попалить?
#105 #870319
>>870258
В реактовом компоненте чекнуть "значения методов" рубиновой модели? Ээ?
870340
#106 #870340
>>870319
Ну дык
Я же говорю
Есть обычный фронт на аштиемеле
Там я вывожу Х если у юзера одно говно или У если другое
Чтобы ебануть эту же проверку в реакте, нужно датой в компонент передавать результат этой проверки, так?
А что если в разных кейсах я передаю от 0 до кастомного числа таких проверок?
870387
#107 #870387
>>870340
Ты дичь какую-то несешь. Передавай на клиент своего юзера жсоном, и там уже, на клиенте, делай с этим жсоном какие хочешь проверки. Если у тебя проверки только на сервере могут быть сделаны, то шли запрос на сервер, жди ответа, обнновляй состояние. Я вообще не понимаю, в чем у тебя проблема. У меня такое чувство, что ты хочешь руби-код с сервера на клиенте исполнять, или я не ебу, что еще.
870406
#108 #870406
>>870387
Не, нихуя
Самое элементарное, у юзера есть метод xuesos?
Который пляшет не от поля в модели, а от какой-то другой хуиты. Когда я передаю юзера в компонент, и хочу заодно в компоненте чекнуть xuesos? ли он, тогда нужно ретурн велью xuesos? передавать отдельно, так?
Предположу что так, тогда смотрим дальше
Если юзера вообще нет, я хочу рисовать две строки
Если есть, три, а если есть и хуесос то четыре
Мне в пропс нужно передавать всегда все эти значения ("типа" если юзер есть, то это user: user, xuesos: user.xuesos?) а если нет, то чтобы на клиенте это чекнуть все равно нужно передать и то и то в пропс, но пустое. Так?
Сорри если хуево обьяснил
870414
#109 #870414
>>870406

> Нихуя


> Хуесос


> Хуеты


> Хуево


Блядь, чувак, тебя в детстве батя выебал, или что? Ебаный стыд же, господи иисусе!

Ты передаешь компоненту все, что ему надо для рендеринга, а уж откуда и как - это твое дело. Ну или я нихрена не понял, что ты спрашиваешь, пусть тебе кто-нибудь еще посоветует, короче, я не врубаюсь, сори.
870419
#110 #870419
>>870414
Деградирую, уже не могу нормально выражаться, что я сделою. Прогать на рельсах ни разу не стимулирует мозговую активность я тебе скажу
870432
#111 #870432
>>870419
Попробуй literate programming, пока манагер не видит!
#112 #870470
>>870217
бампули
#113 #870635
Еее, я разобрался со структурой. Следующий вопрос, должна быть возможность писать js.erb файлы с реактом или нет? Пушта у меня это не работает, а в теории должно, сначала же рельсы делают из ерб обычный жс, а уже тогда этот жс компилится в browserify, нет?
870680870686
#114 #870680
>>870635
По ходу нет. Окей. Придумал следующий гениальный костыль. Написать хелпер типа link_helper.js который возвращает хеш внутри которого хеши по скоупам, внутри которых пары ключ - урла. После чего инклюдить этот хелпер в компонентах и юзать урлы оттуда. Очевидно что для этого я ембеддед руби тоже не заюзаю, значит надо как-то генерить его из роутов. Я чекнул пару результатов по generate asset rails и generate file rails но там не то. Эни айдиас? Или это вообще не нужно?
#115 #870684
>>870286
react on rails юзаешь?
#116 #870686
>>870635
ты неправильно готовишь реакт с рельсами. ВООБЩЕ СУКА НЕПРАВИЛЬНО 100500 ТУТОРИАЛОВ БЛЯТЬ ЕСТЬ
870812
#117 #870812
>>870686
Где же они? Чет я нихуя не нашел кроме каунтер аппа, аппа для учета расходов и говночата, и все 2-3 летней давности, а самое примитивное вообще не обьясняется
870813
#118 #870813
>>870812
инбифо у меня должен быть СПА без ссылок
#119 #871579
В ньюфаг-треде мне посоветовали Ruby для самого быстрого вката во фриланс за еду. Вы согласны с этим?
871580871684871860
#120 #871580
>>871579
html сначала выучи лол
871586
#121 #871586
>>871580
Обязательно? Основы программирования и ООП я уже знаю, пишу на крестах, но деньги понадобятся раньше, чем я смогу их заработать плюсами.
871603
#122 #871603
>>871586
Ну, я хз как можно вкатиться в рельсы, не зная html. Ты тупо не поймешь о чем идёт речь. Потрать недельку на втыкание в htmlbook и написание бложика.
#123 #871684
>>871579

> Ruby


умирает

> фриланс


умирает

> для самого быстрого вката


умирает

Бери Haskell
871709871712871871
#124 #871709
>>871684
чувак из вселенной, где трамп выигрывает пост президента.
871831
#125 #871712
>>871684

Склонен согласится, с этим философом, всё что рождено, но не умерло — умирает.
#126 #871831
>>871709
Если-таки выиграет, сядешь Haskell зубрить?
871844
#127 #871844
>>871831
Блядь, что-то мне не нравится такая связь между хаскелем и трампом. Трамп - это пхп. А Хиллари - это джава, угу.

мимо
871855
#128 #871855
>>871844
Они оба/обе за галерный аутсорс, так что нахуй их с пляжа!
Я лично буду молиться за либертарианского кандидата Джилл Стайн.
871869
#129 #871860
>>871579
Нет, учи Mercury и LambdaProlog.
#130 #871869
>>871855
У тебя же нет гражданства США.
874704
#132 #871877
>>871871
Даже цсс популярнее руби, лол. А ведь он даже не тьюринг полон! Wait... OH SHI~
871881
#133 #871881
>>871877
Ясно что будет, кроме него не как не покрасить сайт

Руби безумно популярен и в вебе и просто в софте
32 Кб, 258x245
#134 #871899
>>871871
Там же инфа за 14 и 15 год.
#135 #871972
Я вот думаю чтобы нахуй отсоединить фронтенд от рельс. Пробовал кто? Думаю юзать React On Rails + Semantic UI React для быстрого прототипирования
871990872057
#136 #871990
>>871972
По-моему тебе еще неделю (или сколько там) назад об этом говорили.
#137 #872057
>>871972
вот этот хуй пили нечто подобное
http://alexfedoseev.com/post/55/react-and-rails-isomorphic-awesomeness
#138 #872229
Почему вот так не работает:
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 всякие? :(
872237872251872352
#139 #872237
>>872229
NADO BYHNYT' i YSPOKOITCYA. I NI HADO GOVORIT' CHTO SDOHNESH OT CHAYA
872255872257
#140 #872251
>>872229
Потому что скул запросв надо писать, сюрприз, на скуле, а не ебаться с ненужными слоями "абстракции".
872255
#141 #872255
>>872237
>>872251
спасибо, но ведь абстракции были для удобства сделаны, наверняка можно что-то сделать, просто я ещё не знаю как
872332
#142 #872257
>>872237
что?
#143 #872332
>>872255
А тв на сгенеренную строку смотрел?
872335
#144 #872335
>>872332
я не знаю как смотреть, в консоли? И что мне даст смотренье на неё?
872353872415
#145 #872352
>>872229
Всё, я понял, надо использовать includes вместо joins.
#146 #872353
>>872335
Стимул пойти и выучить наконец SQL.
#147 #872360
Когда вообще надо использовать символы как ключи в хеше?
Т.е. например синтаксис для создания symbol: key намного приятнее но когда хеш приходит из другого источника то там обычно строки как ключи, и тогда ф-я в которой ты обращаешься по символу уже не работает. Это же больше невнятности вносит чем помогает.
872363
#149 #872367
>>872363
Ну я знаю что так можно, но какая вообще стандартная практика, когда их надо а когда не надо использовать ?
872377
#150 #872377
>>872367

> но какая вообще стандартная практика



Ключи в хеш таблицах должны быть иммутабельны.

Приводится 2 агрумента:

1. сравнения по иммутабельным строкам (symbols) быстрее.

2. вероятность, что ты проебешь hash[key] снижается.

---

Ответ, когда их надо использовать, а когда нет ты найдешь если почитаешь вот эту хуйню:

https://github.com/bbatsov/ruby-style-guide#symbols-as-keys
#151 #872415
>>872335
Тейблнейм.колумннейм
#152 #873793
Как написать класс, имеющий доступ к хелперам rspec? С модулями то все ясно, пишешь модуль и config.include Module.
#153 #873799
>>860724 (OP)
Анон, что запилить на рельсах как пет проект?
Что не стыдно будет показать при приеме на работу. Иными словами какой сайт сделать?
873857873889
#154 #873857
>>873799

сделай двач.
#155 #873888
>>860724 (OP)
Стоит ли с Java переходить на руби?
873891873919874392
#156 #873889
>>873799
Запили сайт с ачивками. Пользователь создает себе задачу "Накодить двач" или "выпилится" лол выставляет время 3 недели. Переодичски отмечая свой прогресс, пользователь получает это достижение. Потом в страничке своего профиля сможет пофапать на них. Можно сверху запилить сообщества, набры стандартных достижений, друзьяшек, ачивку дня и т.д.
Вот такое вот вэб-приложение мотиватор.
#157 #873891
>>873888
Нет, Руби загибается, хуже Перла уже.
HH ДС: Perl-215, Ruby-210.
#158 #873919
>>873888
Ну я бы не советовал. Жава господам просто неудобно будет с удобной и юзер-фредли жабы пересаживаться на руби.
Хаскель норм, даже веб на нем есть.
874046874107
#159 #874046
>>873919
Да нету на нем настоящего веба, игрушки только.
874151
#160 #874107
>>873919
Заебесся ты на нем что-то писать. Нету нормальных библиотек.
874151874271
#161 #874151
>>874107
>>874046
почему мемы про хаскел всё ещё серьёзно воспринимаются, кек
874238874271
#162 #874238
>>874151
Потому что утверждение "хаскель норм, даже веб на нем есть" истинно.
#163 #874271
>>874107
>>874151
Не писал на хаскеле ничего серьезнее хелоу ворлда.
НО знаю, что есть не мало сайтов на нем, даже борда русскоязычная на хаскеле написано. И это не шутка.
Плюс фреймворки от эрланга набирает неплохо обороты. Там свои нюансы, но производительность и скорость выше той же ноды или руби.
Имхо если вкатываться джава анону, то в какую то из этих технологий.
Опять же на руби по прежнему много работы, в ближайшее время ее не убавится, а язык все такой же приятный для пользования.)
874353
#164 #874353
>>874271
Ну вот у меня и была такая мысль, заняться руби и потихоньку смотреть/изучать на эликсиры с фениксами, а там как взлетит.

Еще есть мысль в мобайл(iOS) переключиться, но не знаю стоит ли того, все таки другая область, да и не понятно как-то все будет в ближайшее время. Для себя пару приложений запилил таки.
#165 #874392
>>873888
Я бы не стал. Сам сейчас сижу на руби и эликсире + фронтенд. Но все эти рельсы, активрекорды, кукумберы, динамика, диалайзер-костыли меня уже доебали (а вот фронтенд в умеренных количествах нравится пописывать). Планирую перекатывать на скалу, в кровавый энтерпрайз, но понимаю, что джавой тоже придется скорее всего заниматься.
Алсо, расскажи почему вообще возникли мысли о переходе с джавы на руби?
#166 #874566
Меня тоже что-то заебали эти динамические языки. Первые пару месяцев это дает буст к производительности, но потом понимаешь преимущества статической типизации. Скала выглядит как донельзя перегруженная фичами жава, хаскель малопопулярен, F# тоже, C# разве что...
Ну или в совсем крайнем случае писать фронтенд на TypeScript'e. React + Redux + Immutable.js пробовал, понравилось. Да, есть бойлерплейт, но это лучше, чем метаадок рельсов.
#167 #874704
>>871869
Потому я буду

>молиться


а не

>голосовать

#168 #875129
Как мне заставить regex кушать CRLF вместо обычного \n ?
Можно конечно же gsub-ом заменить все \r\n но это же костыли.
Пиздец как я охуел когда регекс у меня один файл парсил а второй нет из-за этой хуйни.
876075
198 Кб, 1014x620
#169 #875787
Анон, поясни нубу за стыковку рельс и современного фронтэнда. Для некоторых фреймворков и библиотек js не так просто даже хэлловорлд написать. Все эти транспайлеры, сборщики, менеджеры и другие инструменты далеко не всегда заводятся просто от добавления подходящего гема. На этапе изучения это становится реальной проблемой.
Имеет смысл разрабатывать фронтэнд как отдельное приложение? В отдельной IDE, с отдельным проектом и все такое. Если да, то как? Где-то еще видел инфу, что для этого отдельно имеет смысл поднять ноду и весь js делать через нее, а часть представления из рельс вообще убрать. Поделись советом.
875818878856
#170 #875818
>>875787
Да, фронтенд отдельно. Рельсы потом можешь выкинуть и заменить на ноду\кложурьскрип.
#171 #875828
Если у тебя обычный круд, юзай обычный react-rails. Если нужно будет добавить redux , переходи на react on rails. Если у тебя большая тима, то имеет смысл разделить её на фронтендеров и бэкендеров, отдавать рельсам только json. 99% что тебе хватит React-Rails.
#172 #875896
Сап, рельсач.
Пилю фильтр на Ransack. Например, есть person у которого has_many cars и has_many bikes. Мне надо запилить чекбокс, который вернет всех person у которых есть хотя бы один байк.
ХЕЛП!
875994
#173 #875978
Рельсаны, поясните пожалуйста один момент

Есть две rails-апликухи.
Первая на рельсах 4.2.6, вторая на 5.0.0
Из второй апликухи надо сделать mountable engine для первой.
Возможно ли это с сохранением версий рельс для обоих апликух?
#174 #875994
>>875896
ransack это антипаттерн.
877222
#175 #876075
#176 #876752
Что скажете о геме https://github.com/globalize/globalize ?
Эта штука создает для каждой таблицы в которой надо хранить поле на нескольких языках дополнительную таблицу model_translation. Я только начал создавать бд и у меня уже есть 5 вспомогательных таблиц, которые имеют связь с основной, 4 из них должны иметь переводы. Получается надо делать джоин на 5+4=9 таблиц и это только начало, это норма или нет ?
876856
#177 #876856
>>876752
Выглядит как оверинжениринг для 90% проектов. Ты что там, фейсбук пишешь? Добавь title_ru, title_en и не еби моск.
876943
#178 #876943
>>876856
Так это получается надо будет костыли в виде хелперов на каждый атрибут писать вроде if current_locale == :en
Можно в модели виртуальный аттрибут запилить но это тоже немного костыльно.
877157
#179 #877157
>>876943
Но ведь можно просто через локали запилить.
877275877283
#180 #877219
https://github.com/Leadformance/hstore_translate попробуй еще захочеш

Как globalize, только не плодит кучу ненужных таблиц. Нужен postgres, но все и так им пользуемся, верно?
877315
#181 #877222
>>875994
Поясни
877286
#182 #877275
>>877157
Это как?
#183 #877283
>>877157
I18n.t
877315
#184 #877286
>>877222
Нужно писать человеческие запросы
#185 #877315
>>877219
Ты его используешь ? Просто гитхаб выглядит заброшенным.
>>877283
Если ты про локализацию в yml файлах то это не то, мне надо хранить данные на нескольких языках а не переводить вьюхи.
877340877343878967
#186 #877340
>>877315
Это работа для человека-декоратора!
class UserDecorator < SimpleDelegator
def attribute
public_send("attribute_name#{locale}")
end
end
#187 #877343
>>877315
Использую на 4-х рельсах, все ок. Там кода полторы строки, если чо надо - форкни да напиши.
#188 #877757
>>877340
И потом разбирайся кто где продекорирован, а кто нет. Лучше уж явно это как-то сделать.
877966
#189 #877866
877875
#190 #877875
>>877866

спасибо, правда чёт пока первые две просмотренные видяшки не зашли.

где Матц рассказывал про рельсу (лол).

и где сорок минут какой-то хер рассказывал про ракетовелосипедостроение и основы ооп.
#191 #877966
>>877757
Ну засоряй модель, удачи.
878154878190
303 Кб, 1600x900
#192 #878020
у меня жопу рвет уже, делаю по тутору книжному, постоянно решаю какие то ребусы и ошибки, вылетающие при исполнении кода этого тутора.
ТЕПЕРЬ ТО ЧТО НЕ ТАК?
878029
#193 #878029
>>878020
Ковычки
878030
#194 #878030
>>878029

я пробовал и ('Demo Blog') и двойные.
878043
5 Кб, 308x20
#195 #878043
>>878030
так вроде пишет что тут проебался
878048
#196 #878048
>>878043

1) попробовал вообще убрать ковычки кроме ключевой фразы ("Demo Blog") - undefined method `content' for RSpec::ExampleGroups::StaticPages::HomePage:Class

2) попробовал сменить '' на ' - та же ошибка, что и раньше. Попробовал скопировать код из книги без своих изменений(Demo Blog -> SampleApp) - нихуя.
я испытываю анальные боли и желание начать изучать другой фреймворк для блистательного влива в быдлокодеры
878055878191
298 Кб, 1600x900
354 Кб, 1600x900
384 Кб, 1600x900
#197 #878055
>>878048

в общем, нашел нестандартный солюшн.
1) нужно обновить капибару до выше, чем 2.2, посылая нахуй требования учебника в 2.1
2) нужны gem 'database_cleaner' в гемфайл,
require 'database_cleaner'
require 'capybara/dsl'
для спек и рейлс хелперов в папке /spec/
3) много ебаться.
#198 #878085
Есть pdf книги по Ruby?
878101
#199 #878101
>>878085
бля парни rails / ruby учить уже реально поздно. вот реально, вы потом вспомните мои слова. спрос скатился на нет. инфа от инсайдера руби тусковки
878102914206
#200 #878102
>>878101
А чо нужно учить вместо раби, мистер инсайдер?
878119
#201 #878119
>>878102
Как будто ты сам не знаешь. haskell & clojure
#202 #878154
>>877966
Какой-то ты неумный, если для тебя декоратор здесь - серебряная пуля.
#203 #878190
>>877966

декоратор не нужен: хочешь написать свой велосипед — добавляешь в модель миксин, который подгружает аттрибутов модели, где-нибудь берет для этих аттрибутов локализакию и как-нибудь мутирует модель, добавляя названия.

Но и это не нужно, потому что есть гем.
878309
#204 #878191
>>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, а при обновлении капибары файл был перезаписан и все внезапно заработало.
878194878212
#205 #878194
>>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'

нет.
878212
#206 #878212
>>878194
>>878191

как видишь, я частично пользовался этими ссылками чтоб решить проблему. А конфиг я не трогал, такие дела.
Я третий день ваш этот руби изучаю и просто делаю по книжке, ничего не кручу и не трогаю. И получаю уже третий баг. автор - пидор
А другие книжки не настолько полные/удобные к прочтению.
#207 #878309
>>878190
Ты хоть понимаешь, какое говно ты щас предложил? Боги SOLID ссут на тебя
878334
#208 #878334
>>878309

Без миксинов ты в любом случае нарушишь DRY в случае если нужно задекорировать больше одного ActiveRecord класса.

2. ActiveRecord это антипаттерн, так что SOLID боги обмазаны гавном by design, увы.

3. Ты нарушаешь KISS, мне блядь нужно будет помнить о 50 задекорированных классах. Нет, спасибо, пусть миксин декорирует.

Вообщем, когда я и остальные люди в подобных случаях просто будут использовать ' include MyTranslationModule' в соотв. модуле (или гем, что автоматом заинжектит 'MyTranslationModule' во все модели ActiveRecord) ты ебись со своими декораторами, кловун.

Начитался блядь книжек о паттернах, а как их использовать не понимаешь.
878359878361
#209 #878359
>>878334
DRY в случае рельс это нередко перегиб.
То что там есть уже говно в рельсах, не значит, что нужно еще больше накидывать. У тебя весь код, нужный для presentation layer лежит в модели, да? лол, если правда.
#210 #878361
>>878334
А мутировать или перезаписывать методы эктиврекорда это вообще моветон, так пишут только мудаки, вдохновленные DHH
878372
#211 #878372
>>878361

> А мутировать или перезаписывать методы эктиврекорда это вообще моветон, так пишут только мудаки, вдохновленные DHH



Давай теперь весь параметрический полиформизм отменим, ведь анон на дваче сказал: 'ПЛОХА'

> DRY в случае рельс это нередко перегиб.



обоснуй где конкретно перегибы, и почему они настолько серьёзны, что перевешивают минусы влажного кода (WET).

> То что там есть уже говно в рельсах, не значит, что нужно еще больше накидывать.



Так ты его и накидываешь, плодя лишние сущности, там где это не нужно.
878422
24 Кб, 554x473
#212 #878422
>>878372
Стой стой стой, не уходи от сути. Ты считаешь, что модель должна иметь доступ к контексту I18n и вообще заниматься облагораживанием сырых данных для юзера?

Не обязательно юзать декоратор, даже хелпер будет лучше того говна, которое ты предлагаешь.
878438878478
#213 #878438
>>878422
Чувак же изначально говорил, что у него в базе хранятся строки на разных языках, полученные от юзеров. В таком случае это не и18н в привычном понимании. Это безусловно часть модели.

мимо
878445
#214 #878445
>>878438
Но ему нужно выбрать определенную строку, основываясь на текущей локали.
878446
#215 #878446
>>878445
Ну? Не вижу, чем это отличается от "ему нужно выбрать определенный блог-пост, основываясь на запрошенном айди", например.
878453
#216 #878453
>>878446
Он хочет модуль добавить, который автомагически будет всё делать, основываясь на текущей локали, а не вручную писать
def translated_attribute(locale)
end
878543
40 Кб, 741x416
#217 #878478
>>878422

> Ты считаешь, что модель должна иметь доступ к контексту I18n и вообще заниматься облагораживанием сырых данных для юзера?



напрямую, не должна. Через делегаторы в миксины может, на эту тему можешь почитать rails antipatterns.

Как общее решение есть drapper, но это тоже то еще говно, хотя и лучше того, что ты предлагаешь.

Для единичных случаев сойдет хелпер.

> Не обязательно юзать декоратор, даже хелпер будет лучше того говна, которое ты предлагаешь.



Нет, не будет. Там выше, бтв, давали ссылку на гем, что делает примерно тоже самое, о чем веду речь.

Подумай сколько декораторов и кода придется писать для >>877340 решения и для пикрелейд.

p.s..за DRY в Rails пояснить в этот раз не забудь.
878577878619
#218 #878543
>>878453
Ну этот модуль уже будет к контроллеру относиться, а не к модели, да. Впрочем, непринципиально.
#219 #878577
>>878478

>Нет, не будет


Почему нет? Хелпер явно вызывается, а декоратор мимикрирует под оригинал, и поэтому не нужен. Это экономит кучу времени и нервов в будущем.
878681
#220 #878619
>>878478
Эм,
class I18nDecorator
...
end
Тверь серьёзно хочешь писать декоратор для каждоцифрового модели? Лол.
878621878681
#221 #878621
>>878619
Для каждой модели *
#222 #878681
>>878577

> декоратор мимикрирует под оригинал, и поэтому не нужен



Ок, иди ^нахуй^ пиши всю логику модели в хелперы, он ведь явно вызывается.

Спор идет о форме декоратора, хуй выше предложил на каждую модель хуярить по классу, я сказал — нахуй; хватит (неявно подгружаемого) миксина и одной строчки в декорируемую модель.

>>878619

> Тверь серьёзно хочешь писать декоратор для каждоцифрового модели? Лол.



это вот этот >>877340 хочет писать на каждую модель по классу-декоратору.

p.s. Если ты — все еще он, то, кловун, поясни чем тебе не нравится DRY в Rails (3).
878727878732878748
#223 #878727
>>878681
Ткни, где тебе предлагали писать по декоратору на модель. То, что так делает драпер, не значит что декоратор везде так применяется, маня
878748
#224 #878732
>>878681

>пиши всю логику модели в хелперы, он ведь явно вызывается


Если так упарываешься паттернами, нахуя тебе модель? Какая в ней логика должна быть? Ее вообще нужно заменить на датамаппер, хуесос ты диванный
878748
#225 #878748
>>878727

> Ткни, где тебе предлагали писать по декоратору на модель.



Там, выше (>>878681) есть ссылка на этот код, где ты показываешь на примере UserDecorator как плодить лишние сущности, как мудак, что не знает, о понятии Бритвы Оккама.

Но ты и дальше продолжай в глаза долбится, кловун.

Нахватался баззвордов, а смысла не понимаешь. Даже не можешь свою позицию толком объяснить, только вопросы типа: "ОЛОЛО, а зачем нужен ХЕЛПЕР???", задаешь. Но, зачем, спрашивается, вопросы задавать, если ответы которые ломают твой мир, отрицаются, жертва Стокгольма, блядь.

>>878732

> Если так упарываешься паттернами, нахуя тебе модель?



Иди нахуй, с такими вопросами. Разберись, для начала когда код идет в хелпер, когда в модель, когда блядь нужно подключать враппер и минусы и плюсы каждого подхода.

Тогда и поймешь, когда имя аттрибута кортежа декорируется, а когда достаточно вынести код в хелпер вьюшки (подсказка, дело в DRY, за который ты по-человечески пояснить не в состоянии (три раза, кловуна, спрашивал), только громко кукарекаешь : 'ко-ко-ко DRY в рельсе не нужен, КО-КО-КО вредно, ко-ко-ко боги SOLID'.

Вообщем, порвался, с придурка. В игнор, иди дальше сука плоди свое говно, вида: class UserDecorator, class OfferDecorator, class TvouaMamashaDecorator, вместо миксина и вызова однострочного метода. Да и не забывай, половину логики в хелперы пихать, чтобы твой сука, код ещё больше на лапшу походил, бог solid, блядь.
878751878846878847
#226 #878751
>>878748
Че ты несешь, шизоид? Нас здесь больше двух.
Декораторы и хелперы в данном случае - альтернативы, а не дополнения друг к другу, ебанутая истеричка.
Так что там насчет датамаппера? И DRY не всегда нужен
#227 #878796
Лол, ооп-бляди как всегща соснули. Не могут даже строку из базы дернуть без недельного срача.
878816
#228 #878797
Можно ли юзать популярные фронтендовские фреймворки (ангулярчик, реакт, эмбер) с рельсами? И как это вообще все происходит? Рельсы по сути высылают фронту только json, да? А он уже с ним ебется. Интересно просто как происходит написание сайтов на рельсах + фреймворках. Там же получается рельсовские вьюхи будут не нужны, да? И какой фреймворк посоветуете?
878849878856
#229 #878816
>>878796
Поясни нам, далеким, как надо.
#230 #878846
>>878748
Мамкин DHH порвался, несите ActiveRecord::Base.suppress
#231 #878847
>>878748
Ты шо, даун? Это пример для одной модели же, где ты по декоратору на модель увидел ?
878857
#232 #878849
>>878797
По разному можно. Самый простой способ реализовано в react-Rails. В react on rails уже юзается вебпак а рельсовый пайплайн лишь в продакшене
16 Кб, 293x253
#233 #878856
>>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 никто не хочет разбираться в чужом некрасивом коде, а просто начинают по сто раз изобретать один и тот же велосипед. Мне кажется, именно это и делает руби языком будущего вопреки трендам и проблемам с быстродействием.
878864
#234 #878857
>>878847

будешь по-другому 2 модели декорировать? как?
878872
#235 #878864
>>878856

> руби


> язык будущего


Ахахаха, ну ты и юморист, брат!

Единственная причина, почему у жс в стопицот раз больше пакетов, до ужаса проста: он в стопицот раз популярнее руби\хуюби\языкнейм, все.
878947
#236 #878872
>>878857
Юзать 1 декоратор?
878880
#237 #878873
React-on-rails это лучший компромисс ,из тех, что я видел.
#238 #878880
>>878872

ну раз один класс, то это очевидный модуль, а раз модуль, то почему бы и не миксин. верно? или ты любитель паттерна 'синглтон'?
878935
#239 #878932
Присоединюсь со своим вариантом.
Создаем отдельный модуль с названием, например, AttributeTranslator у которого добавляем статический метод translate(object, prop, lang), который выглядит как-нибудь так: object.public_send("#{prop}_translations")[lang].

Плюсы:
В отличие от хелперов доступен везде, но при желание его вызов можно обернуть в хелпер.
Не нужно добавлять миксины в модель и засирать ее логикой (привет, DHH).
Легко тестируется + для тестирования не нужно создавать тяжеловесные инстансы AR, достаточно обычного PORO.

Развели тут декораторы, миксины в модель, вообще охуеть.
#240 #878935
>>878880

> ну раз один класс, то это очевидный модуль, а раз модуль


С фига ли? Ты когда хочешь приклеить стикер с хуями к своей жопе, требуешь чтобы на все жопы лепили такие же стикеры?
878968
#241 #878936
>>878932
Так вот и я о чем. Выше писал, что декоратор это просто пример, можно и хелпер, можно многое придумать, лишь бы не срать в модель как того хочет dhh-кун.
#242 #878947
>>878864
А может это просто люди пилят тот функционал который в нормальных языках уже есть в стандартной библиотеке?
878958878962
#243 #878958
>>878947
Я просто жду, пока WebAssembly не станет доступным на 70%+ устройств. Пока посижу на бэкенде, устраивать анал карнавал с ЖС совсем не хочется.
878967878981
#244 #878962
>>878947
Да без разницы, что они пилят, хоть твою мамашу своим хером. Язык популярнее => пакетов больше. Все, тхет симпл, бро. Кода на жс уже наверное больше, чем на джаве.
878989
#245 #878967
>>877340
>>877315
>>878932
Пора двачу пилить свой гем, лол.
>>878958
И что тогда ? Сделают транслятор си/жабы/руби/питона в жс ? Нет, ведь тогда надо будет тащить кучу зависимостей по сети.
878969
#246 #878968
>>878935

ты непоследовательный хуй.

Давай всю логику над примитивами вынесем в отдельные модули. Не ну а чё, Матц засоряет String методами типа upcase. Если в дефолтном руби держатся библиотеки, типа Enumerable, то почему ты, хуй, кукарекаешь на библиотеки с аналогичной логикой работы уже в Rails?

То, что модели active record перегружены — другой разговор.

Короче говоря, ты призываешь велосипедить, потому что до тебя повелосипедили, я понял.

>>878932

Если бы так изначально предложили, я бы и спорить не стал, просто этот вариант с

class UserDecorator < SimpleDelegator

end
совсем уж уебищный, по мне так.
878971
#247 #878969
>>878967
Не в JS, а в байткод webassembly.
878981878989
#248 #878971
>>878968
Причем тут нахуй примитивы?
878984
#249 #878981
>>878969
>>878958
Когда я последний раз на него смотрел, они говорили, что это не будет заменой жс в качестве компайл-таргета. Что-то изменилось? Или чего ты ждешь?
878993
#250 #878984
>>878971

Почему в одни объеты ты срешь и не замечаешь, а для других объектов внезапно просыпается чистоплотность? Избирательный говноед?
878994879014879082
#251 #878989
>>878962
Какой злой школьник.

>Кода на жс уже наверное больше, чем на джаве.


Я то думал что предназначение динамических языков в том чтобы писать меньше а делать больше, оказывается во вселенной джса все по-другому.
>>878969
Сути не меняет.
879058
#252 #878993
>>878981
Как раз таки будет.
879058
#253 #878994
>>878984
Не увиливай, примитивный. Не вижу связи между String и ActiveRecord::Base
879008
#254 #878997
>>878932
Вот, двачую тебя. Только зря ты распинался перед тупарями, пускай опыт зарабатывают.
#255 #879008
>>878994

в String включен модуль Comparable, который делает какую-то полезную работу.

в ActiveRecord::Base, есть миксин Translate4OTOTAM, который делает какую-то полезную работу.

В первом случае ты жрешь что дают, а во-втором внезапно просыпается твое: 'КО-КО-КО миксины не нужны, давайте захуярим классы, наследование и далее по списку'. Нечистоплотный дурачек, да и только -.-
#256 #879014
>>878984
Предупреждаю, я другой анон.
Потому что блять любой хуесос как ты может открыть документацию и прочитать про офффициальный насраж от рельс и т.п. Да, это говно, но это знают ВСЕ. А мне разбираться в твоей личной недокументированной дрисне потом? Да ну нахуй.
879020879107
#257 #879020
>>879014

эм, ну открой тот же hstore_translate, там все задокументировано.
879023
#258 #879023
>>879020
Ну ок, но он же предлагает самому замиксинить, вот это и есть самое западло.
#259 #879058
>>878989

> злой школьник


Самокритичненько.

>>878993
А что там с гц?
879066879080
sage #260 #879066
>>879058

> Пошли проекции от мамкоеба

879105
#261 #879080
>>879058
напишешь - будет.
879105
#262 #879082
>>878984
>>878984
Тебе 3 анона сказали, что ты со своими миксинами можешь идти ебаться с DHH, а ты стрелки переводишь.
879107
#263 #879105
>>879066
Проекции от тебя еще в прошлом посте пошли, привет.

>>879080
Ну так именно поэтому они (авторы стандарта) и говорили, что оно не будет являться заменой жс в качестве компилейшен таргета. Где ты увидел противоположное утверждение, можешь линк доставить?
879131
#264 #879107
>>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?
end
end

Вообще много чего есть.

----

А теперь ты можешь и дальше покрывать меня говном, приводя в аргументы количество, лол, человек.

Но уж прости: в этот раз уж постараюсь не реагировать буду на подобные высеры, хватит уже, покормил.
#264 #879107
>>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?
end
end

Вообще много чего есть.

----

А теперь ты можешь и дальше покрывать меня говном, приводя в аргументы количество, лол, человек.

Но уж прости: в этот раз уж постараюсь не реагировать буду на подобные высеры, хватит уже, покормил.
879157
sage #265 #879131
>>879105

>Да без разницы, что они пилят, хоть твою мамашу своим хером.


Залетный петушок обитает в нашем уютном треде
#266 #879157
>>879107
Я от всех хуйни с локализацией и просто отпишусь о декораторах.
Декораторы в том виде в котором их зачастую используют в рельсо-комьюнити и как предлагаешь их использовать ты - это полная хуйня. Я понял бы, если создавалось много декотораторов для каждой модели, например, UserDecoratorForProfile, UserDecoratorForBilling и тд, а не как сейчас одна модель - один декоратор. При таком подходе фактически код модели размазывается на два файла, профита от таких декораторов никакого, да еще и оверхед от кучи вызовов method_missing.
879164879170
#267 #879164
>>879157
да, презентеры полезнее.
#268 #879170
>>879157

Да, понял. Сильно проект большой?
#269 #879403
4 года провел на одном проекте и слегка отстал от последних веяний. Как теперь деплоят? Что используют вместо фронтенда? Какие вообще новости, ребята?
879649879820879821
#270 #879649
>>879403
Все перешли на эликсир и кложурь, можешь не париться.
#271 #879820
>>879403
мало что изменилось. разве что реакт добавляют на фронтенд, если jQuery стало мало.
#272 #879821
>>879403
chef+capistrano, из того что я видел.
#273 #881636
Аоноы, есть ли какие-нибудь видосики где создают йоба сложный проект с нуля по шагам? Хартла прочел, но там примитив
882980
#274 #882942
https://repl.it/E84g/5
Поясните почему не меняются значения в хэшэ?
Нужно заменить ["1","2","3"] на ["a","b","c"], но почему-то изменения не сохраняются.
883136
#275 #882980
>>881636
пиздуй на udemy, но там нужны бабосики (не рубли) платить
#276 #883136
>>882942
require '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
end
end

puts hash.to_json
#277 #883269
Аноны, нид хелп.
Как выполнить действие точно при наступлении конкретной даты и времени указанного в поле бд. Поясню на примере: есть приложение для мониторинга выполнения задач. Создаем задачу, устанавливаем дату+время до которого задачу надо выполнить. Позже при наступлении указанного времени надо проверить завершена ли задача, если нет, надо отправить email о том что сроки нарушены.
Из очевидного приходит в голову дергать бд каждые n минут, но возникает подозрение что это немного костыльно. Алсо задания могут создаваться отдельным приложением к оторому я не имею доступа.
883280883385883455
#278 #883280
>>883269

def date
@date ||= db_get_attr
end
883282
#279 #883282
>>883280

это чтобы не дергать каждый раз бд.

Чтобы действие выполнять по сроку пощупай cron обертку какую.
883316
#280 #883316
>>883282
Меня интересовало можно ли это сделать на уровне бд, что-то вроде триггеров.
883345
#281 #883345
>>883316

Это костыль с точки зрения Unix philosophy. Она хоть, устарела в части 'use text streams', но неважно.

Я предлагаю, простое решение.

Отдельно менеджер, который запустится. Проверит задачи на ближайшие n часов, добавит нужные в крон, уснёт.

Задача. Вызывается из кроном, порождает дочерний процесс, снимает с него результат. Что-то делает на основе результата.

Всё что нужно, аккуратно выбрать пару гемов.
883389
#282 #883385
883389
#283 #883389
>>883345
Ну я уже вижу баг - а что если время окончания задачи поменяют уже после того как менеджер проверил задачи ?
Алсо я говорил о задачах которые таски в проекте (для управлениями которыми созданы basecamp/jira/trello)
>>883385
Вот этой штукой я буду отправлять email, с этим вообще проблем нету, вопрос то не в этом.
883417
#284 #883412

>Programming Ruby (The Pragmatic Programmers Guide)


Ничего что книжке почти 4 года а язык модный современный развивающийсянет?
#285 #883417
>>883389

> Ну я уже вижу баг - а что если время окончания задачи поменяют уже после того как менеджер проверил задачи ?



Погуглил чуть-чуть, если нельзя перекэшировать даные каждые n минут, то другой вариант заключается в том чтобы повесить триггер на базу данных, дабы она уведомляла менеджер о своем изменении.

Но звучит как оверинжинеринг. Неуверен, что 1 легкий запрос раз в n минут в твоем случае — это проблема.

> Алсо я говорил о задачах которые таски в проекте (для управлениями которыми созданы basecamp/jira/trello)



Идея та же самая, но нужен интерфейс для определения состояния тасков. Если его нет, как вариант, подмешивать в таск модуль с методом status для работы с ad-hom айпи basecamp/jira/trello и и т.п. сервисами.
883431
#286 #883431
>>883417
Это нужно решать в интерфейсе, а не на уровне базы данных. Если проверяется, то заблочить все изменения нах.
#287 #883455
>>883269
Ты даже не сказал, какая у тебя субд, но при этом спрашиваешь, как это сделать на уровне дб.
#288 #883808
Блин, понять не могу.
Есть апи контроллер, выдает на экшене json по get.
Пытаюсь это затестить рспеком. Рспек видит респонс.
expect(response.content_type).to eq('application/json')
Есть.
Но его тело пустое почему-то.
Как тут не получается https://gist.github.com/jayncoke/4a7c1a67fdc464ad66e8
body = JSON.parse(response.body) выдает []
Хотел затестить что конкретно приезжает такой json с полями или конкретно .to include_json
ЧТо я упускаю?!
883814883821
#289 #883814
>>883808
Блять, код контроллера в студию.
883946
#290 #883821
>>883808

фикстуры для среды тестирования не забыл?
883946
#291 #883946
>>883814
>>883821
Разобрался, там вышла путаница в конструкторе.
Говнокода того. Выборка из базы в переменную, удаление записи и рендер переменной. Рспек получается ее не видит и не рендерит.
#292 #884660
Рубаны, поясните за RubyMine. Почему его так не долюбливают? Пытался юзать vim, emacs, atom - всё это опенсорсное говно, сколько не допиливал, всё равно чего-то не хватает, а в RubyMine всё из коробки. Ну да нужно платить, пожалуй единственный минус
884663884691884724
#293 #884663
>>884660
недолюбливают*
очевидный фикс
#294 #884672
>>860724 (OP)
На RubyMotion можно писать под Android. Шапка обновляется вообще?
885106
#295 #884691
>>884660
Юзай что тебе удобно и всё.
#296 #884724
>>884660
Раньше он тормозил пиздец, да и юзали его в основном спермоблядки.
63 Кб, 600x435
#297 #885106
>>884672

>Принимаются изменения в шапку треда в виде пулл-реквестов:


>https://github.com/meoweg/2ch-pr-ruby

#298 #886289
Привет всем. Кто нибудь использовал монгоид ?

Я хочу сделать хрень, которая от рандомного объекта произвольного уровня вложенности достает все поля по определенному пути. Например

Account.(здесь произвольная вложенность).user_data.shops.orders.items.name

Мне нужно получить наименования всех товаров всех магазинов заказанных пользователем в плоском списке из любого места в иерархии.
То есть, я должен по пути, включающем в себя как массивы, так и вложенные документы, выдать от произвольного embedded документа список значений полей.
886323
#299 #886323
>>886289
Используешь монго для описания реляционных отношений - страдай. Если при этом ты используешь embedded массивы и/или embedded сущности, которые описывают объект, связанный не только со своим родителем - ты дебил. Если у тебя еще и вложенность многоуровневая - ты просто космический дебил, извини.
886415
#300 #886415
>>886323
Извини, эту хуйню не я придумывал, я тут человек маленький, и стиль нашей великой разработки "Лучшей команды в компании" мне оспаривать запрещено.
459 Кб, 1536x864
#301 #887320
Анон, помогай. Короче в рельсах хочу сделать конфиг для класса, чтобы можно было писать

```
# config/initializers/my_lib.rb
MyLib.configure do |conf|
conf.val = 42
end
```

Делается это просто (и работает):

```
module MyLib
class << self
attr_accessor :configuration
end

def self.configure
self.configuration ||= Configuration.new
yield(configuration)
end

class Configuration
attr_accessor :val
end
end
```

Но проблема в том, что в development-окружении рельсы делают лайв-релоад кода. А после реалоада класса настройки, как можно догадаться пропадают, потому что сделаны были в инстанс-переменной в инициалайзере.
И не в этом даже проблема - рельсы не перезагружают класс, если он не менялся. А вот ебаный delayed_job перезагружает классы после каждого таска - https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/worker.rb#L321

У меня есть надежда, что есть какой-нибудь способ заставить настройки сохраняться/переинициализироваться. Ведь это распространенная практика и не видел чтобы кто-то жаловался на такие проблемы. Я читал сегодня что-то релевантное про функционал в railties, какие-то хуки там есть, но так и не разобрался, как это работает и применимо ли к этой задаче. Анон, что можно сделать?
459 Кб, 1536x864
#301 #887320
Анон, помогай. Короче в рельсах хочу сделать конфиг для класса, чтобы можно было писать

```
# config/initializers/my_lib.rb
MyLib.configure do |conf|
conf.val = 42
end
```

Делается это просто (и работает):

```
module MyLib
class << self
attr_accessor :configuration
end

def self.configure
self.configuration ||= Configuration.new
yield(configuration)
end

class Configuration
attr_accessor :val
end
end
```

Но проблема в том, что в development-окружении рельсы делают лайв-релоад кода. А после реалоада класса настройки, как можно догадаться пропадают, потому что сделаны были в инстанс-переменной в инициалайзере.
И не в этом даже проблема - рельсы не перезагружают класс, если он не менялся. А вот ебаный delayed_job перезагружает классы после каждого таска - https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/worker.rb#L321

У меня есть надежда, что есть какой-нибудь способ заставить настройки сохраняться/переинициализироваться. Ведь это распространенная практика и не видел чтобы кто-то жаловался на такие проблемы. Я читал сегодня что-то релевантное про функционал в railties, какие-то хуки там есть, но так и не разобрался, как это работает и применимо ли к этой задаче. Анон, что можно сделать?
887352
#302 #887352
>>887320

я не совсем понял зачем нужен class Configuration

Попробуй так: http://pastebin.com/71YjvLgb

и опиши юзкейс, когда ломается.
887393887559
#303 #887393
>>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::Reloader

http://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
#303 #887393
>>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::Reloader

http://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
887559
#304 #887559
>>887352
>>887393
Большое спасибо тебе, анон! to_prepare решило мою проблему.

Я вчера был очень близок к нему, но неправильно начал делать - пытался создать рейлти для своего класса
MyLib::Railtie < ::Rails::Railtie; def to_prepare ... end; end
Сделать переинициализацию таким образом не получилось.

Первый твой способ не заработал хотя я не понял в чем его суть.
887945
#305 #887945
>>887559

> Первый твой способ не заработал хотя я не понял в чем его суть



Просто не понял зачем код переусложнять. Если предполагается, много конфигураций, то инстансы Config не надо создавать через синглтон модуля. Как вариант:

module MyLib

class Config
attr_accessor :var

def initialize(args)
yield self
@var ||= args[:var] || 17
end
end

def self.config
@config ||= MyLib::Config.new
end

def self.config=(other)
@config = other if other.kind_of? MyLib::Config
end

end

Тогда текущая конфигурация будет настроена, например, так

MyLib.config = MyLib::Config.new do |config|
config.var = 42
end

Или так

MyLib.config = MyLib::Config.new(:var => 5 )

Или так

MyLib.config

А как хранить все варианты конфигураций, это другой вопрос (если коротко: Hash внутри MyLib). Если вдруг решишь поиграться, то прости код писал вслепую, могут быть ошибки.

А первый вариант, это еще более простой вариант, так как я полагаю, что одного конфига хватит за глаза.

---

Ну а потом, я слепое, прочитал что ты на самом деле спрашивал и полез смотреть в рельсу…
#305 #887945
>>887559

> Первый твой способ не заработал хотя я не понял в чем его суть



Просто не понял зачем код переусложнять. Если предполагается, много конфигураций, то инстансы Config не надо создавать через синглтон модуля. Как вариант:

module MyLib

class Config
attr_accessor :var

def initialize(args)
yield self
@var ||= args[:var] || 17
end
end

def self.config
@config ||= MyLib::Config.new
end

def self.config=(other)
@config = other if other.kind_of? MyLib::Config
end

end

Тогда текущая конфигурация будет настроена, например, так

MyLib.config = MyLib::Config.new do |config|
config.var = 42
end

Или так

MyLib.config = MyLib::Config.new(:var => 5 )

Или так

MyLib.config

А как хранить все варианты конфигураций, это другой вопрос (если коротко: Hash внутри MyLib). Если вдруг решишь поиграться, то прости код писал вслепую, могут быть ошибки.

А первый вариант, это еще более простой вариант, так как я полагаю, что одного конфига хватит за глаза.

---

Ну а потом, я слепое, прочитал что ты на самом деле спрашивал и полез смотреть в рельсу…
141 Кб, 360x360
37 Кб, 256x256
#306 #888384
Двач, а как лучше реализовать связь между таблицами когда в одном случае надо сделать C->B->A а в другом случае напрямую C->A , потому что иногда записи в таблице B, которая связанна с записью в A просто не существует. Конкретно бд связана со скинами в игре cs:go. Возьмем например Desert Eagle | Бронзовая декорация, тут Desert Eagle - базовый предмет(оружие), Бронзовая декорация - название скина(который влияет на внешний вид но не характеристики предмета). Соответственно информацию о самом предмете храним в таблице A, а о скине в отдельной таблице B, потому что скинов для одного вида оружия может быть много. Проблема в том что существуют предметы для которых в принципе нету скинов они сами по себе предметы которыми можно обмениваться (т.е например Desert Eagle отдельно без скинов вообще не существует но есть например ключ для открытия кейсов который можно обменять)
888484889230
#307 #888484
>>888384
Тут либо STI (как самое простое), либо полиморфная связь.
#308 #888895
Посоветуйте толковый планировщик задач. С функцией выполнения задачи в определенное время и эту задачу может ставить пользователь. + возможность повторять задачу.

Сначала был whenever + cron, но чет неудобно crontab обновлять из апп.

Решил остановиться на sidekiq + sidetiq. Но последний оказался... каким-то конченным. Всем подходит (даже при факапе может "задним числом" выполнять и вебинтерфейс няшный), но вот, сука, выполняет задачу сразу после запуска, хотя она поставлена на опр. время. Как будто там собственный таймер и вообще хуй проссышь, че и как там. Issues дохуя и не мейнтейнится активно.
889162
#309 #889016
Уволился с работы, устроился на новую. Скоро мб снова буду тут тусить.
ОП предыдущих тредов
#310 #889162
>>888895
Sidetiq не нужен, юзай sidekiq-cron, самое толковое.
889200889217
#311 #889200
>>889162
сунь себе свой sidekiq-cron в пердачелло

rufus-scheduler - годнота
889217889245
#312 #889217
>>889162
Спасибо, по сравнению с sidetiq прям годнота из коробки, еще и проблем с дублированием нет.

>>889200
Но он на базе rufus-scheduler, хули ты.
#313 #889222
Есть модель Period, User и PeriodActivity

В периоде тупо даты начала и конца (периода).
В PeriodActivity активность юзера для данного периода.

Собственно, нужно сделать стату для юзеров для каждого периода.

Схема:
User has_many PeriodActivities
Period has_one PeriodActivity
норм?
#314 #889230
>>888384

> Тут либо STI (как самое простое)


Я что-то вообще не пойму как его тут использовать.

> либо полиморфная связь.


А вот это то что надо, похоже.
sage #315 #889245
>>889200

> rufus-scheduler - годнота



говнокод, хотя и работает.
83 Кб, 641x729
#316 #889503
Хотя как поле назвать тогда?
В гайдах у них pictures -> imageable_id, у меня item -> ?
889635
#317 #889635
>>889503
skinnable?
889711
#318 #889711
>>889635
Но ведь skinnable имеет смысл только когда связь с таблицой skins, а в другом случае получается вообще itemable ?
215 Кб, 1500x1050
#319 #891249
Может кто-нибудь книгу подсказать, она именно по ruby (не rails), типа ебанутая книга какая-то, тут еще говорили, что крышак от нее может съехать, если вдумчиво изучать. Сорян, больше ничего о ней не помню.
891255
#320 #891255
>>891249

> крышак от нее может съехать


Может это все-таки была книжка про жс, а не про руби?
#321 #892811
Чо за эликсир скажете, рубаны?
892815
#322 #892815
>>892811
Недавно на него съебал, оче годно. Единственный минус - молодая экосистема, поэтому многое приходится писать самому, но так как комьюнити достаточно активное - то это временная проблема и уже не так ощутима, как, например, год назад.
#323 #893046
Анон, как определить, на каком языке написан сайт, если это php, то там сразу видно, тоже самое и про js. Но, как определить, что это питон или руби.
Простите, за глупый вопрос.
893050
#324 #893050
>>893046
Там сразу видно.
893055
#325 #893055
>>893050
Можешь привести примеры, если не трудно?
893124
#326 #893124
>>893055
Давай сначала ты, если не трудно. Как определяешь - php или js?
893143
#327 #893143
>>893124
Заранее хочу оговорить, что я еще на стадии изучения Ruby, RoR и метапрограмирование не изучено. html знаю но не 5.
php сам говорит, что сайт написан на нем, а в js все действия (Не только анимация.) выражены через оные скрипты.
Если что, то я смотрю, через просмотр кода браузера.
893232
#328 #893232
>>893143
wappalyzer
893247
#329 #893247
>>893232
Спасибо.
#330 #893373
Анон, есть ли смысл учить рельсу? Судя по тырнетиками популярность падает и пик популярности прошел.
893753
#331 #893753
>>893373
ну иди в ноду, коль тебе хайп нужен.

когда закончишь ебаться с конфигами, отпишись
893763
#332 #893763
>>893753

>с конфигами ебаться


ты че это раскукарекалась руби-мразь
893769
#333 #893769
>>893763
нодошваль пригорела
893780
#334 #893780
>>893769
вас рубиблядков, давно пора из списка вычеркнуть, паскудники ебаные
893816
#335 #893816
>>893780
чо за список?
0 Кб, 512x512
ругби маня #336 #893948
Книга по руби переведена на рус.
покупать я ее конечно не буду, но прочитать - бы прочел
Есть "Электронная версия" на том же сайте издателя.
Если кто найден - закидайте линками.

http://www.piter.com/collection/new/product/ruby-obektno-orientirovannoe-proektirovanie
894029
#337 #894029
>>893948
Съеби отсюда.
39 Кб, 638x359
#338 #894466
Анон, расскажи или дай хороший пример или статью про так делать FormObject. Видел кучу примеров, типа как на пикрелетед, но это не то и слишком поверхностно, не решает реальных задач, для которых действительно был бы полезен форм-обжект. Всегда речь идет только о создании, апдейта нет. Постоянно пытаются впихнуть этот Virtus кстати, поясни за него, анон, есть ощущение, что это раздутая магическая еба, не понятно как быть с валидациями (оставлять в моделях или уносить в FO, есть разные подходы), не понятно как быть с has_many вложенностью. И тд и тп.
894495894496
#339 #894495
>>894466
Валидации конечно должны быть в FO, иначе весь смысл проебывается, а смысл - не нагружать наследников ActiveRecord::Base всякой ебалой, которой там не место, это должен быть всего лишь маппинг к ряду в базе со скоупами и ассоциациями. По поводу того как быть has_many, прелесть FO как раз именно в том что ты что хочешь то и делаешь, код же экспликтный никаких колбэков и прочей хуеты. Попробуй создать свой форм объект без использования каких-либо гемов, чтобы понять суть, вот какой интерфейс сочтешь логичным и приятным такой и пили. Сорян если сумбурно
895073
#340 #894496
>>894466
А виртус действительно раздутая магическая ебала, особенно неебический интерфейс коерций, который нахуй никому не сдался
#341 #895073
>>894495
А может можешь дать пример какой-нибудь из практики?
895865
#342 #895741
Dry-types.
#343 #895865
>>895073
class 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)
# Можно еще какую нибудь хуйню сделать с пользователем
# И никаких говноедских колбэков
end
end

# Создать, например
form = UserForm.new
if form.submit(params)
# Все ок, можно юзать form.user
else
# Ошибки валидации, можно юзать form.errors
end
#343 #895865
>>895073
class 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)
# Можно еще какую нибудь хуйню сделать с пользователем
# И никаких говноедских колбэков
end
end

# Создать, например
form = UserForm.new
if form.submit(params)
# Все ок, можно юзать form.user
else
# Ошибки валидации, можно юзать form.errors
end
895868896314
#344 #895868
>>895865
В разметку не умею, сорян
#345 #895920
Хм, пацаны, а как быть в простой ситуации - есть меню в layout, там перечислены статьи из базы. Причем статьи меняются очень редко.

Как их не дергать на каждый экшн из базы? Это, как я понимаю, не оче хорошая практика.

Кешировать это все? Это нужно in-memory базу или че? Built-in решения есть?
895931896016
#346 #895931
>>895920
во вьюхе cache(articles) do
Инвалидироваться будет автоматически
896016
#347 #896016
#348 #896263
А как успешные рубисты автоматизируют запуск различных серверов/фоновых задач (postgre/redis и т.д.) в девелопменте, как я понял есть всякие chef / capistrano но они для развертывания в продакшене ? Открывать по сотне вкладок в терминале для запуска всего этого добра как-то неправильно.
896277896408896485
#349 #896277
>>896263
так все это дерьмо фоновыми демонами же всегда крутится в системе (как именно - зависит от конкретной ос)
#350 #896314
>>895865
Спасибо.
Пару вопрос, если можно:
- Зачем там Virtus?
- Почему объекты передаются в инициалайзере, а параметры в сабмите. Почему не наоборот? Просто если наоборот, то форму можно использовать как `form.valid?`, а так можно использовать только `form.submit(params)`.
- Что на счет практики сохранения в FormObject - стоит ли ее там держать или лучше уносить в ServiceObject?
896322
#351 #896322
>>896314
- Можно без виртуса, но с ним удобнее (есть более приятные альтернативы, гугли)
- И там и там нужно. Представь что у тебя модель с дефолтом, при инициализации этот дефолт должен быть в атрибуте форм объекта, при этом сабмит - это отдельная операция сохранения, переданный параметр должен опять записаться в атрибут
- Нет никаких форм объектов или сервисных объектов, эти ограничения и рамки ни к чему, есть просто plain old ruby objects, где и как считаешь нужным так и сохраняй
896341
#352 #896341
>>896322
1. Просто в примере он не используется. Как раз сейчас читал про dry-types упомянутый выше. И чет прихуел от их dry-проектов.
2. Э нет. Форма - работает с формой мне больше нравится слово input. Если есть дефолты, то они на ней и должны быть определены. А сабмит да, операция сохранения (которой в некоторых реализациях может не быть) и объекты нужны только ей. До момента сохранения мы абстрагируемся от хранилища.
3. Ну речь же про паттерны. Вот форм-обжект это недообъясненная вещь. Возможно даже недопаттерн. Я так понял, что это composition-pattern, но обросший особенностями конкретного применения в рельсах. Я для себя понял это так: форм-обжект про композицию и валидацию, сервис-обжект про процесс. В простых случаях, когда нужна только персистенция, мы можем процесс сохранения добавить в форм-обжект. Если процесс чуть более сложен , то его стоит уносить в другое место.

Не спора ради, а понимания для, анончик.
896470904787
#353 #896408
>>896263
foreman/docker. Докер моднее и в последствие удобнее, если у тебя будет большая команда, форман намного проще настроить.
896479
#354 #896470
>>896341
1) В примере используется, смотри attribute
2) В твоих словах есть смысл, а теперь представь что эта же форма используется для апдейта и ты закидываешь туда готового юзера например. Атрибуты должны подхватиться для отображения ДО того как ты вызвал submit, потому что какой нахрен сабмит, еще ничего не показывали
3) Я бы рассказал что паттерны не нужны, но закидают помидорами, поэтому попробую ответить на твой оригинальный вопрос: если бы атрибуты сохраненного объекта приходили из юзер инпута, я бы сохранял в форм обджекте, если из моей же системы и мне не нужно ничего валидировать то в сервис обджекте
896472896775
#355 #896472
>>896470
не показывали = не сабмитили
фикс
#356 #896479
>>896408

> 2017


> Докер


> Ебаться с орекстрированием, пробросом портов, персистенцей


Расслабься хипстерок, все уже забили на твой докер, мода прошла, можно больше не вставлять везде
896784
#358 #896775
>>896470

>Атрибуты должны подхватиться для отображения ДО того как ты вызвал submit


Бля, вот я пиздоглазый, ты прав.
Благодарю за разъяснения, анон.
#359 #896784
>>896479

>пробросом портов


одна строчка в docker-compose

>персистенцей


пол строчки volumes

>орекстрированием


значение знаешь?

>Расслабься ку-ка-ре-ку!


Так бы сразу сказал что нюфаг и не осилил. Но лучше подразберись, а то скоро без знания докера вакансий не останется, только пхп-параши драить разве что.
896853
#360 #896853
>>896784

> docker compose


> одна строчка



Блог деплоил, девопс мамин?
Уже давно все поняли что докер это параша https://news.ycombinator.com/item?id=12872304
#361 #897291
Если уже знаю пару ЯП, и представляю что такое ООП, и всё такое, подойдёт ли learnxinyminutes для ознакомления с синтаксисом? Или в руби есть особые подводные камни?
897485
#362 #897330
Блин, не могу понять че за фигня.
Кароче есть СИнатра, пытаюсь добавить 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 скрипт файл - не ругается.
ЧЯДНТ?
#363 #897485
>>897291
Если тебе нужно понять поверхностно код на руби, то подойдет. Если хочешь начать писать на нем как можно быстрее, минуя подводные камни, то не подойдет.
897677
#364 #897511
Я нуб, пилю закрытый сайт уютненького сообщества с регистрацией по инвайтам и элементами социальной сети. На сайте есть пользователи, некоторые пользователи могут быть админами. Возможно потом добавятся и другие роли.

1. Как реализовать инвайты? Я хочу чтобы пользователи могли регаться и по почте и через вконтакт, как им удобнее. Гем devise_invitable как я понял работает только с почтой, поэтому я запилил свой велосипед. Пользователь жмёт кнопку и создаёт ссылку с инвайт-кодом вида site.ru/register?invite_id=<UUID> (код - это просто UUID). Код сохраняется в БД. Потом передаёт ссылку любым способом своему другу, тот переходит по ссылке, RegistrationsController проверяет код и разрешает другу зарегистрироваться. Регистрация обычная, через devise. В будущем я добавлю разные виды инвайтов для админов и простых пользователей, сделаю ограничение срока годности и количества создаваемых инвайтов. Это норм способ? Есть варианты получше?

2. Как правильно запускать сайт в продакшен, если регистрация только по инвайтам? Сейчас я создаю аккаунт суперадмина с максимальными правами через seeds.rb, логин/пароль храню в ENV. Потом приглашаю обычных админов и больше не пользуюсь этим аккаунтом. Это норм способ? Как поступают взрослые дяди в таких случаях?
897781
#365 #897677
>>897485
А что подойдёт? Чтобы без всяких очевидных вещей, а-ля "класс это то-то, объект это то-то"
897735
#366 #897735
>>897677
Если для тебя это очевидно, то ты не будешь долго задерживаться на этом момементе, так что я считаю, что ты можешь пройтись по рекомендованному списку.

Также советую эту книжку https://pragprog.com/book/adrpo/ruby-performance-optimization
#367 #897781
>>897511
1) Норм.
2) Точно также, через seeds
#368 #899099
Мёртвый тред мёртвого языка.
899494
#369 #899494
>>899099
Пока мне за него деньги платят - не мертвый
#370 #899910
>>860724 (OP)
Imagemagick отказывается читать файлы.
Нужно что бы пользователь загружал изображения, а потом могу их простейшим образом редактировать. Редактирование работало бы если бы не одно но - сейчас rmagick (как и minimagick) выдаёт ошибку -couldn't find file or directory. То, что файлы есть в нужной папке 100%, не работают как абсолютные, так и относительные пути. И браузер тоже открывает эти файлы. Что это может быть?
899921
#371 #899921
>>899910
виртуалку юзаешь?
899923
#372 #899923
>>899921
Да, но на сервере та же беда.
#373 #902597
Поясните ньюфага разницу в FactoryGirl между attributes_for и create
902647
#374 #902647
>>902597
Английский учи сначала, потом погромирование
#375 #902797
Хочу сделать чтобы ассоциацию habtm можно было установить только для определенного подмножества модели. Например есть 3 модели: Товары, Типы товаров, и 3 таблица которая может быть связана только с товарами определенного типа. Вроде бы STI то что нужно: создаем дочерний класс для отдельного типа товаров (Sock) и в 3 модели(SocksSet) пишем has_and_belongs_to_many :socks. Но я не пойму как вместо того чтобы делать отдельное поле type в таблице товаров (чтобы хранить имя дочернего класса) узнавать имя из связи товары<>типы товаров.
902829
#376 #902829
>>902797
Чет херню какую-то пишешь. Нахрена тут STI? Зачем усложняешь? Товары, категории, джоин таблица. Все
902832
#377 #902832
>>902829
Ну так допустим у меня есть набор носков (который относится к отдельной модели наборов), я не хочу чтобы к этому набору можно было добавить трусы ( а если будет простая ассоциация товары <>наборы то это можно будет сделать)
902843
#378 #902843
>>902832
такая задача решается на уровне приложения а не базы, просто храни в наборе разрешенные категории и не разрешай добавлять товары из других категорий
904231
#379 #904040
Хочу создать простенький веб-сервер и клиент.Использую TCPServer из 'socket'.

Вопрос: можно ли с его помощью создать сервер, видимый из интернета?
И если да, как ему отправить сообщение? (Можно ли отправить, используя telnet?)
904250
#380 #904231
>>902843
Т.е. надо сделать валидацию ассоциаций ?
Опять же не пойму как это сделать validate :method_name вызывается только при сохранении , а если устанавливать связь через = или << этот метод не будет вызван.
904628
#381 #904250
>>904040
Тебе нужно, чтобы твой компьютер был доступен из ынтернета. Разбирайся с провайдером, короч. А так разницы нет.
#382 #904628
>>904231
Забудь про колбэки и валидации в моделях, ни один приличный рубист в 2017 таким заниматься не будет, пили форм объект в котором экспликтно все и провалидируешь
904738904869
#383 #904738
>>904628
Охуеть, а если у меня эти ассоциации устанавливаются не через форму в веб интерфейсе?
904783
#384 #904783
>>904738
Причем тут ассоциации? они как раз остаются в моделях
904799
#385 #904787
>>896341
Ты всё правильно думаешь по 3 пункту, не слушай того анона.

Мимо-слоупоке
#386 #904799
>>904783

>храни в наборе разрешенные категории и не разрешай добавлять товары из других категорий

83 Кб, 1480x898
#387 #904868
Анон, что думаешь о Hanami? Каждый день вижу новые статьи или как минимум упоминания в англоязычных твиттерах и медиумах, а по-русски ничего нигде ни разу.
904914
#388 #904869
>>904628
Форм объект это не про веб формы, гугли
#389 #904914
>>904868
Хорошая штука, но слишком поздно появилась. В 2017 году, если уж отказываться от инфраструктуры рельсы, то проще сразу эликсир с фениксом взять.
#390 #906667
Пилю систему с использованием внутреннего баланса. Быстрым гуглением вроде прояснил все моменты: локаю баланс покупателя и продавца, в транзакции продавцу начисляю деньги, у покупателя снимаю(с учетом комиссии сайта), записываю в таблицу истории операций ид товара, сумму, ид покупателя, ид продавца, время операции, тип(покупка/пополнение/вывод). Собственно как еще обезопасить (что еще надо делать, какую еще информацию хранить в бд), чтобы потом не охуеть от того что деньги проебались/спиздили.
906685
#391 #906675

>2017


>Rails


Лол. Рельсы давно мертвы, вы просто не хотите это признать.
906686906706906743
#392 #906685
>>906667
Все велосипеды уже изобретены. Вот наш:
https://github.com/openbill-service
Смотри, пользуйся.
906850
#393 #906686
>>906675
А кто не мертв?
906691
#394 #906691
>>906686
Node, Elixir, Go, Java, да даже сраный PHP.
906787
#395 #906706
>>906675
Рельсы справляются с задачами, решения которых от них ждут, а на дешевые вбросы вроде твоего здесь еще не было реакции более активной чем этот мой ответ.
#396 #906743
>>906675
Все адекватные уже давно понимают, что рельсы мертвы, даже по рынку вакансий это можно взглянуть и понять, ибо их все меньше и меньше с каждым годом. Да и все крутые компании уже ушли с рельс на что нибудь типа ноды или низкоуровневое.
Другое дело, что программисты на руби все еще имеют смысл, так как кода написано куча и кто то его поддерживать должен.
#397 #906787
>>906691

>Node


Это шутки такие? Туда до сих пор нормальную работу с базой не завезли, в 2017-то! Не знаю какие хипсторы в это играются, ни одного здравого проекта на ноде я ещё не видел за 6 лет.
906801906820
#398 #906801
>>906787
"Нормальная работа с базой" - это что такое?
906821
#399 #906820
>>906787
Толсто.
906821
#400 #906821
>>906801
Это типичный вопрос нодофага? Да хотя бы транзакции, например. Может я чего-то не знаю, и за этот год действительно кто-то там скакнул вперёд, но чет не слышал.

>>906820
Поясни.
906903
#401 #906850
>>906685
Так у вас там на pgsql все, ладно попытаюсь понять.
#402 #906903
>>906821
Это типичный ответ от рельсофага? В npm куча модулей для транзакций. Давай на конкретном примере, что в рельсах лучше чем в ноде или чего в ноде нет, что есть в рельсах.
906959
#403 #906959
>>906903

>В npm куча модулей


И все работают через жопу. Конкретный пример с транзакциями: чтобы воспользоваться транзакциями - поставьте вот этот модуль.. или вот этот, или вон тот. Нахер так жить? Одной ORM недостаточно для этого? Для чего ещё нужно поставить модули, что и так должно работать искаропки? Удобства в ноде нет, зато есть ненужная асинхронность, которую тоже надо отдельно выключать.
907111
#404 #907076
Что означает <<: *default в database.yml?
907081
#405 #907081
>>907076
Что-то вроде "используй ту же базу данных, что и деофл"
например, если у тебя в дефолте постгре, то остальные тоже будут с постгре
Да, еще там кодировку ту же использовать и еще какое-то свойство (рооl, как понял - ставит максимум для тредов)
907083
#406 #907083
>>907081
А где дефолтные настройки хранятся?
907085
#407 #907085
>>907083
А, проебался. В этом же файле, только выше?
907112
#408 #907111
>>906959
http://docs.sequelizejs.com/en/v3/
Вот же, первая ссылка в гугле. Не знаю, о чем с тобой говорить, если ты не можешь 2 секунды потратить, прежде чем начать нести чушь.
907200
#409 #907112
#410 #907200
>>907111
Ну молодец, подебил. Удобнее разрабатывать от этого не стало.
#411 #907709
Проясните, пожалуйста.

Веб-сервер и рельсы конструктивно находятся в одном приложении?
Или это два процесса, общающихся между собой? (еще +бд)

И еще. Веб-сервер нужен лишь затем, чтобы ловить запросы из внешней сети? То есть это просто посредник между рельсами и юзером? Веб-сервер просто передаёт HTTP без изменений маршрутизатору рельс или как?
907988908034
#412 #907988
>>907709

>Веб-сервер и рельсы конструктивно находятся в одном приложении?


Это одна программа.

>Или это два процесса, общающихся между собой? (еще +бд)


Обычно БД это как раз отдельная программа(postgresql/mysql/oracle). Хотя можно сделать на sqlite который будет встроен в виде gem'а в процесс рельс (руби который всё это загружает). Но конкретно рельсы это одна программа которая принимает HTTP-запросы (собственно это и есть веб-сервер) сидя на каком либо порту.

Однако для распределения нагрузки, безопасности или другим причинам рельсы часто ставят за прокси типа nginx.
#413 #908034
>>907709

> Веб-сервер и рельсы конструктивно находятся в одном приложении?



Конструктивно, есть выбор между разными веб-серверами, выполнив достаточно простые (скажем https://devcenter.heroku.com/articles/rails-unicorn) можешь поменять дефолтный.

При этом на одном веб-сервере может крутится несколько rails приложений. Одно из крупных обновлений 5 рельсы, когда осуществили переход с single-thread веб-сервера webrick на пуму бтв.

Ассоцировать рельсу и web-сервер как неделимую сущность не нужно, так как на той же пуме ты можешь (запустить веб-приложение, написанное на другом фреймворке, скажем, на синатре.

В тонкости различий веб-серверов можешь вникнуть погуглив по ключевым словам: webrick, puma, unicorn, passenger, у меня если честно нет желания пересскажывать этот интернет, спасибо.
#414 #908149
>>908139
Они не умерли, а умирают. Причем только в начальных стадиях отмирания, даже новые проекты на руби/рельсах еще начинают, а уж легаси хватит на многие годы. Минимум лет 5 еще можно о недостатке работы не беспокоиться.
Я бы на твоем месте лучше побеспокоился о том, что через пару месяцев заканчиваю универ и все еще не нашел (не искал?) работу.
#415 #908194
>>908169
Так и вижу, как ты 24/7 диплом ботаешь. Я вот себе преддипломную практику нарисовал, а сам в это время нашел работу и к моменту написания диплома у меня уже было по чему писать, хоть и тема выдалась смехотворной, но многие и этого не осилили.
339 Кб, 2200x1566
#416 #908381
Почему в рубимайне у первого <tr> отступ 2 пробела а у второго 4? Как чинить?
908445908453
#417 #908445
>>908381
Эээ, из твой картинки очевидно же.
908451
#418 #908451
>>908445
Если ты про continuation ident то это перенос длинных строк(и в erb/html он походу вообще не работает)
#419 #908453
>>908381

пользуйся slim@haml, erb ненужен.
908458
#420 #908458
>>908453
А можно менее радикальное решение ?
ноги_не_нужны.jpg
908473
#421 #908473
>>908458

в таком случае у тебя локальная проблема; попробуй обновить ide на 2016.3 версию, у меня соотв. значение в поле indent расставляет отступы правильно.
908477
#422 #908477
>>908473
2016.3.1 стоит
#423 #908665
>>908539
Весной поздно, пока туда-сюда - уже диплом писать надо будет. Рекомендую с февраля или вообще сейчас. Не надо искать "практику", просто ищи работу, а там уже себе бумажку вырулишь, типа практику прошел.
#424 #909380
Анон. Можно ли в where() передать релейшен?
не arel-условие, а relation
909463909610
#425 #909463
>>909380
Можно было что-то подобное, но это в любом случае не лучшее решение.
909562
#426 #909562
>>909463
Вот он - ерохин от программирования!
"можно", "что-то подобное", "не лучшее решение".
Что ты блять несешь, хуесос? Иди активными продажами занимайся, там любят такие разглагольствования.
#427 #909610
>>909380
relation.merge(other_relation)
#428 #910185
>>860724 (OP)
Не понимат, что смешного во второй картинке ОПа. Ну пакетный менеджер и что?

composer install
brew install
npm install

Мама смотри, я петросян
910192
#429 #910192
>>910185
Найс дауничу подпекло. Еще и какел небось, да?
269 Кб, 933x638
#430 #911205
Анон, а ты там зареган или может даже находил работу мечты?
Короче не знаю как продать пост, просто поясните за сракедин. Насколько он популярен в it-среде, имеет ли смысл в рашке, что это вообще и как работает? Просто все чаще попадается на глаза и не в связи с блокировкой.
911214911316
#431 #911214
>>911205

> Насколько он популярен в it-среде


Меня там регистрироваться заставляли как-то в добровольно-принудительном порядке, но через полгода примерно положили болт. Эта штука больше популярна в околоменеджерских кругах наверно.
911277
#432 #911277
>>911214

>регистрироваться заставляли как-то в добровольно-принудительном порядке


Кто, зачем?
912985
#433 #911316
>>911205
смысл был несколько лет назад, сейчас сдохла и заспамлена
11 Кб, 395x173
#434 #911877
Как понять строку identified_by?
В Rails API написано что это метод.
Это код внутри класса или что?
911945
#435 #911945
>>911877
Это значит что в момент загрузки кода этого класса будет вызван метод ApplicationCable::Connection.identified_by(:user)
И больше ничего в этом магического нет.
911973
#436 #911973
>>911945

>момент загрузки


Это когда?
912791
#437 #912388
Так я таки не понимаю, стоит ли мне лезть в руби и рельсы в 2017 с первой работой? Вообще я мамким борщехлеб уже года 3 и знаю довольно много всего: jsы, ангуляры, с + opengl, андроед(есть пару прилаг), джавастафф(мог устроиться мартыхать на спринге), в последнее время активно эрганг колупал, ну и хачкелем раньше щекотал себя, куда уж без него. Разумеется все это знаю не на охуенном синиор уровне, но сейчас приперло с едой деньгами и надо искать работу. Вот думаю куда коммитить время\силы. Этот ваш рубин нравится, все охуенчик, но не хочу проебаться с тем, что джуна хуй куда возьмут(я из бульбы).

У вас тут кстати самый ламповый тредик на зекаче
912422
#438 #912414
>>912401
От джавы блевать хочется(особенно после рубей) а котлин мало кто юзает, там хоть кучу сахарком посыпали
Еще у меня такое чувство что в андроид сейчас каждый 1 школьник идет, куча знакомых дрочит, бывших одногруппников, в pr треды активные и там 90% вкатывальщиков. Мне кажеться от такого предложения работодатели совсем охуевшие будут.
#439 #912422
>>912388

Стоит. Джуна хуй возьмут везде.

С Руби сложно устроиться имея из опыта только учебники и простые приложения(бложики, тудулисты, клоны твиттера и ну ты понил). При этом Руби в большей мере предрасполагает к тому, чтобы ты получил нужный опыт без работы в конторке. Сделать интересное приложение или вложиться в опенсорс на Руби определенно проще, чем где-либо еще.

Руби в 2017 лучше и живее чем раньше.
912429
#440 #912429
>>912422
А можешь накидать каких годных идей уровня: с чем возьмут? Только не ебучие имиджборды
Бля, я сам думал неспешно кодить в удовольствие, наваять пару веб-апп(идеи есть, но это месяца на 3-4 минимум) и поизучать сорцы разных интересных гемов, но сейчас настал пиздец в жизни и у меня максимум 2 месяца чтобы пойти на работу и не сдохнуть через пол года от голода, но в джавапарашу мне все равно очень не хочется валить
912452
#441 #912452
>>912429

>в джавапарашу мне все равно очень не хочется валить



Джава отличный язык с кучей отличных технологий и людей вокруг, зря ты так. Да и JRuby во многих случаях лучше простого Руби.

>А можешь накидать каких годных идей уровня: с чем возьмут? Только не ебучие имиджборды



Слово "накидать" трудно применить в отношении чего-то годного. Конкретно действительно не могу сказать, индивидуально же все. Самих по себе годных идей нет, бывает только годная реализация. Я бы выделил как критерии: пользуешься ли ты сам тем, что сделал, пользуются ли другие и многие ли могут так же. Если в один из них попал, то это гораздо лучше типовых гостевух. Если интересные идеи в голову не приходят, то можно взять первое, что пришло в голову и сделать это с нетипичным стеком технологий. Главное движение, на волшебные идеи надеяться бесполезно.

Просто не будет, но ты не выглядишь как неосилятор. Должен справиться.
912862
#442 #912791
>>911973
А вот это уже хуй его. Попросту говоря в момент когда ты скармливаешь интерпретатору файл с кодом. Или когда внутри другого кода реквайришь зависимость. Короче гугли как рубишный интерпретатор работает.
#443 #912862
>>912452

>пользуешься ли ты сам тем, что сделал, пользуются ли другие и многие ли могут так же


Первые два сразу мимо т.к. я сыч и в инете сижу на 2-3 сайтах(youtube, двач и вк), не считая сайтов с доками, репозиториями и туторами и переполнениестека, мне от интернета нихуя не надо. А чтобы пользовались другие,даже с божественной и всем нужной прогой, должно пройти время и надо хотябы минимально пиарить на всех этих харбах редитах, конфах и т.д. Остается только третье. С другой стороны меня блевать тянет от мысли реализовать что-то, чего и так, как говна в авгиевой конюшне, все эти туду листы, имиджборды, блоги. Ну хз сейчас начну на листик выписывать все что приходит в голову подряд, комбинировать и думать что из этого можно выбрать для реализации. Но надеюсь двач тоже подкинет каких-нибудь идей или направлений.

Кстати, ебашить буду на rails + react + postgre + yaml/препроцессоры и джаваскрипты , это норм стек, смузи нальют? Для скриптов что лучше брать, кофевара или es6 какой-нибудь?
912927
55 Кб, 750x537
#444 #912927
>>912862

>Первые два сразу мимо т.к. я сыч и в инете сижу на 2-3 сайтах


Даже к этому можно подойти с фантазией. Кто-то, например, Перекотер для двачей сделал. Хорошая предметно-ориентированная штука. Автоматизировать можно очень многие повседневные задачи. Хоть таск-менеджер в области ухода за домашними моллюсками, имеющий вменяемый интерфейс и посылающий уведомления в телеграмм когда нужно помыть террариум. Смотри на мир шире двача и вк.

>пиарить на всех этих харбах редитах, конфах и т.д.


Пиарить нужно то, что само по себе никому не нужно. Что-то интересное разойдется мгновенно. Да и нужно ли тебе, чтобы разошлось? Для портфолио и опыта будет отлично, даже если твоим микросервисом просто по вечерам будет пользоваться твоя мама. Я серьезно.

>Кстати, ебашить буду на rails + react + postgre + yaml/препроцессоры и джаваскрипты , это норм стек, смузи нальют?


Нассать в уши эйчарам - норм, они эти слова не понимают, но любят. Еще про тесты в список что-нибудь добавить и резюме готов. По факту ты вряд ли будешь знать больше чего-то одного на нужном уровне, так что по делу будет важнее и полезнее разобраться во всей архитектуре веб-приложений. Для начала нужно врубиться как это все работает и соединяется между собой начиная с низа. Что происходит на уровне ОС, сетИ, какие объекты-методы-модули что-куда вызывают и зачем. Можно насмотреться курсов по реакту и ес6, которых теперь тысячи из-за трендовости, но не улавливать самые базовые механизмы. Если время поджимает, то лучше просто очень хорошо понять сам язык, рельсы и полезные гемы, на реакте за тебя кто-то наверняка напишет, тебе важнее это быстро и правильно интегрировать в бэкэнд.

>Для скриптов что лучше брать, кофевара или es6 какой-нибудь?


Если ты имеешь в виду кофескрипт, то не трать на него время. Он больше не актуален. JS стоит опять же хорошо понять в чистом виде и если будет время то es6 и утилиты для сборки на ноде.
#445 #912934
На девелопера руби / рельсы есть работа вообще?
Для автоматизации тестирования связка руби/капибара/гем на page object актуальна, или эта ниша тоже загнулась к хуям?
Руби вообще жив?
912942912963
84 Кб, 523x453
#446 #912942
>>912934

>Руби вообще жив?


Такой вопрос звучит очень часто, но только на русском языке. Есть несколько знакомых, которые спрашивали о том же будучи в целом далекими от мира веба. Оказалось, все их знания о Руби это несколько антирельсовых статей с хабра. Полагаю, сказывается природная восприимчивость русского менталитета без малейшей обработки складывать к себе в голову любую информацию из СМИ, насильно хоронить и страстно превозносить что-то, если кто-то так сказал.

>На девелопера руби / рельсы есть работа вообще?


Есть, много.

>Для автоматизации тестирования связка руби/капибара/гем на page object актуальна, или эта ниша тоже загнулась к хуям?


Актуальна, но нишей это не никогда не называлось.
912947
#447 #912947
>>912942
Поясню. Я тестировщик.
Года три назад щупал руби когда только вкатывался в автоматизацию, но по итогу меня взяли на проект с имеющейся базой, и пришлось осваивать жабу.
Сейчас меня малёх подзаебала жизнь, и я пошёл искать другой участи на галере. Пока фронт работ ограничивается ручной работой (хотя весьма интересной) пушто я один на проекте, а новые фичи выкатывают со скоростью света, тут бы новое тестить успевать. Но уже в ближайшем будущем появится пару макак рангом пониже, которым на откуп можно будет отдать новоиспекаемое говно, а самому заавтоматить функциональщину. И тут мне вспоминаются зелёные дни, и каким удивительно простым и логичным казался руби, но...
Чёт не хочется угробить время на разбор чего-то, что не апдейтится N лет, с мёртвым сообществом и логикой через жопу, а именно на это намекают вот такие вот самоплодящиеся слухи вроде того, что ты привёл.

Собсна, хотелось бы узнал реальное положение дел.
912948912952
#448 #912948
>>912947

>другой участи


Лучшей участи на другой галере*
#449 #912952
>>912947
Самые сильные места и сама идея Руби в том, что его логика максимально удалена от жопы, а коммьюнити одно из самых сильных, пусть и не больших. Его слабое место в другом и прямо следует из вышесказанного: у него медленный интерпретатор и громоздкая архитектура(с точки зрения машины). Может быть даже самый медленный.
ПейПэл перешли с рельс на ноду не потому что Руби умер, а потому что кто-то схавал "актуальную" технологию не подумав, что для высоких нагрузок она решительно не подходит.
Первое, что делают начинающие рубисты когда собирают свой клон твиттера -- пишут тесты. Для тестов он подходит лучше чем что-то еще, если скорость не критична.
А какие для твоих целей есть альтернативы?
912955
#450 #912955
>>912952
Альтернатива — жмуметр, пресловутый селениум и джава. Потому что это почти всё, что я умею.
913136
#451 #912963
>>912934
Интересный вопрос, на который очередной фелосаф-рубисектант ответит "да".
Но ирл, можно сказать на 100% - руби (именно руби) - это мертворождённый язык. Он слишком сложен для решения любой нетривиальной задачи, содержит слишком много синтаксического сахара, и главное - в нём нет ничего феноменально нового.
Рельсы - это хороший фреймворк, который таки родился, но к сожалению умер. Всё дело в несоответствии концепций и целей. Либерахи и хипстерьё отчаянно пиарили этот рор везде, где только можно - предполагая, что он найдёт свою нищу в больших и сурьёзных тырпрайз-приложениях, конкурируя с громоздкими жабами и шарпами.
Но опять же - принципиально новых концепций не вышло, так что слишком сурьёзные и суровые тырпрайз-боссы не рискнули давать бабла на переписывание.
Так рельсы стали конкурентом пхп - где бодро соснули хуец, ибо пхп-макакинг сильно ниже по рейтам, и на слуху у заказчиков - а пхп тырпрайз, опять же, не рискнул.
Работы по руби нет - а если и есть, то "знание пхп", чтобы в один момент смог перепилить своё говно на него.
913136914210
#452 #912985
>>911277
Директор, у нас компания небольшая. Он когда в силиконовую долину летал наш стартап представлять, говорил что на эту хрень будут смотреть. Но раз все на него (всмысле на линкедин) сейчас болт положили, значит не особо то и нужен. Если есть какие скиллы - регайся, но так наверно всем похуй. Больше репозиторий важен и владение какими-нибудь современными йобами.
913084
#453 #913084
>>912985

>Больше репозиторий важен и владение какими-нибудь современными йобами.


Но это ведь не про профиль в сети сам по себе. СрекедИн он же про коммуникацию. Лично мне очень понравилась идея "перманентного поиска" работы. Ты там присутствуешь, и потенциальный работодатель или партнер может найти тебя в любой момент, а не тогда, когда тебе приспичило и пошел размещать резюме на хедхантере.
Это очень здорово (если это работает), потому что смена места работы всегда вынужденная и всегда компромисс и стресс. Охуенно, если действительно работа сможет сама меня находить, а не я ее что было бы справделиво.

Вот только не знаю, насколько это работает у нас в стране.
#454 #913114
Возможно ли задеплоить проект с 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
36 Кб, 501x367
#455 #913136
>>912955
Тогда это скорее всего вопрос скорости против архитектуры. На Руби это можно сделать архитектурно красивее, хотя это и по-своему субъективно. Если ты испытываешь к нему некую симпатию и предрасположенность, то смело бери его. Он не умер и жив не меньше, чем раньше. Другое дело, что его плюсы при строго техническом сравнении мягко говоря не очевидны.

>>912963

>Он слишком сложен для решения любой нетривиальной задачи


Чем сложен?

> содержит слишком много синтаксического сахара


А сколько должно быть, где по-твоему граница?

> в нём нет ничего феноменально нового.


А в чем есть?

>Всё дело в несоответствии концепций и целей


>свою нищу в больших и сурьёзных тырпрайз-приложениях, конкурируя с громоздкими жабами и шарпами.


Тырпрайз это всегда основательный подход к проектированию, строгие спецификации еще до начала разработки и высокие нагрузки. Масштабирование вертикальное, а не горизонтальное. Только идиот может считать, что Руби когда-то на это претендовал.

>Так рельсы стали конкурентом пхп


К этому момента стало очевидно, насколько твое виденье вопроса далеко от реальности. На Руби кто-то пытался сделать Вордпресс или Битрикс?

У Руби своя ниша, которая даже близко не пересекается с пхп или шарпами. Это ниша, которую принято ассоциировать со стартапами. Горизонтальное масштабирование, быстрая и гибкая разработка. И то, что многие проекты с Руби потом переписываются это не оскорбление в его сторону и знак, что он умер. Это инструмент, который отлично справляется с тем, для чего он предназначен.
913245915887
#456 #913245
>>913136

>И то, что многие проекты с Руби потом переписываются это не оскорбление в его сторону и знак, что он умер.


А кто это делает вообще? Твиттер и гитхаб? Их по пальцам пересчитать. В основном никто ничего не переписывает, потому что, как правило, нет таких нагрузок, чтобы это было целесообразным.
#457 #913381
>>913377
Что планируешь в портфолио пилить
#458 #913717
>>913372
Спасибо, просто карту просил привязать, побоялся.
#459 #913800
Как переопределить root_path для залогиненных пользователей в пятых рельса?
authenticated :user do
root 'welcome#index', as: 'authenticated_root'
end
это в 5 рельсах не работает
гем devise конечно же
913823
#460 #913823
>>913800
Почему бы не сделать редирект на уровне контроллера? Какое техническое обоснование?
913832
#461 #913832
>>913823
я сделал специальный контроллер для root_path, пусть будет welcome контроллер. В нем определен метод index. соответственно, зайдя на домашнюю страницу, редирект идет на welcome#index
НО, если юзер логинится со страницы users/sign_in , то его должно редиректить на другой на друго контроллерб допустим, documents#index
#462 #913920
Аноны, вот эти гвард тесты из хартла годнота? Ими пользуются? Вроде годнота, машина тебе сама тестики после каждого изменения запускает, но просто нехочется сейчас тратить время разбиратся, а потом обранужить какой-нибудь фундаментальный недостаток времени нет
#463 #913958
>>913927
Проходил самый свежий перевод Хартла около полугода назад уточнить версию лень и там был таки Rspec.
#464 #913973
Да, у хартла с 4 рельс рспек/капибара
#465 #913989
>>913927

>Во-вторых, конкретно разработка через тестировку сейчас сдает позиции. Есть много спекуляций, что это хуйня.


Ну не знаю, с одной стороны действительно не очень удобно сразу думать над тестами, но с другой это позволяет тестировать без лишних ручных манипуляций. Для себя я нашёл оптимальный вариант: пишу небольшой кусок кода, когда приходит время проверить как это работает - покрываю его тестом вместо того, чтобы тыкать вручную. Если happy path проходит, проверяю всё живьём. Потом уже добавляю всякие корнеркейсы и unhappy path. А вы как делаете, анонасы?
914244
52 Кб, 1280x720
#466 #914104
>>913377
Да не за что. Не забывай, что впереди тебя ждет хардкорный путь и у тебя есть свой шанс облажаться со сроками. Задача все-таки вполне амбициозная. Желаю успехов, заходи еще, спрашивай.

Все Рубисты быстро смиряются с отсутствием литературы на русском и осваивают английский, а после этого уже точно не возвращаются на хабр и куда-нибудь в руби-паблики-вк. Работают вообще поголовно удаленно и укатываются сидеть с макбуками на Гавайи. Никаких тебе митапов и воркшопов в коворкингах. Отсюда и впечатление скудности коммьюнити: книжек нет, людей нет, упоминаний нет - еще и тренды пошли совершенно в другую сторону. хороним ООП, дрочим на ФП

Меж тем подошли свежие цифры о реальном положении дел. https://infinum.co/the-capsized-eight/analyzing-rubygems-stats-v2016
Не то что бы это большой повод для восторга, но по крайней мере сомневающиеся будут чувствовать себя спокойнее. А хабрапидоры останутся хабрапидорами.
914211
#467 #914206
>>878101
Дико двачую. 7 лет на рельсе, раньше сильно лучше было.
#468 #914210
>>912963
Вообще руби без рельсы практически нигде не нужен. Рэйлс стал умирать после 13 года, с активным пиаром нод-макакинга на бэк/фронт-енде за еду и скорость выполнения. Параллельно большое число любителей с рубигайдом в хиленьких ручонках влилось на рынок, сильно обваливая прайсы и создавая очень плохую репутация фрейморку путем написания чудовищного кода и, следовательно, отправлением очередного говностартапа на помойку ит. Инвесторы просекли и продолжают сечь фишку и деньги на такие проекты дают все реже и реже.
914216
#469 #914211
>>914104

> Работают вообще поголовно удаленно и укатываются сидеть с макбуками на Гавайи.


Взоржал с зазывалы. Ну-ка, пруфани видами, лол. Типичный держатель подвальной галеры с прыщавыми студнями "воспитывает" подрастающее поколение в пр.
914243
#470 #914216
>>914210
И куда идти тем, кто не хочет нод\го макакинга за еду?
914235
#471 #914235
>>914216
Смотря сколько ты хочешь. Го - это голанг? Не встречал макак на нем.
914239
#472 #914239
>>914235
Разумный баланс между кэшем и интересной работой(читай, хотябы не унылой шаблониной, которую спустя пару месяцев делаешь с закрытыми глазами)
Я на самом деле хз насчет го, но на двачах его форсяк как езык макак, этакая нода от империи зла гуглей
914241914242
#473 #914240
А что делать если ты любишь руби, но ненавидишь рельсы с его активрекордом?
914241
#474 #914241
>>914239
Работы интересной не бывает. Чтобы решать сложные задачи, нужно много учиться и практиковаться, где-то здесь со временем интерес пропадает. Ты проиграл.
>>914240
Писать на руби, жить с мамкой.
914388
#475 #914242
>>914239
Голанг не плох, лучшее из лимбо без костылей си. Но в рашке и аутсорсе не приживется, потому что не веб. А это значит мало заказов и значит галерам нет смысла набирать гребцов.
#476 #914243
>>914211
Ну, я например не на Гавайях только потому, что нафиг не упало. Мне не 20 лет, чтобы тратить бабки направо-налево. А так все успешные пацаны теперь, кто со мной начинал.
914250
#477 #914244
>>913989
Отвечайте на мой ответ. Или тут только умир или ниумир обсуждают?
914247
#478 #914247
>>914244

TLD, TDD не нужно.
914248
#479 #914248
>>914247
Просто вот так? Потому что тесты - это скушна?
914249
#480 #914249
>>914248

ты не знаешь что такое TLD, это не отказ от тестов. TDD хорош только для тривиальной хуйни.
914253
#481 #914250
>>914243
Я тебя услышал.
#482 #914253
>>914249
Я понял, что не отказ. Просто интересно - как писать, если сначала ты хуяришь код без разбору от и до (хуже всего если проверяешь вручную при этом), потом полностью пытаешься написать на это всё тесты, потом они фейлятся, и ты долго и нудно расставляешь везде точки останова, шаришь по переменным, вот это всё, да? Потом находишь какую-нибудь, не относящуюся к конкретному тесту, ошибку, потому что пока хуярил - всё усложнилось и ты потерял из вида какую-то деталь. Мне кажется, если не всё напропалую за раз тестить, а помаленьку - на дебаг времени меньше тратится. Хотя возможно для кого-то медленным окажется прыгать туда-сюда из тестов в код и обратно.
914256
#483 #914256
>>914253
Тебе бы начать в шеколадный глаз давать и фалафель сосать. Глядишь и тесты пройдут и кофаундер приголубит.
(Автор этого поста был предупрежден.)
914390
#484 #914302
Антуаны.
Есть одна вакансия:
Требования: Уверенное знание: Ruby; Знание основ работы и разработки современных web-приложений (фоновые задачи, очереди сообщений, API); Понимание механизмов работы реляционных и noSQL БД (структура, нормализация, объединение, индексы); Знание: Ruby on Rails, PostgreSQL, CoffeScript, Sidekiq, Linux, Git Знание принципов Unit-тестирования и умение писать тесты с использованием rspec; Знание Unix на уровне пользователя командной строки Будет плюсом: Опыт работы с: Angular, Backbone, React Node JS; Знание алгоритмов и структур данных; TDD, TBD Знание других языков программирования.

И есть я - пару бложиков и реддитов на руби, с кодекадеми и прочим говном. Без опыта работы. Вопрос: Насколько велик шанс, что я соснул?
914363914417
#485 #914363
18 Кб, 480x360
#486 #914365
ПЕРЕКАТЫВАЙ !
#487 #914388
>>914241

>Ты проиграл


>2 поста маневров и так и не ответил


Ясно, понятно
#488 #914390
>>914256
В треде завелась обиженка
914405
#489 #914405
>>914390
И кто тебя обижает?
#490 #914417
>>914302
Почти наверняка, но попытка не пытка. Игнорируй запрос резюме, оно сразу улетит на помойку повышая при этом показатели эйчарщицы вчерашней выпускницы провинциального вуза. Вместо этого надо найти все телефоны, звонить и запрашивать тестовое задание и по возможности разговор с кем-то из технического отдела.
#491 #914418
Почему ActionCable нормально работает в девелопменте, а в продакшене нет? Браузер будто бы и не пытается проапгрейдить соединение.

В компилированном js разобраться невозможно, но такое чувство, что там не хватает куска кода. Или от чего это может быть? В cable.yml вместо редиса поставил везде async.
914446
#492 #914446
>>914418
Я бы попробовал отключить часть модулей компиляции до минимальной читаемости и попытался проследить до дыры в коде. Какая там в целом компиляция? Склейка в один файл и аглифай? Если так, то соответственно аглифай убрать и смотреть что получится.
914448
#493 #914448
>>914446
Так и хотел сделать, спасибо.
914452
#494 #914452
>>914448
Поделись потом, что получилось. Самому до сих пор с ЭкшнКейблом не приходилось иметь дела, но обязательно нужно освоить, 2к17 же. Какие вообще ощущения от работы с ним?
914465914627
#495 #914465
>>914452
Я юный вкатывальщик, это (рор) мой первый фреймворк, так что думаю тебе не интересны мои ощущения. (А вообще всё очень просто, как и всё остальное в рельсах)

Действительно, углифаер проебывает куда-то кусок кода, ответственный за подписку, но пока я не могу включить углифаер обратно, лол. Вроде удаляю ассеты, компилирую снова, а в браузере всё так же. Походу у браузера в кеше остались, как у него их почистить?
914470
#496 #914470
>>914465
Если хром - то да, там, есть полное обновление страницы.
914473
#497 #914473
>>914470
Мозилла. Кеш удалил, проблема не в нем, руками проверил файл в public/assets -- почему-то не прикручивается углифаер обратно. Вроде как я только одну строку менял в production.rb.
914495
#498 #914495
>>914473
Тут опять таки трудно что-то насоветовать не зная всей последовательности действий и остального контекста. Разве что напомню, трудно сделать большее что всегда можно откатить все изменения в гите и повторить все шаги более внимательно и осознанно. Я в половине случаев именно так нахожу выход.
914499
#499 #914499
Ничего не понимаю, если config.assets.compile = true, то углифаер замечательно работает, но assets:precompile выдает результат без него.
Алсо, в первом случае ВНЕЗАПНО заработал акшон кабель. Вообще ничего не понимаю.
>>914495
Пожалуй, и правда, сделаю как ты советуешь.
560 Кб, 1000x667
#500 #914513
Посоны, ну расскажите успешные истории, кто как из страны свалил?
914536
#501 #914536
>>914513
Поддвачну т.к. у самого такой же пашпорт
18 Кб, 480x360
#502 #914614
ПЕРЕКАТЫВАЙ !
#503 #914627
>>914452
Мне вот довелось, стрёмные ощущения. Всё равно это чисто "чтобы была". После эликсира особенно заметна разница.
914641914875914921
#504 #914641
>>914627
Вот да, слышал похожие отзывы и что рельсо-звезды из Злых Марсиан именно поэтому сделали свой AnyCable как более человеческую альтернативу.

При всем моем Руби-оптимизме не могу не отметить, что сами Рельсы не очень хорошо адаптируются к современной разработке. Минитест - меняем на Рспек, Экшнкейбл - на Эникейбл, Спрокетс под нужны современного JS без Вебпака не подстраивается, Кофескрипт тоже отдельная история. И что удивительно, коммьюнити под все это так быстро и ловко подстраивается, что не успеваешь ощутить дискомфорта от неудачных решений DHH.
914723
#505 #914723
>>914641
Двачну пожалуй. И скорей всего мне ещё предстоит перелезать на AnyCable.
#506 #914875
>>914627
Где и что гавнакодил на елексире? Успешно?
914922
#507 #914921
>>914627
Да вот биллинг вбрасывал недавно, для него вебхук-оповещатор запилил:
https://github.com/openbill-service/openbill-webhooks

Работает вроде по сей день.
914922
#508 #914922
#509 #914929
>>914927
Книжку лучше почитай по нему. На руби он похож только буковками.
#510 #915069
>>914927

>совсем другой язык


>не отличил его от Руби


Попробуй пока на паскале писать.
189 Кб, 258x393
#511 #915887
Анон, что можешь сказать про тейлблейзер? Вообще свои мысли на этот счет.
Особенно интересно мнение этого >>913136
анона
#513 #919011
Сап сосач, ситуация очень тяжелая, нуждаюсь в любой хелпе.
В в общем делаю веб-парсер сайта, всё шло гладко, пока я не наткнулся на выпадающий список..

Как спарсить названия из списка, и ссылки на картинки, соответствующие выбору?
(curb/nokogiri/xpath)

http://www.sammccauley.com/Product/loreal-colour-riche-lipliner/27631/2224.14.0 к примеру эта страничка
#514 #920077
>>860724 (OP)
Анончик, хелпани чем сможешь, вопрос жизни

https://toster.ru/q/391272

Создал тему на тостере, дабы не засорять харкач множеством букоф
27 Кб, 728x202
10 Кб, 565x213
53 Кб, 1854x1023
#515 #940609
Аноны, нужна помощь.
Есть такой тест:
http://pastebin.com/APJC3Qib
Есть следующие моменты:
1)FactoryGirl все создает в дб, я провеляб byebug'ом
2)Эта сраница налокалке все рендерит, то есть присутствуют все нужные атрибуты, в том числе и name
3) Тест выдает ошибки, причем и в случаем с просты RSpec'om, так и с shoulda-matchers версией

ошибки/контроллер/страница пикрелейтед
Тред утонул или удален.
Это копия, сохраненная 5 марта 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски