Сохранен 529
https://2ch.hk/pr/res/860724.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Ruby Thread

 Аноним 20/10/16 Чтв 17:03:24 #1 №860724 
14769722044610.png
14769722044621.jpg
14769722045562.png
Предыдущий: 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. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]
А еще есть русская слак конфа - 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.
Аноним 20/10/16 Чтв 17:07:10 #2 №860729 
Зачем нужен руби если есть питон
Аноним 20/10/16 Чтв 17:17:53 #3 №860740 
>>860729
зачем нужен питон если есть Perl?
Аноним 20/10/16 Чтв 17:18:59 #4 №860741 
>>860740
Зачем нужен Perl если уже есть lisp?
Аноним 20/10/16 Чтв 17:19:16 #5 №860742 
>>860741
Зачем lisp если уже есть фортран?
Аноним 20/10/16 Чтв 17:19:42 #6 №860743 
>>860742
Зачем фортран если есть перфокарты?
Аноним 20/10/16 Чтв 17:28:50 #7 №860750 
Зачем жрать капусту, если есть картошка?))))))))
Аноним 20/10/16 Чтв 22:52:52 #8 №861012 
[code]
"руби".capitalize
=> "руби"
"ruby".capitalize
=> "Ruby"
[/code]
Почему такую очевидной функциональности нету в стандартной библиотеке? В пистоне и джс изкоробки.
Аноним 21/10/16 Птн 01:15:58 #9 №861134 
>>861012
вроде в 2.4 запилили
Аноним 21/10/16 Птн 02:25:13 #10 №861151 
Как ОТРЕФАКТОРИТЬ accepts_nested_attributes в form object?

Лол, в т9 слово уже капсом. Убрал fields_for в форме, самому вручную что-ли каждый инпут теперь настраивать чтобы на сервер нормальный хеш пришёл?(
Аноним 21/10/16 Птн 02:29:45 #11 №861154 
>>861012

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

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

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


Выяснилось: стандартный кодировщик вот уже (как минимум) три года не такой rfc-compliant как хотелось бы, многие uri обрабатывает неточно, а я со своей проблемой не один такой. Там же советовали гем "addressable". Поменял, и, действительно, запросы и ответы стали такими как и должны были быть.

Аноним 21/10/16 Птн 11:55:17 #12 №861239 
Подскажите как сделать лучше: есть бот для стороннего веб-сайта который работает как фоновая задача (rabbitmq+sneakers), он должен выполнять разного вида задания. В вики написано что для каждого типа задания надо создать отдельного воркера. Проблема в том что для работы боту надо залогиниться на сайте (получить куки, в будущем возможно установить постоянное соединение), как мне передать куки разным воркерам.
Аноним 21/10/16 Птн 12:19:24 #13 №861246 
>>861239
Т.е. например мне надо запустить 10 ботов — сначала отправляем запрос к серверу, он логинится, получает куки и для каждой задачи создаётся по воркеру с уже установленными куками, и так 10 раз.
Аноним 22/10/16 Суб 19:54:08 #14 №861965 
Ребята, ваше мнение насчет form object:

Должна ли форма искать модель, или контроллер передает ей уже найденное?
Или может контроллер передает ей только id?

Аноним 22/10/16 Суб 21:53:50 #15 №862057 
14771624305290.png
14771624305291.png
Может вопрос не в тему, но я же совсем нуб. Так вот, надо проектик сделать. Вместо стандартной базы данных надо использовать 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 и пробовал заново. Все похожие решения на стаковерфлоу испробовал. Почему я даун такой? Почему не получается? Помогите, пожалуйста.

Аноним 23/10/16 Вск 12:18:55 #16 №862297 
>>862057
docker run mysql
/thread
Аноним 23/10/16 Вск 12:21:06 #17 №862299 
>>862057
это ШINDOШS? Если да, то лучше ставь линукс дуалбутом #а то и дропай шиндошс к хуям#. Руби/рельсогосподам нечего ловить на шиндошс
Аноним 23/10/16 Вск 21:14:02 #18 №862568 
>>859241
Элексирчик такой, вот какой)
Пока некоторые вкатываются в реакт и прочую жс поебень, прошаренные поцаны щупают феникс, который по удобности, красоте кода такой же как руби, только лучше.
Аноним 23/10/16 Вск 21:30:15 #19 №862578 
>>862568
хуй работу найдешь
Аноним 23/10/16 Вск 21:56:59 #20 №862596 
>>862578
На руби пока есть места, даже новые проекты продолжают писаться (хотя и на пыхе они выходят). Я к тому, что это руби 2.0 в скором времени будет, все к тому и идет.
Аноним 23/10/16 Вск 23:14:58 #21 №862668 
Матц сказал что в следующем году руби 3 точно не будет.
Аноним 23/10/16 Вск 23:49:50 #22 №862688 
>>862668
Это сильно плохо или не сильно плохо?
Аноним 24/10/16 Пнд 00:19:06 #23 №862700 
>>862688
Это значит что они слоупоки и еще толком не решили как надо добавить много важных абсолютно новых фич при этом оставив совместимость с предыдущими версиями. Зато 2.4 в декабре и +5% к производительности прямо как у интела
https://youtu.be/8aHmArEq4y0
Аноним 24/10/16 Пнд 03:23:12 #24 №862752 
>>862668

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

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

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

Впрочем, зацикливатся на руби не стоит, в любом случае. учи эликсир хаскель.
Аноним 24/10/16 Пнд 13:42:04 #25 №862859 
>>860742
Ты фортран с фортом попутал и все запорол.
Аноним 24/10/16 Пнд 20:26:42 #26 №863040 
>>861012
[1] pry(main)> foo = "bar"
=> "bar"
[2] pry(main)> foo.capitalize
=> "Bar"
[3] pry(main)>
Аноним 24/10/16 Пнд 21:18:41 #27 №863077 
>>863040
Ты совсем дурачок, да?
Аноним 24/10/16 Пнд 23:10:43 #28 №863146 
>>863077
А ты?

2 команды вбить не можешь? мамкин програмер
Аноним 24/10/16 Пнд 23:27:38 #29 №863155 
>>863146
А теперь подумай.
Аноним 24/10/16 Пнд 23:31:37 #30 №863156 
>>863155
Думай сам, мудила
Аноним 24/10/16 Пнд 23:33:19 #31 №863157 
>>861012
https://ruby-doc.org/core-2.2.0/String.html#method-i-capitalize
Аноним 24/10/16 Пнд 23:35:06 #32 №863159 
>>863156
Ох, лол, каждому итт школьничку нужно подарить по футболке с таким принтом.
Аноним 25/10/16 Втр 02:49:53 #33 №863229 
14773529937900.jpg
>>863157
>>863159
Он это имел ввиду, лалки
https://bugs.ruby-lang.org/issues/10085
>>861134-кун
Аноним 25/10/16 Втр 02:52:13 #34 №863232 
>>863229

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

=(
Аноним 25/10/16 Втр 07:40:25 #35 №863258 
Спасибо, что перекатили.
ОП предыдущих тредов
Аноним 25/10/16 Втр 13:02:18 #36 №863325 
>>863229
Ну так я на это и намекал школьничку как бы, чего ты меня хайлайтишь-то.
Аноним 25/10/16 Втр 14:52:11 #37 №863367 
Как получить xcode аноны? сделал vmare эмуляцию с капитаном, из апстора не качает а левый пидорасится как сучечка. Ох уж эта анальная зависимость.
Аноним 25/10/16 Втр 15:33:58 #38 №863391 
>>863367
Эпплобляди должны страдать.
Аноним 25/10/16 Втр 15:34:14 #39 №863392 
>>863258
Ты бот.
Аноним 25/10/16 Втр 22:29:45 #40 №863595 
Аноны я вообще правильно делаю?
https://ideone.com/M5pVTo
Суть в том чтобы метод класса возвращал массив уже инициализированных объектов другого подкласса
Просто класс в классе смотрится странно (я ньюфаг)
Аноним 25/10/16 Втр 23:27:44 #41 №863620 
>>863595

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

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

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

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

https://ideone.com/xYA62a

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

И, наконец ответ: лучше не писать классы в классах. На это должны быть веские причины. И даже если они есть, ты, скорее всего, делаешь что-то, что потом придется переписывать.
Аноним 26/10/16 Срд 00:20:59 #42 №863679 
>>863367
Как ни странно, можно без xcode. Когда будешь устанавливать brew, то тебе предложил прямо из терминала запустить команду, которая только компилятор от xcode вытащит, а не всю программу из AppStore.
Аноним 26/10/16 Срд 00:24:03 #43 №863682 
Йоу, парни!

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

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

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

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

А, ну и какой-нибудь хороший код небольшого объема на почитать посоветуйте, если кто-то шарит.
Аноним 27/10/16 Чтв 23:10:24 #50 №864927 
14775990244490.png
14775990244491.png
>>864919
Удваиваю реквест. Прагматик гайд из шапки нихуя не прагматик - дропнул это промывание мозгов, не дойдя и до сотой страницы.
Аноним 27/10/16 Чтв 23:12:20 #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

Аноним 28/10/16 Птн 16:28:38 #52 №865233 
>>864928
Меня очень настораживает тот факт, что ты даешь русские названия книг - это вроде бы дает повод усомниться в твоей компетентности. С другой стороны - логично же прочитать книжку от Матца, раз уж он ее написал! Спасибо, ее и полистаю для начала.
Аноним 30/10/16 Вск 23:24:41 #53 №866626 
Что это вообще такое, в руби что нету нормальной http билиотеки ?
Использовал раньше http.rb, но в один момент он вдруг отказался возвращать внятный ответ, а дело в том что он со сжатием работать вообще не умеет. Ну я такой, ладно ведь дохуя же библиотек разных должно быть. Захожу на ruby-toolbox, 1 в списке гем rest-client: не может сам автоматом распарсить json по заголовку content-type, окей 2 гем faraday: изкоробки не работает с куками, нахожу middleware faraday-cookie_jar - с куками он то теперь работает, но я получить значение этих кук не могу. Дальше идет multipart-post вообще не отдельная библиотека а расширение стандартного net/http
Аноним 31/10/16 Пнд 00:14:15 #54 №866642 
>>866626
Ага, faraday может, но для этого надо еще строк 20 написать, опять же из коробки такого функционала нету.
Аноним 31/10/16 Пнд 00:15:21 #55 №866643 
>>866642
не faraday a HTTParty
писал свой буггурт а потом стер
Аноним 31/10/16 Пнд 01:14:21 #56 №866685 
>>866626
А ответ один - юзай clj-http, clj-http-client, http-kit, etc etc
Аноним 01/11/16 Втр 21:11:17 #57 №868059 
2016-11-02020905.png
А есть какие-нибудь гемы чтобы в сложные жсон парсинге можно было ориентироваться, или сразу нужные ключи выдергивать, просто у меня пикрилейтед, и это еще не конец.
Аноним 01/11/16 Втр 21:42:18 #58 №868071 
>>868059
> это еще не конец
А написано, что конец. ;););)
Аноним 02/11/16 Срд 01:41:58 #59 №868184 
>>868059
https://codon.com/refactoring-ruby-with-monads#abstract-data-types
Аноним 02/11/16 Срд 07:16:34 #60 №868226 
Антуаны, а как/куда вы деплоите rails приложения? Внятных инструкций кроме как для хипстерского хероку я не нашёл, а хочется чего-нибудь бесплатного и относительно простого. Может, посоветуете чего-нибудь? Спасибо.
Аноним 02/11/16 Срд 08:35:44 #61 №868245 
>>868226
https://mkdev.me/posts/nastroyka-i-deploy-rails-prilozheniy-pri-pomoschi-ansible-i-capistrano
Аноним 02/11/16 Срд 20:36:30 #62 №868687 
h147810608274633297c3dc4e32c.png
Ребят, помогите фронтенд мартышке понять РБД в разрезе рельс. Вот пример с рецептами и ингридиентами.
Суть токова, что у рецепта может быть много ингридиентов с доп полем - количество.
У пользователя тоже может быть много ингридиентов с количеством. Ну и рецетов много может быть, но на картинке не указано.
Не слишком дичь я нарисовал тут, так и должно быть или хуйня какая-то?
Аноним 02/11/16 Срд 21:09:49 #63 №868712 
>>868687
хз так-то для таких ситуаций есть counter_cache http://rusrails.ru/active-record-associations#counter_cache
пишешь опцию в модель индигриенты и рецепты(для юзера), пихаешь в таблицы рецепты и юзеры столбцы с рецепты_count, и готова
Аноним 02/11/16 Срд 23:02:19 #64 №868764 
>>868687
Зачем тебе хранить к-во ингредиентов в базе?
Ты можешь просто написать recipe.ingredients.count
а чтобы это выполнялось без дополнительных sql запросов, делай как тебе посоветовали тут >>868712
Аноним 03/11/16 Чтв 01:43:47 #65 №868840 
Бял, тестов куча, что делать чтобы их ускорить? Больше всего занимают request тесты json api, следующими идут интеграционные с капибарой.
Аноним 03/11/16 Чтв 01:52:12 #66 №868845 
>>868840
Я кстати попытался тестировать вручную operation'ы jsonapi-resources, вместо того чтобы гонять целый стек, но чет не вышло. заебло сурцы это гема читать
Аноним 03/11/16 Чтв 11:15:46 #67 №868973 
>>868845
Очевидно, не пользоваться ссаным jsonapi-resources, это не гем, а какая-то инвалидная параша для неумеющих в архитектуру. И вообще сам по себе стандарт JSON API мало профитов в себе несёт и кучу уродского гемора - больше похож на корявую имитацию graphql. Можно использовать, если у тебя целый зоопарк разных девайсов пользуется api( чтобы не приходилось всем вручную обрабатывать ответы), и по каким-то причинам невозможно заюзать graphql. А так других доводов в его пользу по сравнению с ad-hoc API я еще не видел.
Аноним 03/11/16 Чтв 12:49:17 #68 №869019 
>>868764
>>868712
Так, это. Каунт != количество, не? Я конечно не сильно шарю, но по-моему таким образом я смогу узнать только size ингридиентов. Типа
>recipe.ingredients.count
>3
А мне надо иметь количество каждого ингридиента, как-то: Сыр - 100 ед., Залупа - 5 ед., Корокодил - 0.5 ед. Ну как в рецепте.
Т.е. есть таблица в которой перечислены всевозможные ингридиенты. И, например, пользователь может создавать рецепты, делая выборку из существующих ингридиентов, присваивая каждому количество. Я почитал райлсгайдсы и пришёл к выводу, что тут нужна мени-ту-мени связка. Но если между двумя моделями Recipe -> QuantityIngredients <- Ingredients всё в принципе понятно. Джоин таблица держит айди рецепта и айди ингридиента и заодно его квантити. Но если мне понадобится сюда прикрутить UserIngredients? А потом и UserRecipes, начинается казаться что получиться какая-то каша лютая из ассоциаций. Посему и советов мудрых прошу.
Аноним 03/11/16 Чтв 13:46:48 #69 №869037 
>>869019
А вот я сразу понял, что ты имеешь в виду, в отличие от тех анонов! Лол.

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

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

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

В сущности я хотет вкотиться в вэб. хтмл и цсс знаю более-менее. Но хочу уметь в динамические сайты.
Посему на данном этапе должен выбрать между PHP/RUBY/жабаскрипт
из знаний в программировании - забытый с института паскаль.
Вот пришел к вам за советами мудрыми - стоит ли мне начать мои мучения с Ruby? Или таки пиздовать в ПХП-тред?
Вообще в Руби сложно вкотиться?
Аноним 03/11/16 Чтв 14:13:22 #71 №869049 
>>869044
П.С.
Тащемта я хотет себе что то типа хобби. Хочется мне изучить полезный язык программирования.
есть "русские" книги для начинающих?
Потому как в спец. литру на английском я боюсь не влезу.
Аноним 03/11/16 Чтв 14:18:08 #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 мне нужно будет подставлять реальный ингредиент, т.е. ещё один запрос в базу делать?
Аноним 03/11/16 Чтв 14:45:39 #73 №869065 
Хмм, поясните за assets pipeline.
Вот при скаффолдинге он создает файлы типа <model_name>.js. В чем профит писать код в этих файлах, кроме, хм, разделения? Ведь все равно он сливает все в один файл и грузит все сразу в продакшене?

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

Пользуясь случаем, /r/ гайдов по оптимизации asset'ов, самое узкое место в app у меня.
Аноним 03/11/16 Чтв 15:06:51 #74 №869078 
>>869065
application.js по дефолту
Ты можешь добавить сколько угодно файлов манифеста, и инклудить их на вьюхи к нужным контроллерам.

Аноним 03/11/16 Чтв 15:26:44 #75 №869093 
>>869049
Учи английский.

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

Про запросы: http://apidock.com/rails/ActiveRecord/QueryMethods/includes ну и там дальше по докам смотри.
Аноним 03/11/16 Чтв 17:32:11 #76 №869169 
>>868973
GraphQL ещё малопопулярен. jsonapi-resources выбрали, потому что у меня нету опыта в написании API, а нужно было быстрее (
Аноним 03/11/16 Чтв 18:11:13 #77 №869192 
Как отключить загрузку кастомных шрифтов в тестах? Писать fonts.css.scss.erb чет выглядит костылем.
Аноним 03/11/16 Чтв 18:47:02 #78 №869207 
>>869169
>GraphQL ещё малопопулярен
Зато эффективен. Ad-hoc быстрее бы получился и опыт бы появился как вообще API делать "по-обычному". А это ведро с гайками не гнётся вообще никак, только круды на нем клепать. Если REST обычно в этом винят, то он хотя бы не налагает на тебя каких-то архитектурных обязательств в отличие от.
Аноним 03/11/16 Чтв 19:50:50 #79 №869237 
>>869207
А можешь доставить ссылок на то, как рест в этом винят? Только не кукареки от петушков, а что-о обоснованное?

Мимо.
Аноним 03/11/16 Чтв 20:42:20 #80 №869278 
>>869207
Ну, моя работа и есть ебашить круды... Я бы не смог убедить заказчика взять graphql, потому что так модно и молодежно, ему нужно быстрее, и проверенное решение.
state Аноним 04/11/16 Птн 00:22:46 #81 №869446 
1.png
Реквестирую архитектора в тред.

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

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

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

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

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

Я знаю, в чем твоя проблема, дружище.
Аноним 04/11/16 Птн 01:23:07 #83 №869475 
>>869472
Не моя, а твоя. Тебе в другой тред.
Аноним 04/11/16 Птн 01:26:33 #84 №869478 
>>869446
Короче, я не гуру, но мне тоже интересно, так что напишу свои мысли, по абзацам.

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

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

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

Не очень понятно, в чем именно у тебя проблема, потому что сложности тут должны возникнуть с асинхронностью, хранением истории и откатами, ненадежностью внешних сервисов и обработкой ошибок... а ты спрашиваешь, пихать валидацию в данные или нет. То есть непонятно, какая у тебя в целом структура кода. По-моему ключевым решением тут было бы, например, хранение данных в иммутабельных объектах, чтобы нахаляву получить историю и откат, ну и что-то эвент бейзед с каналами, чтобы не было коллбэк хэлл. А сверху приправить монатками чтобы грациозно ловить фейлы от внешних сервисов ладно шучу
Аноним 04/11/16 Птн 02:02:01 #85 №869486 
91d70a16be8f8061d4c91e803c4049e5.jpg
>>869446
GOF Strategy Pattern
Аноним 04/11/16 Птн 03:34:15 #86 №869508 
>>869486

> @strategy ||=

забыл, а то ведь >>869446 недогадается, и потом: "кококо где память, Зин"
Аноним 04/11/16 Птн 16:09:50 #87 №869726 
>>869508
я не стал мемоизировать, потому что status может поменяться, а #strategy будет возвращать неправильный объект.
Аноним 04/11/16 Птн 17:43:02 #88 №869754 
>>869726

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

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

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

реализацией транзакций и валидаций.
Аноним 04/11/16 Птн 17:58:45 #89 №869758 
>>869754
Кстати да, спасибо. Будет время отрефакторю, там еще много дерьма всякого (
Аноним 04/11/16 Птн 19:35:31 #90 №869810 
>>860724 (OP)
Привет ребята! Я психолог кун, вкатываюсь в жс и заодно хочу написать о связи популярных языков (петон, раби, жиес) с нетрадиционной сексуальной ориентацией.
Есть готовые поделиться своим опытом разработки?
Аноним 05/11/16 Суб 00:19:23 #91 №869916 
Допустим есть паблик метод, который вызывает приватный
get(args)
request(
args, method: :get) #приватный
end
Как запретить вызов get(1,2, method: :post) ?
Или я придумываю себе проблему на пустом месте и можно просто в доках написать какие параметры можно передавать в метод get и не париться ?
Аноним 05/11/16 Суб 02:01:08 #92 №869945 
>>869916
args.merge(method: :post)
Аноним 05/11/16 Суб 05:03:44 #93 №870019 
Как бля засетапить нормально реакт-редукс хуюкс на рельсах?
Примеров в нете нету, только пустой репозиторий на гите с каунтер аппом. Я даже не могу сделать чтобы js.erb говно работало.
Аноним 05/11/16 Суб 09:42:45 #94 №870070 
>>870019
react on rails?
Аноним 05/11/16 Суб 10:03:04 #95 №870085 
>>869945
Спасибо, сам до такого же додумался.
Аноним 05/11/16 Суб 10:59:21 #96 №870130 
Как вкатитьсяя джуном в ДС2, если вакансий нет ? Знаю rails 5, devise/bcrypt, rspec/capybara, знаю bootstap 3, jquery (Ui тоже), scss. Скоро буду изучать либо реакт, либо ангулар (склоняюсь к последнему). На мида не потяну - инфа сотка, но вот что джунить смогу, уверен. Так как вкатиться?
Аноны, поделитесь исторями успеха, а то в дизморали нахожусь.
Аноним 05/11/16 Суб 12:18:48 #97 №870181 
>>870130
спами повсюду свое резюме, даже если в вакансиях ты ненужен, если есть интересное портфолие то могут предлоть чтоолибо
Аноним 05/11/16 Суб 13:37:46 #98 №870200 
>>870070
Бля еще читать, у меня уже вкладок 15 схоронено с документацией. Конечно когда-то дойду до них, но сейчас мне бы хоть разобраться, пилить фронт нужно полностью на реакте, или только компоненты с ебанутой логикой?
А то я попытался запилить примитивный хедер в котором одни кнопки у юзера и другие у гостя и соснул.
Хедер это вообще компонент или контейнер?
Аноним 05/11/16 Суб 14:24:55 #99 №870217 
68747470733a2f2f636c6f75642e67697468756275736572636f6e74656[...].png
Анонас а есть такой плагин для атома который будет предлагать автокомплит на основании rdoc/yard документации, и чтобы это работало для всех гемов а не только для файлов проекта?
Аноним 05/11/16 Суб 14:32:27 #100 №870219 
>>870217
Аноним 05/11/16 Суб 15:28:36 #101 №870254 
>>870200
Можно и так, и так. Можно даже несколько рутов иметь. Не еби мозг, делай все через реакт.
Аноним 05/11/16 Суб 15:37:25 #102 №870258 
>>870254
Да бля
Вопрос офк не в программач, но я не ебу как
Передаю я допустим в компонент обьект юзера. Это просто джейсонина с данными из модели
Если мне нужно в компоненте чекнуть значения каких-то методов модели, передавать их отдельно?
Ну это хуита, вот другое, пытаюсь ебануть js.erb чтобы хоть урлы забрать из аппа, инстантли сыпется и говорит browserify error import or export can be included only within sourcetype module.
И в гугле нихуя по этому поводу нету
Аноним 05/11/16 Суб 16:14:57 #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-секунд на акшен вовзращающий стейт авторизации и на клиенте соответствующим образом реагировать.
Аноним 05/11/16 Суб 16:19:17 #104 №870292 
>>870286
У тя это говно ентерпрайз, или дашь попалить?
Аноним 05/11/16 Суб 16:57:56 #105 №870319 
>>870258
В реактовом компоненте чекнуть "значения методов" рубиновой модели? Ээ?
Аноним 05/11/16 Суб 17:25:27 #106 №870340 
>>870319
Ну дык
Я же говорю
Есть обычный фронт на аштиемеле
Там я вывожу Х если у юзера одно говно или У если другое
Чтобы ебануть эту же проверку в реакте, нужно датой в компонент передавать результат этой проверки, так?
А что если в разных кейсах я передаю от 0 до кастомного числа таких проверок?
Аноним 05/11/16 Суб 18:23:35 #107 №870387 
>>870340
Ты дичь какую-то несешь. Передавай на клиент своего юзера жсоном, и там уже, на клиенте, делай с этим жсоном какие хочешь проверки. Если у тебя проверки только на сервере могут быть сделаны, то шли запрос на сервер, жди ответа, обнновляй состояние. Я вообще не понимаю, в чем у тебя проблема. У меня такое чувство, что ты хочешь руби-код с сервера на клиенте исполнять, или я не ебу, что еще.
Аноним 05/11/16 Суб 18:45:16 #108 №870406 
>>870387
Не, нихуя
Самое элементарное, у юзера есть метод xuesos?
Который пляшет не от поля в модели, а от какой-то другой хуиты. Когда я передаю юзера в компонент, и хочу заодно в компоненте чекнуть xuesos? ли он, тогда нужно ретурн велью xuesos? передавать отдельно, так?
Предположу что так, тогда смотрим дальше
Если юзера вообще нет, я хочу рисовать две строки
Если есть, три, а если есть и хуесос то четыре
Мне в пропс нужно передавать всегда все эти значения ("типа" если юзер есть, то это user: user, xuesos: user.xuesos?) а если нет, то чтобы на клиенте это чекнуть все равно нужно передать и то и то в пропс, но пустое. Так?
Сорри если хуево обьяснил
Аноним 05/11/16 Суб 18:54:39 #109 №870414 
>>870406
> Нихуя
> Хуесос
> Хуеты
> Хуево
Блядь, чувак, тебя в детстве батя выебал, или что? Ебаный стыд же, господи иисусе!

Ты передаешь компоненту все, что ему надо для рендеринга, а уж откуда и как - это твое дело. Ну или я нихрена не понял, что ты спрашиваешь, пусть тебе кто-нибудь еще посоветует, короче, я не врубаюсь, сори.
Аноним 05/11/16 Суб 18:58:41 #110 №870419 
>>870414
Деградирую, уже не могу нормально выражаться, что я сделою. Прогать на рельсах ни разу не стимулирует мозговую активность я тебе скажу
Аноним 05/11/16 Суб 19:07:24 #111 №870432 
>>870419
Попробуй literate programming, пока манагер не видит!
Аноним 05/11/16 Суб 20:02:37 #112 №870470 
>>870217
бампули
Аноним 06/11/16 Вск 01:30:12 #113 №870635 
Еее, я разобрался со структурой. Следующий вопрос, должна быть возможность писать js.erb файлы с реактом или нет? Пушта у меня это не работает, а в теории должно, сначала же рельсы делают из ерб обычный жс, а уже тогда этот жс компилится в browserify, нет?
Аноним 06/11/16 Вск 03:44:35 #114 №870680 
>>870635
По ходу нет. Окей. Придумал следующий гениальный костыль. Написать хелпер типа link_helper.js который возвращает хеш внутри которого хеши по скоупам, внутри которых пары ключ - урла. После чего инклюдить этот хелпер в компонентах и юзать урлы оттуда. Очевидно что для этого я ембеддед руби тоже не заюзаю, значит надо как-то генерить его из роутов. Я чекнул пару результатов по generate asset rails и generate file rails но там не то. Эни айдиас? Или это вообще не нужно?
Аноним 06/11/16 Вск 04:26:31 #115 №870684 
>>870286
react on rails юзаешь?
Аноним 06/11/16 Вск 04:27:46 #116 №870686 
>>870635
ты неправильно готовишь реакт с рельсами. ВООБЩЕ СУКА НЕПРАВИЛЬНО 100500 ТУТОРИАЛОВ БЛЯТЬ ЕСТЬ
Аноним 06/11/16 Вск 14:08:28 #117 №870812 
>>870686
Где же они? Чет я нихуя не нашел кроме каунтер аппа, аппа для учета расходов и говночата, и все 2-3 летней давности, а самое примитивное вообще не обьясняется
Аноним 06/11/16 Вск 14:11:46 #118 №870813 
>>870812
инбифо у меня должен быть СПА без ссылок
Аноним 07/11/16 Пнд 16:34:31 #119 №871579 
В ньюфаг-треде мне посоветовали Ruby для самого быстрого вката во фриланс за еду. Вы согласны с этим?
Аноним 07/11/16 Пнд 16:38:53 #120 №871580 
>>871579
html сначала выучи лол
Аноним 07/11/16 Пнд 16:44:59 #121 №871586 
>>871580
Обязательно? Основы программирования и ООП я уже знаю, пишу на крестах, но деньги понадобятся раньше, чем я смогу их заработать плюсами.
Аноним 07/11/16 Пнд 17:04:05 #122 №871603 
>>871586
Ну, я хз как можно вкатиться в рельсы, не зная html. Ты тупо не поймешь о чем идёт речь. Потрать недельку на втыкание в htmlbook и написание бложика.
Аноним 07/11/16 Пнд 19:46:11 #123 №871684 
>>871579
> Ruby
умирает
> фриланс
умирает
> для самого быстрого вката
умирает

Бери Haskell
Аноним 07/11/16 Пнд 20:19:36 #124 №871709 
>>871684
чувак из вселенной, где трамп выигрывает пост президента.
Аноним 07/11/16 Пнд 20:25:36 #125 №871712 
>>871684

Склонен согласится, с этим философом, всё что рождено, но не умерло — умирает.
Аноним 07/11/16 Пнд 22:32:52 #126 №871831 
>>871709
Если-таки выиграет, сядешь Haskell зубрить?
Аноним 07/11/16 Пнд 22:44:30 #127 №871844 
>>871831
Блядь, что-то мне не нравится такая связь между хаскелем и трампом. Трамп - это пхп. А Хиллари - это джава, угу.

мимо
Аноним 07/11/16 Пнд 22:56:28 #128 №871855 
>>871844
Они оба/обе за галерный аутсорс, так что нахуй их с пляжа!
Я лично буду молиться за либертарианского кандидата Джилл Стайн.
Аноним 07/11/16 Пнд 22:59:35 #129 №871860 
>>871579
Нет, учи Mercury и LambdaProlog.
Аноним 07/11/16 Пнд 23:03:12 #130 №871869 
>>871855
У тебя же нет гражданства США.
Аноним 07/11/16 Пнд 23:03:48 #131 №871871 
1370854627412776286.jpeg
tim-cook416x416.jpg
>>871684
>Ruby
>умирает

http://githut.info/

https://github.com/blog/2047-language-trends-on-github

Аноним 07/11/16 Пнд 23:07:49 #132 №871877 
>>871871
Даже цсс популярнее руби, лол. А ведь он даже не тьюринг полон! Wait... OH SHI~
Аноним 07/11/16 Пнд 23:10:49 #133 №871881 
>>871877
Ясно что будет, кроме него не как не покрасить сайт

Руби безумно популярен и в вебе и просто в софте
Аноним 07/11/16 Пнд 23:23:02 #134 №871899 
rofl01.jpg
>>871871
Там же инфа за 14 и 15 год.
Аноним 08/11/16 Втр 01:05:18 #135 №871972 
Я вот думаю чтобы нахуй отсоединить фронтенд от рельс. Пробовал кто? Думаю юзать React On Rails + Semantic UI React для быстрого прототипирования
Аноним 08/11/16 Втр 02:20:37 #136 №871990 
>>871972
По-моему тебе еще неделю (или сколько там) назад об этом говорили.
Аноним 08/11/16 Втр 09:12:36 #137 №872057 
>>871972
вот этот хуй пили нечто подобное
http://alexfedoseev.com/post/55/react-and-rails-isomorphic-awesomeness
Аноним 08/11/16 Втр 16:03:03 #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 всякие? :(
Аноним 08/11/16 Втр 16:15:47 #139 №872237 
>>872229
NADO BYHNYT' i YSPOKOITCYA. I NI HADO GOVORIT' CHTO SDOHNESH OT CHAYA
Аноним 08/11/16 Втр 16:34:06 #140 №872251 
>>872229
Потому что скул запросв надо писать, сюрприз, на скуле, а не ебаться с ненужными слоями "абстракции".
Аноним 08/11/16 Втр 16:38:15 #141 №872255 
>>872237
>>872251
спасибо, но ведь абстракции были для удобства сделаны, наверняка можно что-то сделать, просто я ещё не знаю как
Аноним 08/11/16 Втр 16:40:17 #142 №872257 
>>872237
что?
Аноним 08/11/16 Втр 17:42:12 #143 №872332 
>>872255
А тв на сгенеренную строку смотрел?
Аноним 08/11/16 Втр 17:48:55 #144 №872335 
>>872332
я не знаю как смотреть, в консоли? И что мне даст смотренье на неё?
Аноним 08/11/16 Втр 18:17:59 #145 №872352 
>>872229
Всё, я понял, надо использовать includes вместо joins.
Аноним 08/11/16 Втр 18:19:13 #146 №872353 
>>872335
Стимул пойти и выучить наконец SQL.
Аноним 08/11/16 Втр 18:45:46 #147 №872360 
Когда вообще надо использовать символы как ключи в хеше?
Т.е. например синтаксис для создания symbol: key намного приятнее но когда хеш приходит из другого источника то там обычно строки как ключи, и тогда ф-я в которой ты обращаешься по символу уже не работает. Это же больше невнятности вносит чем помогает.
Аноним 08/11/16 Втр 18:53:18 #148 №872363 
>>872360

http://apidock.com/rails/Hash/symbolize_keys

Аноним 08/11/16 Втр 18:59:07 #149 №872367 
>>872363
Ну я знаю что так можно, но какая вообще стандартная практика, когда их надо а когда не надо использовать ?
Аноним 08/11/16 Втр 19:07:33 #150 №872377 
>>872367

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

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

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

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

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

---

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

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

сделай двач.
Аноним 11/11/16 Птн 10:26:17 #155 №873888 
>>860724 (OP)
Стоит ли с Java переходить на руби?
Аноним 11/11/16 Птн 10:27:18 #156 №873889 
>>873799
Запили сайт с ачивками. Пользователь создает себе задачу "Накодить двач" или "выпилится" лол выставляет время 3 недели. Переодичски отмечая свой прогресс, пользователь получает это достижение. Потом в страничке своего профиля сможет пофапать на них. Можно сверху запилить сообщества, набры стандартных достижений, друзьяшек, ачивку дня и т.д.
Вот такое вот вэб-приложение мотиватор.
Аноним 11/11/16 Птн 10:37:47 #157 №873891 
>>873888
Нет, Руби загибается, хуже Перла уже.
HH ДС: Perl-215, Ruby-210.
Аноним 11/11/16 Птн 12:34:28 #158 №873919 
>>873888
Ну я бы не советовал. Жава господам просто неудобно будет с удобной и юзер-фредли жабы пересаживаться на руби.
Хаскель норм, даже веб на нем есть.
Аноним 11/11/16 Птн 17:50:21 #159 №874046 
>>873919
Да нету на нем настоящего веба, игрушки только.
Аноним 11/11/16 Птн 19:24:15 #160 №874107 
>>873919
Заебесся ты на нем что-то писать. Нету нормальных библиотек.
Аноним 11/11/16 Птн 20:28:10 #161 №874151 
>>874107
>>874046
почему мемы про хаскел всё ещё серьёзно воспринимаются, кек
Аноним 11/11/16 Птн 23:15:08 #162 №874238 
>>874151
Потому что утверждение "хаскель норм, даже веб на нем есть" истинно.
Аноним 12/11/16 Суб 00:52:31 #163 №874271 
>>874107
>>874151
Не писал на хаскеле ничего серьезнее хелоу ворлда.
НО знаю, что есть не мало сайтов на нем, даже борда русскоязычная на хаскеле написано. И это не шутка.
Плюс фреймворки от эрланга набирает неплохо обороты. Там свои нюансы, но производительность и скорость выше той же ноды или руби.
Имхо если вкатываться джава анону, то в какую то из этих технологий.
Опять же на руби по прежнему много работы, в ближайшее время ее не убавится, а язык все такой же приятный для пользования.)
Аноним 12/11/16 Суб 08:51:54 #164 №874353 
>>874271
Ну вот у меня и была такая мысль, заняться руби и потихоньку смотреть/изучать на эликсиры с фениксами, а там как взлетит.

Еще есть мысль в мобайл(iOS) переключиться, но не знаю стоит ли того, все таки другая область, да и не понятно как-то все будет в ближайшее время. Для себя пару приложений запилил таки.
Аноним 12/11/16 Суб 12:23:29 #165 №874392 
>>873888
Я бы не стал. Сам сейчас сижу на руби и эликсире + фронтенд. Но все эти рельсы, активрекорды, кукумберы, динамика, диалайзер-костыли меня уже доебали (а вот фронтенд в умеренных количествах нравится пописывать). Планирую перекатывать на скалу, в кровавый энтерпрайз, но понимаю, что джавой тоже придется скорее всего заниматься.
Алсо, расскажи почему вообще возникли мысли о переходе с джавы на руби?
Аноним 12/11/16 Суб 16:54:09 #166 №874566 
Меня тоже что-то заебали эти динамические языки. Первые пару месяцев это дает буст к производительности, но потом понимаешь преимущества статической типизации. Скала выглядит как донельзя перегруженная фичами жава, хаскель малопопулярен, F# тоже, C# разве что...
Ну или в совсем крайнем случае писать фронтенд на TypeScript'e. React + Redux + Immutable.js пробовал, понравилось. Да, есть бойлерплейт, но это лучше, чем метаадок рельсов.
Аноним 12/11/16 Суб 19:49:04 #167 №874704 
>>871869
Потому я буду
>молиться
а не
>голосовать
Аноним 13/11/16 Вск 14:49:18 #168 №875129 
Как мне заставить regex кушать CRLF вместо обычного \n ?
Можно конечно же gsub-ом заменить все \r\n но это же костыли.
Пиздец как я охуел когда регекс у меня один файл парсил а второй нет из-за этой хуйни.
Аноним 15/11/16 Втр 01:10:47 #169 №875787 
ahatscout.png
Анон, поясни нубу за стыковку рельс и современного фронтэнда. Для некоторых фреймворков и библиотек js не так просто даже хэлловорлд написать. Все эти транспайлеры, сборщики, менеджеры и другие инструменты далеко не всегда заводятся просто от добавления подходящего гема. На этапе изучения это становится реальной проблемой.
Имеет смысл разрабатывать фронтэнд как отдельное приложение? В отдельной IDE, с отдельным проектом и все такое. Если да, то как? Где-то еще видел инфу, что для этого отдельно имеет смысл поднять ноду и весь js делать через нее, а часть представления из рельс вообще убрать. Поделись советом.
Аноним 15/11/16 Втр 02:07:36 #170 №875818 
>>875787
Да, фронтенд отдельно. Рельсы потом можешь выкинуть и заменить на ноду\кложурьскрип.
Аноним 15/11/16 Втр 02:33:46 #171 №875828 
Если у тебя обычный круд, юзай обычный react-rails. Если нужно будет добавить redux , переходи на react on rails. Если у тебя большая тима, то имеет смысл разделить её на фронтендеров и бэкендеров, отдавать рельсам только json. 99% что тебе хватит React-Rails.
Аноним 15/11/16 Втр 10:42:59 #172 №875896 
Сап, рельсач.
Пилю фильтр на Ransack. Например, есть person у которого has_many cars и has_many bikes. Мне надо запилить чекбокс, который вернет всех person у которых есть хотя бы один байк.
ХЕЛП!
Аноним 15/11/16 Втр 13:32:47 #173 №875978 
Рельсаны, поясните пожалуйста один момент

Есть две rails-апликухи.
Первая на рельсах 4.2.6, вторая на 5.0.0
Из второй апликухи надо сделать mountable engine для первой.
Возможно ли это с сохранением версий рельс для обоих апликух?


Аноним 15/11/16 Втр 14:01:23 #174 №875994 
>>875896
ransack это антипаттерн.
Аноним 15/11/16 Втр 16:10:12 #175 №876075 
>>875129
Я про это http://ideone.com/i5Ytay
Аноним 16/11/16 Срд 18:07:07 #176 №876752 
Что скажете о геме https://github.com/globalize/globalize ?
Эта штука создает для каждой таблицы в которой надо хранить поле на нескольких языках дополнительную таблицу model_translation. Я только начал создавать бд и у меня уже есть 5 вспомогательных таблиц, которые имеют связь с основной, 4 из них должны иметь переводы. Получается надо делать джоин на 5+4=9 таблиц и это только начало, это норма или нет ?
Аноним 16/11/16 Срд 21:07:37 #177 №876856 
>>876752
Выглядит как оверинжениринг для 90% проектов. Ты что там, фейсбук пишешь? Добавь title_ru, title_en и не еби моск.
Аноним 16/11/16 Срд 23:25:40 #178 №876943 
>>876856
Так это получается надо будет костыли в виде хелперов на каждый атрибут писать вроде if current_locale == :en
Можно в модели виртуальный аттрибут запилить но это тоже немного костыльно.
Аноним 17/11/16 Чтв 12:35:40 #179 №877157 
>>876943
Но ведь можно просто через локали запилить.
Аноним 17/11/16 Чтв 14:20:24 #180 №877219 
https://github.com/Leadformance/hstore_translate попробуй еще захочеш

Как globalize, только не плодит кучу ненужных таблиц. Нужен postgres, но все и так им пользуемся, верно?
Аноним 17/11/16 Чтв 14:28:42 #181 №877222 
>>875994
Поясни
Аноним 17/11/16 Чтв 15:55:49 #182 №877275 
>>877157
Это как?
Аноним 17/11/16 Чтв 16:14:48 #183 №877283 
>>877157
I18n.t
Аноним 17/11/16 Чтв 16:17:16 #184 №877286 
>>877222
Нужно писать человеческие запросы
Аноним 17/11/16 Чтв 17:06:49 #185 №877315 
>>877219
Ты его используешь ? Просто гитхаб выглядит заброшенным.
>>877283
Если ты про локализацию в yml файлах то это не то, мне надо хранить данные на нескольких языках а не переводить вьюхи.
Аноним 17/11/16 Чтв 17:39:37 #186 №877340 
>>877315
Это работа для человека-декоратора!
class UserDecorator < SimpleDelegator
def attribute
public_send("attribute_name#{locale}")
end
end

Аноним 17/11/16 Чтв 17:42:00 #187 №877343 
>>877315
Использую на 4-х рельсах, все ок. Там кода полторы строки, если чо надо - форкни да напиши.
Аноним 18/11/16 Птн 11:42:31 #188 №877757 
>>877340
И потом разбирайся кто где продекорирован, а кто нет. Лучше уж явно это как-то сделать.
Аноним 18/11/16 Птн 16:33:36 #189 №877866 
>>863682

Видео с RailsClub 2k16:
https://www.youtube.com/playlist?list=PLiWUIs1hSNeOXZhotgDX7Y7qBsr24cu7o
Аноним 18/11/16 Птн 16:56:20 #190 №877875 
>>877866

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

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

и где сорок минут какой-то хер рассказывал про ракетовелосипедостроение и основы ооп.
Аноним 18/11/16 Птн 20:06:49 #191 №877966 
>>877757
Ну засоряй модель, удачи.
Аноним 18/11/16 Птн 21:16:14 #192 №878020 
Снимок экрана от 2016-11-18 21-13-22.png
у меня жопу рвет уже, делаю по тутору книжному, постоянно решаю какие то ребусы и ошибки, вылетающие при исполнении кода этого тутора.
ТЕПЕРЬ ТО ЧТО НЕ ТАК?
Аноним 18/11/16 Птн 21:25:48 #193 №878029 
>>878020
Ковычки
Аноним 18/11/16 Птн 21:27:20 #194 №878030 
>>878029

я пробовал и ('Demo Blog') и двойные.
Аноним 18/11/16 Птн 21:56:09 #195 №878043 
2016-11-19025439.png
>>878030
так вроде пишет что тут проебался
Аноним 18/11/16 Птн 22:02:25 #196 №878048 
>>878043

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

2) попробовал сменить '' на ' - та же ошибка, что и раньше. Попробовал скопировать код из книги без своих изменений(Demo Blog -> SampleApp) - нихуя.
я испытываю анальные боли и желание начать изучать другой фреймворк для блистательного влива в быдлокодеры
Аноним 18/11/16 Птн 22:14:01 #197 №878055 
Снимок экрана от 2016-11-18 22-09-41.png
Снимок экрана от 2016-11-18 22-09-58.png
Снимок экрана от 2016-11-18 22-10-02.png
>>878048

в общем, нашел нестандартный солюшн.
1) нужно обновить капибару до выше, чем 2.2, посылая нахуй требования учебника в 2.1
2) нужны gem 'database_cleaner' в гемфайл,
require 'database_cleaner'
require 'capybara/dsl'
для спек и рейлс хелперов в папке /spec/
3) много ебаться.
Аноним 18/11/16 Птн 22:57:16 #198 №878085 
Есть pdf книги по Ruby?
Аноним 18/11/16 Птн 23:30:40 #199 №878101 
>>878085
бля парни rails / ruby учить уже реально поздно. вот реально, вы потом вспомните мои слова. спрос скатился на нет. инфа от инсайдера руби тусковки
Аноним 18/11/16 Птн 23:41:02 #200 №878102 
>>878101
А чо нужно учить вместо раби, мистер инсайдер?
Аноним 19/11/16 Суб 00:05:40 #201 №878119 
>>878102
Как будто ты сам не знаешь. haskell & clojure
Аноним 19/11/16 Суб 03:42:15 #202 №878154 
>>877966
Какой-то ты неумный, если для тебя декоратор здесь - серебряная пуля.
Аноним 19/11/16 Суб 07:46:14 #203 №878190 
>>877966

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

Но и это не нужно, потому что есть гем.
Аноним 19/11/16 Суб 07:55:35 #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, а при обновлении капибары файл был перезаписан и все внезапно заработало.
Аноним 19/11/16 Суб 08:06:55 #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'

нет.
Аноним 19/11/16 Суб 10:01:05 #206 №878212 
>>878194
>>878191

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

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

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

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

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

Начитался блядь книжек о паттернах, а как их использовать не понимаешь.
Аноним 19/11/16 Суб 17:52:05 #209 №878359 
>>878334
DRY в случае рельс это нередко перегиб.
То что там есть уже говно в рельсах, не значит, что нужно еще больше накидывать. У тебя весь код, нужный для presentation layer лежит в модели, да? лол, если правда.
Аноним 19/11/16 Суб 17:52:59 #210 №878361 
>>878334
А мутировать или перезаписывать методы эктиврекорда это вообще моветон, так пишут только мудаки, вдохновленные DHH
Аноним 19/11/16 Суб 18:06:33 #211 №878372 
>>878361

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

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

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

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

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

Так ты его и накидываешь, плодя лишние сущности, там где это не нужно.


Аноним 19/11/16 Суб 19:26:31 #212 №878422 
Cje9YbIWEAE44uz.jpg
>>878372
Стой стой стой, не уходи от сути. Ты считаешь, что модель должна иметь доступ к контексту I18n и вообще заниматься облагораживанием сырых данных для юзера?

Не обязательно юзать декоратор, даже хелпер будет лучше того говна, которое ты предлагаешь.
Аноним 19/11/16 Суб 19:58:28 #213 №878438 
>>878422
Чувак же изначально говорил, что у него в базе хранятся строки на разных языках, полученные от юзеров. В таком случае это не и18н в привычном понимании. Это безусловно часть модели.

мимо
Аноним 19/11/16 Суб 20:04:18 #214 №878445 
>>878438
Но ему нужно выбрать определенную строку, основываясь на текущей локали.
Аноним 19/11/16 Суб 20:06:24 #215 №878446 
>>878445
Ну? Не вижу, чем это отличается от "ему нужно выбрать определенный блог-пост, основываясь на запрошенном айди", например.
Аноним 19/11/16 Суб 20:13:23 #216 №878453 
>>878446
Он хочет модуль добавить, который автомагически будет всё делать, основываясь на текущей локали, а не вручную писать
def translated_attribute(locale)
end
Аноним 19/11/16 Суб 21:10:58 #217 №878478 
stuped.png
>>878422

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

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

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

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

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

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

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

p.s..за DRY в Rails пояснить в этот раз не забудь.
Аноним 19/11/16 Суб 22:43:28 #218 №878543 
>>878453
Ну этот модуль уже будет к контроллеру относиться, а не к модели, да. Впрочем, непринципиально.
Аноним 20/11/16 Вск 00:06:46 #219 №878577 
>>878478
>Нет, не будет
Почему нет? Хелпер явно вызывается, а декоратор мимикрирует под оригинал, и поэтому не нужен. Это экономит кучу времени и нервов в будущем.
Аноним 20/11/16 Вск 01:04:42 #220 №878619 
>>878478
Эм,
class I18nDecorator
...
end
Тверь серьёзно хочешь писать декоратор для каждоцифрового модели? Лол.
Аноним 20/11/16 Вск 01:05:03 #221 №878621 
>>878619
Для каждой модели *
Аноним 20/11/16 Вск 08:07:17 #222 №878681 
>>878577

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

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

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

>>878619

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

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

p.s. Если ты — все еще он, то, кловун, поясни чем тебе не нравится DRY в Rails (3).
Аноним 20/11/16 Вск 11:46:25 #223 №878727 
>>878681
Ткни, где тебе предлагали писать по декоратору на модель. То, что так делает драпер, не значит что декоратор везде так применяется, маня
Аноним 20/11/16 Вск 11:59:33 #224 №878732 
>>878681
>пиши всю логику модели в хелперы, он ведь явно вызывается
Если так упарываешься паттернами, нахуя тебе модель? Какая в ней логика должна быть? Ее вообще нужно заменить на датамаппер, хуесос ты диванный
Аноним 20/11/16 Вск 12:49:31 #225 №878748 
>>878727

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

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

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

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

>>878732

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

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

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

Вообщем, порвался, с придурка. В игнор, иди дальше сука плоди свое говно, вида: class UserDecorator, class OfferDecorator, class TvouaMamashaDecorator, вместо миксина и вызова однострочного метода. Да и не забывай, половину логики в хелперы пихать, чтобы твой сука, код ещё больше на лапшу походил, бог solid, блядь.
Аноним 20/11/16 Вск 13:00:01 #226 №878751 
>>878748
Че ты несешь, шизоид? Нас здесь больше двух.
Декораторы и хелперы в данном случае - альтернативы, а не дополнения друг к другу, ебанутая истеричка.
Так что там насчет датамаппера? И DRY не всегда нужен
Аноним 20/11/16 Вск 14:24:38 #227 №878796 
Лол, ооп-бляди как всегща соснули. Не могут даже строку из базы дернуть без недельного срача.
Аноним 20/11/16 Вск 14:32:07 #228 №878797 
Можно ли юзать популярные фронтендовские фреймворки (ангулярчик, реакт, эмбер) с рельсами? И как это вообще все происходит? Рельсы по сути высылают фронту только json, да? А он уже с ним ебется. Интересно просто как происходит написание сайтов на рельсах + фреймворках. Там же получается рельсовские вьюхи будут не нужны, да? И какой фреймворк посоветуете?
Аноним 20/11/16 Вск 15:01:02 #229 №878816 
>>878796
Поясни нам, далеким, как надо.
Аноним 20/11/16 Вск 16:03:31 #230 №878846 
>>878748
Мамкин DHH порвался, несите ActiveRecord::Base.suppress
Аноним 20/11/16 Вск 16:05:36 #231 №878847 
>>878748
Ты шо, даун? Это пример для одной модели же, где ты по декоратору на модель увидел ?
Аноним 20/11/16 Вск 16:07:22 #232 №878849 
>>878797
По разному можно. Самый простой способ реализовано в react-Rails. В react on rails уже юзается вебпак а рельсовый пайплайн лишь в продакшене
Аноним 20/11/16 Вск 16:22:26 #233 №878856 
head.jpeg
>>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 никто не хочет разбираться в чужом некрасивом коде, а просто начинают по сто раз изобретать один и тот же велосипед. Мне кажется, именно это и делает руби языком будущего вопреки трендам и проблемам с быстродействием.

Аноним 20/11/16 Вск 16:22:41 #234 №878857 
>>878847

будешь по-другому 2 модели декорировать? как?
Аноним 20/11/16 Вск 16:34:55 #235 №878864 
>>878856
> руби
> язык будущего
Ахахаха, ну ты и юморист, брат!

Единственная причина, почему у жс в стопицот раз больше пакетов, до ужаса проста: он в стопицот раз популярнее руби\хуюби\языкнейм, все.
Аноним 20/11/16 Вск 16:40:40 #236 №878872 
>>878857
Юзать 1 декоратор?
Аноним 20/11/16 Вск 16:41:56 #237 №878873 
React-on-rails это лучший компромисс ,из тех, что я видел.
Аноним 20/11/16 Вск 16:48:18 #238 №878880 
>>878872

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

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

Развели тут декораторы, миксины в модель, вообще охуеть.
Аноним 20/11/16 Вск 17:57:45 #240 №878935 
>>878880
> ну раз один класс, то это очевидный модуль, а раз модуль
С фига ли? Ты когда хочешь приклеить стикер с хуями к своей жопе, требуешь чтобы на все жопы лепили такие же стикеры?
Аноним 20/11/16 Вск 17:59:18 #241 №878936 
>>878932
Так вот и я о чем. Выше писал, что декоратор это просто пример, можно и хелпер, можно многое придумать, лишь бы не срать в модель как того хочет dhh-кун.
Аноним 20/11/16 Вск 18:08:55 #242 №878947 
>>878864
А может это просто люди пилят тот функционал который в нормальных языках уже есть в стандартной библиотеке?
Аноним 20/11/16 Вск 18:19:01 #243 №878958 
>>878947
Я просто жду, пока WebAssembly не станет доступным на 70%+ устройств. Пока посижу на бэкенде, устраивать анал карнавал с ЖС совсем не хочется.
Аноним 20/11/16 Вск 18:22:02 #244 №878962 
>>878947
Да без разницы, что они пилят, хоть твою мамашу своим хером. Язык популярнее => пакетов больше. Все, тхет симпл, бро. Кода на жс уже наверное больше, чем на джаве.
Аноним 20/11/16 Вск 18:25:43 #245 №878967 
>>877340
>>877315
>>878932
Пора двачу пилить свой гем, лол.
>>878958
И что тогда ? Сделают транслятор си/жабы/руби/питона в жс ? Нет, ведь тогда надо будет тащить кучу зависимостей по сети.
Аноним 20/11/16 Вск 18:26:33 #246 №878968 
>>878935

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

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

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

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

>>878932

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

class UserDecorator < SimpleDelegator

end
совсем уж уебищный, по мне так.
Аноним 20/11/16 Вск 18:27:06 #247 №878969 
>>878967
Не в JS, а в байткод webassembly.


Аноним 20/11/16 Вск 18:28:06 #248 №878971 
>>878968
Причем тут нахуй примитивы?
Аноним 20/11/16 Вск 18:32:22 #249 №878981 
>>878969
>>878958
Когда я последний раз на него смотрел, они говорили, что это не будет заменой жс в качестве компайл-таргета. Что-то изменилось? Или чего ты ждешь?
Аноним 20/11/16 Вск 18:32:55 #250 №878984 
>>878971

Почему в одни объеты ты срешь и не замечаешь, а для других объектов внезапно просыпается чистоплотность? Избирательный говноед?

Аноним 20/11/16 Вск 18:34:25 #251 №878989 
>>878962
Какой злой школьник.
>Кода на жс уже наверное больше, чем на джаве.
Я то думал что предназначение динамических языков в том чтобы писать меньше а делать больше, оказывается во вселенной джса все по-другому.
>>878969
Сути не меняет.
Аноним 20/11/16 Вск 18:36:29 #252 №878993 
>>878981
Как раз таки будет.
Аноним 20/11/16 Вск 18:37:35 #253 №878994 
>>878984
Не увиливай, примитивный. Не вижу связи между String и ActiveRecord::Base
Аноним 20/11/16 Вск 18:38:21 #254 №878997 
>>878932
Вот, двачую тебя. Только зря ты распинался перед тупарями, пускай опыт зарабатывают.
Аноним 20/11/16 Вск 18:45:01 #255 №879008 
>>878994

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

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

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

эм, ну открой тот же hstore_translate, там все задокументировано.
Аноним 20/11/16 Вск 18:54:41 #258 №879023 
>>879020
Ну ок, но он же предлагает самому замиксинить, вот это и есть самое западло.
Аноним 20/11/16 Вск 19:26:22 #259 №879058 
>>878989
> злой школьник
Самокритичненько.

>>878993
А что там с гц?
sageАноним 20/11/16 Вск 19:30:58 #260 №879066 
>>879058
> Пошли проекции от мамкоеба
Аноним 20/11/16 Вск 19:38:34 #261 №879080 
>>879058
напишешь - будет.
Аноним 20/11/16 Вск 19:39:20 #262 №879082 
>>878984
>>878984
Тебе 3 анона сказали, что ты со своими миксинами можешь идти ебаться с DHH, а ты стрелки переводишь.
Аноним 20/11/16 Вск 20:00:40 #263 №879105 
>>879066
Проекции от тебя еще в прошлом посте пошли, привет.

>>879080
Ну так именно поэтому они (авторы стандарта) и говорили, что оно не будет являться заменой жс в качестве компилейшен таргета. Где ты увидел противоположное утверждение, можешь линк доставить?
Аноним 20/11/16 Вск 20:02:10 #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

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

----

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

Но уж прости: в этот раз уж постараюсь не реагировать буду на подобные высеры, хватит уже, покормил.
sageАноним 20/11/16 Вск 20:29:49 #265 №879131 
>>879105
>Да без разницы, что они пилят, хоть твою мамашу своим хером.
Залетный петушок обитает в нашем уютном треде
Аноним 20/11/16 Вск 20:53:31 #266 №879157 
>>879107
Я от всех хуйни с локализацией и просто отпишусь о декораторах.
Декораторы в том виде в котором их зачастую используют в рельсо-комьюнити и как предлагаешь их использовать ты - это полная хуйня. Я понял бы, если создавалось много декотораторов для каждой модели, например, UserDecoratorForProfile, UserDecoratorForBilling и тд, а не как сейчас одна модель - один декоратор. При таком подходе фактически код модели размазывается на два файла, профита от таких декораторов никакого, да еще и оверхед от кучи вызовов method_missing.
Аноним 20/11/16 Вск 21:02:34 #267 №879164 
>>879157
да, презентеры полезнее.
Аноним 20/11/16 Вск 21:11:17 #268 №879170 
>>879157

Да, понял. Сильно проект большой?
Аноним 21/11/16 Пнд 06:02:14 #269 №879403 
4 года провел на одном проекте и слегка отстал от последних веяний. Как теперь деплоят? Что используют вместо фронтенда? Какие вообще новости, ребята?
Аноним 21/11/16 Пнд 17:38:24 #270 №879649 
>>879403
Все перешли на эликсир и кложурь, можешь не париться.
Аноним 21/11/16 Пнд 21:35:25 #271 №879820 
>>879403
мало что изменилось. разве что реакт добавляют на фронтенд, если jQuery стало мало.
Аноним 21/11/16 Пнд 21:35:44 #272 №879821 
>>879403
chef+capistrano, из того что я видел.
Аноним 24/11/16 Чтв 21:00:21 #273 №881636 
Аоноы, есть ли какие-нибудь видосики где создают йоба сложный проект с нуля по шагам? Хартла прочел, но там примитив
Аноним 27/11/16 Вск 05:54:59 #274 №882942 
https://repl.it/E84g/5
Поясните почему не меняются значения в хэшэ?
Нужно заменить ["1","2","3"] на ["a","b","c"], но почему-то изменения не сохраняются.
Аноним 27/11/16 Вск 11:50:23 #275 №882980 
>>881636
пиздуй на udemy, но там нужны бабосики (не рубли) платить
Аноним 27/11/16 Вск 17:26:00 #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
Аноним 27/11/16 Вск 22:00:14 #277 №883269 
Аноны, нид хелп.
Как выполнить действие точно при наступлении конкретной даты и времени указанного в поле бд. Поясню на примере: есть приложение для мониторинга выполнения задач. Создаем задачу, устанавливаем дату+время до которого задачу надо выполнить. Позже при наступлении указанного времени надо проверить завершена ли задача, если нет, надо отправить email о том что сроки нарушены.
Из очевидного приходит в голову дергать бд каждые n минут, но возникает подозрение что это немного костыльно. Алсо задания могут создаваться отдельным приложением к оторому я не имею доступа.
Аноним 27/11/16 Вск 22:14:54 #278 №883280 
>>883269

def date
@date ||= db_get_attr
end
Аноним 27/11/16 Вск 22:16:59 #279 №883282 
>>883280

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

Чтобы действие выполнять по сроку пощупай cron обертку какую.
Аноним 27/11/16 Вск 23:00:43 #280 №883316 
>>883282
Меня интересовало можно ли это сделать на уровне бд, что-то вроде триггеров.
Аноним 27/11/16 Вск 23:30:52 #281 №883345 
>>883316

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

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

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

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

Всё что нужно, аккуратно выбрать пару гемов.
Аноним 28/11/16 Пнд 00:14:42 #282 №883385 
>>883269
>>883269
ActiveJob
Аноним 28/11/16 Пнд 00:21:48 #283 №883389 
>>883345
Ну я уже вижу баг - а что если время окончания задачи поменяют уже после того как менеджер проверил задачи ?
Алсо я говорил о задачах которые таски в проекте (для управлениями которыми созданы basecamp/jira/trello)
>>883385
Вот этой штукой я буду отправлять email, с этим вообще проблем нету, вопрос то не в этом.
Аноним 28/11/16 Пнд 01:35:01 #284 №883412 
>Programming Ruby (The Pragmatic Programmers Guide)
Ничего что книжке почти 4 года а язык модный современный развивающийсянет?
Аноним 28/11/16 Пнд 01:49:23 #285 №883417 
>>883389

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

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

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

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

Идея та же самая, но нужен интерфейс для определения состояния тасков. Если его нет, как вариант, подмешивать в таск модуль с методом status для работы с ad-hom айпи basecamp/jira/trello и и т.п. сервисами.
Аноним 28/11/16 Пнд 02:36:24 #286 №883431 
>>883417
Это нужно решать в интерфейсе, а не на уровне базы данных. Если проверяется, то заблочить все изменения нах.
Аноним 28/11/16 Пнд 04:22:03 #287 №883455 
>>883269
Ты даже не сказал, какая у тебя субд, но при этом спрашиваешь, как это сделать на уровне дб.
Аноним 28/11/16 Пнд 20:11:24 #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
ЧТо я упускаю?!
Аноним 28/11/16 Пнд 20:26:05 #289 №883814 
>>883808
Блять, код контроллера в студию.
Аноним 28/11/16 Пнд 20:39:07 #290 №883821 
>>883808

фикстуры для среды тестирования не забыл?
Аноним 28/11/16 Пнд 23:33:41 #291 №883946 
>>883814
>>883821
Разобрался, там вышла путаница в конструкторе.
Говнокода того. Выборка из базы в переменную, удаление записи и рендер переменной. Рспек получается ее не видит и не рендерит.

Аноним 30/11/16 Срд 00:20:29 #292 №884660 
Рубаны, поясните за RubyMine. Почему его так не долюбливают? Пытался юзать vim, emacs, atom - всё это опенсорсное говно, сколько не допиливал, всё равно чего-то не хватает, а в RubyMine всё из коробки. Ну да нужно платить, пожалуй единственный минус
Аноним 30/11/16 Срд 00:23:32 #293 №884663 
>>884660
недолюбливают*
очевидный фикс
Аноним 30/11/16 Срд 00:46:36 #294 №884672 
>>860724 (OP)
На RubyMotion можно писать под Android. Шапка обновляется вообще?
Аноним 30/11/16 Срд 02:13:29 #295 №884691 
>>884660
Юзай что тебе удобно и всё.
Аноним 30/11/16 Срд 05:07:41 #296 №884724 
>>884660
Раньше он тормозил пиздец, да и юзали его в основном спермоблядки.
Аноним 30/11/16 Срд 17:08:53 #297 №885106 
14641125753760.jpg
>>884672

>Принимаются изменения в шапку треда в виде пулл-реквестов:
>https://github.com/meoweg/2ch-pr-ruby
Аноним 02/12/16 Птн 14:05:42 #298 №886289 
Привет всем. Кто нибудь использовал монгоид ?

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

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

Мне нужно получить наименования всех товаров всех магазинов заказанных пользователем в плоском списке из любого места в иерархии.
То есть, я должен по пути, включающем в себя как массивы, так и вложенные документы, выдать от произвольного embedded документа список значений полей.
Аноним 02/12/16 Птн 15:04:51 #299 №886323 
>>886289
Используешь монго для описания реляционных отношений - страдай. Если при этом ты используешь embedded массивы и/или embedded сущности, которые описывают объект, связанный не только со своим родителем - ты дебил. Если у тебя еще и вложенность многоуровневая - ты просто космический дебил, извини.
Аноним 02/12/16 Птн 17:02:15 #300 №886415 
>>886323
Извини, эту хуйню не я придумывал, я тут человек маленький, и стиль нашей великой разработки "Лучшей команды в компании" мне оспаривать запрещено.
Аноним 04/12/16 Вск 00:02:48 #301 №887320 
soprano-psy.jpg
Анон, помогай. Короче в рельсах хочу сделать конфиг для класса, чтобы можно было писать

```
# 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, какие-то хуки там есть, но так и не разобрался, как это работает и применимо ли к этой задаче. Анон, что можно сделать?
Аноним 04/12/16 Вск 01:11:16 #302 №887352 
>>887320

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

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

и опиши юзкейс, когда ломается.
Аноним 04/12/16 Вск 02:43:35 #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

Аноним 04/12/16 Вск 13:54:55 #304 №887559 
>>887352
>>887393
Большое спасибо тебе, анон! to_prepare решило мою проблему.

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

Первый твой способ не заработал хотя я не понял в чем его суть.
Аноним 04/12/16 Вск 20:27:21 #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). Если вдруг решишь поиграться, то прости код писал вслепую, могут быть ошибки.

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

---

Ну а потом, я слепое, прочитал что ты на самом деле спрашивал и полез смотреть в рельсу…
Аноним 05/12/16 Пнд 14:02:40 #306 №888384 
360fx360f.png
256fx256f.png
Двач, а как лучше реализовать связь между таблицами когда в одном случае надо сделать C->B->A а в другом случае напрямую C->A , потому что иногда записи в таблице B, которая связанна с записью в A просто не существует. Конкретно бд связана со скинами в игре  cs:go. Возьмем например Desert Eagle | Бронзовая декорация, тут Desert Eagle - базовый предмет(оружие), Бронзовая декорация - название скина(который влияет на внешний вид но не характеристики предмета). Соответственно информацию о самом предмете храним в таблице A, а о скине в отдельной таблице B, потому что скинов для одного вида оружия может быть много. Проблема в том что существуют предметы для которых в принципе нету скинов они сами по себе предметы которыми можно обмениваться (т.е например Desert Eagle отдельно без скинов вообще не существует но есть например ключ для открытия кейсов который можно обменять)
Аноним 05/12/16 Пнд 16:17:44 #307 №888484 
>>888384
Тут либо STI (как самое простое), либо полиморфная связь.
Аноним 06/12/16 Втр 01:56:21 #308 №888895 
Посоветуйте толковый планировщик задач. С функцией выполнения задачи в определенное время и эту задачу может ставить пользователь. + возможность повторять задачу.

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

Решил остановиться на sidekiq + sidetiq. Но последний оказался... каким-то конченным. Всем подходит (даже при факапе может "задним числом" выполнять и вебинтерфейс няшный), но вот, сука, выполняет задачу сразу после запуска, хотя она поставлена на опр. время. Как будто там собственный таймер и вообще хуй проссышь, че и как там. Issues дохуя и не мейнтейнится активно.
Аноним 06/12/16 Втр 10:43:58 #309 №889016 
Уволился с работы, устроился на новую. Скоро мб снова буду тут тусить.
ОП предыдущих тредов
Аноним 06/12/16 Втр 14:35:44 #310 №889162 
>>888895
Sidetiq не нужен, юзай sidekiq-cron, самое толковое.
Аноним 06/12/16 Втр 15:14:43 #311 №889200 
>>889162
сунь себе свой sidekiq-cron в пердачелло

rufus-scheduler - годнота
Аноним 06/12/16 Втр 15:42:52 #312 №889217 
>>889162
Спасибо, по сравнению с sidetiq прям годнота из коробки, еще и проблем с дублированием нет.

>>889200
Но он на базе rufus-scheduler, хули ты.
Аноним 06/12/16 Втр 15:47:43 #313 №889222 
Есть модель Period, User и PeriodActivity

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

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

Схема:
User has_many PeriodActivities
Period has_one PeriodActivity
норм?
Аноним 06/12/16 Втр 16:23:26 #314 №889230 
>>888384
> Тут либо STI (как самое простое)
Я что-то вообще не пойму как его тут использовать.
> либо полиморфная связь.
А вот это то что надо, похоже.
sageАноним 06/12/16 Втр 16:53:00 #315 №889245 
>>889200

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

говнокод, хотя и работает.
Аноним 06/12/16 Втр 22:28:10 #316 №889503 
polymorphic.png
Хотя как поле назвать тогда?
В гайдах у них pictures -> imageable_id, у меня item -> ?
Аноним 07/12/16 Срд 03:04:22 #317 №889635 
>>889503
skinnable?
Аноним 07/12/16 Срд 10:34:44 #318 №889711 
>>889635
Но ведь skinnable имеет смысл только когда связь с таблицой skins, а в другом случае получается вообще itemable ?
Аноним 09/12/16 Птн 19:49:23 #319 №891249 
linuxstaticperformance.png
Может кто-нибудь книгу подсказать, она именно по ruby (не rails), типа ебанутая книга какая-то, тут еще говорили, что крышак от нее может съехать, если вдумчиво изучать. Сорян, больше ничего о ней не помню.
Аноним 09/12/16 Птн 19:51:23 #320 №891255 
>>891249
> крышак от нее может съехать
Может это все-таки была книжка про жс, а не про руби?
Аноним 12/12/16 Пнд 01:28:39 #321 №892811 
Чо за эликсир скажете, рубаны?
Аноним 12/12/16 Пнд 01:39:30 #322 №892815 
>>892811
Недавно на него съебал, оче годно. Единственный минус - молодая экосистема, поэтому многое приходится писать самому, но так как комьюнити достаточно активное - то это временная проблема и уже не так ощутима, как, например, год назад.
Аноним 12/12/16 Пнд 15:40:56 #323 №893046 
Анон, как определить, на каком языке написан сайт, если это php, то там сразу видно, тоже самое и про js. Но, как определить, что это питон или руби.
Простите, за глупый вопрос.
Аноним 12/12/16 Пнд 15:50:22 #324 №893050 
>>893046
Там сразу видно.
Аноним 12/12/16 Пнд 15:59:57 #325 №893055 
>>893050
Можешь привести примеры, если не трудно?
Аноним 12/12/16 Пнд 17:44:28 #326 №893124 
>>893055
Давай сначала ты, если не трудно. Как определяешь - php или js?
Аноним 12/12/16 Пнд 18:13:31 #327 №893143 
>>893124
Заранее хочу оговорить, что я еще на стадии изучения Ruby, RoR и метапрограмирование не изучено. html знаю но не 5.
php сам говорит, что сайт написан на нем, а в js все действия (Не только анимация.) выражены через оные скрипты.
Если что, то я смотрю, через просмотр кода браузера.
Аноним 12/12/16 Пнд 20:41:27 #328 №893232 
>>893143
wappalyzer
Аноним 12/12/16 Пнд 21:14:17 #329 №893247 
>>893232
Спасибо.
Аноним 13/12/16 Втр 01:50:49 #330 №893373 
Анон, есть ли смысл учить рельсу? Судя по тырнетиками популярность падает и пик популярности прошел.
Аноним 13/12/16 Втр 20:08:49 #331 №893753 
>>893373
ну иди в ноду, коль тебе хайп нужен.

когда закончишь ебаться с конфигами, отпишись
Аноним 13/12/16 Втр 20:36:44 #332 №893763 
>>893753
>с конфигами ебаться
ты че это раскукарекалась руби-мразь
Аноним 13/12/16 Втр 20:39:06 #333 №893769 
>>893763
нодошваль пригорела

Аноним 13/12/16 Втр 20:52:52 #334 №893780 
>>893769
вас рубиблядков, давно пора из списка вычеркнуть, паскудники ебаные
Аноним 13/12/16 Втр 21:50:12 #335 №893816 
>>893780
чо за список?
ругби маня 14/12/16 Срд 01:15:59 #336 №893948 
Стикер
Книга по руби переведена на рус.
покупать я ее конечно не буду, но прочитать - бы прочел
Есть "Электронная версия" на том же сайте издателя.
Если кто найден - закидайте линками.

http://www.piter.com/collection/new/product/ruby-obektno-orientirovannoe-proektirovanie
Аноним 14/12/16 Срд 08:32:13 #337 №894029 
>>893948
Съеби отсюда.
Аноним 15/12/16 Чтв 00:30:48 #338 №894466 
1.jpg
Анон, расскажи или дай хороший пример или статью про так делать FormObject. Видел кучу примеров, типа как на пикрелетед, но это не то и слишком поверхностно, не решает реальных задач, для которых действительно был бы полезен форм-обжект. Всегда речь идет только о создании, апдейта нет. Постоянно пытаются впихнуть этот Virtus кстати, поясни за него, анон, есть ощущение, что это раздутая магическая еба, не понятно как быть с валидациями (оставлять в моделях или уносить в FO, есть разные подходы), не понятно как быть с has_many вложенностью. И тд и тп.
Аноним 15/12/16 Чтв 01:44:58 #339 №894495 
>>894466
Валидации конечно должны быть в FO, иначе весь смысл проебывается, а смысл - не нагружать наследников ActiveRecord::Base всякой ебалой, которой там не место, это должен быть всего лишь маппинг к ряду в базе со скоупами и ассоциациями. По поводу того как быть has_many, прелесть FO как раз именно в том что ты что хочешь то и делаешь, код же экспликтный никаких колбэков и прочей хуеты. Попробуй создать свой форм объект без использования каких-либо гемов, чтобы понять суть, вот какой интерфейс сочтешь логичным и приятным такой и пили. Сорян если сумбурно
Аноним 15/12/16 Чтв 01:46:29 #340 №894496 
>>894466
А виртус действительно раздутая магическая ебала, особенно неебический интерфейс коерций, который нахуй никому не сдался
Аноним 16/12/16 Птн 00:44:29 #341 №895073 
>>894495
А может можешь дать пример какой-нибудь из практики?
Аноним 17/12/16 Суб 04:03:32 #342 №895741 
Dry-types.
Аноним 17/12/16 Суб 14:13:31 #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
Аноним 17/12/16 Суб 14:14:03 #344 №895868 
>>895865
В разметку не умею, сорян
Аноним 17/12/16 Суб 15:50:29 #345 №895920 
Хм, пацаны, а как быть в простой ситуации - есть меню в layout, там перечислены статьи из базы. Причем статьи меняются очень редко.

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

Кешировать это все? Это нужно in-memory базу или че? Built-in решения есть?
Аноним 17/12/16 Суб 16:15:30 #346 №895931 
>>895920
во вьюхе cache(articles) do
Инвалидироваться будет автоматически
Аноним 17/12/16 Суб 18:57:50 #347 №896016 
>>895920
Built-in решения есть?
Да, есть http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-memorystore и потом >>895931
Аноним 18/12/16 Вск 00:09:37 #348 №896263 
А как успешные рубисты автоматизируют запуск различных серверов/фоновых задач (postgre/redis и т.д.) в девелопменте, как я понял есть всякие chef / capistrano но они для развертывания в продакшене ? Открывать по сотне вкладок в терминале для запуска всего этого добра как-то неправильно.
Аноним 18/12/16 Вск 00:54:42 #349 №896277 
>>896263
так все это дерьмо фоновыми демонами же всегда крутится в системе (как именно - зависит от конкретной ос)
Аноним 18/12/16 Вск 01:45:42 #350 №896314 
>>895865
Спасибо.
Пару вопрос, если можно:
- Зачем там Virtus?
- Почему объекты передаются в инициалайзере, а параметры в сабмите. Почему не наоборот? Просто если наоборот, то форму можно использовать как `form.valid?`, а так можно использовать только `form.submit(params)`.
- Что на счет практики сохранения в FormObject - стоит ли ее там держать или лучше уносить в ServiceObject?
Аноним 18/12/16 Вск 01:58:47 #351 №896322 
>>896314
- Можно без виртуса, но с ним удобнее (есть более приятные альтернативы, гугли)
- И там и там нужно. Представь что у тебя модель с дефолтом, при инициализации этот дефолт должен быть в атрибуте форм объекта, при этом сабмит - это отдельная операция сохранения, переданный параметр должен опять записаться в атрибут
- Нет никаких форм объектов или сервисных объектов, эти ограничения и рамки ни к чему, есть просто plain old ruby objects, где и как считаешь нужным так и сохраняй
Аноним 18/12/16 Вск 02:33:03 #352 №896341 
>>896322
1. Просто в примере он не используется. Как раз сейчас читал про dry-types упомянутый выше. И чет прихуел от их dry-проектов.
2. Э нет. Форма - работает с формой мне больше нравится слово input. Если есть дефолты, то они на ней и должны быть определены. А сабмит да, операция сохранения (которой в некоторых реализациях может не быть) и объекты нужны только ей. До момента сохранения мы абстрагируемся от хранилища.
3. Ну речь же про паттерны. Вот форм-обжект это недообъясненная вещь. Возможно даже недопаттерн. Я так понял, что это composition-pattern, но обросший особенностями конкретного применения в рельсах. Я для себя понял это так: форм-обжект про композицию и валидацию, сервис-обжект про процесс. В простых случаях, когда нужна только персистенция, мы можем процесс сохранения добавить в форм-обжект. Если процесс чуть более сложен , то его стоит уносить в другое место.

Не спора ради, а понимания для, анончик.
Аноним 18/12/16 Вск 10:23:16 #353 №896408 
>>896263
foreman/docker. Докер моднее и в последствие удобнее, если у тебя будет большая команда, форман намного проще настроить.
Аноним 18/12/16 Вск 13:20:53 #354 №896470 
>>896341
1) В примере используется, смотри attribute
2) В твоих словах есть смысл, а теперь представь что эта же форма используется для апдейта и ты закидываешь туда готового юзера например. Атрибуты должны подхватиться для отображения ДО того как ты вызвал submit, потому что какой нахрен сабмит, еще ничего не показывали
3) Я бы рассказал что паттерны не нужны, но закидают помидорами, поэтому попробую ответить на твой оригинальный вопрос: если бы атрибуты сохраненного объекта приходили из юзер инпута, я бы сохранял в форм обджекте, если из моей же системы и мне не нужно ничего валидировать то в сервис обджекте
Аноним 18/12/16 Вск 13:21:47 #355 №896472 
>>896470
не показывали = не сабмитили
фикс
Аноним 18/12/16 Вск 13:26:09 #356 №896479 
>>896408
> 2017
> Докер
> Ебаться с орекстрированием, пробросом портов, персистенцей
Расслабься хипстерок, все уже забили на твой докер, мода прошла, можно больше не вставлять везде
Аноним 18/12/16 Вск 13:42:50 #357 №896485 
>>896263
https://github.com/ddollar/foreman
Аноним 18/12/16 Вск 21:53:52 #358 №896775 
>>896470
>Атрибуты должны подхватиться для отображения ДО того как ты вызвал submit
Бля, вот я пиздоглазый, ты прав.
Благодарю за разъяснения, анон.
Аноним 18/12/16 Вск 22:15:39 #359 №896784 
>>896479
>пробросом портов
одна строчка в docker-compose
>персистенцей
пол строчки volumes
>орекстрированием
значение знаешь?

>Расслабься ку-ка-ре-ку!
Так бы сразу сказал что нюфаг и не осилил. Но лучше подразберись, а то скоро без знания докера вакансий не останется, только пхп-параши драить разве что.
Аноним 18/12/16 Вск 23:21:07 #360 №896853 
>>896784
> docker compose
> одна строчка

Блог деплоил, девопс мамин?
Уже давно все поняли что докер это параша https://news.ycombinator.com/item?id=12872304
Аноним 20/12/16 Втр 00:26:05 #361 №897291 
Если уже знаю пару ЯП, и представляю что такое ООП, и всё такое, подойдёт ли learnxinyminutes для ознакомления с синтаксисом? Или в руби есть особые подводные камни?
Аноним 20/12/16 Втр 02:30:44 #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 скрипт файл - не ругается.
ЧЯДНТ?
Аноним 20/12/16 Втр 13:37:13 #363 №897485 
>>897291
Если тебе нужно понять поверхностно код на руби, то подойдет. Если хочешь начать писать на нем как можно быстрее, минуя подводные камни, то не подойдет.
Аноним 20/12/16 Втр 14:25:22 #364 №897511 
Я нуб, пилю закрытый сайт уютненького сообщества с регистрацией по инвайтам и элементами социальной сети. На сайте есть пользователи, некоторые пользователи могут быть админами. Возможно потом добавятся и другие роли.

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

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

Также советую эту книжку https://pragprog.com/book/adrpo/ruby-performance-optimization
Аноним 20/12/16 Втр 21:09:24 #367 №897781 
>>897511
1) Норм.
2) Точно также, через seeds
Аноним 22/12/16 Чтв 22:41:19 #368 №899099 
Мёртвый тред мёртвого языка.
Аноним 23/12/16 Птн 15:13:00 #369 №899494 
>>899099
Пока мне за него деньги платят - не мертвый
Аноним 24/12/16 Суб 05:38:07 #370 №899910 
>>860724 (OP)
Imagemagick отказывается читать файлы.
Нужно что бы пользователь загружал изображения, а потом могу их простейшим образом редактировать. Редактирование работало бы если бы не одно но - сейчас rmagick (как и minimagick) выдаёт ошибку -couldn't find file or directory. То, что файлы есть в нужной папке 100%, не работают как абсолютные, так и относительные пути. И браузер тоже открывает эти файлы. Что это может быть?
Аноним 24/12/16 Суб 07:03:06 #371 №899921 
>>899910
виртуалку юзаешь?
Аноним 24/12/16 Суб 07:32:31 #372 №899923 
>>899921
Да, но на сервере та же беда.
Аноним 28/12/16 Срд 15:09:58 #373 №902597 
Поясните ньюфага разницу в FactoryGirl между attributes_for и create
Аноним 28/12/16 Срд 16:37:30 #374 №902647 
>>902597
Английский учи сначала, потом погромирование
Аноним 28/12/16 Срд 22:35:23 #375 №902797 
Хочу сделать чтобы ассоциацию habtm можно было установить только для определенного подмножества модели. Например есть 3 модели: Товары, Типы товаров, и 3 таблица которая может быть связана только с товарами определенного типа. Вроде бы STI то что нужно: создаем дочерний класс для отдельного типа товаров (Sock) и в 3 модели(SocksSet) пишем has_and_belongs_to_many :socks. Но я не пойму как вместо того чтобы делать отдельное поле type в таблице товаров (чтобы хранить имя дочернего класса) узнавать имя из связи товары<>типы товаров.
Аноним 29/12/16 Чтв 00:15:55 #376 №902829 
>>902797
Чет херню какую-то пишешь. Нахрена тут STI? Зачем усложняешь? Товары, категории, джоин таблица. Все
Аноним 29/12/16 Чтв 00:24:55 #377 №902832 
>>902829
Ну так допустим у меня есть набор носков (который относится к отдельной модели наборов), я не хочу чтобы к этому набору можно было добавить трусы ( а если будет простая ассоциация товары <>наборы то это можно будет сделать)
Аноним 29/12/16 Чтв 00:44:33 #378 №902843 
>>902832
такая задача решается на уровне приложения а не базы, просто храни в наборе разрешенные категории и не разрешай добавлять товары из других категорий
Аноним 31/12/16 Суб 11:00:50 #379 №904040 
Хочу создать простенький веб-сервер и клиент.Использую TCPServer из 'socket'.

Вопрос: можно ли с его помощью создать сервер, видимый из интернета?
И если да, как ему отправить сообщение? (Можно ли отправить, используя telnet?)


Аноним 31/12/16 Суб 22:20:46 #380 №904231 
>>902843
Т.е. надо сделать валидацию ассоциаций ?
Опять же не пойму как это сделать validate :method_name вызывается только при сохранении , а если устанавливать связь через = или << этот метод не будет вызван.
Аноним 31/12/16 Суб 23:08:04 #381 №904250 
>>904040
Тебе нужно, чтобы твой компьютер был доступен из ынтернета. Разбирайся с провайдером, короч. А так разницы нет.
Аноним 02/01/17 Пнд 12:51:40 #382 №904628 
>>904231
Забудь про колбэки и валидации в моделях, ни один приличный рубист в 2017 таким заниматься не будет, пили форм объект в котором экспликтно все и провалидируешь

Аноним 02/01/17 Пнд 18:24:32 #383 №904738 
>>904628
Охуеть, а если у меня эти ассоциации устанавливаются не через форму в веб интерфейсе?
Аноним 02/01/17 Пнд 20:08:46 #384 №904783 
>>904738
Причем тут ассоциации? они как раз остаются в моделях
Аноним 02/01/17 Пнд 20:19:31 #385 №904787 
>>896341
Ты всё правильно думаешь по 3 пункту, не слушай того анона.

Мимо-слоупоке
Аноним 02/01/17 Пнд 20:42:06 #386 №904799 
>>904783
>храни в наборе разрешенные категории и не разрешай добавлять товары из других категорий
Аноним 02/01/17 Пнд 23:17:19 #387 №904868 
home-background.jpg
Анон, что думаешь о Hanami? Каждый день вижу новые статьи или как минимум упоминания в англоязычных твиттерах и медиумах, а по-русски ничего нигде ни разу.
Аноним 02/01/17 Пнд 23:21:32 #388 №904869 
>>904628
Форм объект это не про веб формы, гугли
Аноним 03/01/17 Втр 01:29:16 #389 №904914 
>>904868
Хорошая штука, но слишком поздно появилась. В 2017 году, если уж отказываться от инфраструктуры рельсы, то проще сразу эликсир с фениксом взять.
Аноним 05/01/17 Чтв 20:50:20 #390 №906667 
Пилю систему с использованием внутреннего баланса. Быстрым гуглением вроде прояснил все моменты: локаю баланс покупателя и продавца, в транзакции продавцу начисляю деньги, у покупателя снимаю(с учетом комиссии сайта), записываю в таблицу истории операций ид товара, сумму, ид покупателя, ид продавца, время операции, тип(покупка/пополнение/вывод). Собственно как еще обезопасить (что еще надо делать, какую еще информацию хранить в бд), чтобы потом не охуеть от того что деньги проебались/спиздили.
Аноним 05/01/17 Чтв 21:03:44 #391 №906675 
>2017
>Rails
Лол. Рельсы давно мертвы, вы просто не хотите это признать.
Аноним 05/01/17 Чтв 21:14:51 #392 №906685 
>>906667
Все велосипеды уже изобретены. Вот наш:
https://github.com/openbill-service
Смотри, пользуйся.
Аноним 05/01/17 Чтв 21:16:26 #393 №906686 
>>906675
А кто не мертв?
Аноним 05/01/17 Чтв 21:18:08 #394 №906691 
>>906686
Node, Elixir, Go, Java, да даже сраный PHP.
Аноним 05/01/17 Чтв 21:33:06 #395 №906706 
>>906675
Рельсы справляются с задачами, решения которых от них ждут, а на дешевые вбросы вроде твоего здесь еще не было реакции более активной чем этот мой ответ.
Аноним 05/01/17 Чтв 21:53:52 #396 №906743 
>>906675
Все адекватные уже давно понимают, что рельсы мертвы, даже по рынку вакансий это можно взглянуть и понять, ибо их все меньше и меньше с каждым годом. Да и все крутые компании уже ушли с рельс на что нибудь типа ноды или низкоуровневое.
Другое дело, что программисты на руби все еще имеют смысл, так как кода написано куча и кто то его поддерживать должен.
Аноним 05/01/17 Чтв 22:27:48 #397 №906787 
>>906691
>Node
Это шутки такие? Туда до сих пор нормальную работу с базой не завезли, в 2017-то! Не знаю какие хипсторы в это играются, ни одного здравого проекта на ноде я ещё не видел за 6 лет.
Аноним 05/01/17 Чтв 22:45:48 #398 №906801 
>>906787
"Нормальная работа с базой" - это что такое?
Аноним 05/01/17 Чтв 23:07:26 #399 №906820 
>>906787
Толсто.
Аноним 05/01/17 Чтв 23:08:04 #400 №906821 
>>906801
Это типичный вопрос нодофага? Да хотя бы транзакции, например. Может я чего-то не знаю, и за этот год действительно кто-то там скакнул вперёд, но чет не слышал.

>>906820
Поясни.
Аноним 05/01/17 Чтв 23:33:44 #401 №906850 
>>906685
Так у вас там на pgsql все, ладно попытаюсь понять.
Аноним 06/01/17 Птн 00:48:30 #402 №906903 
>>906821
Это типичный ответ от рельсофага? В npm куча модулей для транзакций. Давай на конкретном примере, что в рельсах лучше чем в ноде или чего в ноде нет, что есть в рельсах.
Аноним 06/01/17 Птн 03:43:28 #403 №906959 
>>906903
>В npm куча модулей
И все работают через жопу. Конкретный пример с транзакциями: чтобы воспользоваться транзакциями - поставьте вот этот модуль.. или вот этот, или вон тот. Нахер так жить? Одной ORM недостаточно для этого? Для чего ещё нужно поставить модули, что и так должно работать искаропки? Удобства в ноде нет, зато есть ненужная асинхронность, которую тоже надо отдельно выключать.
Аноним 06/01/17 Птн 13:44:55 #404 №907076 
Что означает <<: *default в database.yml?
Аноним 06/01/17 Птн 13:56:49 #405 №907081 
>>907076
Что-то вроде "используй ту же базу данных, что и деофл"
например, если у тебя в дефолте постгре, то остальные тоже будут с постгре
Да, еще там кодировку ту же использовать и еще какое-то свойство (рооl, как понял - ставит максимум для тредов)
Аноним 06/01/17 Птн 13:57:32 #406 №907083 
>>907081
А где дефолтные настройки хранятся?
Аноним 06/01/17 Птн 13:58:02 #407 №907085 
>>907083
А, проебался. В этом же файле, только выше?
Аноним 06/01/17 Птн 15:11:53 #408 №907111 
>>906959
http://docs.sequelizejs.com/en/v3/
Вот же, первая ссылка в гугле. Не знаю, о чем с тобой говорить, если ты не можешь 2 секунды потратить, прежде чем начать нести чушь.
Аноним 06/01/17 Птн 15:24:54 #409 №907112 
>>907085
да
Аноним 06/01/17 Птн 17:39:50 #410 №907200 
>>907111
Ну молодец, подебил. Удобнее разрабатывать от этого не стало.
Аноним 07/01/17 Суб 18:11:56 #411 №907709 
Проясните, пожалуйста.

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

И еще. Веб-сервер нужен лишь затем, чтобы ловить запросы из внешней сети? То есть это просто посредник между рельсами и юзером? Веб-сервер просто передаёт HTTP без изменений маршрутизатору рельс или как?
Аноним 08/01/17 Вск 00:40:40 #412 №907988 
>>907709
>Веб-сервер и рельсы конструктивно находятся в одном приложении?
Это одна программа.
>Или это два процесса, общающихся между собой? (еще +бд)
Обычно БД это как раз отдельная программа(postgresql/mysql/oracle). Хотя можно сделать на sqlite который будет встроен в виде gem'а в процесс рельс (руби который всё это загружает). Но конкретно рельсы это одна программа которая принимает HTTP-запросы (собственно это и есть веб-сервер) сидя на каком либо порту.

Однако для распределения нагрузки, безопасности или другим причинам рельсы часто ставят за прокси типа nginx.
Аноним 08/01/17 Вск 02:00:29 #413 №908034 
>>907709

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

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

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

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

В тонкости различий веб-серверов можешь вникнуть погуглив по ключевым словам: webrick, puma, unicorn, passenger, у меня если честно нет желания пересскажывать этот интернет, спасибо.
Аноним 08/01/17 Вск 11:39:24 #414 №908139 DELETED
Аноны, хватит постить про мертвый язык и фреймворк, т.к. это меня демотивирует сильно и у меня впечатление, что это рили так.

Если да, то я через пару месяцев оканчиваю универ и остаюсь у разбитого рельскорыта и не смогу съехать от мамки.
Аноним 08/01/17 Вск 11:58:09 #415 №908149 
>>908139
Они не умерли, а умирают. Причем только в начальных стадиях отмирания, даже новые проекты на руби/рельсах еще начинают, а уж легаси хватит на многие годы. Минимум лет 5 еще можно о недостатке работы не беспокоиться.
Я бы на твоем месте лучше побеспокоился о том, что через пару месяцев заканчиваю универ и все еще не нашел (не искал?) работу.
Аноним 08/01/17 Вск 13:00:44 #416 №908169 DELETED
>>908149
Я работал уже. На постоянке в маке, лол, а удаленно делаю и администрирую мини-сайтик на простеньком html-css-js и пара php-скриптов. За небольшие гроши.

Был на одном собеседовании дизайнером электронного обучения, но не могу на фулл-тайм пойти работать из-за универа, а щас так вообще диплом начинается.

Планирую после универа пойти уже на серьезную работу или найти хорошую удаленку.

Алсо можно ли диплом написать на что-то связанное с рельсами/вебом? Посоветуйте.
Аноним 08/01/17 Вск 13:59:05 #417 №908194 
>>908169
Так и вижу, как ты 24/7 диплом ботаешь. Я вот себе преддипломную практику нарисовал, а сам в это время нашел работу и к моменту написания диплома у меня уже было по чему писать, хоть и тема выдалась смехотворной, но многие и этого не осилили.
Аноним 08/01/17 Вск 20:08:11 #418 №908381 
Screen Shot 2017-01-08 at 19.03.51.png
Почему в рубимайне у первого <tr> отступ 2 пробела а у второго 4? Как чинить?
Аноним 08/01/17 Вск 21:41:31 #419 №908445 
>>908381
Эээ, из твой картинки очевидно же.
Аноним 08/01/17 Вск 21:52:13 #420 №908451 
>>908445
Если ты про continuation ident то это перенос длинных строк(и в erb/html он походу вообще не работает)
Аноним 08/01/17 Вск 22:00:11 #421 №908453 
>>908381

пользуйся slim@haml, erb ненужен.
Аноним 08/01/17 Вск 22:08:46 #422 №908458 
>>908453
А можно менее радикальное решение ?
ноги_не_нужны.jpg
Аноним 08/01/17 Вск 22:29:16 #423 №908473 
>>908458

в таком случае у тебя локальная проблема; попробуй обновить ide на 2016.3 версию, у меня соотв. значение в поле indent расставляет отступы правильно.
Аноним 08/01/17 Вск 22:34:02 #424 №908477 
>>908473
2016.3.1 стоит
Аноним 09/01/17 Пнд 00:03:42 #425 №908539 DELETED
>>908194
Ну вот мб весной на практику и начну отсылать везде резюме. Спасибо.
Аноним 09/01/17 Пнд 11:47:52 #426 №908665 
>>908539
Весной поздно, пока туда-сюда - уже диплом писать надо будет. Рекомендую с февраля или вообще сейчас. Не надо искать "практику", просто ищи работу, а там уже себе бумажку вырулишь, типа практику прошел.
Аноним 09/01/17 Пнд 14:16:03 #427 №908767 DELETED
>>908665
Спасибо. Прямо сейчас не могу рвануть, надо допилить до красивости для портфолио проекты и в целом еще подтянуться. В феврале будет норм.
Аноним 10/01/17 Втр 17:14:45 #428 №909380 
Анон. Можно ли в where() передать релейшен?
не arel-условие, а relation
Аноним 10/01/17 Втр 20:27:23 #429 №909463 
>>909380
Можно было что-то подобное, но это в любом случае не лучшее решение.
Аноним 10/01/17 Втр 23:48:03 #430 №909562 
>>909463
Вот он - ерохин от программирования!
"можно", "что-то подобное", "не лучшее решение".
Что ты блять несешь, хуесос? Иди активными продажами занимайся, там любят такие разглагольствования.
Аноним 11/01/17 Срд 02:26:08 #431 №909610 
>>909380
relation.merge(other_relation)
Аноним 12/01/17 Чтв 02:44:45 #432 №910185 
>>860724 (OP)
Не понимат, что смешного во второй картинке ОПа. Ну пакетный менеджер и что?

composer install
brew install
npm install

Мама смотри, я петросян
Аноним 12/01/17 Чтв 02:58:33 #433 №910192 
>>910185
Найс дауничу подпекло. Еще и какел небось, да?
Аноним 13/01/17 Птн 13:25:06 #434 №911205 
1.png
Анон, а ты там зареган или может даже находил работу мечты?
Короче не знаю как продать пост, просто поясните за сракедин. Насколько он популярен в it-среде, имеет ли смысл в рашке, что это вообще и как работает? Просто все чаще попадается на глаза и не в связи с блокировкой.
Аноним 13/01/17 Птн 14:02:59 #435 №911214 
>>911205
> Насколько он популярен в it-среде
Меня там регистрироваться заставляли как-то в добровольно-принудительном порядке, но через полгода примерно положили болт. Эта штука больше популярна в околоменеджерских кругах наверно.
Аноним 13/01/17 Птн 15:59:13 #436 №911277 
>>911214
>регистрироваться заставляли как-то в добровольно-принудительном порядке
Кто, зачем?
Аноним 13/01/17 Птн 17:20:10 #437 №911316 
>>911205
смысл был несколько лет назад, сейчас сдохла и заспамлена
Аноним 14/01/17 Суб 12:32:09 #438 №911877 
Screenshot101.png
Как понять строку identified_by?
В Rails API написано что это метод.
Это код внутри класса или что?
Аноним 14/01/17 Суб 13:47:47 #439 №911945 
>>911877
Это значит что в момент загрузки кода этого класса будет вызван метод ApplicationCable::Connection.identified_by(:user)
И больше ничего в этом магического нет.
Аноним 14/01/17 Суб 14:15:32 #440 №911973 
>>911945
>момент загрузки
Это когда?
Аноним 15/01/17 Вск 01:17:16 #441 №912388 
Так я таки не понимаю, стоит ли мне лезть в руби и рельсы в 2017 с первой работой? Вообще я мамким борщехлеб уже года 3 и знаю довольно много всего: jsы, ангуляры, с + opengl, андроед(есть пару прилаг), джавастафф(мог устроиться мартыхать на спринге), в последнее время активно эрганг колупал, ну и хачкелем раньше щекотал себя, куда уж без него. Разумеется все это знаю не на охуенном синиор уровне, но сейчас приперло с едой деньгами и надо искать работу. Вот думаю куда коммитить время\силы. Этот ваш рубин нравится, все охуенчик, но не хочу проебаться с тем, что джуна хуй куда возьмут(я из бульбы).

У вас тут кстати самый ламповый тредик на зекаче
Аноним 15/01/17 Вск 01:33:55 #442 №912401 DELETED
>>912388
Я из украшки алсо, учу руби, рельсы и весь смежный стак. Работы очень не много, но вакансии есть. Планирую к лету уже отсылать резюме, а пока заканчиваю шарагу.

Если у тебя есть столько всего, то нахуй тебе руби не ясно. Иди в андроид, если даже аппов пару есть.
Аноним 15/01/17 Вск 01:50:59 #443 №912414 
>>912401
От джавы блевать хочется(особенно после рубей) а котлин мало кто юзает, там хоть кучу сахарком посыпали
Еще у меня такое чувство что в андроид сейчас каждый 1 школьник идет, куча знакомых дрочит, бывших одногруппников, в pr треды активные и там 90% вкатывальщиков. Мне кажеться от такого предложения работодатели совсем охуевшие будут.
Аноним 15/01/17 Вск 02:00:15 #444 №912422 
>>912388

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

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

Руби в 2017 лучше и живее чем раньше.
Аноним 15/01/17 Вск 02:13:42 #445 №912429 
>>912422
А можешь накидать каких годных идей уровня: с чем возьмут? Только не ебучие имиджборды
Бля, я сам думал неспешно кодить в удовольствие, наваять пару веб-апп(идеи есть, но это месяца на 3-4 минимум) и поизучать сорцы разных интересных гемов, но сейчас настал пиздец в жизни и у меня максимум 2 месяца чтобы пойти на работу и не сдохнуть через пол года от голода, но в джавапарашу мне все равно очень не хочется валить
Аноним 15/01/17 Вск 03:20:06 #446 №912452 
>>912429

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

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

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

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

Просто не будет, но ты не выглядишь как неосилятор. Должен справиться.
Аноним 15/01/17 Вск 21:06:06 #447 №912791 
>>911973
А вот это уже хуй его. Попросту говоря в момент когда ты скармливаешь интерпретатору файл с кодом. Или когда внутри другого кода реквайришь зависимость. Короче гугли как рубишный интерпретатор работает.
Аноним 16/01/17 Пнд 00:16:53 #448 №912862 
>>912452
>пользуешься ли ты сам тем, что сделал, пользуются ли другие и многие ли могут так же
Первые два сразу мимо т.к. я сыч и в инете сижу на 2-3 сайтах(youtube, двач и вк), не считая сайтов с доками, репозиториями и туторами и переполнениестека, мне от интернета нихуя не надо. А чтобы пользовались другие,даже с божественной и всем нужной прогой, должно пройти время и надо хотябы минимально пиарить на всех этих харбах редитах, конфах и т.д. Остается только третье. С другой стороны меня блевать тянет от мысли реализовать что-то, чего и так, как говна в авгиевой конюшне, все эти туду листы, имиджборды, блоги. Ну хз сейчас начну на листик выписывать все что приходит в голову подряд, комбинировать и думать что из этого можно выбрать для реализации. Но надеюсь двач тоже подкинет каких-нибудь идей или направлений.

Кстати, ебашить буду на rails + react + postgre + yaml/препроцессоры и джаваскрипты , это норм стек, смузи нальют? Для скриптов что лучше брать, кофевара или es6 какой-нибудь?
Аноним 16/01/17 Пнд 03:01:16 #449 №912927 
b06d380e34093728d30348e7e1qo--kukly-igrushki-igra-s-samotsv[...].jpg
>>912862
>Первые два сразу мимо т.к. я сыч и в инете сижу на 2-3 сайтах
Даже к этому можно подойти с фантазией. Кто-то, например, Перекотер для двачей сделал. Хорошая предметно-ориентированная штука. Автоматизировать можно очень многие повседневные задачи. Хоть таск-менеджер в области ухода за домашними моллюсками, имеющий вменяемый интерфейс и посылающий уведомления в телеграмм когда нужно помыть террариум. Смотри на мир шире двача и вк.

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

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

>Для скриптов что лучше брать, кофевара или es6 какой-нибудь?
Если ты имеешь в виду кофескрипт, то не трать на него время. Он больше не актуален. JS стоит опять же хорошо понять в чистом виде и если будет время то es6 и утилиты для сборки на ноде.

Аноним 16/01/17 Пнд 03:18:01 #450 №912934 
На девелопера руби / рельсы есть работа вообще?
Для автоматизации тестирования связка руби/капибара/гем на page object актуальна, или эта ниша тоже загнулась к хуям?
Руби вообще жив?
Аноним 16/01/17 Пнд 03:48:54 #451 №912942 
Lapsha.jpg
>>912934
>Руби вообще жив?
Такой вопрос звучит очень часто, но только на русском языке. Есть несколько знакомых, которые спрашивали о том же будучи в целом далекими от мира веба. Оказалось, все их знания о Руби это несколько антирельсовых статей с хабра. Полагаю, сказывается природная восприимчивость русского менталитета без малейшей обработки складывать к себе в голову любую информацию из СМИ, насильно хоронить и страстно превозносить что-то, если кто-то так сказал.

>На девелопера руби / рельсы есть работа вообще?
Есть, много.

>Для автоматизации тестирования связка руби/капибара/гем на page object актуальна, или эта ниша тоже загнулась к хуям?
Актуальна, но нишей это не никогда не называлось.
Аноним 16/01/17 Пнд 04:06:20 #452 №912947 
>>912942
Поясню. Я тестировщик.
Года три назад щупал руби когда только вкатывался в автоматизацию, но по итогу меня взяли на проект с имеющейся базой, и пришлось осваивать жабу.
Сейчас меня малёх подзаебала жизнь, и я пошёл искать другой участи на галере. Пока фронт работ ограничивается ручной работой (хотя весьма интересной) пушто я один на проекте, а новые фичи выкатывают со скоростью света, тут бы новое тестить успевать. Но уже в ближайшем будущем появится пару макак рангом пониже, которым на откуп можно будет отдать новоиспекаемое говно, а самому заавтоматить функциональщину. И тут мне вспоминаются зелёные дни, и каким удивительно простым и логичным казался руби, но...
Чёт не хочется угробить время на разбор чего-то, что не апдейтится N лет, с мёртвым сообществом и логикой через жопу, а именно на это намекают вот такие вот самоплодящиеся слухи вроде того, что ты привёл.

Собсна, хотелось бы узнал реальное положение дел.
Аноним 16/01/17 Пнд 04:07:02 #453 №912948 
>>912947
>другой участи
Лучшей участи на другой галере*
Аноним 16/01/17 Пнд 04:46:33 #454 №912952 
>>912947
Самые сильные места и сама идея Руби в том, что его логика максимально удалена от жопы, а коммьюнити одно из самых сильных, пусть и не больших. Его слабое место в другом и прямо следует из вышесказанного: у него медленный интерпретатор и громоздкая архитектура(с точки зрения машины). Может быть даже самый медленный.
ПейПэл перешли с рельс на ноду не потому что Руби умер, а потому что кто-то схавал "актуальную" технологию не подумав, что для высоких нагрузок она решительно не подходит.
Первое, что делают начинающие рубисты когда собирают свой клон твиттера -- пишут тесты. Для тестов он подходит лучше чем что-то еще, если скорость не критична.
А какие для твоих целей есть альтернативы?
Аноним 16/01/17 Пнд 04:56:19 #455 №912955 
>>912952
Альтернатива — жмуметр, пресловутый селениум и джава. Потому что это почти всё, что я умею.
Аноним 16/01/17 Пнд 06:21:21 #456 №912963 
>>912934
Интересный вопрос, на который очередной фелосаф-рубисектант ответит "да".
Но ирл, можно сказать на 100% - руби (именно руби) - это мертворождённый язык. Он слишком сложен для решения любой нетривиальной задачи, содержит слишком много синтаксического сахара, и главное - в нём нет ничего феноменально нового.
Рельсы - это хороший фреймворк, который таки родился, но к сожалению умер. Всё дело в несоответствии концепций и целей. Либерахи и хипстерьё отчаянно пиарили этот рор везде, где только можно - предполагая, что он найдёт свою нищу в больших и сурьёзных тырпрайз-приложениях, конкурируя с громоздкими жабами и шарпами.
Но опять же - принципиально новых концепций не вышло, так что слишком сурьёзные и суровые тырпрайз-боссы не рискнули давать бабла на переписывание.
Так рельсы стали конкурентом пхп - где бодро соснули хуец, ибо пхп-макакинг сильно ниже по рейтам, и на слуху у заказчиков - а пхп тырпрайз, опять же, не рискнул.
Работы по руби нет - а если и есть, то "знание пхп", чтобы в один момент смог перепилить своё говно на него.
Аноним 16/01/17 Пнд 09:52:36 #457 №912985 
>>911277
Директор, у нас компания небольшая. Он когда в силиконовую долину летал наш стартап представлять, говорил что на эту хрень будут смотреть. Но раз все на него (всмысле на линкедин) сейчас болт положили, значит не особо то и нужен. Если есть какие скиллы - регайся, но так наверно всем похуй. Больше репозиторий важен и владение какими-нибудь современными йобами.
Аноним 16/01/17 Пнд 13:47:37 #458 №913084 
>>912985
>Больше репозиторий важен и владение какими-нибудь современными йобами.
Но это ведь не про профиль в сети сам по себе. СрекедИн он же про коммуникацию. Лично мне очень понравилась идея "перманентного поиска" работы. Ты там присутствуешь, и потенциальный работодатель или партнер может найти тебя в любой момент, а не тогда, когда тебе приспичило и пошел размещать резюме на хедхантере.
Это очень здорово (если это работает), потому что смена места работы всегда вынужденная и всегда компромисс и стресс. Охуенно, если действительно работа сможет сама меня находить, а не я ее что было бы справделиво.

Вот только не знаю, насколько это работает у нас в стране.
Аноним 16/01/17 Пнд 14:24:38 #459 №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
Аноним 16/01/17 Пнд 15:05:50 #460 №913136 
1275207481vinoul.jpg
>>912955
Тогда это скорее всего вопрос скорости против архитектуры. На Руби это можно сделать архитектурно красивее, хотя это и по-своему субъективно. Если ты испытываешь к нему некую симпатию и предрасположенность, то смело бери его. Он не умер и жив не меньше, чем раньше. Другое дело, что его плюсы при строго техническом сравнении мягко говоря не очевидны.

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

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

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

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


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

У Руби своя ниша, которая даже близко не пересекается с пхп или шарпами. Это ниша, которую принято ассоциировать со стартапами. Горизонтальное масштабирование, быстрая и гибкая разработка. И то, что многие проекты с Руби потом переписываются это не оскорбление в его сторону и знак, что он умер. Это инструмент, который отлично справляется с тем, для чего он предназначен.
Аноним 16/01/17 Пнд 18:47:31 #461 №913245 
>>913136
>И то, что многие проекты с Руби потом переписываются это не оскорбление в его сторону и знак, что он умер.
А кто это делает вообще? Твиттер и гитхаб? Их по пальцам пересчитать. В основном никто ничего не переписывает, потому что, как правило, нет таких нагрузок, чтобы это было целесообразным.
Аноним 16/01/17 Пнд 21:54:11 #462 №913372 DELETED
>>913114
Очень сомневаюсь. Почему купить?
>https://elements.heroku.com/addons/redistogo
>$0/mo
Аноним 16/01/17 Пнд 21:55:45 #463 №913377 DELETED
>>913136
Няша, спасибо за твои посты, очень подбадривает. Меня подзаебали вскукареки про УМИРАНИЕ, ведь индексы только растут, рельсы развиваются и вакансии (хоть и немного в моей украшке), но есть. Волнуюсь, что сложно будет пристроиться джуниором, но опять же, вакансии иногда проскакивают, да и к весне уже портфолио норм будет.
В общем, спасибо, пиши еще.
Аноним 16/01/17 Пнд 21:59:00 #464 №913381 
>>913377
Что планируешь в портфолио пилить
Аноним 16/01/17 Пнд 22:07:23 #465 №913390 DELETED
>>913381
Пока что 2 проекта:
1. обычный "новостной" сайт о колонизации марса и о космосе в целом, но где будет одна красивая страничка интерактивная о mars one и spaceX. возможна регистрация, заполнения профиля няшными бейджиками прнадлежности. пока что накидал только каркас, регу, бд новостей и почтовую рассылку. с одной стороны вроде как-то всратая хуйня выходит, с другой вроде всё норм и используются все основные action'ы и гемы, мб еще чат на кабеле прикрутить
2. Декбилдер для одной онлайн карточной игры, пока что готов только парсер сайта игры на карты и занесение их всех в бд (и вывод)
3. ну и надо бы сделать какой-нибудь няшный сайт-портфолио-резюме. у меня еще есть реальные два сайта, но они на пхп и там в основном я занимался фронтом и занесением информации по просьбе заказчика
Аноним 17/01/17 Втр 14:52:57 #466 №913717 
>>913372
Спасибо, просто карту просил привязать, побоялся.
Аноним 17/01/17 Втр 16:47:51 #467 №913800 
Как переопределить root_path для залогиненных пользователей в пятых рельса?
authenticated :user do
root 'welcome#index', as: 'authenticated_root'
end
это в 5 рельсах не работает
гем devise конечно же
Аноним 17/01/17 Втр 17:15:59 #468 №913823 
>>913800
Почему бы не сделать редирект на уровне контроллера? Какое техническое обоснование?
Аноним 17/01/17 Втр 17:28:02 #469 №913832 
>>913823
я сделал специальный контроллер для root_path, пусть будет welcome контроллер. В нем определен метод index. соответственно, зайдя на домашнюю страницу, редирект идет на welcome#index
НО, если юзер логинится со страницы users/sign_in , то его должно редиректить на другой на друго контроллерб допустим, documents#index
Аноним 17/01/17 Втр 19:42:27 #470 №913920 
Аноны, вот эти гвард тесты из хартла годнота? Ими пользуются? Вроде годнота, машина тебе сама тестики после каждого изменения запускает, но просто нехочется сейчас тратить время разбиратся, а потом обранужить какой-нибудь фундаментальный недостаток времени нет
Аноним 17/01/17 Втр 19:47:26 #471 №913927 DELETED
>>913920
Ну, во-первых, многие действительно пропускают тесты при прохождении этого туториала, т.к. оверлоад инфой получается.
Во-вторых, конкретно разработка через тестировку сейчас сдает позиции. Есть много спекуляций, что это хуйня.
В третьих, в мире Рельсов чаще пользуются неMinitest, который показывает Хартл, а Rspec.

Однако, тестирование нужно, полезно и тесты сами по себе в больших проектах необходимы. Если ты серьезно нацелен стать рубирельс-джуном, то придется учить.
Аноним 17/01/17 Втр 19:48:19 #472 №913930 DELETED
>>913920
Ой лол, не обратил внимание конкретно на гвард.

Вот это уже действительно лишнее и можно спокойно его пропускать.
Аноним 17/01/17 Втр 20:11:28 #473 №913958 
>>913927
Проходил самый свежий перевод Хартла около полугода назад уточнить версию лень и там был таки Rspec.
Аноним 17/01/17 Втр 20:26:26 #474 №913973 
Да, у хартла с 4 рельс рспек/капибара
Аноним 17/01/17 Втр 20:37:20 #475 №913989 
>>913927
>Во-вторых, конкретно разработка через тестировку сейчас сдает позиции. Есть много спекуляций, что это хуйня.
Ну не знаю, с одной стороны действительно не очень удобно сразу думать над тестами, но с другой это позволяет тестировать без лишних ручных манипуляций. Для себя я нашёл оптимальный вариант: пишу небольшой кусок кода, когда приходит время проверить как это работает - покрываю его тестом вместо того, чтобы тыкать вручную. Если happy path проходит, проверяю всё живьём. Потом уже добавляю всякие корнеркейсы и unhappy path. А вы как делаете, анонасы?
Аноним 17/01/17 Втр 20:39:48 #476 №913993 DELETED
>>913958
>>913973
https://www.railstutorial.org/book/filling_in_the_layout#sec-contact_page

А сейчас на 5 рельсах там таки Минитест.
Аноним 17/01/17 Втр 22:28:24 #477 №914104 
maxresdefault.jpg
>>913377
Да не за что. Не забывай, что впереди тебя ждет хардкорный путь и у тебя есть свой шанс облажаться со сроками. Задача все-таки вполне амбициозная. Желаю успехов, заходи еще, спрашивай.

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

Меж тем подошли свежие цифры о реальном положении дел. https://infinum.co/the-capsized-eight/analyzing-rubygems-stats-v2016
Не то что бы это большой повод для восторга, но по крайней мере сомневающиеся будут чувствовать себя спокойнее. А хабрапидоры останутся хабрапидорами.
Аноним 18/01/17 Срд 00:25:08 #478 №914188 DELETED
>>914104
Вот за статью отдельное спасибо! Очень хорошая.
Аноним 18/01/17 Срд 00:52:12 #479 №914206 
>>878101
Дико двачую. 7 лет на рельсе, раньше сильно лучше было.
Аноним 18/01/17 Срд 01:04:07 #480 №914210 
>>912963
Вообще руби без рельсы практически нигде не нужен. Рэйлс стал умирать после 13 года, с активным пиаром нод-макакинга на бэк/фронт-енде за еду и скорость выполнения. Параллельно большое число любителей с рубигайдом в хиленьких ручонках влилось на рынок, сильно обваливая прайсы и создавая очень плохую репутация фрейморку путем написания чудовищного кода и, следовательно, отправлением очередного говностартапа на помойку ит. Инвесторы просекли и продолжают сечь фишку и деньги на такие проекты дают все реже и реже.
Аноним 18/01/17 Срд 01:09:33 #481 №914211 
>>914104
> Работают вообще поголовно удаленно и укатываются сидеть с макбуками на Гавайи.
Взоржал с зазывалы. Ну-ка, пруфани видами, лол. Типичный держатель подвальной галеры с прыщавыми студнями "воспитывает" подрастающее поколение в пр.
Аноним 18/01/17 Срд 01:15:09 #482 №914216 
>>914210
И куда идти тем, кто не хочет нод\го макакинга за еду?
Аноним 18/01/17 Срд 02:02:16 #483 №914235 
>>914216
Смотря сколько ты хочешь. Го - это голанг? Не встречал макак на нем.
Аноним 18/01/17 Срд 02:10:27 #484 №914239 
>>914235
Разумный баланс между кэшем и интересной работой(читай, хотябы не унылой шаблониной, которую спустя пару месяцев делаешь с закрытыми глазами)
Я на самом деле хз насчет го, но на двачах его форсяк как езык макак, этакая нода от империи зла гуглей
Аноним 18/01/17 Срд 02:15:46 #485 №914240 
А что делать если ты любишь руби, но ненавидишь рельсы с его активрекордом?
Аноним 18/01/17 Срд 02:20:38 #486 №914241 
>>914239
Работы интересной не бывает. Чтобы решать сложные задачи, нужно много учиться и практиковаться, где-то здесь со временем интерес пропадает. Ты проиграл.
>>914240
Писать на руби, жить с мамкой.
Аноним 18/01/17 Срд 02:23:37 #487 №914242 
>>914239
Голанг не плох, лучшее из лимбо без костылей си. Но в рашке и аутсорсе не приживется, потому что не веб. А это значит мало заказов и значит галерам нет смысла набирать гребцов.
Аноним 18/01/17 Срд 02:36:00 #488 №914243 
>>914211
Ну, я например не на Гавайях только потому, что нафиг не упало. Мне не 20 лет, чтобы тратить бабки направо-налево. А так все успешные пацаны теперь, кто со мной начинал.
Аноним 18/01/17 Срд 02:38:39 #489 №914244 
>>913989
Отвечайте на мой ответ. Или тут только умир или ниумир обсуждают?
Аноним 18/01/17 Срд 02:43:13 #490 №914247 
>>914244

TLD, TDD не нужно.
Аноним 18/01/17 Срд 02:44:36 #491 №914248 
>>914247
Просто вот так? Потому что тесты - это скушна?
Аноним 18/01/17 Срд 02:46:07 #492 №914249 
>>914248

ты не знаешь что такое TLD, это не отказ от тестов. TDD хорош только для тривиальной хуйни.
Аноним 18/01/17 Срд 02:46:30 #493 №914250 
>>914243
Я тебя услышал.
Аноним 18/01/17 Срд 02:56:23 #494 №914253 
>>914249
Я понял, что не отказ. Просто интересно - как писать, если сначала ты хуяришь код без разбору от и до (хуже всего если проверяешь вручную при этом), потом полностью пытаешься написать на это всё тесты, потом они фейлятся, и ты долго и нудно расставляешь везде точки останова, шаришь по переменным, вот это всё, да? Потом находишь какую-нибудь, не относящуюся к конкретному тесту, ошибку, потому что пока хуярил - всё усложнилось и ты потерял из вида какую-то деталь. Мне кажется, если не всё напропалую за раз тестить, а помаленьку - на дебаг времени меньше тратится. Хотя возможно для кого-то медленным окажется прыгать туда-сюда из тестов в код и обратно.
Аноним 18/01/17 Срд 03:23:28 #495 №914256 
>>914253
Тебе бы начать в шеколадный глаз давать и фалафель сосать. Глядишь и тесты пройдут и кофаундер приголубит.
(Автор этого поста был предупрежден.)
Аноним 18/01/17 Срд 07:42:03 #496 №914302 
Антуаны.
Есть одна вакансия:
Требования: Уверенное знание: Ruby; Знание основ работы и разработки современных web-приложений (фоновые задачи, очереди сообщений, API); Понимание механизмов работы реляционных и noSQL БД (структура, нормализация, объединение, индексы); Знание: Ruby on Rails, PostgreSQL, CoffeScript, Sidekiq, Linux, Git Знание принципов Unit-тестирования и умение писать тесты с использованием rspec; Знание Unix на уровне пользователя командной строки Будет плюсом: Опыт работы с: Angular, Backbone, React Node JS; Знание алгоритмов и структур данных; TDD, TBD Знание других языков программирования.

И есть я - пару бложиков и реддитов на руби, с кодекадеми и прочим говном. Без опыта работы. Вопрос: Насколько велик шанс, что я соснул?
Аноним 18/01/17 Срд 10:12:21 #497 №914363 
>>914302
100%
Аноним 18/01/17 Срд 10:19:47 #498 №914365 
hqdefault.jpg
ПЕРЕКАТЫВАЙ !
Аноним 18/01/17 Срд 11:04:03 #499 №914388 
>>914241
>Ты проиграл
>2 поста маневров и так и не ответил
Ясно, понятно
Аноним 18/01/17 Срд 11:05:52 #500 №914390 
>>914256
В треде завелась обиженка
Аноним 18/01/17 Срд 11:23:51 #501 №914405 
>>914390
И кто тебя обижает?
Аноним 18/01/17 Срд 11:56:53 #502 №914417 
>>914302
Почти наверняка, но попытка не пытка. Игнорируй запрос резюме, оно сразу улетит на помойку повышая при этом показатели эйчарщицы вчерашней выпускницы провинциального вуза. Вместо этого надо найти все телефоны, звонить и запрашивать тестовое задание и по возможности разговор с кем-то из технического отдела.
Аноним 18/01/17 Срд 11:57:54 #503 №914418 
Почему ActionCable нормально работает в девелопменте, а в продакшене нет? Браузер будто бы и не пытается проапгрейдить соединение.

В компилированном js разобраться невозможно, но такое чувство, что там не хватает куска кода. Или от чего это может быть? В cable.yml вместо редиса поставил везде async.
Аноним 18/01/17 Срд 12:51:40 #504 №914446 
>>914418
Я бы попробовал отключить часть модулей компиляции до минимальной читаемости и попытался проследить до дыры в коде. Какая там в целом компиляция? Склейка в один файл и аглифай? Если так, то соответственно аглифай убрать и смотреть что получится.

Аноним 18/01/17 Срд 12:53:32 #505 №914448 
>>914446
Так и хотел сделать, спасибо.
Аноним 18/01/17 Срд 13:06:37 #506 №914452 
>>914448
Поделись потом, что получилось. Самому до сих пор с ЭкшнКейблом не приходилось иметь дела, но обязательно нужно освоить, 2к17 же. Какие вообще ощущения от работы с ним?
Аноним 18/01/17 Срд 13:21:29 #507 №914465 
>>914452
Я юный вкатывальщик, это (рор) мой первый фреймворк, так что думаю тебе не интересны мои ощущения. (А вообще всё очень просто, как и всё остальное в рельсах)

Действительно, углифаер проебывает куда-то кусок кода, ответственный за подписку, но пока я не могу включить углифаер обратно, лол. Вроде удаляю ассеты, компилирую снова, а в браузере всё так же. Походу у браузера в кеше остались, как у него их почистить?
Аноним 18/01/17 Срд 13:31:09 #508 №914470 
>>914465
Если хром - то да, там, есть полное обновление страницы.
Аноним 18/01/17 Срд 13:35:18 #509 №914473 
>>914470
Мозилла. Кеш удалил, проблема не в нем, руками проверил файл в public/assets -- почему-то не прикручивается углифаер обратно. Вроде как я только одну строку менял в production.rb.
Аноним 18/01/17 Срд 14:13:23 #510 №914495 
>>914473
Тут опять таки трудно что-то насоветовать не зная всей последовательности действий и остального контекста. Разве что напомню, трудно сделать большее что всегда можно откатить все изменения в гите и повторить все шаги более внимательно и осознанно. Я в половине случаев именно так нахожу выход.
Аноним 18/01/17 Срд 14:15:46 #511 №914499 
Ничего не понимаю, если config.assets.compile = true, то углифаер замечательно работает, но assets:precompile выдает результат без него.
Алсо, в первом случае ВНЕЗАПНО заработал акшон кабель. Вообще ничего не понимаю.
>>914495
Пожалуй, и правда, сделаю как ты советуешь.
Аноним 18/01/17 Срд 14:28:50 #512 №914513 
01.jpg
Посоны, ну расскажите успешные истории, кто как из страны свалил?
Аноним 18/01/17 Срд 14:48:32 #513 №914536 
>>914513
Поддвачну т.к. у самого такой же пашпорт
Аноним 18/01/17 Срд 16:16:37 #514 №914614 
14847239871650.jpg
ПЕРЕКАТЫВАЙ !
Аноним 18/01/17 Срд 16:38:12 #515 №914627 
>>914452
Мне вот довелось, стрёмные ощущения. Всё равно это чисто "чтобы была". После эликсира особенно заметна разница.
Аноним 18/01/17 Срд 17:19:03 #516 №914641 
>>914627
Вот да, слышал похожие отзывы и что рельсо-звезды из Злых Марсиан именно поэтому сделали свой AnyCable как более человеческую альтернативу.

При всем моем Руби-оптимизме не могу не отметить, что сами Рельсы не очень хорошо адаптируются к современной разработке. Минитест - меняем на Рспек, Экшнкейбл - на Эникейбл, Спрокетс под нужны современного JS без Вебпака не подстраивается, Кофескрипт тоже отдельная история. И что удивительно, коммьюнити под все это так быстро и ловко подстраивается, что не успеваешь ощутить дискомфорта от неудачных решений DHH.
Аноним 18/01/17 Срд 19:20:31 #517 №914723 
>>914641
Двачну пожалуй. И скорей всего мне ещё предстоит перелезать на AnyCable.
Аноним 18/01/17 Срд 22:53:52 #518 №914875 
>>914627
Где и что гавнакодил на елексире? Успешно?
Аноним 19/01/17 Чтв 00:33:59 #519 №914921 
>>914627
Да вот биллинг вбрасывал недавно, для него вебхук-оповещатор запилил:
https://github.com/openbill-service/openbill-webhooks

Работает вроде по сей день.
Аноним 19/01/17 Чтв 00:34:25 #520 №914922 
>>914875
>>914921
Аноним 19/01/17 Чтв 00:37:38 #521 №914927 DELETED
Открыл код Эликсира и не отличил его от Руби. Чяднт?
Аноним 19/01/17 Чтв 00:39:30 #522 №914929 
>>914927
Книжку лучше почитай по нему. На руби он похож только буковками.
Аноним 19/01/17 Чтв 00:41:13 #523 №914931 DELETED
>>914929
Понял. Может ближе к лету, пока упор делаю на рельсы. Решил не распыляться.
Аноним 19/01/17 Чтв 11:36:23 #524 №915069 
>>914927
>совсем другой язык
>не отличил его от Руби
Попробуй пока на паскале писать.
Аноним 20/01/17 Птн 20:20:43 #525 №915887 
2.png
Анон, что можешь сказать про тейлблейзер? Вообще свои мысли на этот счет.
Особенно интересно мнение этого >>913136
анона
ПЕРЕКАТЫВАЕМСЯ! Аноним 21/01/17 Суб 11:07:54 #526 №916184 
40142748i007.png
https://2ch.hk/pr/res/916183.html
https://2ch.hk/pr/res/916183.html
https://2ch.hk/pr/res/916183.html
Аноним 25/01/17 Срд 03:26:17 #527 №919011 
Сап сосач, ситуация очень тяжелая, нуждаюсь в любой хелпе.
В в общем делаю веб-парсер сайта, всё шло гладко, пока я не наткнулся на выпадающий список..

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

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

https://toster.ru/q/391272

Создал тему на тостере, дабы не засорять харкач множеством букоф
Аноним 25/02/17 Суб 12:03:00 #529 №940609 
Selection104.png
Selection105.png
Selection100.png
Аноны, нужна помощь.
Есть такой тест:
http://pastebin.com/APJC3Qib
Есть следующие моменты:
1)FactoryGirl все создает в дб, я провеляб byebug'ом
2)Эта сраница налокалке все рендерит, то есть присутствуют все нужные атрибуты, в том числе и name
3) Тест выдает ошибки, причем и в случаем с просты RSpec'om, так и с shoulda-matchers версией

ошибки/контроллер/страница пикрелейтед





comments powered by Disqus

Отзывы и предложения