Это копия, сохраненная 24 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Принимаются изменения в шапку треда в виде пулл-реквестов:
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. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - ru7p(byANUSconferencegUs.jabberPUNCTUMr^?Yu
А еще есть русская слак конфа - 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.
Особенно интересно мнение этого >>913136
анона
>index.html.erb
><% render %>
Метод возвращает результат, а шаблонизатор его не выводит <%= render %> же, не?
>>916298
Пока толком не сталкивался и не разбирался с ним, не могу выразить компетентного мнения по его поводу. Все что о нем пишут звучит здорово, но я пока не видел, чтобы кто-то коротко и ясно сказал, какую проблему он решает. Буду рад ознакомиться с такой инфой.
Думаешь, парень за словами благодарности прячет презрение и злобу?
>какую проблему он решает
Ну, осмелюсь написать от себя но я тоже не работал, просто смотрел. Это библиотека, набор гемов, которые реализуют основные ООП-патерны и таким образом реализуют отличную от rails-way архитектуру - декомпозируют модель, контроллеры, разносят бизнес-логику на отдельные модули.
Например, вводят ServiceObject, и уносят туда все, оставляя только http-релейтед логику запрос-ответ. Из моделей убирают валидации, коллбеки и вообще все, оставляя только ассоциации и встроенную в эктиврекорд persistance-логику. Ну и еще всякое такое типа форм-обжектов, полиси-обжектов. А еще меняют структуру директорий в проекте. Но все это можно использовать выборочно, то есть не принуждают использовать все.
И собственно мой вопрос о том как анон относится к этому гему на самом деле состоит из двух вопросов - 1) как он относится к рейлс-вэй 2) как относится к альтернативе в виде конкретно этого гема (мне вот он не нравится, хотя с идеей согласен).
Как насчет того, чтобы разнести по трем отдельным ссылкам часто задаваемые вопросы, ранжированный по уровню сложности список книг и список ресурсов? И лого поменять на что-нибудь около матириал-дизайн вроде пикрелейтед, без смешных картинок в шапке.
>>916580
Опять таки, ты написал про него два абзаца слов не лишенных смысла, но они не отвечают на вопрос, какую проблему он решает.
Штука интересная, но мотивация у нее странная. Одно из главных преимуществ Рельс в том, что все хорошо знают, что где лежит и могут ориентироваться в чужом коде на ощупь. Благодаря этому мы можем писать довольно простые генераторы, которые всегда попадают куда надо, и в целом сказать меньшим большее. У Рельсы есть проблемы, но архитектура вряд ли входит в первые позиции этого списка.
Про "Рейлс-Вэй" довольно исчерпывающе DHH расписал. http://rubyonrails.org/doctrine И в одноименной книге тоже все очень по делу. К инструменту надо относиться как к инструменту. Другое дело, что было бы гораздо лучше иметь инструменты для разных ситуаций. Я очень надеюсь, что в концу этого года Hanami подрастет. Уже сейчас он выглядит весьма зрело и не выстреливает больше из-за "социальных", чем из-за технических факторов.
аллоу, рубисты, а есть смысл учить язык чтоб работать? После вузика знаю си, который заеб. На руби есть вакансии, если я спикинг инглиш вери велл, или лучше посмотреть на кресты/питон/го/язык?
хацкель знаю в совершенстве, транслую его в дельфи через который компилю ассемблерный код для создания физической модели воды нет
слоудобавка
мне просто говорили, что руби мертво или стремиься к этому, и популярность языка падает и ждет его судьба дарта
Очень расплывчато, анон, я ожидал большего :)
>не отвечают на вопрос, какую проблему он решает
Ну... дает инструменты и инфраструктуру, чтобы писать правильный код. Несет SOLID-принципы.
Ты согласишься, что в более менее серьезном проекте фэт модел это проблема? Если пытаться все время придерживаться рейлс-вей, то код начинает протухать. Это не проблема рельс, конечно, и рейлс-вей не мешает писать по другому. Просто про другие подходы очень мало инфы в рейлс-сообществе и даже скорее есть какое-то религиозное неприятие.
>Про "Рейлс-Вэй" довольно исчерпывающе DHH расписал
И вот про религиозное неприятие - недавно я узнал, что он предложил сделать в эктиврекорде нейкий метод suppress, чтобы подавлять создание в колбеках. Создавать что-то в колбеках и так анти-паттерн, а он предлагает воркэраунд. Поэтому уже не знаю, как относиться к тому, что он говорит.
Недавно узнал про Hanami и хотелось бы разобраться. Они кажется как раз нацелены на другой подход.
>Одно из главных преимуществ Рельс в том, что все хорошо знают, что где лежит и могут ориентироваться в чужом коде на ощупь.
>У Рельсы есть проблемы, но архитектура вряд ли входит в первые позиции этого списка.
Как раз таки архитектура (точнее ее отсутствие) под название активрекорд и является самым уебанским местом в рельсах. Это идеально подходит для маленьких проектов на 10 моделей и контроллеров, когда тебе надо быстро что-то сделать и запустить в продакшен, но через год-два работы над проектом ты просто охуеешь в какое говно он превратился. За примером далеко ходить не надо, вот он рейлс вей во всей красе: https://github.com/redmine/redmine/blob/master/app/models/user.rb
Подробно говорили об этом в предыдущем треде в последних нескольких десятках постов. Есть коротко: да, есть. Смотри в первую очередь на то, насколько он тебе подходит. Нравится ли синтаксис, чистое ООП, Рельсы(посмотри какой-нибудь скринкаст в духе "собрать Твиттер за 15 минут"), культура(см. например доктрину Рельс постом выше) .
Решай исходя из предпочтений. А вакансий и работы но не денег больше всего в ПХП и 1С.
я не хочу пыху и 1С, я ж не безнадежный. Мне нравится руби из за синтаксиса в целом, но в русском сегменте все на питоне ебашат как угорелые, вот я и задумался.и на пхп конечно
>>916298
Несколько раз пытался засунуть в проект Trailblazer, но так и не понял чем он лучше обычных PORO.
https://www.reddit.com/r/ruby/comments/52ls60/would_you_use_trailblazer_on_a_new_application/d7ld1fo/
Вот и мне он не нравится своей перегруженностью, своим DSL, своими интерфейсами. Опять какая-то магия, опять учить и разбираться. А зачем не понятно - гораздо красивее сделать PORO.
>в более менее серьезном проекте фэт модел это проблема? Если пытаться все время придерживаться рейлс-вей, то код начинает протухать.
Вот это уже интереснее. Значит Трейлблейзер призван решать проблему раздутых моделей. Возможность сочетать его с Hanami делает такую перспективу заманчивее, но из потенциальных подводных камней вижу явные проблемы с внедрением - скорость разработки явно по началу снизится, нужно всех убедить в обоснованности подхода и дать привыкнуть. Еще и не факт, что действительно даст ожидаемый результат - больших прецедентов пока не было. Пощупаю когда-нибудь, отпишусь тут.
>>916661
Переписывать проект через два года под другую платформу насколько мне известно широкая практика не только в случае Рельс. Звучит бредово, но было бы еще здорово, чтобы была возможность переписать на том же Руби.
>>916666
Вопрос спорный, но Питон, Руби и Нода примерно одинаково востребованы сейчас. Метрики разные и у всех есть очевидные неточности. Так что выбирай по вкусовщине.
>Переписывать проект через два года под другую платформу насколько мне известно широкая практика не только в случае Рельс.
Что ты несешь? Точнее как ты это себе представляешь? Приходишь такой к заказчику перед релизом и говоришь, мол, вы знаете, у нас тут жыра трещит по швам, задачи на год вперед расписаны, поэтому давайте перепишем проект, да?
>Возможность сочетать его с Hanami делает такую перспективу заманчивее
А мне кажется не надо. В ханами модели уже декомпозированы и персистенс-уровень отделен от бизнес-логики. И для других аспектов, насколько я успел урывками почитать, там тоже свои решения.
Двачую. Мантры про "переписывание проекта" практически никак к реальности не применимы.
Сорри, поясни плиз, чем плоха фэт модел?
Использовал разве что в качестве эдаких хелперов - когда лень дефайнить хелпер-метод, я тупо внутри метода писал лямбду уебанство же
>>917169
Использую в качестве заглушек в тестах, когда один сервисный объект вызывает другой, публичный интерфейс у всех состоит только из метода call, а сами объекты друг с другом взаимодействуют через композицию - т.е. инстанс одного передается параметром при создании другого. Таким образом, сервисные объекты не имеют между собой жесткой связи. Но не всем это нравится, конечно. Если книжки не читал, скорее всего у тебя случится ОВЕРИНЖИНИРИНГ. А так лямбды в обычной жизни больно-то не нужны, если не gem пилишь. Обычно конфиг передают с помощью лямбд.
если брать курсы то только видеокурсы - на удеми, например
там почти всегда в инете можно нарыпь прмокод на скидку на 50 и более процентов
У меня частенько ощущение возникает, что я хуйню творю и велосипеды изобретаю. И как раз грамотного код ревью не хватает, и проекта для гитхаба нормального. Из за этого и поглядываю
Нихуя непонятно, пример кода можешь скинуть? Почему нельзя получить статус сервисного объекта и делать эту самую композицию только если статус норм?
Зачем конфиг передавать с помощью лямбд-то?
Всегда делал YAML::load_file(File.join(__dir__, 'config.yaml'))
Ну и в частности да, конфиги удобно настраивать; не всякое гавно сериализуемо.
Приведи пример кода.
Потому что то, о чем ты говоришь, нужно не так уж и часто, к тому же чревато зачастую ощутимым снижением производительности. Такое чувство, что в 99% случаев, когда используются лямбды. можно обойтись и без них. И даже нужно.
ну если ненужно, то ненужно, это твои проблемы.
Я бтв другой (третий?) анон который тебе за замыкания поясняет.
Примеры ищи сам, меня твой агрессивный тон отталкивает что-то там тебе искать, сорян.
Я до этого тебе ничего не писал, это мое первое сообщение.
Касательно агрессивности - согласен, это старая проблема, всё всегда сливают в срач, поэтому когда хочешь серьезно обсуждения, приходится писать очень аккуратно, чтобы продемонстрировать свою позитивную настроенность. Я торопился и написал как получилось. Никакой агрессивности.
Мне очень бы помог твой пример и советы, потому что моё утверждение про 99% сомнительно верное (в большинстве случаев это правда, но есть редкие исключения, когда лямбы крайне выигрышны, и знание этих исключение дает нихуевый буст к развитию), поэтому я вежливо, без какой-либо агрессии, с улыбкой до ушей прошу тебя привести кейсы и дать советов по использованию. (если тебе не впадлу)
Вот пример:
https://gist.github.com/anonymous/5e7d9fd9dd9bdd2f7494996b13d983c4
Немного в вакууме и не совсем так, как я изначально описывал, но суть та же.
>Зачем конфиг передавать с помощью лямбд-то?
Потому что можно.
>>918034
Микрооптимизации вряд ли дают ощутимый прирост в производительности, если код в пределах разумного написан.
>каррирование, внутренние итераторы, неявная/явная смена биндинга
Блин, ни слова не понимаю. Мои дела совсем плохи?
closures используются повсеместно, говорить о производительности как минимум странно, ведь по-твоему тогда и [1,2,3,4,5].map { |elem| ...} будет медленным.
Как примеры, замыканий посмтри популярные репозитории на гитхабе, можно встретить конструкции вида:
n = Libnotify.new do |notify|
notify.summary = "hello"
notify.body = "world"
notify.timeout = 1.5 # 1.5 (s), 1000 (ms), "2", nil, false
notify.urgency = :critical # :low, :normal, :critical
notify.append = false # default true - append onto existing notification
notify.transient = true # default false - keep the notifications around after display
notify.icon_path = "/usr/share/icons/gnome/scalable/emblems/emblem-default.svg"
end
Где пост-инициализация параметров для истанса происходит в его биндинге (https://github.com/splattael/libnotify/blob/master/lib/libnotify.rb). Это достаточно удобно.
С другой стороны, понимание каллбеков дает возможность реализовывать паттерн 'стратегия', через каллбеки, например, в рест клиент (https://github.com/rest-client/rest-client) ты можешь увидеть такой код:
RestClient.add_before_execution_proc do |req, params|
access_token.sign! req
end
И совсем уж никуда без каллбеков для state machines (https://github.com/pluginaweek/state_machine).
Если из кода тяжело понять как использовать замыкания, то почитай:
http://rubylearning.com/blog/2010/11/30/how-do-i-build-dsls-with-yield-and-instance_eval/
http://blog.khd.me/ruby/ruby-currying/
http://brandonhilkert.com/blog/ruby-gem-configuration-patterns/
Где последний пример подробно рассказывает про конфигурировование гемов через замыкания.
Ну а нравится или не нравится, это дело строго твое. Главное: пиши, сука, читабельный код, а ruby-way у каждого свой.
closures используются повсеместно, говорить о производительности как минимум странно, ведь по-твоему тогда и [1,2,3,4,5].map { |elem| ...} будет медленным.
Как примеры, замыканий посмтри популярные репозитории на гитхабе, можно встретить конструкции вида:
n = Libnotify.new do |notify|
notify.summary = "hello"
notify.body = "world"
notify.timeout = 1.5 # 1.5 (s), 1000 (ms), "2", nil, false
notify.urgency = :critical # :low, :normal, :critical
notify.append = false # default true - append onto existing notification
notify.transient = true # default false - keep the notifications around after display
notify.icon_path = "/usr/share/icons/gnome/scalable/emblems/emblem-default.svg"
end
Где пост-инициализация параметров для истанса происходит в его биндинге (https://github.com/splattael/libnotify/blob/master/lib/libnotify.rb). Это достаточно удобно.
С другой стороны, понимание каллбеков дает возможность реализовывать паттерн 'стратегия', через каллбеки, например, в рест клиент (https://github.com/rest-client/rest-client) ты можешь увидеть такой код:
RestClient.add_before_execution_proc do |req, params|
access_token.sign! req
end
И совсем уж никуда без каллбеков для state machines (https://github.com/pluginaweek/state_machine).
Если из кода тяжело понять как использовать замыкания, то почитай:
http://rubylearning.com/blog/2010/11/30/how-do-i-build-dsls-with-yield-and-instance_eval/
http://blog.khd.me/ruby/ruby-currying/
http://brandonhilkert.com/blog/ruby-gem-configuration-patterns/
Где последний пример подробно рассказывает про конфигурировование гемов через замыкания.
Ну а нравится или не нравится, это дело строго твое. Главное: пиши, сука, читабельный код, а ruby-way у каждого свой.
>http://brandonhilkert.com/blog/ruby-gem-configuration-patterns/
>tfw no chad bf to code on ruby together
А сейчас есть несколько предложений работы, все +- одинаковые. И я не могу ничего выбрать, впал в ступор.
Что делать? Подскажи годный способ самовыпила.
Почему в этом треде?
Годно расписал. Вопрос был не мой, я тут мимокрокодил, но мне эта инфа будет полезна. Спасибо, анон.
Так и за тривальщину никто не поясняет, я вот неправильно про биндинги рассказал, в >>918092 они не изменяются.
Т.е. изменяются не через yield self, а так: (https://github.com/jhass/configurate/blob/master/lib/configurate.rb)
# Create a new configuration object
# @yield the given block will be evaluated in the context of the new object
def self.create(&block)
config = new
config.instance_eval(&block) if block_given?
config
end
И никто не поправил, хотя думал: проснусь, посмотрю, а тут уже меня уже обосрали и пояснили за нюанс. Все, блядж, самому приходится делать. Чего уж говорить о по-настоящему сложных и интересных штуках.
>За примером далеко ходить не надо, вот он рейлс вей во всей красе: https://github.com/redmine/redmine/blob/master/app/models/user.rb
В java интерпрайзе такая же хуета. Но кода по ссылке хоть и много, он вполне быстро читается и понимается. Не вижу проблемы
Нюфаг
Сап сосач, ситуация очень тяжелая, нуждаюсь в любой хелпе.
В в общем делаю веб-парсер сайта, всё шло гладко, пока я не наткнулся на выпадающий список..
Как спарсить названия из списка, и ссылки на картинки, соответствующие выбору?
(curb/nokogiri/xpath)
http://www.sammccauley.com/Product/loreal-colour-riche-lipliner/27631/2224.14.0 к примеру эта страничка
doc = Nokogiri::HTML(html)
doc.css('.prodselector option').each { |p| puts p['value'] }
картинки пиздец, нужно отправлять пост запрос с value в параметрах и в ответе будет ссылка на картинку.
спасибо, мэн, будем пробовать )
https://github.com/rails/rails/issues/9454
>strong parameters is not designed to handle every possible situation. We wanted to keep the API on point to handle the most common situations. As assigning a hash with unknown keys more or less defeates the purpose of strong parameters (restricting allowed keys), It's not supported because it could make your code vulnerable.
За меня решили, блджад, охуеть.
Че делать, как хеш в параметрах в белый список поместить? Хеш fields сохраняет пользовательские поля.
# params.require(:hui).tap do |white|
# white[:fields] = params[:hui][:fields]
Не работает. Rails 5
Можно удалять, сорри. Бомбануло просто на ночь глядя.
говорят лучше учи пхп или питон плюс жаваскрипт.
в тоже время знаю инсайд от хрюш что рубист самая сложная вакансия для них, 2 года и берут в миддлы больше 3х уже сеньор.
и в украине только по руби есть бесплатные курсы, сконкурсом? где правда анон?
Вместо того, чтобы читать - давно бы попробовал уже что-нибудь и сам всё понял. Я тебе так скажу: как правило, пхпшник и жаваскриптер - не знают руби, а рубист наоборот: обычно знает пхп и жаваскрипт. Вот и думай, кому верить и что учить.
извини, может я неправильно задал вопрос.
Задам по-другому : насколько разумно выбирать руби первым ЯП? как потом с работой? хоть контора хоть апворк? или лучше отвеслать пхп-макакой с год а потом доучить руби?
Я делал вторым путём, не знаю как с нуля руби учится. На моей памяти нет таких людей.
курсы киевские изистартин айти за 10%, да? или есть ещё? с чего начинал, что есть на русском кроме каналов на ютубе? на инглише долго. что подтягиваешь кроме рельс?
спасибо посмотрю. я имел ввиду эти курсы. попробуй туда http://fe.easystartin.it/ это по руби.
Схоронил пикчу, напишу на синатре.
Может у кого есть еще тестовые или стажерские задания подобного вида(желательно посложнее)? А то я чет как ни придумаю что-нибудь, так для моего уровня это месяца 2-3 работы, а тут и небольшое приложенице, и норм идея(не эти ебучие твиттеры, тудушки, борды).
Где получить хорошее целостное знание вопроса? Посоветуйте источники. Русский, английский - не важно.
Ты бы еще ему предложил посмотреть что там в процессоре на уровне машинных команд выполняется
>>919923
Посмотри https://github.com/NoamB/sorcery это самый минималистичный годный гем для авторизации из мне известных.
Благодарю! Выглядит подходяще, буду осиливать.
Сначала все равно попытаюсь нагуглить что-нибудь мало-мальски релевантное из теории. Столько книжек про веб написано, наверняка кто-нибудь раскрыл эту тему хоть в одной главе. Не могу избавиться от ощущения непоследовательности в подходе изучения вопроса по написанному коду. Как будто по ответу на вопрос "Как?" пытаюсь понять "Что и зачем?".
Хартла читал, RoR Security Guide? Помойму там вполне понятно описано, как, где и почему именно так
Теперь прочитаю. Пробежался по заголовкам, должно подойти. Еще раз спасибо!
Соси спасибо, мартышка.
Ну и исходнички почитывай, куда уж без них. Мне как-то теперь даже лень книги или статьи искать чтобы о чем то нужном узнать. Я сразу хуячу в исходники и луркаю как там сделали нужную мне фишку походу уже начал превращаться в copy-paste мартыхана
да хуй их знает в фейсбуке писали что руби
>Доброго дня, Анонінмус
Дякуємо за інтерес до нашої команди
Ми зараз проводимо набір в групу RubyOnRails розробки. Працюємо в невеликих групах по 5-7 людей. Наші курси орієнтовані саме на тих кандидатів, які збираються працевлаштуватися в ІТ найближчим часом. Ми безкоштовно навчаємо наших студентів, безкоштовно допомагаємо їм працевлаштуватися в сферу IT, а згодом займаємося їх професійним розвитком в подальшому. Свої послуги ми надаємо безкоштовно до того моменту, поки людина успішно не працевлаштовується. І вже тоді, по факту, коли людина працює та отримує заробітну плату, вона сплачує % із своєї з/п.
В нас немає прив'язки до конкретних компаній, ми робимо ставку на тому аби зробити нашого студента конкурентоспроможним та підготовленим кандидатом на ринку, який має усі шанси для того щоб успішно працевлаштуватися на позицію розробника.
Більш детально:
Перед початком курсу підписується договір зі студентом терміном на 3 роки.
Під час навчання основний акцент ми робимо на практичних завданнях, курс триває 3 місяці - будні дні (тричі на тиждень) о 19.00. Тривалість заняття 2,5 - 3 год.
Офіс знаходиться на Льва Толстого.
Після закінчення курсів ми допомагаємо студентові знайти роботу якнайшвидше і якнайкраще, адже ми теж в цьому зацікавлені.
Коли студент успішно працевлаштувався, він сплачує 10% щомісячно від своєї чистої з/п протягом 3 років.
В свою чергу ми:
продовжуємо професійно розвивати студента - допомагаємо максимально швидко просуватися від позиціі junior до middle, згодом до senior;
працюємо за моделлю менторства + постійний технічний сапорт з нашого боку;
пропонуємо відвідувати інші напрямки для професійного зростання в рамках нашої школи;
English speaking clubs для наших студентів тричі на тиждень.
На вході ми очікуємо кандидатів зі знанням основ програмування на Ruby.
Якщо Вам цікава така модель співпраці - можемо запропонувати долучитися до нашого тестового відбору.
Чекаємо на Вашу відповідь.
да хуй их знает в фейсбуке писали что руби
>Доброго дня, Анонінмус
Дякуємо за інтерес до нашої команди
Ми зараз проводимо набір в групу RubyOnRails розробки. Працюємо в невеликих групах по 5-7 людей. Наші курси орієнтовані саме на тих кандидатів, які збираються працевлаштуватися в ІТ найближчим часом. Ми безкоштовно навчаємо наших студентів, безкоштовно допомагаємо їм працевлаштуватися в сферу IT, а згодом займаємося їх професійним розвитком в подальшому. Свої послуги ми надаємо безкоштовно до того моменту, поки людина успішно не працевлаштовується. І вже тоді, по факту, коли людина працює та отримує заробітну плату, вона сплачує % із своєї з/п.
В нас немає прив'язки до конкретних компаній, ми робимо ставку на тому аби зробити нашого студента конкурентоспроможним та підготовленим кандидатом на ринку, який має усі шанси для того щоб успішно працевлаштуватися на позицію розробника.
Більш детально:
Перед початком курсу підписується договір зі студентом терміном на 3 роки.
Під час навчання основний акцент ми робимо на практичних завданнях, курс триває 3 місяці - будні дні (тричі на тиждень) о 19.00. Тривалість заняття 2,5 - 3 год.
Офіс знаходиться на Льва Толстого.
Після закінчення курсів ми допомагаємо студентові знайти роботу якнайшвидше і якнайкраще, адже ми теж в цьому зацікавлені.
Коли студент успішно працевлаштувався, він сплачує 10% щомісячно від своєї чистої з/п протягом 3 років.
В свою чергу ми:
продовжуємо професійно розвивати студента - допомагаємо максимально швидко просуватися від позиціі junior до middle, згодом до senior;
працюємо за моделлю менторства + постійний технічний сапорт з нашого боку;
пропонуємо відвідувати інші напрямки для професійного зростання в рамках нашої школи;
English speaking clubs для наших студентів тричі на тиждень.
На вході ми очікуємо кандидатів зі знанням основ програмування на Ruby.
Якщо Вам цікава така модель співпраці - можемо запропонувати долучитися до нашого тестового відбору.
Чекаємо на Вашу відповідь.
test
Як і домовлялись, надсилаю Вам тестове завдання на курс RubyOnRails:
Невеликий тест з англійської мови https://www.braincert.com/test/3360-English-grammar-test.
Потрібно написати код, який приймає 2 дати в мілісекундах (Unix timestamp), а повертає різницю в читабельному для людини вигляді з правильними закінченнями в словах та словом "and" якщо є секунди.
Для прикладу, якщо передані числа "1478779621" та "1478687791" - в результаті має вийти "1 day 1 hour 30 min and 30 seconds".
Написати код, який поверне масив часу від заданої дати до 5 днів. До першої години крок часу 15 хвилин, після першої і до 5 годин - крок 30 хвилин, після 5 годин крок = 1 година. Після 12 годин відлік часу має бути в днях. Варто також врахувати дати, без часу. В цьому випадку відлік починати з 12 години ночі.
Для прикладу, якщо передається дата "Thu, 22 Dec 2016 00:00:00", в результаті має вийти
"[
Thu, 22 Dec 2016 00:00:00
Thu, 22 Dec 2016 00:15:00
Thu, 22 Dec 2016 00:30:00
Thu, 22 Dec 2016 00:45:00
Thu, 22 Dec 2016 01:00:00
Thu, 22 Dec 2016 01:30:00
Thu, 22 Dec 2016 02:00:00
Thu, 22 Dec 2016 02:30:00
Thu, 22 Dec 2016 03:00:00
Thu, 22 Dec 2016 03:30:00
Thu, 22 Dec 2016 04:00:00
Thu, 22 Dec 2016 04:30:00
Thu, 22 Dec 2016 05:00:00
Thu, 22 Dec 2016 06:00:00
Thu, 22 Dec 2016 07:00:00
Thu, 22 Dec 2016 08:00:00
Thu, 22 Dec 2016 09:00:00
Thu, 22 Dec 2016 10:00:00
Thu, 22 Dec 2016 11:00:00
Thu, 22 Dec 2016 12:00:00
Fri, 23 Dec 2016 12:00:00
Sat, 24 Dec 2016 12:00:00
Sun, 25 Dec 2016 12:00:00
Mon, 26 Dec 2016 12:00:00
Tue, 27 Dec 2016 12:00:00
]"
Важливо:
- Не використовувати Rails фреймворк;
- Весь код має бути на гітхабі з інструкціями та прикладами вхідних та вихідних даних.
Рекомендовані ресурси для вивчення RubyOnRails:
http://guides.rubyonrails.org/
https://www.codeschool.com/
http://railsforzombies.org/
Чекаємо на Вашу відповідь до 16 cічня включно.
Будуть питання - звертайтеся.
Бажаємо успіхів :)
test
Як і домовлялись, надсилаю Вам тестове завдання на курс RubyOnRails:
Невеликий тест з англійської мови https://www.braincert.com/test/3360-English-grammar-test.
Потрібно написати код, який приймає 2 дати в мілісекундах (Unix timestamp), а повертає різницю в читабельному для людини вигляді з правильними закінченнями в словах та словом "and" якщо є секунди.
Для прикладу, якщо передані числа "1478779621" та "1478687791" - в результаті має вийти "1 day 1 hour 30 min and 30 seconds".
Написати код, який поверне масив часу від заданої дати до 5 днів. До першої години крок часу 15 хвилин, після першої і до 5 годин - крок 30 хвилин, після 5 годин крок = 1 година. Після 12 годин відлік часу має бути в днях. Варто також врахувати дати, без часу. В цьому випадку відлік починати з 12 години ночі.
Для прикладу, якщо передається дата "Thu, 22 Dec 2016 00:00:00", в результаті має вийти
"[
Thu, 22 Dec 2016 00:00:00
Thu, 22 Dec 2016 00:15:00
Thu, 22 Dec 2016 00:30:00
Thu, 22 Dec 2016 00:45:00
Thu, 22 Dec 2016 01:00:00
Thu, 22 Dec 2016 01:30:00
Thu, 22 Dec 2016 02:00:00
Thu, 22 Dec 2016 02:30:00
Thu, 22 Dec 2016 03:00:00
Thu, 22 Dec 2016 03:30:00
Thu, 22 Dec 2016 04:00:00
Thu, 22 Dec 2016 04:30:00
Thu, 22 Dec 2016 05:00:00
Thu, 22 Dec 2016 06:00:00
Thu, 22 Dec 2016 07:00:00
Thu, 22 Dec 2016 08:00:00
Thu, 22 Dec 2016 09:00:00
Thu, 22 Dec 2016 10:00:00
Thu, 22 Dec 2016 11:00:00
Thu, 22 Dec 2016 12:00:00
Fri, 23 Dec 2016 12:00:00
Sat, 24 Dec 2016 12:00:00
Sun, 25 Dec 2016 12:00:00
Mon, 26 Dec 2016 12:00:00
Tue, 27 Dec 2016 12:00:00
]"
Важливо:
- Не використовувати Rails фреймворк;
- Весь код має бути на гітхабі з інструкціями та прикладами вхідних та вихідних даних.
Рекомендовані ресурси для вивчення RubyOnRails:
http://guides.rubyonrails.org/
https://www.codeschool.com/
http://railsforzombies.org/
Чекаємо на Вашу відповідь до 16 cічня включно.
Будуть питання - звертайтеся.
Бажаємо успіхів :)
>продовжуємо професійно розвивати студента - допомагаємо максимально швидко просуватися від позиціі junior до middle, згодом до senior;
Не забивай трел этим говном, пожалуйста, спасибо.
Анонас, хелпани чем сможешь, вопрос жизни
https://toster.ru/q/391272
Создал тему на тостере, дабы не засорять харкач множеством букоф
я не догнал, как на нем отправить именно тот запрос, что мне нужен, ибо урл страницы статический, а что отвечает за изменение картинки?
но все-равно спасибо, мб разберусь
а, понял, он эмулирует браузер, но хз смогу ли я реализовать цикл перебора каждой странички из каталога с использованием этого гема..
Двачую этого. У нас в Минске тоже есть контора. Набирает бесплатно на курсы студиосов, а потом дает контракты на 5 ЕБАНЫХ ЛЕТ. Я ожно охуел и никогда бы не поверил что такое бывает. За 5, да и за 3 года ты превратишься в тупого безвольного биоробота в таких бодишопах, сужу по своим знакомым. Мог устроиться джавамартыхой, но там было направление и по рубям. С другой стороны курсы были достаточно анально-сложные и мне много чего дали т.к. все задания я делал сам и без копипиздинга. Рекомендую пройти курсы, но потом наебать их и не устраиваться.
Куда в минске не в бодишоп идти? Заебали бодишопы, сам работаю уже третий год в таком, заебала эта потогонка. Опыта лет 8.
Куда в минске не в бодишоп идти? Заебали бодишопы, сам работаю уже третий год в таком, заебала эта потогонка. Опыта лет 8.
Поясни-ка анончик почему сидишь там? В епаме галеришь? Мои друзья с амбициями отвесловали по году и потом свалили нафиг, кто фрилансить, кто к буржуям на удаленку. Один задрочил немного дойч и релокейтнулся туда, правда он 3 года до этого батрачил. Остались только те, кому вроде и похуй, потому что на тыщу можно жить как Лукашенко припеваючи.
<% if @user = current_user %>
<%= link_to 'Edit', edit_post_path(post) %>
<% end %>
Но, выкидывает NoMethod.
http://stackoverflow.com/questions/41871902/undefined-method-link-to-edit-using-draper-decorator
собсна сам вопрос, многабукоф.
А у меня смежный вопрос - зачем для декорации гем? Я не иронизирую, типа "че слабо самому декоратор сделать", мне интересно, действительно он дает больше и лучше чем PORO? сам декораторы никогда не юзал
ну, в принципе, можно и нативные хелперы заюзать или SimpleDelegator. а по гему я посмотрел, у него вообще обширные проблемы с пятой рельсой. придется таки ручками свои хелперы писать
А что сделать-то нужно?
Всё верно. Декораторы не нужны. Будешь как дурной проверять везде "декорированный или недекорированный???". Просто хелперы юзай.
Например, в модели есть метод set_admin, который делает юзера админом. Через консоль отлично работает, в духе User.find(1).set_admin .
Если вставить во вьюху что то вроде
<%= link_to @user.set_admin %>, юзер будет становится админом при каждом заходе на его страницу.
Проблему решил через добавление в контроллер метода, который вызывает метод из модели, а потом прописал его в routes. Можно это было сделать как нибудь попроще, как в первом варианте, например, но по клику на ссылку? Зачем плодить методы?
Ну да ладно, это хотя бы работает.
В модели есть метод set_moder(section), который делает юзера модератором определённого раздела. Опять же, через консоль прекрасно работает, через консоль, а как заставить это работать через view нет идей.
Через view вообще ничего "работать" не должно. Вьюха только показывает. Учи SOLID.
Всё равно, в view работает при заходе на страницу, а не при нажатии на ссылку, как задумывалось
да, вопрос так и не уточнил. может кто-то прояснить нубу внятный алгоритм для поиска по префиксному дереву, что у нас сформировалось?
Вьюха показывает ссылку, действие на которой срабатывает при заходе на страницу, а не после нажатия. Понимаю, что вопросы нубские, но прошу указать на ошибки, или хотя бы куда гуглить.
Блин, вопрос настолько уебанский, что меня аж подмыло написать об этом.
Дело не в том, что он нубский, а в том, что ты совершенно не хочешь знать как это работает - тебе вообще похуй, ты даже на секунду похоже не задумался, у тебя одна проблема "срабатывает при рендере". Почему это так происходит, тебе просто похуй.
ребят, UPD: префиксное дерево строится правильно, но это просто дерево. необходимо чтобы каждый узел дерева мог быть либо промежуточным, либо конечным. пикрелейтед. помогите, пожалуйста, с алгоритмом (изначальный код в посте на который отвечаю пикрелейтед)
UPD(2): синим обозначены конечные узлы, серым -- промежуточные
Укажи мне куда смотреть и следующий раз я не буду задавать глупые вопросы. Я еще не накопил того багажа знаний, что бы делать эти действия интуитивно. В большинстве обучающих материалов, что мне попадались, автор больше занят самолюбованием, чем понятными объяснениями. Как будто их пишут не для новичков, а для профессионалов, которые это и так знают.
Ну так а почему ты спрашиваешь почему у тебя при заходе сетадмин срабатывает, почему ты не спрашиваешь, как работает link_to? Бля, да как ты вообще додумался вызывать метод при рендере и удивляться, а почему это у меня метод срабатывает
Зачем ты тратишь своё время на то, что бы объяснить мне какой я мудак? Я к этому могу и без тебя прийти. Лучше потрать своё время и дай ссылку на то, как это работает, или объясни своими словами
>Shrine
О, новый гем узнал. По описанию интересный.
По поводу кеша помню с кэривейвом была проблема в том, что файлы загруженные, но так и не засабмиченные, оставались в кеше. Поставил крон-таск чистить раз в сутки.
>Лучше потрать своё время
Ты думаешь здесь бесплатные репетиторы сидят?
Вот тебе: http://guides.rubyonrails.org/
Дальше сам.
Я твой код не запускал, но из того, что понял - у тебя не дерево же получается, а плоский хэш с буквами в ключах и {} в значении. Разве нет?
по сути, получается дерево, но без конечных или промежуточных узлов. если короче, попробуй запустить
пикрелейтед, так покороче будет.
Тебе не лень покрыть меня хуями, но лень указать на ошибку. Ты ведь бесплатно учишь меня жизни, хотя я этого не просил.
Почему программисты такие высокомерные? Зачем вам надо доказывать, что вы лучше остальных? Это потому, что все остальные ставят это под сомнение? Я вот 3дшник, когда учил макс тоже задавал тупые вопросы, на форуме меня крыли хуями, но указывали на ошибки и говорили куда копать. Прошло несколько лет, и уже я показываю неокрепшим умам что делать. И знаешь, один раз покрыв их хуями они возвращаются с тупыми вопросами снова и снова, а один раз указав нубу на его ошибку, очень часто он вкатывается в тему и больше не задаёт тупых вопросов.
Читаю описание link_to: "создает гиперссылку, на основе текста для отображения и указания куда перейти". В моём понимании это выглядит как то, что мне надо -- гиперссылка для некоего действия. Но работает оно как то иначе.
Я не прошу быть моим репетитором, я прошу лишь написать "Чувак, то, что ты делаешь работает не так, то, что ты хочешь сделать делается через @функциянейм"
>>920308
>use the helpers, Luke!
Вот так было бы норм
Я тебя не крыл ничем, нас здесь больше двух.
Пока гайды не прочитаешь и не поймёшь - можешь сюда не возвращаться. Потому что ты задаешь вопросы человека с улицы. Базовые вещи, которые везде давно написаны и все их знают. Это как прийти на форум лингвистов и спрашивать какая буква идёт после буквы А в алфавите. Только поэтому тебя накрыли хуями.
Правильный ответ на форуме лингвистов будет "Буква Б. А что бы не задавать глупых вопросов, погугли Алфавит и Буквы". А ты вместо этого даёшь ссылку на трёхтомник "Лингвистика для поступающих в ВУЗы", в котором есть ответы на все вопросы, но я, как новичек в этой сфере банально путаюсь в терминах и не могу найти ответ. Гайдов я перечитал сотни, зачастую в них раскрываются ответы на множество вопросов, которые возникнут потом, но подразумевается, что человек уже понимает основы. Это как если бы в гайде по ходьбе рассказывались тонкости подъёма на Эверест, и особенности постановки ступни при марафонском беге.
И да, я уже давно не тратил бы ваше и своё время, если бы вы потратили время не на едкие замечания, а на один конструктивный ответ
Тот анон хоть и напрасно сокрушается, но в целом прав. С точки зрения педагогики не существует глупых вопросов и все такое, но с точки зрения двачематики бывают вопросы на которые кто-то захочет ответить, а бывает нет. Второй случай чаще всего случается когда вопрос не глупый, а некорректный.
На глупый вопрос можно ответить в 2-3 слова и на него ответят быстрее всего, а с некорректным диалог затягивается на 5-6 объемных взаимных обменов сообщениями только для того чтобы объяснить, что вопрос поставлен некорректно.
В целом тут все лояльные и дружелюбные. Не парься и спрашивай свои ответы еще, только удели побольше внимания формулировке и сути вопроса. В правильном вопросе лежит больше половины ответа.
Задавал десятки вопросов и отвечал на столько же здесь и по всему /pr/ и всегда получал свои ответы -кун
Мой вопрос был задан в первом посте -- как вызвать метод по клику на ссылку (нажатию на кнопку, etc).
Да потому что вопрос был уебанский, никакого высокомерия. Рельсы бесячие, как по мне, в плане своей магии, но тебя это не смущает, ты просто пишешь
>link_to @user.set_admin
и ждешь что это должно работать. А как оно по твоему должно заработать, вот скажи? Что эта запись должна сделать с твоей точки зрения?
>создает гиперссылку, на основе текста для отображения и указания куда перейти
Вот ты написал
>link_to @user.set_admin
и где здесь указание текста, а где путь, куда перейти?
Часто можно видеть записи типа
link_to 'Product', @product
Со мной многие не согласятся, но я считаю, что это зло. На самом деле это тоже самое что
link_to 'Product', product_path(@product)
просто рельсы "магическим" образом догадываются, что нужно использовать product_-хелпер.
Но это тоже хуйня не очень понятная. На самом деле это то же самое, что
link_to('Product', product_path(id: @product.id))
#=> <a href="/product/42">Product</a>
Рельсы опять же "догадываются", что по умолчанию нужно для подстановки параметра в путь использовать id.
Что происходит в твоем случае не понятно, должна вообще-то быть ошибка.
Если ты хочешь сделать действие типа "сделать админом/модератором/и тп", то может быть несколько способов. Правильным будем считаться обновление записи через форму, и форма при этом должна использовать POST-запрос.
Если хочется сделать это в виде ссылки, то можно использовать рельсовые плюшки. В рельсах можно написать так
link_to('title', path, {method: :post})
И рельсы создадут запись типа
<a href="path" data-method="post">title</a>
И пропатченный рельсами jquery обработает клик по такой ссылке и пошлет post-запрос.
Куда и с каким данными слать такой запрос - решать тебе.
Можно сделать как-то так:
class UsersController
def update
@user = User.find(params[:id])
@user.update(params)
end
end
link_to "Сделать админом", update_user_path(@user, role: 'admin'), method: :put
Да потому что вопрос был уебанский, никакого высокомерия. Рельсы бесячие, как по мне, в плане своей магии, но тебя это не смущает, ты просто пишешь
>link_to @user.set_admin
и ждешь что это должно работать. А как оно по твоему должно заработать, вот скажи? Что эта запись должна сделать с твоей точки зрения?
>создает гиперссылку, на основе текста для отображения и указания куда перейти
Вот ты написал
>link_to @user.set_admin
и где здесь указание текста, а где путь, куда перейти?
Часто можно видеть записи типа
link_to 'Product', @product
Со мной многие не согласятся, но я считаю, что это зло. На самом деле это тоже самое что
link_to 'Product', product_path(@product)
просто рельсы "магическим" образом догадываются, что нужно использовать product_-хелпер.
Но это тоже хуйня не очень понятная. На самом деле это то же самое, что
link_to('Product', product_path(id: @product.id))
#=> <a href="/product/42">Product</a>
Рельсы опять же "догадываются", что по умолчанию нужно для подстановки параметра в путь использовать id.
Что происходит в твоем случае не понятно, должна вообще-то быть ошибка.
Если ты хочешь сделать действие типа "сделать админом/модератором/и тп", то может быть несколько способов. Правильным будем считаться обновление записи через форму, и форма при этом должна использовать POST-запрос.
Если хочется сделать это в виде ссылки, то можно использовать рельсовые плюшки. В рельсах можно написать так
link_to('title', path, {method: :post})
И рельсы создадут запись типа
<a href="path" data-method="post">title</a>
И пропатченный рельсами jquery обработает клик по такой ссылке и пошлет post-запрос.
Куда и с каким данными слать такой запрос - решать тебе.
Можно сделать как-то так:
class UsersController
def update
@user = User.find(params[:id])
@user.update(params)
end
end
link_to "Сделать админом", update_user_path(@user, role: 'admin'), method: :put
А вы настойчивый молодой человек. Хорошо, смотри.
По клику на ссылку нельзя вызвать метод. Ссылка находится предположение 1 в html файле в браузере пользователя. Там в принципе могут быть методы JS, но предположение 2 тебя скорее всего интересуют методы на стороне сервера, раз уж ты в Руби треде.
Метод на стороне сервера может быть вызван многими методами, но чаще всего и скорее всего в твоем случае предположение 3 методы вызываются в ответ на запрос со стороны клиента.
Чтобы получить от сервера ожидаемый ответ можно сделать разные вещи, но в общем случае предположение 4 это будет запрос по определенному URL на сервере. Как правило, предположение 5 для этого нужно создать обработчик пути в routes.rb и создать контролер с экшеном, которые на него ответят.
предположение 6 Твой метод должен быть вызван из соответствующей модели, которая должна вернуть данные к контролеру, тот должен решить, что с ними делать предположение 7 и отдать во вью, где шаблонизатор твои данные как-то будет выводить.
Я сыграл роль экстрасенса и сделал кучу предположений, написал стену спорного текста, не получил от этого почти никакой сатисфакции и скорее всего не дал тебе исчерпывающего ответа. Теперь понимаешь, почему важно задать вопрос правильно? На корректный пусть и корректный вопрос быстро ответит даже гугл, а на некорректный весь тред будет бугуртить, но ответ будет отстойный. Не списывай это на высокомерие, это будет действительно недалекостью.
>А как оно по твоему должно заработать, вот скажи? Что эта запись должна сделать с твоей точки зрения?
В самом первом посте с сиськами я написал, что я жду от этой записи.
>и где здесь указание текста, а где путь, куда перейти?
Да, тут мой косяк, писал по памяти, там на самом деле <%= link_to "Сделать админом", @user.set_admin %>
Но это всё равно работает так, как я описал - не по клику на ссылку, а при заходе на страницу. И как раз вот это и непонятно -- почему действие из link_to срабатывает не по клику на ссылку, а при заходе на страницу, где эта ссылка есть. В моей логике, раз ссылка отображается, значит даже если есть ошибка, появляться она должна по клику на ссылку, но никак не до него.
Спасибо за советы, попробую через форму.
>>920440
>По клику на ссылку нельзя вызвать метод
Именно это я хотел услышать с самого начала
>для этого нужно создать обработчик пути в routes.rb и создать контролер с экшеном, которые на него ответят.
Опять же, я писал что сделал это в первом посте:
>Проблему решил через добавление в контроллер метода, который вызывает метод из модели, а потом прописал его в routes. Можно это было сделать как нибудь попроще, как в первом варианте, например, но по клику на ссылку? Зачем плодить методы?
Вопрос был в том, что раз уж метод срабатывает при заходе на страницу пользователя (а не по клику по ссылке, как задумывалось) без добавления
кшена в контроллер и без внесения изменений в routes, так может быть можно как нибудь обойтись без этого?
Ты хочешь чтобы в ответ на запрос по определенному адресу сервер просто вызывал твой метод минуя контроллер?
Что бы по клику на определённую ссылку(кнопку).
Сейчас он делает это по заходу на страницу где есть эта определённая ссылка
Анон, ты кажется ни с вебом никогда не работал, ни с программированием.
Можешь конечно пытаться задрачивать рельсы, но это будет очень неэффективно. Рельсы еще к тому же очень высокоуровневые.
>Вопрос был в том, что раз уж метод срабатывает при заходе на страницу пользователя (а не по клику по ссылке, как задумывалось) без добавления
>кшена в контроллер и без внесения изменений в routes, так может быть можно как нибудь обойтись без этого?
О блядь, это пиздец! Я был прав в своем первом предположении, ты совершенно не хочешь знать, что проиходит, тебе нужно чтобы это просто заработало.
Вызов метода при заходе на страницу может быть только если javascript на клиенте на событие onload генерирует ajax-запрос на твой сервер. Пропусти предыдущее предложение мимо, а следующие читай внимательно.
Нет захода на страницу. Есть сервер и клиент. Они могут делать запросы и ответы. Нет ссылок, есть адреса. Все эти штуки связаны. Теперь попробуй сформулировать вопрос в рамках этих категорий.
Все не REST методы в разнести по отдельным контроллерам.
Всю логику из контроллеров вынести в сервис-обжекты, контроллеры только создают их и возвращают результат их работы клиенту.
А что тебя смущает, генерация в контроллере?
Вообще двачую вопрос, интересно, как это должно быть с точки зрения каноничного ООП.
>>920482
>в идеале
Как раз таки именно в идеале их там не должно быть.
>>920499
А как его тут можно использовать?
>Все не REST методы в разнести по отдельным контроллерам.
А зачем, если методы относятся к сущности, зачем их уносить в отдельные контроллеры?
>Всю логику из контроллеров вынести в сервис-обжекты
Но тут есть нюанс - он не только генерит файл, но еще и получает. И там и там есть логика пути к файлу и она должна быть инкапсулирована где-то в одном месте.
>ты совершенно не хочешь знать, что проиходит, тебе нужно чтобы это просто заработало.
О да, ты чертовски прав! Мне действительно нужно что бы это заработало, кажется я намекаю об этом с самого первого поста. И на свой уебанский вопрос я хочу получить такой же уебанский вопрос. Я не спрашиваю уебан ли я, потому, что посмел задать практический вопрос, и даже не спрашиваю как это работает. Всё, что я хочу, это получить одну строчку кода, которая позволит осуществить мне задуманное.
У тебя на скрине типичная ситуация в мире программистов -- кичится своей псевдоилитарностью, наслаждаться превосходством над другими. Единственный правильный ответ заминусован. Это максимально уебанский вопрос, который задавать крайне неуместно, но, прочитав заминусованный ответ человек будет знать с чего начать изучение. При этом он будет учить не абстрактные понятия, которые ему пригодятся после полугода кодинга, а то, что конкретно поможет ему реализовать задуманное. Когда нибудь ты будешь вкатываться в новую для тебя тему (автомобилизм, рисование и тд) и будешь тыкаться в стены выстроенные "старшими товарищами", может быть ты поймёшь о чем я. А пока можешь гордиться, ты хоть в чем то лучше остальных.
Алсо, спасибо тем, кто давал адекватные ответы по теме.
Если бы ты пришел и сказал, мол я ничего не знаю, меня например заставили на левом сайте одну хуйню сделать - это одно, тогда бы ни каких претензий.
Но ты хочешь "вкатиться в тему", а уважения к этой теме не имеешь.
Можно придти к математикам и попросить посчитать площадь фигуры. А можно придти и сказать, что делаешь расчетно-графическую работу и почему-то площадь треугольника через pr^2 не считается. Может если радиус посчитать не из центра треугольника она все-таки посчитается? Почему для круга площадь все-таки считается?
Конечно в этом случае будет претензия к тому, что ты взялся за серьезную профессиональную задачу, не знаком с базовыми вещами и при этом знакомиться с ними не собираешься.
Вон из профессии. Аноны, в следующий раз таких даунов прсто игнорим, и всё.
Они ж простые как палки, особенно сайдкик, просто прочти документацию на сайте. В случае с редисом можешь, если совсем неймется, еще прочесть The Little Redis Book, она лежит на гитхабе.
Это непрофессионально. Даже если он задает вопрос некорректно, всегда можно выдать ему столько же внимания, сколько он уделил формулировке вопроса. Сейчас он получил гораздо больше. Может он даже зеленый. И если это так, то те кто в этом треде столько сокрушались, от души его покормили. Именно поэтому и глупо агриться на "глупые" вопросы.
>>921304
Двачую про The Little Redis Book. Она, кстати, даже в переводе есть. А сайдкику их же вики смотри, там все исчерпывающе написано https://github.com/mperham/sidekiq/wiki#sidekiq-pro
name = 'Abu'
{name} и {name:name} эквивалентны
Руби - объектно-ориентированный язык, в нём нет острой нужды кидаться хэшами, соответственно нет и необходимости часто строить их вручную и использовать этот шортхэнд.
Из-под коробки нет, т.к. ненужно.
Технически, через метапрограммирование ты можешь узнать имя переменной и её значение; т.е. ничего не мешает написать говняшку которая будет разворачивать name в name:name в сеттере, а остальное время тупо делегировать вызовы в хэш.
>Если бы ты пришел и сказал, мол я ничего не знаю
Я именно это и сказал. У меня есть задача, которую мне надо решить, не для какого нибудь левого сайта, а для своего, которым я занимаюсь в свободное от основной работы время.
У меня возникла проблема и я попытался решить её своими же силами. Когда это не получилось я пришел сюда.
Я не собираюсь становиться профессиональным программистом, просто для моей основной деятельности сейчас нужен этот сайт.
>Можно придти к математикам и попросить посчитать площадь фигуры. А можно придти и сказать, что делаешь расчетно-графическую работу и почему-то площадь треугольника через pr^2 не считается. Может если радиус посчитать не из центра треугольника она все-таки посчитается? Почему для круга площадь все-таки считается?
Можно ответить, что площадь треугольника считается через 1/2ah, а вы вместо этого уже который пост рассказываете мне, какой я охуевший мудак, раз пытаюсь посчитать через другую формулу, и вообще с таким отношением в математику не надо. Да мне и не надо в математику, мне площадь посчитать.
>>921250
>Вон из профессии
Даун, я хоть где то упомянул, что это моя профессия? Может быть я написал, что зарабатываю этим деньги? Еще раз, я делаю сайт для себя, моя основная профессия связана с программированием лишь относительно (майский MEL).
Да, наверное я неправильно оперирую терминами, возможно у меня нет до конца понимания как это работает. Оно появится только после некоторого времени практики. Можно одной строчкой указать мне в какую сторону смотреть, я хотя бы буду знать что искать. Вы же рассказали мне, что я не программист, что я ничего не шарю в вебе, что я не профессиональный рубист и что я не умею в производство сайтов. А теперь подумайте, что из этого я не знал, задавая вопрос тут? И что из ваших ответов я смогу вынести для себя? Я даже нагуглить не смогу что надо. Читать мануалы с нуля по порядку? Я получу кучу новых терминов, множество абстрактной теории и никакой связи с практикой. Потом приду сюда же и буду задавать уебанские вопросы с красивыми терминами.
>Если бы ты пришел и сказал, мол я ничего не знаю
Я именно это и сказал. У меня есть задача, которую мне надо решить, не для какого нибудь левого сайта, а для своего, которым я занимаюсь в свободное от основной работы время.
У меня возникла проблема и я попытался решить её своими же силами. Когда это не получилось я пришел сюда.
Я не собираюсь становиться профессиональным программистом, просто для моей основной деятельности сейчас нужен этот сайт.
>Можно придти к математикам и попросить посчитать площадь фигуры. А можно придти и сказать, что делаешь расчетно-графическую работу и почему-то площадь треугольника через pr^2 не считается. Может если радиус посчитать не из центра треугольника она все-таки посчитается? Почему для круга площадь все-таки считается?
Можно ответить, что площадь треугольника считается через 1/2ah, а вы вместо этого уже который пост рассказываете мне, какой я охуевший мудак, раз пытаюсь посчитать через другую формулу, и вообще с таким отношением в математику не надо. Да мне и не надо в математику, мне площадь посчитать.
>>921250
>Вон из профессии
Даун, я хоть где то упомянул, что это моя профессия? Может быть я написал, что зарабатываю этим деньги? Еще раз, я делаю сайт для себя, моя основная профессия связана с программированием лишь относительно (майский MEL).
Да, наверное я неправильно оперирую терминами, возможно у меня нет до конца понимания как это работает. Оно появится только после некоторого времени практики. Можно одной строчкой указать мне в какую сторону смотреть, я хотя бы буду знать что искать. Вы же рассказали мне, что я не программист, что я ничего не шарю в вебе, что я не профессиональный рубист и что я не умею в производство сайтов. А теперь подумайте, что из этого я не знал, задавая вопрос тут? И что из ваших ответов я смогу вынести для себя? Я даже нагуглить не смогу что надо. Читать мануалы с нуля по порядку? Я получу кучу новых терминов, множество абстрактной теории и никакой связи с практикой. Потом приду сюда же и буду задавать уебанские вопросы с красивыми терминами.
Понятно, интересовало именно есть ли в самом языке такая фича.
как сосется маньки ?
Пиздуй нахуй отсюда, говно. Тебе тут не рады.
котятки, таки осилил это сраное префиксное дерево. прошу обсырать :3 https://github.com/baka-gaijin-hakka/trie_storage
https://github.com/baka-gaijin-hakka/trie_storage/blob/master/lib/trie_storage.rb#L28
Замени на
!!subtree && subtree[:final]
https://github.com/baka-gaijin-hakka/trie_storage/blob/master/lib/trie_storage.rb#L15
Изменять таким образом параметры - хреновая практика.
Алсо, вместо if words.size.zero? можно было написать if words.empty?
https://github.com/baka-gaijin-hakka/trie_storage/blob/master/lib/trie_storage.rb#L17
Плохое название для переменной. У тебя есть функция с таким же названием. А может быть плохое имя для функции?
> Замени на
> !!subtree && subtree[:final]
Когда даешь подобные советики, уточняй: комьюнити не адабряет https://github.com/bbatsov/ruby-style-guide#no-bang-bang
Когда даешь подобные замечаньяца, уточняй, что комьюнити не адабряют подобное использование в другом контексте. В данном случае же оно мастхэв (если он действительно хочет вернуть булево значение).
Однако, метод оканчивающийся на ? не обязательно должен возвращать false или true.
Достаточно возвращать subtree && subtree[:final]
>Однако, метод оканчивающийся на ? не обязательно должен возвращать false или true.
За такое у нас в коворкинге убивают нахуй.
> В данном случае же оно мастхэв
нет, (a && a[:elem]) и (!!a && a[:elem]) и то, и то -- это предикаты. Поскольку логические операции возвращают булевы значения не зависимо от типа операндов. Раз уж он действительно хочет вернуть булево значение.
{
"class": "Fixed",
"methods": [
"new",
"create"
],
"class": [
"",
""
]
}
нужно заматчить выделенный кусок в мультилайн моде и только его, рубулар весь день замучил
Есть две модели
Class Movie
has_many :posters
end
Class Poster
belongs_to :movie
has_attached_file :file, styles: { mediud: "300px 300px" }
end
Суть: реализовать метод, который бы принимал Movie, копирал все его свойства и вложенные обьекты (вместе с прикрепленным пэперклипом файлом) и сохранял бы его в бд. С чего начать,
Написал на колене в метро. Надеюсь, что оно сработает для Вашего случая.
"new"(\s|\n),(\s|\n)"create"
Блять, охуенный синтаксис.
"new"(\s|\n)*,(\s|\n)*"create"
Читаю главу в книге про методы и блоки, изначально автор говорил, что блок можно вызвать в методе через call и передав блок в аргументе метода. Потом рассказал про yield
Например:
[code]
def myMethod
yield
end
myMethod d
puts "Hello world!"
end
[/code]
Тут я смекнул, что главное чтобы блок назывался так же как и метод, тогда yield его просто находит и вызывает.
Но я не пойму, как работают такие вызовы из блока:
[code]
File.open("sample.txt") do |file|
contents = file.readlines
end
[/code]
Или например такой:
[code]
[1, 2, 3].each { |number| sum += number }
[/code]
Читаю главу в книге про методы и блоки, изначально автор говорил, что блок можно вызвать в методе через call и передав блок в аргументе метода. Потом рассказал про yield
Например:
[code]
def myMethod
yield
end
myMethod d
puts "Hello world!"
end
[/code]
Тут я смекнул, что главное чтобы блок назывался так же как и метод, тогда yield его просто находит и вызывает.
Но я не пойму, как работают такие вызовы из блока:
[code]
File.open("sample.txt") do |file|
contents = file.readlines
end
[/code]
Или например такой:
[code]
[1, 2, 3].each { |number| sum += number }
[/code]
первый совет оставлю так, как есть у меня, по поводу остальных двух -- аригатошенька годзаймаста, сейчас поправлю
Анончики, объясните, почему все так дрочат на сайдкик, почему везде знание сайдкик, опыт с сайдкик, почему кругом нужна какая-то помощь по сайдкику?
За мою практику как-то не довелось с ним поработать, не было какой-то острой нужды именно в нем, но работал с ActiveJob и использовал delayed_job как адаптер. Просто реализация очереди задач, ничего сверхестественного. Откуда дроч и в чем проблема?
он быстрее гораздо и легче + многопоточный
но с ним можно заебаться
https://gurudathbn.wordpress.com/2015/05/19/sidekiq-vs-delayed-job-comparison/
В чем разница в скейлинге? Первичный гуглеж мало чего дал, а прямо глубоко разбираться влом.
Я довольно хорошо знаю чем они отличаются.
Мой вопрос, почему все постоянно носятся с какими-то вопросами по сайдкику и почему в вакансиях просят опыт?
С точки зрения рельсовика вообще без разницы что там - он с ActiveJob работает.
Хороший вопрос.
Я знаю одно отличие - юникорн запускает один воркер на процесс. Пума умеет запускать воркеры в потоках (ее поэтому очень рекомендуют использовать с jruby). Если запускать в один поток, то она работает так же как юникорн. Встречал разные тесты, нигде пума не проигрывает, скорее выигрывает, если использует многопоточность.
Но знаю, что некоторые упорно используют юникорн. Видимо есть еще какие-то отличия?
Алсо, а кто может пояснить, почему потоки в руби типа "ненастоящие"
Все выкладывается. Посещают малолетние долбоебы и пиарщики. Ну и "фаундеры" бабло стригут.
Рельсы умирают. Галера набрала рельсовиков и не знает, что с ними сейчас делать - нет задач. Часть перекинули на java разгребать, лол, часть пойдет дворы подметать.
Уже разобрался.
Юникорн использует функциональность юникс систем, где на одном сокете может дохуя процессов сидеть. В итоге он плодит процессы на одном сокете, согласно настройкам, при этом он не скачивает запросы сам в мастер процессе, а позволяет напрямую установить соединение между собой и процессом рек-приложения, что ведет к длительному бездействию при загрузке тяжелых файлов клиентом или при медленном интернете клиента. Для того чтобы такой хуйни не было, перед юникорном ставят Nginx
Пума либо висит одна на сокете и плодит потоки (причем она сама скачивает HTTP запросы, до передачи рек-приложению)
Либо висит на сокете и плодит процессы (типа как юникорн выше). Но все равно при этом она занимается обработкой входящих запросов и не насилует рек-приложение пока не загружен реквест.
То есть в данный момент именно пума - для пацанов. Ну и пессенжер, вроде
Потоки в MRI ненастоящие, потому что в один момент времени в реальности выполняется только одна команда (если простым языком), а сам интерпретатор не параллелится. Особой разницы в том чтобы плодить треды в такой ситуации нету.
Помоги плиз, с меня порево, как мои кенты жарят меня в очко
Nginx де факто всегда ставят перед параллельными веб-серверами. То есть обычно не будет иметь значения скачивается ли пумой предварительно запрос.
Но что значит, что пума скачивает запрос? То есть она может напарсить больше запросов, чем воркеров в пуле занимается их обработкой? И якобы безболезненно обсулживать медленные запросы, не стопоря воркеры? Впервые услышал, где можно почитать?
Вообще очень странно звучит - чтобы запрос ушел в rack он же уже должен быть прочитан и распаршен по идее. Не понимат.
>>925275
>в один момент времени в реальности выполняется только одна команда
Только один поток, если точнее, так? То есть это равносильно утилизации только одного ядра?
В смысле всегда?
Все зависит от того, что ты хочешь от него получить и как настроить. Это не какой-то карго-культ, что у нас должен быть nginx и похуй на все остальное
>Но что значит, что пума скачивает запрос?
Значит, что у нее своя очередь запросов и она может качать отправляемые файлы с клиента, пока другой клиент шлет ей JSONчики, например. То есть обработка запроса клиента не блочит ни один поток или процесс, пока реквест не скачан полностью.
>То есть она может напарсить больше запросов, чем воркеров в пуле занимается их обработкой
Ну естественно, что у пумы своя очередь при таких условиях.
>чтобы запрос ушел в rack он же уже должен быть прочитан и распаршен по идее. Не понимат
Ну, если у тебя вебрик (или юникорн без nginx), то у тебя экземпляр вебрика или процесс юникорна коннектится напрямую к клиенту, начинает принимать данные с клиента и хотя обработка запроса еще не дошла до рельсы, прием данных блочит процесс.
Ну, я так понял, по крайней мере. Вот статейка.
https://www.speedshop.co/2015/07/29/scaling-ruby-apps-to-1000-rpm.html
>Только один поток, если точнее, так? То есть это равносильно утилизации только одного ядра?
Типа того. Называется это глобальным локом интерпретатора. (GIL)
И как там это происходит? Тип я пришел такой на конфочку и подхожу там к рандомным людям, "Привет, как тебя зовут, давай дружить)))))))))" лол, ну если серьезно. Понятно, что спикера люди сами найдут, а если обычный слушатель?
Ну люди задают там вопросы, можно в перерывах до них доебаться, подискутировать, обменяться контактами, могут быть представители каких-то интересных компаний, можно что-то у них спросить. Как-то так
Не ВАК-очевидный ответ.
Это такая скрытая гей-сходочка под прикрытием конференции.
Смотри. Подходишь к группе людей, которые что-то обсуждают и слушаешь с умным видом. Чуть-чуть вникаешь в тему. Потом, как только в их обсуждении возникает пауза, задвигаешь свою телегу, типа "вообще-то то-то и то-то" или "на самом деле все не так". Дальше смотришь по ситуации.
Хуйня. Туда как раз и ходят такие прыщавые третьекурсники с галер, якобы "за знакомствами". Думают, наивные, что их сразу в гугл возьмут. Ну или хоть в галеру получше. Ведь они такие умные.
Выбираешь понравившегося и ведешь в кабинку в туалете. Дальше все зависит от твоих способностей работать ртом. Так называемые "soft skills". О деталях уточняй у своей мамки.
Тем что верстальщики правят файл по FTP.
>>923864
Пилю сайт с рефералками для сетевого маркетинга. Из сложного для меня - реализация иерархического хранения данных и куча действий с определенными данными.
Еще немного страдаю от того, что разнес пользовательские данные по разным таблицам. Типа users, profiles и даже accounts. Джоинов дохуя.
Смс-валидацию фром скретч запилил.
В остальном обычный круд с модификациями
Расскажешь как смс-валидацию запили. Я уже в 3-х проектах ее делал, каждый раз пытаясь улучшить и все равно не нравится - не самая простая задача на самом деле.
Я в шаге от того, чтобы получить работу!
В-общем, суть такова - исползуя гем doorkeeper (Oauth2), я посылаю запрос на авторизацию на стронний сайт. С этого сайта я получаю Json. извдекаю access token, Затем этим токеном я отправляю еще один запрос - как результат мне прилетает джсон со списком обьектов
1)Как распастит ответный джисон, чтобы сохранить все лбьекты в модель
2) куда поместить весь этот процесс посыла запросов? у меня он в отдельной папке в лию директоиии и запускается через консоль ruby filename.rb
У меня получилось вытащить ответ запроса. Теперь к ак мне сохранить итемы из этого запроса в модели? В директории Lib не работает. Надо модулем передать в контроллер?
Повангую и предположу что он хочет написать mvc приложение на чистом руби, при этом в качестве ORM содомит взял active record.
И если с моделью все понятно, то огранизовать подобие контроллера и вьюшки для работы через CLI он не может/не знает как.
джуном на удаленку же
>>>>928456
Пишу на рельсах
> содомит
как будто что-то плохое
Да я уже разобрался.
Организовал все запросы через модуль, а его вклчилв контроллер
> Пишу на рельсах
Т.е. ты идешь джуном, но не знаешь что единоразово засеять (database seeding) базу можно через rake task? Ну удачи тебе.
> как будто что-то плохое
ActiveRecord говно.
Тем не менее это повсеместный мейнстрим и вакансии без него немыслимы. Так что не поддержу этот хейт, хотя он и говно А почему кстати? Моя претензия в толстых моделях, но в общем-то и с эктиврекордом их можно делать без тонкими и без бизнес-логики.
ты не понял меня - мне нужно было сохранить в бд из полученного ответ, а сидить я сам умею
>ActiveRecord говно.
А какая альтернатива ему для рельс?
Бтв задание я сам выполнил без какой-либо помощи Никто мне так и не помого
куча ошибок, но я имею право- сегодня весь день пилил этот таск
https://github.com/atipugin/telegram-bot-ruby вот гит на основу боту, я использую такой код
require 'telegram/bot'
require 'telegram/bot/types/user.rb'
token = 'токен'
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
case message.text
when '/peedor'
bot.api.send_message(chat_id: message.chat.id, text: "текст #{рандом юзер} текст #{message.from.first_name}, текст")
end
end
end
и так, в чем суть трабла, все переменные я дал, но не могу настроить рандом юзера, чтоб выдавало username рандомного юзера конфы, таймер, чтоб команда выдавала одного рандома в день, и дальше шел кулдаун, и способ использовать вебхук(сервер есть)(по дефолту стоит протокол гетАпдейт). код рабочий если убрать >#{рандом юзер}. все что я нагуглил, это ебанутые документации на руби, которые ни к чему толком не привели, помогите пожалуйста, буду очень благодарен.
Sequel.
Может, есть идеи, куда дальше качаться "синьору", так чтобы поменьше писать код, побольше рисовать диаграмки, анализировать идеи и ставить задачи?
Почему в Москве максимальная з/п — 200 за 160 часов в офисе (не считая "обеда"), хотя я зарабатываю 300 за 100 часов в месяц?
Почему в Руби треде? Потому что несмотря на ширину охвата того, что я делаю, проектировать под Руби и кодить на нём мне нравится больше всего.
Ебать, вот это аналитика. Такого глубокого анализа программного продукта я еще не видел.
Гавно.
Пояснишь, почему у тебя именно в protected callback (а не в private) - может и взял бы джуном.
В рот возьму, чмо пахучее.
А в очко дашь?
>Наркоман ебучий.
этот ананас прав, за #where в #each тебе лицо не то что разобьют, а в унитаз грязный мокать будут, по каждому разу за бесполезный запрос в бд.
>любой объект класса Deck (и только этого класса) сможет добавлять карты в любую другую Deck
Че?
я не он, но предположуб что если сделать кэлюэки в протектед, то эти же кэлюэки будут применимы при STI, То есть что-то вроде:
class Card < Deck
и теперь у всех инстансов Card (то есть строк в бд) будет этот метод. Другого применения я не вижу. Я прав?
бтв, class Card я привел просто как пример - там по логике видно, что он не может учавствовать в STi. Ну пусть будет AdminDeck < Deck. И теперь
у каждого инстанса AdminDeck будет этот кэлбэк
я только что проснулся, потому столько ошибок
Почитай как в руби работает protected, он работает не так же как во всяких джавах и прочих. Вот он правильно написал >>929909
>>929855
>class Deck
>validates :deck
У тебя у модели Deck есть поле deck? Что с тобой не так?
В сервис-обжект вынеси, вообще коллбеки в большинстве случаев зашквар использовать
Религия не позволяет слать нормальный массив id?
>этот ананас прав, за #where в #each тебе лицо не то что разобьют, а в унитаз грязный мокать будут, по каждому разу за бесполезный запрос в бд.
На том скриншоте не было видно, что он дальше делает с where. Только больной мозг мог предположить что там выборка но таки это оказалось правдой
А что этого картежника никто не ругает за
>cards
>self.cards
>module_price
>self.module_price
Холи щит! Это что кофескрипт? В 2к17-ом?
По-хорошему вообще всё надо сжечь и переписать правильно, но че теперь, к каждой строчке доебываться? Обучение - итеративный процесс.
обычный es6 + babel
> А что этого картежника никто не ругает за
>module_price
>self.module_price
поругай сам, за service object ему пояснили.
>На том скриншоте не было видно, что он дальше делает с where. Только больной мозг мог предположить что там выборка но таки это оказалось правдой
А как надо то ? другой анон
Сделал калавый баребек тваей мамашке, бббгеее.
where там искал твою мамашу, блядь. что можно делать с where, кроме как запрашивать инфу из бд?
> их придуманная система
>railway oriented programming
Изложи яснее, т.к. пока я только вижу, как с твоих слов хипстор противоречит сам себе. Или "их придуманная система" или convention over configuration.
Двачую, тоже не понял.
>сервис обжекты говно, а их придуманная система
Они же сами их используют, в своем замороченном стиле.
Помню на такой конфе у какого-то питуха увел бабу. Потом ебались с ней с полгода, потом дропнул ее.
Руби-синиор 10 лет опыта.
Ты сходил на конференцию, там тебе настрали в голову какие-то левые чуваки; они же чуть не увели твою девушку (хорошо что её у тебя нет) и ты не познакомился ни с одним бородатым мальчиком.
Три проёба из трёх.
а еще можно расширить ActiveRecord::Relation методом tvoi_anus(*args), смотри что получится
where(...).tvoi_anus(...).create()
правда круто? Правда твой анус все равно будет применяться к каждому кортежу дёрнутому из бд :(((
>Simple, blog-aware, static sites - Transform your plain text into static websites and blogs
Хуимпл, хуй-аваре. Какого хуя я не могу положить картинки в папке рядом с постом, какого хуя я должен сваливать все в кучу в /assets?
Спасибо, забыл про него.
Но в этот раз все-таки остановлюсь на джекиле, побомблю.
По ссылке тоже не идеальный вариант, документ + директория. Должно быть: одна сущность - один пункт. То есть директория, а в ней статья и ассеты.
Потому что гитхаб нихуя не аккумулирует активность. Ну то есть во-первых он никак не афиширует вкладвопенсорс, а во-вторых, и вовсе по умолчанию показывает активность за последний год, а в ленте - месяц.
Эта хуйня вообще нинужна и никак не влияет на твоё трудоустройство, если только ты не к смузи-коворкерам "устраиваешься". Жидхап даже хотел её вообще отменить, чтобы прекратили дрочьбу, но потом всё-таки вернул счетчик contributions.
Ну как сказать. Профиль на гитхабе просят везде. Зачем не знаю, но вероятно смотрят код, потому что как альтернативу просят примеры кода.
И получается либо нужно свои проекты туда выкладывать (и делать это периодически, потому что через год ты уже другой и код у тебя другой), либо постоянно куда-то коммитить.
Никто в гитхабе рыться не будет, просто смотрят не порешь ли ты там откровенную дичь. Примеры коды естественно надо заготовить, и запросить их явно со стороны нанимающего - тоже. Иначе это называется доебаться и сбивать ценник. А чтобы постоянно куда-то коммитить - просто не надо прекращать работать. Тем более там теперь можно показывать коммиты в приватные репы.
Гитхаб не показывает коммиты в сторонние репозитории не в мастер-ветку. Мы делаем коммиты на одном прожекте не в мастер-ветку, так что квадратики пустые. А на прошлой работе гитхаб вообще не использовали, гит-репозиторий на нашем сервере был.
Ну так продолжай делать коммиты и не только по работе, в этом вся суть.
У меня идей никаких нет. Максимум, что могу-это поиграться с каким-то фреймворком другим, но всё равно в итоге те же круды.
Где ты черпаешь идеи?
Я нихуя не делаю. Но если бы делал, ходил в репы популярных гемов и смотрел, какие темы там поднимаются, что нужно запилить. Делал бы форк, коммитил говнокод и кидал пул реквест.
Через месяц до него добираются и:
>Вот ду ю синк @смузи?
>Сорре @анон, это breaking change и ваще wontfix
>Closed
У тебя слишком негативное мышление для рубипидора. Будь позитевнее, мир нам улыбается.
Это такое пиздец, когда вместо маленького пулл реквеста на фичу-вкусняшку понимаешь что это гавно проще самому переписать. Ебаный опенсорс.
мимо-депрессвный-хуй.
Помню он свой дневник саморазвития выкладывал, я думал он выпилиться через пару лет. Потом помню он бабло на еду собирал, совсем хуево было. А тут решил погуглить: гитхаб зеленый, 100 звезд. Из грязи в князи получается?
Хотелось бы в факе видеть ответ вроде "идеальный кейс для руби" или "почему здесь сосет все кроме руби". Для чего он сегодня, анон?
Я, чтобы писать на руби. Надо узнать, зачем писать на руби.
>>936863
Один ответ
Всего мне нужен
Найду ответ
Пойду писать на руби
Сначала узнай смысл жизни.
Поясните как правильно сделать, установил гем devise, теперь хочу чтобы при регистрации пользователь мог выбрать тип своего аккаунта, добавил во вьюхе регистрации радиобатон, как теперь эти значения передать в модель?
Добавить поле в Users, контроллер сгенерировать (http://stackoverflow.com/questions/3546289/override-devise-registrations-controller/35827502#35827502) , в permitted параметрах прописать.
спасибо няша
нипониатно зачем поменяли, вот и бомбит
> Returns default internal encoding. Strings will be transcoded to the default internal encoding in the following places if the default internal encoding is not nil:
http://ruby-doc.org/core-2.0.0/Encoding.html#method-c-default_external-3D
> File names from Dir
> __FILE__
http://ruby-doc.org/core-2.4.0/Encoding.html#method-c-default_external-3D
> File names from Dir
> ...
у меня от этого разные котировки случились и баг и и пердак контузило сейчас вроде норм. НЕИНТУИТИВНО ПИДОРЫ.
За хайпом никто и не гонится. Ну конечно некоторые гонятся, но их мнение никому неинтересно, т.к. они обычно не приходят к какому-либо успеху (как разработчики). Алсо "спад хайпа" был в 2011 году, когда твиттер оскалился, а сейчас уже 2017, кому было надо, тот перекатился.
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
Может тебе это подойдёт.
В Эликсир!
ну вот доки на какой то сервис ихний,
https://tech.yandex.ru/money/doc/dg/concepts/About-docpage/
там же есть линки на сорсы на руби. врятли код от левых людей. Хотя вакансий от них не видел, ятп, своих спецов выращивают.
Но @dhh всеравно бы не взяли, азазаза
Ну может кто-то в свободное время.
Там рельсовики только в смежных (не яндексовых по сути) командах, для написания апи как рекламной сети.
Вместо перла они выбрали питон, потому что у того синтаксис тупее (не проще, а именно тупее), был распространён больше чем руби и был намного быстрее.
Сейчас там руби не нужен, потому что их питон немного достал.
>>933146
>>933586
Нинужно. Вот пруф, статья + комменты:
https://news.ycombinator.com/item?id=13705055
Искал язык на котором можно:
1) хоть как-то работать под виндой, пусть и с еблей, но в конечном итоге работать
2) парсить-грабить-кочать, работать с бд, работать с файловой системой шиндошса, в т.ч. с нестандартными кодировками
3) с аккуратным неперегруженным синтаксисом, где ты пишешь свою логику, а не повторяешь тонны служебного мусора
4) что-то свежее после прямой как угол дома пыхи
Зарабатывать на нём не планирую вообще от слова совсем, в обозримом будущем так точно, исключительно для себя.
Ткнул пальцем в небо, попал в Руби. Пока только начал учить, дико нраица. Всё правильно сделал, или не туда попал?
> 1) хоть как-то работать под виндой, пусть и с еблей, но в конечном итоге работать
> Ткнул пальцем в небо, попал в Руби. Пока только начал учить, дико нраица. Всё правильно сделал, или не туда попал?
Не туда. наверно Последний раз под windows с ruby в 2012 году работал. При каждом подключении нового гема есть большая вероятность, что приложение не запуститься или будет сыпать варнинги в местах где на Mac и Linux всё нормально.
Ну относительно безболезненно зашло. Чуток потрахался пока заработал дебагер, пару часов угробил на установку курло-курба. Теперь вот ставлю нокогири а он меня шлёт потому что хочет <2.4.0 версию, а я за каким-то хуем именно последнюю накатил. Сегодня вечером всё снесу и поставлю 2.3.3 или какая там на рубиинсталлер.орг последняя. По меркам винды это в пределах "нормы".
По поводу же новых гемов ещё не очень представляю что мне может понадобиться. для простых задач как правило стараюсь изобретать колесо самостоятельно, пока недостаточно долго погромирую чтобы это надоело.
>>939134
Поясни. Там меньше спермопроблем?
Установи Gentoo, юзай питон, или руби, питон очень просто юзать, но синтаксис так себе.
Суть в том что под шиндовсом ты не можешь спокойно разрабатывать инструменты для себя, консоль там говнецовая оболочка, постоянно надо мокрописьки.
Поставь себе Arch linux и наслаждайся новейшими версиями своего руби и пили код в удобном окружении, в консольке почти все можно делать, можно и нет серфить.
Накати оконный менеджер dwm, терминальный мультиплекстор tmux, vim/emacs/nano и все заебись будет. В отличии раб столов на винде мультиплекстор очень полезен и юзабелен как и оконный менеджер с вкладками. Просто удобно.
Тогда почитай про вагрант, это типа виртуалка в которой папка видна в винде, и с которой можно локально коннектиться по ssh.putty
Попробуй переключиться с игр на кинцо, правда это весьма затратно.
Знаю, на работе юзаю сайты локально тестить. Долго заводится, ебля с директориями-путями, сомнительные профиты ЕСЛИ ты уже всё настроил на своей машине.
Мне интерпретатор прямо вот под рукой всегда нужен, бывает что сидишь задротишь, тут бац лампочка зажглась, табнулся на иде, накидал коду, по живому запустил, увидел что всё работает, довольный табаешься и продолжаешь задротить.
Спасибо за советы, но меня устраивает винда. В смысле придрочился уже. Лучше за руби чего интересного поясни. Вот вчера допустим выяснил что curb безумно долго стучится на https, вот прям пиздец долго, страницу с форчаней 15 секунд жду. Хрен знает, может собрался через жопу, или я curllib бракованный скачал, или ещё чего. Может просто опцию какую надо было передать, но в куцых доках ничего, гугл ничего не дал, по сорцам пробежался тоже ничего не нашёл, плюнул. Про родной(?) open-uri начитался охуительных историй, поэтому полез смотреть чего ещё есть, попробовал httpsrequest, вроде норм зашло. Какие инструменты вообще у рубистов считаются дефолтными для веб-запросов?
>>939937
уже, одно другому не мешает
> Какие инструменты вообще у рубистов считаются дефолтными для веб-запросов?
В стандартной библиотеке есть net/http, из гемов популярны httparty, faraday, typhoeus. Вот тут можешь посмотреть: https://www.ruby-toolbox.com/categories/http_clients
пайтон то что тебе нужно анон
Selection105.png (10Кб, 565x213)
565x213
Selection100.png (53Кб, 1854x1023)
1854x1023
Аноны, нужна помощь.
Есть такой тест:
http://pastebin.com/APJC3Qib
Есть следующие моменты:
1)FactoryGirl все создает в дб, я провеляб byebug'ом
2)Эта сраница налокалке все рендерит, то есть присутствуют все нужные атрибуты, в том числе и name
3) Тест выдает ошибки, причем и в случаем с просты RSpec'om, так и с shoulda-matchers версией
ошибки/контроллер/страница пикрелейтед
Что ещё за recepy? Я не удивлюсь, если у тебя inflections по пизде идут где-то там. Руби для грамотных!
>2)Эта сраница налокалке все рендерит, то есть присутствуют все нужные атрибуты, в том числе и name
на локалке у тебя development база, в тестах ты прогоняешь приложение в test env, с-но надо смотреть page.body из теста. Телепатия вангует что FactoryGrill#build не работает так как ты ожидаешь
Я хотел сказать, что фабрика подгружается, но сравнивается с "#", а это не похоже на receipts index page. Надо бы явно вместо
> describe 'listing recepies', receips: true do
указать тестируемый контроллер, и посмотреть что там за страницу рендерит в тестах.
пикрилейтед
>>940657
Второй рецепт билдится не FactoryrGirl же. там через ассоциацию на юзере, затем ее сохраняю в БД
>>940657
byebug говорит об обратном
пикрейлет 3
Вообще, я перенес тест в отдельный спек, сделал тип Feature - и все заработало
Но мне не нравится то, что у меня не получается сделать нормальный integration test, То есть чтобы можно было тестировать как рендер темплейтов/флэшей и тд, так и проверять наличие определенного контента via Capybara, Я видел интеграционный тест, который выполняет те же функции как у меня, но написан на minitest, Неужели RSpec не дает такой свободы?
Погуглил и нашел инфу, что нельзя использовать пути в контроллер тестах
Как писать на RSpec'е интеграционные тесты?
Если у тебя в экшне какой-нибудь сложный процесс ловли ошибок, но с одинаковым рендером - как ты собираешься убедиться, что всё прошло именно так, как ты задумывал без тестов контроллера? Они необязательны, но иногда могут пригодиться. Особенно когда всплывёт бага именно по контроллерной причине - было бы тупо не закрыть её тестами потому в 2017 кто-то сказал, что не тестирует контроллеры.
Добавил в конец twister.MersenneTwister
И он выдаёт ссылку на область в памяти,
А как сделать чтобы он сгенерировал 100 значений в массив?
По алгоритму после найденного числа он делает закалку и сначала.
Собственно в чем прикол ?
Полгода назад пацаны говорили руби нихуя не умирает, наоборот спрос на крутых девов выше, а ща те же пацаны в один голос ЕБАНУТЬСЯ ЧЕРЕЗ ГОД РЕЛЬСОВ НЕ БУДЕТ ГРОБ ПИЗДА. Собсна вопрос на что в связи с этим перекатываться? Веб хайлоад энтерпрайз говно.
Вообще-то там написано как надо правильно тестировать контроллеры, а не то что их не нужно тестировать совсем.
http://Ideone.com/ixfjru
Выводит: name: ["Walt", 36], age:
А предполагается: name: Walt, age: 36
Смотрел видео, в котором этот же код работает на отличненько
>Пацаны. Недавно вкатился в руби. Но тут я недоумеваю. Есть код (https://github.com/artworklv/Mersenne-twister/blob/master/mersenne_twister.rb)
>Добавил в конец twister.MersenneTwister
>И он выдаёт ссылку на область в памяти,
>А как сделать чтобы он сгенерировал 100 значений в массив?
>По алгоритму после найденного числа он делает закалку и сначала.
>Собственно в чем прикол ?
>>941209
Друзья, я в вас верю. Подскажите пожалуйста. И да , там не область а хекс выдаёт
Допустим я заполнил базу данных чем-то, но получается, что у друга она будет пустой.
Пока решил на digitalocean создать дроплет и накатить туда постгрес. Но у меня там деньги скоро закончатся.
!=
> Как вообще происходит совместная разработка в рельсах? С другом решили проект запилить.
Как и везде git
> Допустим я заполнил базу данных чем-то, но получается, что у друга она будет пустой.
seed.rb
> Пока решил на digitalocean создать дроплет и накатить туда постгрес. Но у меня там деньги скоро закончатся.
Heroku, если не хватает ресурсов и хочется дешевле DO, то locum или ищи low-end vps (online.net например)
А зачем вам собственно общая бд в девеломпент окружении?
Если вы зависите от всех данных в базах друг друга, то вы делаете все неправильно. Нужно быть модульнее. А именно для этого и нужны тесты и seeds(для отдельных случаев, никак не для шэринга всех данных).
Мой друг установил все 12,328,326,167 гемов и стал воплощением бога на земле.
Попробовал просто докблоки YARD, тот же RubyMine почему-то молчит как партизан при несоответствии типов (пик).
Нагуглил контракты: https://egonschiele.github.io/contracts.ruby/
Выглядит интересно, но нет интеграции с IDE. Может у вас есть что посоветовать?
Если в функцию вместо строки прилетает число, то это ошибка, о которой язык должен сообщить как можно раньше, а не продолжать выполнение, это приводит к трудноуловимым багам на больших проектах. Люди ведь не зря TypeScript/Flow придумывают, не говоря уже о том, что типизация документирует код (и не устаревает, в отличии от докблоков). Ну не верю, что никто из вас чем-то таким не пользуется.
> дак тайпинг!
Было бы логично тогда иметь возможность указывать тайп-хинт respond_to где-то рядом с аргументами функции. А то сейчас, глядя на аргумент, сложно понять, что же туда должно прилететь. Вот какой в TypeScript дак тайпинг: https://www.typescriptlang.org/docs/handbook/interfaces.html
Функция тоже принимает любой объект, реализующий какой-то интерфейс, однако это видно уже в параметрах функции.
Мне ведь не нужна статическая типизация, хватит тайп-хинтов, корректность которых проверяется в рантайме + поддержка IDE.
да нахуй этот костыль нужен, он только в языках со слабой типизацией годнота, когда в метод неизвестно что может прилететь
https://github.com/gogotanaka/Rubype
Вроде бы в 3.0 обещали подвижки в сторону gradual typing, но не то чтобы это нужно.
> Было бы логично тогда иметь возможность указывать тайп-хинт respond_to где-то рядом с аргументами функции.
Некоторые сердобольные пишут так:
@param [#to_s] yoba
Давай, ебошь. Я был "первым" ещё в конце 2015-го, а воз и ныне там. Вакансий нихуя нет, а если есть, то платят смуззи.
>СОЗДАЕМ КОМЬЮНИТИ И ФОРСИМ
проиграл с этого слоупока
хотя в рамках какой-нибудь мрачной постсовковой параши наверное всё плохо как >>945203 пишет
да, шиндовс
я себе поставил на вмваре арч, пока времени разобраться толком не было, но выходные уже скоро
А напомните-ка, применяется ли еще где-нибудь ЯПОНСКИЙ БЕЙСИК кроме рельсов?
А что тогда? Где вакансии с нормальными мировыми зарплатами?
17. Руби язык одного фреймворка?
Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
Ты бы еще генту поставил. Ставь убунту и не выебывайся, если собираешься на руби кодить, а не конфиги настраивать.
Не совсем понимаю твою агрессию. Лично знаю пару счастливых обладателей арча. Чего ты выебываешься-то?
А ты мудак, зацикленный на элитарном говне для нитаких, которое ещё к тому же не работает без пердоленья.
Из перечисленного только Чиф и Пупит используются. Ну и Синатру встречался в требованиях вакансий.
Я попробую проникнуться ненужностью. Заметил, что ни RoR, ни Sinatra не используют YARD. Ну и проблема скорее в RubyMine: https://blog.jetbrains.com/ruby/2011/04/what’s-mining-advanced-yard-support/#comment-646
>>945744
Ты не прав, у арча есть объективные преимущества перед остальными дистрибутивами:
- подробная up-to-date вики, вместо разрозненных туториалов под разные версии убунты.
- AUR, откуда можно установить почти всё что угодно без необходимости подключать PPA. PPA забрасываются и никем не проверяются.
К недостаткам можно отнести роллинг-релиз. У одногруппника после одного из обновлений просто отвалился шелл из-за новой версии ncurses, удалось спасти через LiveCD со старым ncurses на флешке.
Сам полностью обновлял систему раз 7 за эти почти 2 года (проверяю новости и форум арча перед обновлением).
В общем, не нужно думать, что если тебе не подходит, то всем не подходит.
>п е р д о л и н г
Ну да, я понял уже, что подходит только студентам, которым время некуда всрать.
Арч - хуярчь. Это не для меня. Я использую Минт, где большинство нужного мне уже искаробки есть и годно работает.
И как?
Hу еще есть Capistrano для деплоя, Vagrant, brew, metasploit, для которого есть дохуя модулей на руби, fastlane, ну и очевидные системные скрипты.
Что делать то? Денег на переезд в ДС нету.
ой не пизди
Рассматриваю возможность наняться на галеру.
В данный момент работаю в небогатой и небольшой конторе, которая пилит проекты для роисси. Менеджмент у нас хуёвый, зп часто задерживают. Моя зп сейчас 100к, но больше мне не дадут ни при каком раскладе. Много чего заебало на этом месте, ну и засиделся я, три года уже тут. Начал ржаветь. Хочу работать и кодить, а мы тут в конторе какое-то говно месим. Менеджеры вообще не врубаются, чо происходит. Задачи правильно ставить никто не умеет.
В моём замкадске есть пара известных галер, есть вариант попробовать наняться на одну из них - у них есть рубирабы.
Пишу только на руби (Rails, Grape). Опыт в вебе 5+ лет. Раньше писал на пхп, также знаю жс-цсс-хтмл-парашу. Английский intermediate, но на текущей работе он не востребован.
Какие подводные камни пересесть на галеру? Какие ещё есть варианты? Думал о фрилансе, но прямо сейчас обстоятельства требуют стабильной зарплаты.
Че ты здесь сидишь? Пшёл в рабство на джинна. Думает он ещё.
Не могу просто, умираю от безделья на джвух работах.
Очевидные JVM языки
кто в здравом уме будет на нем писать и тем более разрабатывать?хипстеры,хайповый язык
Ко-ко-ко. Basecamp, GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square, Highrise - Ruby on Rails
proof: http://rubyonrails.org/
насколько я помню они фронт раздают через рельсы, а чатик и стримы через скалу.
Пробовал поставить Eclipse и плагин для Ruby, не вышло.
Божественный RubyMine. Не забудь включить тёмную тему - дефолтная светлая оче вырвиглазная. Пиратская активация гуглится по "rubymine license server".
Кажется, я только что зэкономил 999 баксов.
Спасибо за совет! Я, конечно знал, что ИДЕ есть, но не знал, что на неё можно устанавливать тему.
Теперь буду искать нужные гемы и вперёд)
Никак не могу сделать человеческий пост на двощи.
class Dvach
attr_accessor :usercode, :thread_id, :board
include HTTParty
base_uri 'https://2ch.hk'
def initialize
post_response = self.class.post(
'/makaba/makaba.fcgi',
body: {
task: 'auth',
usercode: 'huy_sosi_guboy_triasy'
}
)
get_thread_id
@usercode = post_response.request.options[:headers]['Cookie']
self.class.default_cookies.add_cookies(self.usercode)
end
def post_comment(text)
resp = self.class.post('/makaba/posting.fcgi?json=1',
:body => {
:task => 'post',
:board => 'gb',
:thread => self.thread_id,
:comment => text.to_s,
:usercode => self.usercode
},
:headers => { 'Content-Type' => 'application/json' }
)
end
end
@dv = Dvach.new
@dv.post_comment('Test ebana!')
В результате в пост добавляется %20 вместо пробела. Если постить кирилицу, то вообще превращается в нечто напоминающее url_encoded.
Куда копать, ананасы?
Никак не могу сделать человеческий пост на двощи.
class Dvach
attr_accessor :usercode, :thread_id, :board
include HTTParty
base_uri 'https://2ch.hk'
def initialize
post_response = self.class.post(
'/makaba/makaba.fcgi',
body: {
task: 'auth',
usercode: 'huy_sosi_guboy_triasy'
}
)
get_thread_id
@usercode = post_response.request.options[:headers]['Cookie']
self.class.default_cookies.add_cookies(self.usercode)
end
def post_comment(text)
resp = self.class.post('/makaba/posting.fcgi?json=1',
:body => {
:task => 'post',
:board => 'gb',
:thread => self.thread_id,
:comment => text.to_s,
:usercode => self.usercode
},
:headers => { 'Content-Type' => 'application/json' }
)
end
end
@dv = Dvach.new
@dv.post_comment('Test ebana!')
В результате в пост добавляется %20 вместо пробела. Если постить кирилицу, то вообще превращается в нечто напоминающее url_encoded.
Куда копать, ананасы?
class Login < SitePrism::Page
set_url "pizda_moyey_mamashi"
element :username, :xpath, "//[@name="login_username"]"
element :password, :xpath, "//[@name="login_password"]"
end
?
Бля. Разбираться с автоматизацией после 10часового рабочего дня черевато, котелок не варит нифига.
Спасибо.
И вопрос. Что на самом деле происходит при вызове extend в теле класса? И куда попадут синглтон-методы модуля, если включить его в класс через extend?
> А вы знаете, что в этом вашем руби Класс - объект, а Объект - класс? А ещё класс - Объект, но объект не Класс?
А ещё Класс является экземпляром самого себя.
> Что на самом деле происходит при вызове extend в теле класса?
Модуль инклудится в метакласс твоего класса, его методы становятся доступными как синглтон-методы класса.
> куда попадут синглтон-методы модуля, если включить его в класс через extend?
Методы никуда не попадают, они остаются в модуле (или его метакласе, в случае с синглтон-методами), но если модуль/класс попадает какую-то иерархию наследования — его методы будут доступны екземплярам классов ниже в иерархии.
Когда ты юзаешь extend, сам модуль попадает в иерерахию наследования, на дне которой находится метакласс класса в котором вызван extend. Метакласс модуля никуда не попадает, и его методы не становятся доступными из твоего класса или его екземпляров.
>А ещё Класс является экземпляром самого себя.
И метакласс суперкласса является суперклассом метакласса.
Ему Оскара уже дали или ещё не дали? Я провтыкал прост.
Пенис Защекуберуков
Ни разу не был на рубисобеседовании, но думаю что нет. И оно звучит сложнее чем есть на самом деле, там всего пару довольно простых понятий нужно усвоить (что такое метакласс, как работает цепочка наследования, каким образом она модифицируется всякими include/extend/prepend).
рубист-перекатившийся-на-elixir
>рубист-перекатившийся-на-elixir
Расскажи об этом подробнее. Причины, мотивы, батхерты, ощущения... вот это всё.
Фрилансил на rails, потихоньку изучал всякую другую фигню, в том числе elixir, как-то об elixir зашла речь в разговоре со знакомым, он знал кого-то, кто знал ещё ко-го-то в компании где нужны эликсирщики, я заапплаился на вакансию, взяли, работаю. Зарплата больше чем была на фрилансе, полный рабочий день не особо напрягает.
Elixir нравится, единственный крупный недостаток, как по мне, это довольно незрелая экосистема, но это не фатально и решается со временем.
you ale a vely blave man, sil
вечно варнинги небось выдает да ерооры
на такое гавно после perl очень противно переходить
то что на perl отлично работает на руби с ПХП ерроры выдает
заебешся переделывать
ну и кнопок намного больше жать
мучение сплошное
>мимо с++
Мнение опущенцев волнует кого-то только в петушиных бараках: кресто-тред, говняшная-тред, реверс-инжениринг-тред и в прочих облюбованных байтопортвешками местах. Так что советую тебе за их пределы не высовываться, и тем более не в вваливаться в руби-тред, раздражая своим смрадом элиту.
А по-по-дробнее?!
Я ЕХАЛСЕГОДНЯ НА ГИРОСКУТЕРЕ ПО ГАРАЖУ И УВИДЕЛ ЗАДРОТА С ЛЯМБДОЙ НА МАЙКЕ, КОТОРЫЙ ПРИШЕЛ НА СОБЕСЕДОВАНИЕ В НАШ СТАРТАП, НУ Я РЕЗКО ПОДЪЕХАЛ К НЕМУ И ПРЕГРАДИЛ ПУТЬ К КОФАУНДЕРАМ И ПОЯСНИЛ ЕГО КРИКОМ «НЕ ЛЮБЛЮ ВЫЕБЩИКОВ», ПОТОМУ ЧТО Я УГОРЕЛ ПО ООП, КРУДОШЛЕПСТВУ, И GEM INSTALL, ХИПСТАНЫ ДУХ СОВРЕМЕННОГО ВЕБДЕВА ЖИВЁТ ТОЛЬКО В КОВОРКИНГАХ, ГДЕ ХИПСТЕРЫ С 12 ЛЕТ ПИШУТ НА РЕЛЬСАХ, ПОПИВАЮТ СМУЗИ, СИДЯ НА ПУФИКАХ, И ЕБУТ ОФИСНЫХ ДИНОЗАВРОВ В РОТ! ТОЛЬКО ROR, UPWORK И РАБОТА НАПРЯМУЮ С ИНОСТРАННЫМИ ЗАКАЗЧИКАМИ. ТОЛЬКО 25 ЛЕТ СТАЖА В 30 ЛЕТ, ТОЛЬКО ХАРДКОР!!! ХИПСТАНЫ ПИШИТЕ НА РУБИ, УСТАНАВЛИВАЙТЕ ГЕМЫ И КОММИТТЬЕ ПРЯМО В ПРОДАКШЕН, НАХУЙ ВСЁ ОСТАЛНОЕ ГОВНО. ЦЕНИТЕ РЕЛЬСЫ!!!
Не шизика, а крупнейшего специалиста в области исскуственного интелекта.
смешно
я только вкатываюсь в в руби, хочу кому нибудь помочь за еду
>ruby-install и chruby
>>960070
>therubyracer
Ну началось. Я думал у вас хоть зоопарка и мешанины велосипедов нет...
Синтаксис нравится сахарка много
rbenv
Оставляй контакты.
Что господин имеет против ruby-install и chruby? Наверное, господин не удосужился опробовать эту комбинацию и несет тут пафосную хуйню?
>>949404
>>948812
>>948974
>>949582
Rails-монолит, Go для чата. В блоге ни слова про Scala
https://blog.twitch.tv/technically-speaking-group-chat-and-general-chat-engineering-86d6cb40a02c#.1otw3bmbx
Engineering Blog вообще полудохлый и очень слабенький (по сравнению с GitHub Engineering)
• как мы оптимизировали Garbage Collection в Go
• What makes a great data science team?
• как мы делали custom text view implementation для iOS
• как мы чинили чат на Ember.js
• скрипт для версионирования iOS-приложения
• как мы используем Postgres (топология, роутинг, роли, обновления)
• ускоряем iOS разработку с CocoaPods
https://blog.twitch.tv/tagged/engineering
Что за сходка? На втором фото второй справа, это же чел, который разрабатывает всякие там dry-rb и т.д? Кстати поясните за все эти rom-rb, dry-rb - зачем эта хуета нужна вообще и почему ее адепты так сильно гордятся тем, что они это используют? Годится ли оно для чего-либо, кроме теребления своего чсв?
>i love code звучит от рубиста так, как будто этот рубист полный долбоёб. Ведб руби вобрал в себя философию смалтолка и пёрла, где краткость сестра таланта. Тобишь философия руби гласит: я ненавижу код, его должно быть как можно меньше, но отдачи как можно больше. Поэтому в руби и рельсах столько магии. Нужно было помать за руку того докладчика и погнать его со сцены ссаными тряпками.
Але, ебанутый, стек технологий твиттера это второй по используемости стек в мира скалы, по после стека тайпсейфа теперь это lightbend, те кто поддерживают скалу и многие связанные с ней технологии и зарабатывают на ней.
Посмотри их гитхаб чтоле https://github.com/Twitter.
Кстати http://twitter.github.io/effectivescala/ часто рекомендуют вкатывающимся в скалу.
мимоскалаёб
На пикрилейтед очевидный рост количества загрузок гемов в день
http://bestgems.org/stat/download
Это как у иллюминатов, произносят заклинание, в надежде, что когда-нибудь таки умрет. Ну либо школьники, хватающие всего по верхам в погоне за самыми новыми технологиями. Когда живешь в ритме такой погони, кажется, что вообще все технологии умирают.
Поясните за методы доступа в классах, а точнее зачем объявлять метод чтения атрибутра, ведь мы же уже присвоили значение перменной в первом методе(записи).
чтобы можно было вызвать метод экземпляр.age
первый мотед для записи через =
второй чтобы узнать значение которое записали
ты слепой? там же написано "Читаем значение из @age"
Работало ещё утром. Давай разбираться - и уже час охуеваю. Добавляю require 'site_prism' тупо в начало страницы - начинает говорить uninitialized constant Capybarа, и так далее
Есть у кого мысли? Как будто env.rb овталился, но он на месте
uninitialized constant Capybara
..
> Внезапно стали сыпаться тесты тупо на первой строке.
ну давай погадаем, раз код не менялся, то посмотри на бандл апдейт, может сломал зависимости, или в иде слетели энвайронмент настройки.
очень глупое предположение.
не рельсами едиными. Hanami, Padrino, ну и синатра (хоть и из другой оперы).
а вообще, руби охуенны для напейсания своих маленьких юзерскриптов под никсы. я руби-скриптом жымаил себе чищу от спама регулярно, набросал на коленке за 5+ минут
поддерживаю
да шаред хостинг уже неактуален
согласен с этим господином - даже на чистом руби работы мало. Смиритесь уже наконец, что Ruby == Rails.
Пофиксилось с помощью bundle clean и bundle package, но какого хуя это было я так и не понял.
Или за идею пет-прожекты делаете? Почему вам нравится этот язык? Логотип красивый?
Кроме веба нигде не применяется? Питон, например, используют в научных расчетах и геймдеве.
Увы, если ты не в ДС, то тут только либо фриланс где будешь воевать только с индусами за право работать за еду либо крупные города. В провинции ты либо клепаешь сайты на похапе, либо сидишь без работы.
Осваиваю руби с 2015 и тихонько плачу от безработности
Потому что перспективы ковыряния пхп-фреймворков меня не привлекают совсем? Поэтому я учу жабу
Просто не умеешь. Я вот с двумя работами почему-то охуеваю, а ты на двачах плачешь.
Ну вообще, есть одна руби-контора, в которой неплохо было работать хоть и не много платили, но туда вряд ли попадешь - это теперь скорее дело одного человека, чем компания, как раньше было, когда я там работал.
Ну в моей 300к мухосрани, например, кроме PHP и шарпа больше не существует языков программирования.
На фрилансе работал. За 5 баксов в час. Заработал 1к и больше как-то шишка не стоит. Повышая ставку — количество доступной для меня работы начинает стремиться к нулю. Наверное, ты очень скиллован, что можешь без проблем зарабатывать там нормальные деньги.
раби в макоси юзается для того же, для чего пиздон в линухах -- как в сырцах каждой второй софтины в линухе обязательно наткнешься на .py, так в макоси на .rb. ну, и еще можно невозбранно купив лицензию пейсать на рубях под яблофон (RubyMotion) и под ведро (Ruboto)
"Фриланс" забудь ваще, это говно для школьников. Ищи нормальную фуллтайм удаленную работу.
Разве это реально, не имея коммерческого опыта? Тем более, для зарубежного фуллтайма.
Конечно же нет, все в точности до наоборот. Фриланс - для профессионалов, фуллтайм тоже для профессионалов. Школьники нужны только в ДС где есть места для стажеров и какие-нибудь изи-джуниоры. Всё, больше ничего нет.
Если все-таки фриланс или смерть - то тупо вкатываешься в веб с пхп, битриксами, вордпрессами.
Случаное совпадение?
> в макоси на .rb
Там все те же приложения, разве нет? По крайней мере те же что на винде в основном.
Хипстеры с тяночками собрались на конфе чтобы потешить своё чсв, ничего особенного.
Так вот в чем дело! На руби дрочпт анимешники потому что главный рубист узкоглазый!
Репост, если сидишь в офисе или дома.
Не то что мерзкий питон.
еще и кондиционер есть!!!11
Чот всё слишком радужно выглядит. Раскройте подводные камни всеё этой движухи.
макбуки только для пидрофанбоев, что ездят по несмазанным рельсам по жизни
Ъ-посоны поднимают линух и на нем ваяют няшные скрипты на ламповом чистом руби.
>Многопоточность и модель акторов сюда не завезли
Actor-based concurrent object framework for Ruby https://celluloid.io
Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns. http://www.concurrent-ruby.com
Да, на данный момент есть GIL и concurrency пока что на IO, когда guild'ы завезут (ориентировочно в Ruby 3) — получше с этим станет.
>>962637
Вот это бля вброс! Никто не мешает рядом с монолитом на Rails хуячить микросервисы на Rails API, Hanami, Grape, Sinatra.
Что качают?
Что за сходка?
https://moscow-rb.timepad.ru/event/460805/
Вот видосы подъехали:
https://youtu.be/JlNcwac5bDI
https://youtu.be/n2wHsK92OPs
https://youtu.be/sl26IxKujyY
https://youtu.be/TnvKf4RVtwU
>На втором фото второй справа, это же чел, который разрабатывает всякие там dry-rb и т.д?
Да
>Кстати поясните за все эти rom-rb, dry-rb - зачем эта хуета нужна вообще и почему ее адепты так сильно гордятся тем, что они это используют? Годится ли оно для чего-либо, кроме теребления своего чсв?
Если смотреть на rom-rb в рамках Hanami, то это уже production-ready для микросервисов — запустил на puma и погнали. Ну тип другие концепции, меньше «магии» (читай как методов), чем в Rails, меньше весит, быстрее работает. Ну и там Repository вместо ActiveRecord или DataMapper.
>>961988
В руби ВЫРАЗИТЕЛЬНЫЙ КОД, а не «я ненавижу код» и «краткость сестра таланта». Ты должен любить код за то, что он выразителен, а не спагетти, как на C++.
>>962060
https://hh.ru/search/vacancy?text=scala&area=1
Регион: Москва
Найдено 114 вакансий
>>962712
>а вы что-то зарабатываете с руби? Только честно.
Типа того
https://hh.ru/search/vacancy?text=ruby&enable_snippets=true&clusters=true&area=1&salary=95000&only_with_salary=true&from=cluster_compensation
Регион: Москва
От 95 000 руб.
Найдено 73 вакансии
>>962763
https://github.com/trending/ruby
>>963028
>>963030
>>963214
>>963090
>>963684
>>963713
Хуя себе вы зашоренные!
>на полном серьёзе бомбить с macOS
Да, у меня корпоративный макбук, но я без задней мысли могу делать то же самое на нище-lenovo с GNU/Linux Fedora или Ubuntu.
>>963150
Ни одного аниме-дебила ни разу не видел среди рубистов, с кем работал.
Что за сходка?
https://moscow-rb.timepad.ru/event/460805/
Вот видосы подъехали:
https://youtu.be/JlNcwac5bDI
https://youtu.be/n2wHsK92OPs
https://youtu.be/sl26IxKujyY
https://youtu.be/TnvKf4RVtwU
>На втором фото второй справа, это же чел, который разрабатывает всякие там dry-rb и т.д?
Да
>Кстати поясните за все эти rom-rb, dry-rb - зачем эта хуета нужна вообще и почему ее адепты так сильно гордятся тем, что они это используют? Годится ли оно для чего-либо, кроме теребления своего чсв?
Если смотреть на rom-rb в рамках Hanami, то это уже production-ready для микросервисов — запустил на puma и погнали. Ну тип другие концепции, меньше «магии» (читай как методов), чем в Rails, меньше весит, быстрее работает. Ну и там Repository вместо ActiveRecord или DataMapper.
>>961988
В руби ВЫРАЗИТЕЛЬНЫЙ КОД, а не «я ненавижу код» и «краткость сестра таланта». Ты должен любить код за то, что он выразителен, а не спагетти, как на C++.
>>962060
https://hh.ru/search/vacancy?text=scala&area=1
Регион: Москва
Найдено 114 вакансий
>>962712
>а вы что-то зарабатываете с руби? Только честно.
Типа того
https://hh.ru/search/vacancy?text=ruby&enable_snippets=true&clusters=true&area=1&salary=95000&only_with_salary=true&from=cluster_compensation
Регион: Москва
От 95 000 руб.
Найдено 73 вакансии
>>962763
https://github.com/trending/ruby
>>963028
>>963030
>>963214
>>963090
>>963684
>>963713
Хуя себе вы зашоренные!
>на полном серьёзе бомбить с macOS
Да, у меня корпоративный макбук, но я без задней мысли могу делать то же самое на нище-lenovo с GNU/Linux Fedora или Ubuntu.
>>963150
Ни одного аниме-дебила ни разу не видел среди рубистов, с кем работал.
На русском
>Ты должен любить код за то, что он выразителен
Когда заканчиваются реальные аргументы, то в ход идут слова "выразителен", "элегантен", "приправлен сахарком". Sic!
Количество войтишников растет, количество скачивания гемов растет. Да и вообще синтетическая метрика ни о чем не говорит.
>Ну тип другие концепции, меньше «магии» (читай как методов), чем в Rails, меньше весит, быстрее работает. Ну и там Repository вместо ActiveRecord или DataMapper.
Перевернули концепции руби и рельс и пытаются это напарить. Вот это лооол. Но Мутз негодовал, что руби с рельсами ассоциируют. А оказалось, что отхождение от такого канона обесценивает руби в ноль. Я все скозалъ.
Code School – Rails for Zombies
http://railsforzombies.org/
Rails Tutorial by Michael Hartl
http://railstutorial.ru/
Ruby on Rails Screencasts
http://railscasts.com/
Learn Ruby with the Neo Ruby Koans
http://rubykoans.com/
Потом отправляешься на собеседование и просишь от 1500 долларов. Профит!
Это копия, сохраненная 24 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.