24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
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://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 до сих пор ничего не завезли.
7. Хорошие практики по руби и рельсам? Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes. Почитайте еще Grimm A. - Objects on Rails Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
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, Lotus, Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby? Можно, но не нужно. Гем Gosu.
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. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой. Ну, а мы открываем очередной Ruby Thread.
Прошу добавить в шапку сайт www.codewars.com как говорится у них на сайте:
"Achieve code mastery through challenge"
Codewars is a collective effort by its users. They are creators - authoring kata to teach various techniques, solving kata with solutions that enlighten others, and commenting with constructive feedback. The leaders among them moderate the content and community.
Весьма годный проект в плане повышения скиллов в Ruby с ачивками и вот этим всем.
Ruby on AdnroidАноним31/12/15 Чтв 11:29:37#5№616185
Кстати, ещё в шапке надо поправить, что Ruboto нихуя не заброшен, а всеми силами держится на плаву. Им не хватает контрибьюторов, чтобы поддерживать хороший темп разработки. Кто заинтересован, может помочь - целых 98 открытых issue! https://github.com/ruboto/ruboto/issues
>>616731 Спиваются от безысходности. Пока другие отдыхают со своими девушками в других странах и иногда постят на двач, рубисты в моменты празднования с мамкой осознают весь пиздец и ужираются пакетным вином.
Аноны, суть такова: Хочется написать эдакий простенький клиент для подкаста. Суть в том, что ты просто запускаешь страницу в браузере, подключаешь микрофон и вещаешь стрим на заранее сделанную страницу то есть в обычный html5 проигрыватель В итоге получается эдакое интернет-подкаст в идеале бы хотелось, чтобы ещё задним фоном шла музыка который может использовать каждый, у кого есть браузер и микрофон. Так вот - реально ли сделать это всё на чистом ruby/js без использования флеша? Может, у кого-нибудь есть опыт в разработке подобного? Или знает подобное, написанное на ruby? А то, честно говоря, даже не знаю, за что браться первым, совсем никаких мыслей нет. Заранее благодарю вас за ответ, анончики.
>>617413 Технологий не подскажу, но на клаентсайде работает только JS, ну и Flash ещё. Снять звук с микрофона у тебя не получится, этим занимается драйвер на компе, ты лишь можешь запросить доступ к нему. И если пользователь тебе его предоставит записать поток и ты никогда не узнаешь с микрофона это или подменённый поток в PulseAudio. HTML5, JS Вообще микширование звука довольно ресурсоёмкая штука. Тебе наверное надо сначала записать подкаст. Потом смикшировать с музыкой на стороне клиента и залить на сервер куда ruby-backend (или node) его положит в сторадж и добавит в БД'шник запись с шоунотами, датой записи и т.д. Есть сервисы вроде Vocaroo, там Flash'ак используется.
>>617537 На самом деле всё гораздо проще - мне бы просто хотелось сделать клиент для онлайн-подкастинга, чтобы человек просто открыл браузер, дал доступ к микрофону и, собственно, начал подкаст. А подмена или нет это уже не важно. Просто боюсь обосраться с флешем, точнее, его нормальной работой, потому и хотел от него полностью отказаться в пользу js/ruby, но толковой информации по работе с микрофоном найти не могу.
А как в notepad++ сделать такую же подсвтку синтаксиса как и в sublime ? Мне очень нравится в нотепад работать, но что-то код он совсем не хочет подсвечивать. Выбираю в выпадающем меню руби и ничего не меняется
Yo я тут нашел книжки, как раз для новеньких headfirst ruby и headfirst rails новенькие, их серия headfirst довольно годная, позволяет вникнуть и начать читать более серьезную литературу ну и знания дают конечно же.
>>618264 Для примера - установка плагина. В brackets: 1. Открыл менеджер плагинов 2. Установил.
В саблайме: 1. Обнаружил отсутствие менеджера 2. Полез в Гугл 3. Перерыв инструкции нашел как подключать менеджер 4. Скопировал непонятный текст в непонятный инпут (магия, магия везде) 5. Появился менеджер 6. Установил из него.
Там даже плагины нельзя из коробки поставить. А без них никуда, ибо там даже автодополнения нет. Про необходимость покупать саблайм на торрентах я даже не говорю.
Парни, есть идейка небольшого сервиса: Авторизация + пара уровней доступа и взависмости от этого свой набор вьюверов/апп + геолокации с картой и небольшими свистелками + жалкая пародия Майкрософт проджекта + отчёты уровня слайдшоу типа "историй" гугл.фото и все это слепить в ари, что бы прикрутить phonegap.
Отсюда тупой вопрос: курсы кодекадеми от хтмл до рельсов насколько годные что бы в перспективе такое написать из чужих модулей, при том что знаю более-менее питон чистый, фласк/джанго не знаю вообще. Или разумнее уже задрочить джангу?
>>618289 Нахуя тебе учить всё подряд? Сначала оттачиваешь до идеала одно, потом учишь другое. Питона тебе вполне хватит для этого. С чего ты взял, что рельсы подойдут лучше?
>>618291 Для меня сам переход пока из питона в джанго очень непонятен. Слепить твитер с бложиком - слепил, а как это работает не особо понимаю. Курс питона на кодекадеми туда-сюда очень помог, только там фреймворков питоновских нету. Вот и закралась мысль что их курс руби+рор куда больше пользы принесёт чем то крвыряние интуитивное, которым я сейчас занимаюсь.
>>618293 Наверни документацию. Она не так интуитивна как курсы, но инфы гораздо больше. А если тебя беспокоит обилие магии - в рельсах её гораздо больше, это одновременно главное преимущество и главный недостаток.
>>616098 (OP) Дорогие рубисты, можете ли пояснить, почему ваш язык настолько хипстерский и что в нём такого? Стоит ли выбрать руби как первый язык(до этого только лабы и олимпиады на паскале в школе[/spoiler), если целью является веб-разработка? Или выбрать блядский пхп? Для меня так же важно наличие работы.
>>618333 Я бы выбрал js, если был на твоем месте. Работы на руби будет все меньше, а пхп - это низкие зарплаты. Js нескоро еще загнется, если вообще загнется когда-нибудь. А фреймворков дохуя на любой вкус, каждую неделю новые выходят.
>>618333 Почитай книжку "Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript и CSS" за авторством Роберта Никсона. Вообще все вопросы отпадут.
>>618333 >почему ваш язык настолько хипстерский и что в нём такого Адекватная стандартная библиотека. Метапрограммирование. Нет коматозных отступов. По сравнению с PHP — Ruby полноценный ЯП by design, а первый шаблонизатор к которому дописали функционал ЯП. В своё время был очень популярен среди хипстеров, поэтому стал хипстерским. Как правило хипстеры знали японский, а руби раньше был целиком на иероглифах написан(документация, интерфейс irb, даже вся выдача с других систем письменности транслитирировалась в иероглифы), жуть короче — поэтому одно время язык был ещё и элитарным. В 1945 американцы смогли проникнуть в японию и расшифроать руби на английский(плюс они украли учёных которые издевались над пленными из союзных войск, но это другая история), что позволило им взломать передовую на то время японскую ПРО и сбросить две боеголовки нючные. А всё это было в конечном итоге для того, чтобы заставить японцев играть в бейсбол.
Хипстеры может и сомнительная публика, но губа у них не дура.
>>618288 Не преимущество, а единоразовая экономия 20 секунд времени. Если ты, являясь программистом, испытываешь проблемы с вводом в консоль программы трех строк скопированного текста, у меня для тебя плохие новости.
>>618336 Увы, это тоже не преимущество. Так почему я так же должен отказаться от Sublime в пользу чего-то другого?
>>618336 Чекнул-таки даты релизов по твоей рекомендации, вижу последний апдейт в марте 2015, и средняя периодичность релизов около полугода. Что должно мне говорить о том, что автор списал редактор со счетов?
Подскажите, как сделать, чтобы сублим подсвечивал изменённые файлы, как атом из коробки. Это единственная фича, которой мне не хватает.
Алсо, пересел обратно на ST, потому что в атоме нет вообще никакого решения для хранения снипетов или какой-то временной инфы. Обычно я записываю все в ctrl+n и оно хранится в проекте неопределённое время, пока не наступает БОЛЬШАЯ ЧИСТКА. Но атом почему-то всё время заставлял меня либо сохранить файл Untitled, либо стереть его содержимое, и ни один из этих вариантов меня не устроил.
>>618247 Что ж, почитал про брекет, посмотрел ролики, понравилась фишка с inline окошками для редактирования всего и вся, классный live preview. Установил. Потыкал полторы минуты, чтобы понять, что редактор медленный и неотзывчивый по сравнению с SublimeText. Следующий.
>>618646 На моем не самом мощном компьютере (для крузисов), где все текстовые редакторы (как им и подобает) работают без каких-либо видимых задержек в реакции (на какое-либо действие: переключение файлов, вкладок, нажатие сочетаний клавиш, прокрутка файлов) Brackets показывает производительность, которую можно сравнить разве что с меню какой-нибудь новой навороченной игры: любое нажатие на любую кнопку отрабатывается спустя 0.1-0.2 секунды, вот эта ненужная анимация работает явно хреново, в целом ощущение, что ты не текстовом редакторе работаешь, а в каком-нибудь груженом профессиональном софте, типа 3DSmax с выведенной сценой на несколько миллионов полигонов.
Анон, есть ключ на восьмую рубимайн? А то у меня скоро триал закончится.
Алсо давно уже заметил что использую её только в качестве редактора и недавно решил перейти на что-нибудь попроще из шапки. В итоге что получилось:
Саблайм - не смог нормально кастомизировать тему и вообще там система плагинов ебанутая какая-то. А мне надо очень много функций, чтобы можно было вкладки листать туда-сюда и множество действий выполнять без мышки.
Брекетс - нечего сказать про это говно, зависает сразу как только открываю проект.
Атом - таки настроил его, и кастомизируется он очень охуенно так как полностью на хтмл/ксс. Плагины ставятся очень удобно, всё было норм. Поставил плагин для встроенного терминала и атом начал зависать. Ну да хуй с ним, решил смириться. Просидел на нём неделю, но меня раздражало огромное количество мелочей Например выделение с ctl+shift+left/right работает как-то по-ебанутому, в сассе первая строка после селектора автоматически не отступается и т.п., в общем заебёшься всё это настраивать если это вообще возможно. Да и тему я не смог найти такую приятную как рубимайновая даркула, хотя с этим я готов был смриться.
Вим - открыл-закрыл, как я понял там ебли ещё больше будет с настройкой а времени у меня нет.
В итоге я вернулся в рубимайн, но убрал всё лишнее, отключил 80% плагинов гит-хуит, кучу говна, которое мне нахуй не надо, поотключал множество инспекшнов, забиндил себе терминал на alt+2 и стало просто охуенно. Буду продолжать юзать её в качестве текстового редактора, всё остальное делаю из терминала. Из встроенных функций ещё полезна пожалуй история модификаций файлов ну и рефактор иногда норм помогает для мелочей разных.
>>619072 >Закрыл перезагрузкой? закрыл окно терминала? :q Enter, там написано же >У тебя там наверное план побыстрому выучиьт руби/рельсу и начать зарабатывать уже сегодня. >Начал учить полтора года назад, уже потихоньку планирую дропать и переходить на джс или что-нибудь поинтереснее. >>619077 Не работает(
>>619087 Ну скажем так, есть люди заинтересованные в том чтобы замутить веб-студию + реализовать ещё пару идей (не технари), а я им помогаю. Пока что ещё всё процессе, сделали 1 заказ, себе сайт и сейчас пилю одну из тех идей, типа сайт объявлений если вкратце. Писал на рельсах чисто, сейчас раздупляюсь ещё с эмбером. В общем посмотрим что из этого взлетит. Если ничего, то по крайней мере получу и уже получил дохуя опыта, как в плане программирования (в том первом проекте успел решить пару нетривиальных задач), так и в плане общения с людьми, а просто поработать ещё успею если что так как я ещё студент.
>>619092 Ну ты крут, а вот я уже далеко не студент. Студенческие годы я убил на просмотр аниме. Оче завидую тебе. А мне вот надо думать как совмещать работу и изучение чего-нибудь вообще.
>>619093 На самом деле всё очень хуёво так как я трачу абсолютно всё своё время на освоение специальности, не могу остановится, не выхожу на улицу, нагружаю себя очень сильно и пытаюсь всё успеть но дни пролетают очень быстро и это меня пугает. Иногда хочу послать всех нахуй и потратить оставшиеся студенческие годы на девушек и "нормальную жизнь", но я этого не умею, максимум что смогу вместо этого это тоже аниме смотреть.
>>619096 Вот сейчас читаю документацию по эмберу, сегодня в планах прочитать и усвоить максимум информации, посмотреть конференцию на ютубе. Перерывы только на еду.
>>619096 >трачу абсолютно всё своё время на освоение специальности, не могу остановится Охуенно, просто иногда на пять минут ложись отдыхать и делай зарядку. >потратить оставшиеся студенческие годы на девушек и "нормальную жизнь" Нахуй, серьёзно. Девушки которые сейчас тебя окружают тебя не нужны. Когда тебе будет 30 найдёшь молодую. Вообще не парься. Разве что, рекомендую потратить время на установление рабочих контактов с нужными людьми. Подавай своё резюме на стажировку и вообще. Аниме не смотри там всё одинаковое (у меня 300 тайтлов, так что я знаю о чём говорю).
>>619096 >>619097 Даже перефразирую >>619098, если у тебя идёт изучение того что ты учишь, то не грузь, по поводу девушек и прочего, тут у многих проблема в том что вообще не могут ничего делать, как овощи сидят. Так что норм.
>>619098 >Охуенно, просто иногда на пять минут ложись отдыхать и делай зарядку. У меня итак режим сна с 23.00 до 7 и утром зарядка. Я уже почти что машина а не человек. >Нахуй, серьёзно. Девушки которые сейчас тебя окружают тебя не нужны. Когда тебе будет 30 найдёшь молодую. Да хули ты там понимаешь, как я себе её найду если буду в 30 лет девственником ебаным. >Аниме не смотри там всё одинаковое (у меня 300 тайтлов, так что я знаю о чём говорю). Ну у меня уже около 20, но уже несколько месяцев не смотрел, как-то потерял интерес. >>619099 Может и норм, с точки зрения овощей, но мне хуёво.
>>619100 Зарядку утром не делай, её в течении дня надо делать, ты не пахарь в колхозе. Зарядку компьютерщикам надо делать чтобы кровь разгонять, а не просыпаться. Олсо, если ходишь в качалку, бросай её нахуй. Только изматывает нервную систему. Лучше обыкновенная ходьба, бек или велосипед, опять же для разгона крови. И здоровое питание, овощей побольше и мяса. Всякие колы, сникирсы нафиг. >Да хули ты там понимаешь, как я себе её найду если буду в 30 лет девственником ебаным Девушке будет похуй. Если ты программированием можешь зарабатывать себе на жизнь, то девушке совершенно точно похуй (или по пизде?) совал ли ты до неё пинус в другую самку. Секс переоценён (хотя для тебя это дико звучит наверное, но это так).
>>619100 >Ну у меня уже около 20, но уже несколько месяцев не смотрел, как-то потерял интерес. Смотри только фильмы, сериалы никогда не смотри больше. Это пустая потеря времени. В идеале скачай мангу и ост сериала и будет офигенно и быстро.
>>619105 >Олсо, если ходишь в качалку, бросай её нахуй. Как ты догадался что хожу лол? У меня комплексы по поводу внешности так что не брошу, нужно исправить недостатки. >девушке совершенно точно похуй (или по пизде?) совал ли ты до неё пинус в другую самку. Секс переоценён Но ведь важен не только секс, но и ЛЮБОВЬ
>>619113 Полуркай "обыкновенные парни", если хочешь почистить голову на тему девушек, помогает в любом возрасте (деньги туда башлять не нужно). Извините, что не по теме треда, не люблю, когда засоряют обсуждение биопроблемами.
>>619113 >Как ты догадался что хожу лол? У меня комплексы по поводу внешности так что не брошу, нужно исправить недостатки. Ну, сейчас качалки модными стали — чтобы добиться реального результата, там жить надо. Просто имей ввиду, что неудачно нагрузив спину можно заработать грыжу, а грыжа это пизда и геморой на всю жизнь (плюс год из жизни просто выпадает, при первичном лечении). Ну может в будущем научатся как-то лечить или протезировать. Тебе не нужно бороться с недостатками, а нужно сосредоточиться на достоинствах и улучшать то в чём ты уже хорош. Если у тебя просто тонкие руки, даже не парься по этому поводу. >Но ведь важен не только секс, но и ЛЮБОВЬ Так и я про это. Если узнает, что ты девственник и не будет подтрунивать как-то злобно и не бросит, значит как минимум хочет с тобой жить. А желание с кем-то жить, это любовь в чистейшем своём проявлении.
>>619158 Кстати, рубимайн таки активировал. Если кому ещё нужно: >>619077 это всё таки работает, просто нужно вот что 1. в рубимайн зайти в Help -> Register 2. выбрать пункт License Server 3. ввести в поле http://idea.lanyus.com/ и нажать ОК
Че-то пиздец. После 2 лет хиккования закончились деньги, нашел фулл-тайм работу рубимакакой на апворке. Для приличия сделал вид, что я не совсем уебан и могу не выебываясь делать то, что нужно, не проебывая при том к хуям все дедлайны. И что? Заказчик теперь хочет, чтобы я полдня пиздел с ним в скайпе, а оставшиеся полдня перекладывал карточки в джире и пинал других менее ответственных кодомакак-тестировщиков-хуйпоймикого. Охуеть просто, я хотел просто писать код и продолжать хикковать, а намекать на это заказчику теперь неудобно.
>>619831 Если я не ошибаюсь, тебе предлагается быть тимлидом. Скажи, что желаешь совмещать управление задачами, код-ревью и самому что-то писать for fun and futher experience. И заодно бумагу затребуй рекомендационную по уходу, что был опыт тимлида. Сука, ему такую возможность дали, а он выебывается!
>>619221 Большинство rails веб-приложений просты, как пять копеек. А постгрес это РСУБД для более серьезных вещей, когда нужна надежная репликация, когда недопустимы дедлоки, когда нужна продвинутая миграция в таблице на 100 млн записей без бубареха. В общем it depends. Для профразвития лучше, конечно, чтобы использовали postgres, но при поступлении на работу будут задавать вопросы по нему, а он далеко не изи.
>>616098 (OP) >14515138148841.png >I learnt ruby before ruby on rails My story. Правда до этого уже кое что делал на паскале, дельфи и c++. И вообще линуксоид.
Сап программач. Появилась у меня задача сделать простенький аналог апворка. Поставил я значит Devise, сделал модельку с юзерами, и встал вопрос: как делать разделение пользователей на заказчиков и исполнителей + администраторов? По аналогии с апворком - заказчик это тот же исполнитель только с доп полями в базе (название компании и т.д.), т.е. тут можно все в одну таблицу объединить как как в паттерне STI или есть другие варианты? Какие отношения делать между моделями?
Вот накатал приблизительно (судя по ответам на подобные вопросы на SO), правильно ли я делаю анон?
class User has_one :profile scope :employee, :where => {user.has_role? :employee} scope :employer, :where => {user.has_role? :employer} scope :administrator, :where => {user.has_role? :administrator} has_many :jobs, :through => :projects has_many :projects end
class Emlpoyee/Employer/Administrator belongs_to :user end
class Profile belongs_to :user end
class Project belongs_to :user # employer has_many :jobs has_many :users, :through => :job # employee end
class Job belongs_to :project belongs_to :user # employee def fired? ... stuff to check if the employee is fired end def hired? ... stuff to check if the employee is hired end end
Знатоки метапрограммирования в Руби, подскажите, какие есть средства для работы с лексической областью видимости, кроме refinements? Они очень ограниченные и неявные, мне нужно что-то помощнее. Можно работать с лексической областью видимости как с объектом?
Доставьте таких историй. Чтобы был описан процесс перехода от говна к конфетке с обоснованием мотивации, каждого решения, возникших проблем и так далее.
>>621509 >Чтобы был описан процесс перехода от говна к конфетке Вот лекция по паттернам, применимым в рельсах, позволяющим отойти от типичного MVC и толстых моделей. >с обоснованием мотивации, каждого решения, возникших проблем и так далее. Без этого, просто теория. https://www.youtube.com/watch?v=IqajIYxbPOI
>>621535 И полно подобных материалов, объясняющих, как перестать зависеть от архитектуры моделей в рельсах. А вот про контроллеры я ничего подобного не нашёл.
Ситуация такая - у меня для моделей в действии show отображается очень много информации. Я решил разделить её на вкладки. Это видно на первых двух скринах. Получается что-то вроде действия в действии.
На уровне шаблонов я просто разделил это на partial'ы. А вот на уровне контроллера получается такой case, как на третьем скрине, что не очень красиво, и вообще boilerplate, потому что приходится писать это часто.
Что за фигня может быть, один и тот же тест все время проходит, если запускать только тот спек, в котором он находится. Если запускать все тесты вместе, то именно он всегда падает. Тест всего лишь заходит на одну из страниц приложения и проверяет http-статус ответа. Ответ должен быть 401, но если запускать все тесты, то ответ 200. Если проделывать действия вручную, то как и положено, всегда 401.
Программач, i'm stuck. Создал я аутентификацию с помощью devise гема, модель User которая связана с таблицей users в которой есть поля email, username, first_name, last_name и password собственно. Все нормально, пользователи создаются, аутентификация проходит как по логину так и по почте. Но тут встал вопрос, модели и таблицы Employee и Employer нужно создавать отдельно с теми же полями inb4 не нужно а в модели User все убрать, или просто пустые модели с belongs_to :user оставив User на месте, или как? Как рельса будет собственно понимать кто работник а кто работодатель? Как добавлять пользователей в ту или иную группу при регистрации если сделать модели как в >>621067? Как это работает анон, расскажи доступно молю!
>>621822 Это значит, что ты в другом спеке срёшь в глобальное окружение. Глобальные переменные, конфиги, Thread.current, еще какая-нибудь хуйня. Погугли rspec bisect или minitest-bisect, оно найдёт говноспек, а дальше ты сам разбёрешься.
>>621967 Погугли что-нибудь типа "rails devise sti" или "rails devise multiple user models". В своё время, джва года назад, я решал эту проблему, пробовал оба способа.
Алсо, devise говно, но бывает что никуда не деться, к сожалению. Оно нужно только когда требуется ехать, и как можно быстрее. Если позволяет время, лучше всё сделать нормально при помощи authlogic или sorcery.
>>622006 Да вот ж блядь хотелось бы побыстрее, но получается как всегда. Время на часах 4 утра, а я тут сижу костыли ваяю с Devise/Cancancan и Rolify. И ладно бы проект был коммерческий и за это деньги заплатили, так ведь нет - для себя делаю. Радует одно, что пройдя разок через это, в следующий раз (уже на реальном проекте) не будет такого мозгоебства inb4 будет
>>622013 Ну, по описанию проекта Cancan на гитхабе да и по рельсокастам вроде все понятно пока. Я еще пока с Devise ебусь: либо каждому по модели и таблице и где-ниудь обосрешься - инфа сотка либо STI ну как ты и написал в общем, и хуй знает какой вариант лучшеinb4: оба говно. Энивей мне до Cancan еще нужно с Devise разобраться.
>>621967 По ролям и rolify. Роли хранятся в отдельной таблице roles. Там просто тупо названия ролей в строковом формате. Плюс есть таблица users_roles, в которой просто foreign keys от таблиц users и roles. По-моему, эта миграция даже автоматом создается. Связь между users и roles - has_and_belongs_to_many. Узнаешь наличие роли нехитрым способом current_user.has_role?("manager"). Но похоже, в твоем примере rolify совершенно ни к чему. Для тебя подойдет такой вариант - создаешь для всех одну таблицу users со строковым полем "type". При создании пользователя сразу записываешь его тип. Для каждого типа задаешь скоуп, только не так, как тут >>621067, а вот так scope :employee, -> { where(type: "Employee") } И все, поведение описываешь в моделях (у каждого своя), права разграничиваешь cancan-ом или pundit-ом Вот тут что-то подобное http://samurails.com/tutorial/single-table-inheritance-with-rails-4-part-1/
>>622037 Да блин, котаны, скажите уже что плохого в табах? Я от смятения как уж на сковородке извиваюсь, на стену лезу, от душевных мук и горя незнания своей ошибки. Ведь так удобно по gt переключаться, и сразу везде работает, на любом рандомном сервере без моего vim-конфига с биндингами. А буфферы переключать, это как-то долго (без биндюней-то).
>>622373 На руби вполне хорошо можно пилить API для мобильных приложений, например. И websockets-еболу, если надо. Получается намного лучше, чем на ноде. Спрос по этим направлениям будет расти в ближайшие 10 лет.
Ну и рельсы вполне хороший фреймворк для построения классических сайтиков. Отлично пилятся прототипы с админками.
>>622419 >>622408 > не цирк с конями как в ноде > На руби вполне хорошо можно пилить API для мобильных приложений > Получается намного лучше, чем на ноде sailsjs.org видели?
>>622435 Дохлый фреймворк не из-за отсутствия активности в репозитории. Если ты этого не понимаешь, тебе ничем не помочь. И не нужно агриться, просто спокойно попробуй понять, в чём ты не прав.
>>622449 Есть разные подходы к архитектуре кода. Мне больше по душе тот, где в моделях оставлена только логика хранения и валидации данных, вью-релейтед штуки вынесены в декораторы, а бизнес-логика - в service layer. Ничто не мешает писать код нормально ведь, при чём тут эктиврекорд вообще?
>>622546 ну, ActiveRecord - реализация паттерна можно конечно трахаться с ним(с rails ActiveRecord), пытаясь сделать что-то удобное, но суть в том то, что ActiveRecord делает написание крупных приложений неудобным
Анон, как реализовать наследование модели ActiveRecord?
К примеру есть BaseModel и SomeModel<BaseModel
BaseModel < ActiveRecord::Base def method1 end def metho22 end end
SomeModel < BaseModel def somemethod end end
У BaseModel так же есть поля field1, field2, хранящиеся в бд, созданные миграцией. Таким образом SomeModel будет так же иметь методы BaseModel и поля field1, field2. Что делать если есть необходимость в других полях в модели SomeModel? Можно ли реализовать хранение полей относящихся к SomeModel в другой таблице бд и как это реализовать?
>>622591 STI гуглил конечно, он актуален когда различия в полях между BaseModel и SomeModel невелики. Ты вопрос то читал? > Можно ли реализовать хранение полей относящихся к SomeModel в другой таблице бд.
Пару-тройку полей в общую таблицу добавить не составит сложности хоть это и выглядит уебищно. Что делать если неизвестно заранее сколько полей потребуется для SomeModel? Как сделать чтобы была отдельная таблица для SomeModel с уникальными только для нее полями, и SomeModel наследовала базовые поля от BaseModel? Вот вопрос.
>>622550 > https://github.com/lotus/model Когда я вижу такое дерьмо, мне хочется купить билет в Чикаго, подкараулить DHH у его дома, сдёрнуть с него штаны и отсосать ему нахуй. Просто за то, что он есть и на километр не подпускает диванных кукаретиков с их ублюдочными идеями к rails core. > ActiveRecord делает написание крупных приложений неудобным Не AR, а дауны, которые сначала срут в модель, а потом не могут банально отрефакторить распухшие модели. В том же гитлабе на 50+ моделей найдется с десяток ключевых, все остальное - полупустая обвязка на 50 строк к repository-project-event-member-че у них там еще есть. Но нет, сделать 5 PORO декораторов и 10-15 сервисных объектов для ключевых моделей мы не можем, вместо этого мы насрем в кучу и будем ныть, что AR виноват. И похуй, что в том же гитлабе 40 моделям из 50 нахуй не всралось размазывать 3 ебаные строчки кода https://github.com/gitlabhq/gitlabhq/blob/master/app/models/email.rb по 5 абстракциям.
Мой - сайдкик. Это не только гениальное решение и чистый, профессиональный код, но и очень удачный маркетинг и вообще крутой пример того, как можно организовать бизнес при некотором умении и капельке удачливости.
Код какого гема можно поизучать как пример хорошего, годного кода? Слышал, что многие даже очень раскрученные проекты имеют большое количество induist tier кода, и вместо изучения могут только вызвать желание сделать рефакторинг.
Блядь анон молю помоги уже заебался с этими Devise и прочей хуйней.
Делаю сайт наподобие апворка. В очередной раз вкратце опишу что мне нужно на данный момент:
Нужно три вида пользователей - фрилансер/заказчик/админ.
1. Заказчик может добавлять и удалять и вообще делать что хочет со своими заданиями которые он размещает от своего имени. Не может подавать заявку на выполнение задания inb4 может после добавления себя в фрилансеры. 2. Фрилансер может просматривать то что уже размещено и подавать/отменять свою заявку на выполнение задания попутно переписываясь с заказчиком. Не может размещать какие-либо задания inb4 может после добавления себя в заказчкии. 3. Админ может вообще все.
На данный момент имеется настроенный Devise gem в котором есть модель User (аутентификация проходит, пользователи регистрируются, аккаунты создаются). Модель Project со всеми крудошлепскими приблудами которая нужна inb4 не нужна для размещения работ от заказчика. Ничто ни к чему не привязано, потому что систему авторизации и ролей никто не настраивал и не имеет смысла это делать на данном этапе.
Я уже согласен сделать это из говна и палок, лишь бы работало, объясни по пунктам, что делать? Например: 1. удалить модель User к хуям 2. создать модель Employer командой rails g devise Employer 3. добавить в миграцию Employer нужные поля & rake db:migrate 4. сделать нормальный контроллер с CRUD'ом и роутингом как /employer/sign_up например этого говна 5. повторить все это для Employee/admin/yoba 6. соединить это все общая форма аутентификации например между собой и с моделью Project хуй знает как тут то и вступают в игру говно и палки 6. сделать бочку 7 . .... 8. Profit!
Мне уже если честно абсолютно похуй что это будет, STI, MTI еще какая неизвестная еба, главное чтобы она выполняла то, что нужно. Куча рандомных долбоебов со всех уголков интернета предлагают разные варианты решения данной задачи которая на первый взгляд не кажется сложной (начиная от: I'm working on an app where there are also different types of users and instead of storing only :current_user_id in session I've decided to store current_profile_type and current_profile_id, so current_profile could be an instance of different models и заканчивая - MTI is poorly supported by Rails.), но я то знаю где действительно помогут inb4 не помогут, так что ананас, на тебя вся надежда.
>>623068 1. Сделай тупо одну модель User для всех. Забей на STI и отдельные модели. 2. Заказчик и\или фрилансер храни тупо в двух булевых полях у модели. 3. Сделай условную валидацию, если поля формы при регистрации различаются. Разумеется, сделай условный вывод полей формы тоже. Наверное, тебе нужно сделать кастомный экшен регистрации, чтобы например с параметров читать и в модели нового пользователя устанавливать нужный флаг. 4. В канкане руками будешь проверять флаги заказчик\исполнитель, если потребуется. Ну, это очевидно.
Это если максимум в лоб. Я чую, тебе совсем плохо там, так что начни с примитива, который работает. STI потом добавить не большая проблема, есличо.
>>623068 Ах да, гуглани про полиморфные ассоциации, если ещё не. Многие почему-то не знают, что такая штука есть в рельсовом AR и начинают городить огород. Возможно, это тебе пригодится. А может и нет, я мысли твои читать не могу.
>>623068 Модель одна. Признаки заказчика, лансера и админа можно например в булевских полях хранит как советует комрад >>623086 Для регистрации делаешь формобджекты в которых прячешь валидации. Для каждого типа свои. Общие - можно унаследовать. для админа, видимо, вообще не нужна регистрация Делаешь свои контроллеры для регистрации и прочего в доках девайса есть примеры Добавляешь на форму регистрации галочки или селект или что захочешь для выбора типа пользователя. В самом контроллере проверяешь кто пытается зарегистрироваться и используешь соответствующий формобджект будет вообще круто сделать фабрику для этого. Для авторизации можно использовать pundit или cancancan.
>>623086 > 3. Сделай условную валидацию, если поля формы при регистрации различаются. Разумеется, сделай условный вывод полей формы тоже. Наверное, тебе нужно сделать кастомный экшен регистрации, чтобы например с параметров читать и в модели нового пользователя устанавливать нужный флаг. За условные валидации и условный вывод гореть тебе на костре!!11
Есть приложение на rails api и фронтенд на ангуляре. Как их связать?
Пока просто копирую весь фронтенд в папку public. Это не очень удобно (надо копировать после каждого деплоя рельс), плюс меня гложит то, что ангуляр, даже находясь на том же сервере, делает запросы куда-то в интернет, чтобы получить инфу от рельс.
Анон, есть ли смысл брать и писать приложения на рельсах, если нет опыта работы с Ruby? Или нужно теорию почитать? Писал на крестах, пхп, и тд. Знаком с несколькими фреймворками.
>>624582 Смысл есть всегда. Но есть два "но": 1. Будь готов к тому, что код иногда будет вести себя непредсказуемо. Это специфика рубей. Код ведёт себя предсказуемо только для того, кто владеет мат. частью. 2. Скорее всего, у тебя будет много избыточного кода и костылей. Со временем конечно пройдёт.
>>624054 Ну обычный же путь - погуглить самому, а параллельно спросить про лучшие практики, чтобы: 1) уточнить, что найденное решение самое клевое, 2) рассказать остальным анонам, какие бывают таски
Не пойму насчет heroku. Если я запущу на нем приложение с puma и redis, у которых 10 пиздалионов рабочих процессов, то я буду торчать им деньги? И каким образом они их спишут, если я указал в биллинге левые данные? Поделитесь пожалуйста опытом. Или если я выбрал базовый план, то там просто не будет работать такое количество процессов?
>>624799 > у которых 10 пиздалионов рабочих процессов То уже третий процесс из 10 пиздалионов выжрет к хуям доступные 512мб памяти + 512 свапа и обрушит дино. Думаешь ты у мамы самый умный?
>>624826 Читал доки, но видимо я жопочтец. На free тарифе вообще реально запустить какой-либо воркер, кроме дефолтного "web" ? Я вот в Procfile добавил доп.воркер, а он автоматом нихуя не запускается.
>>624654 Ну нужно запилить проект с некоторым маштабированием. Основная кодовая база есть, покрытие тестами около 92%.
Но нужно реализовать несколько крупных модулей, т.е. переписать частично основной код и добавит ещё своего.
Особо времени на изучение нет, поэтому планирую запилить по туториалам каноничные рельсопроекты, посмотреть YouTube, ну и какой нибудь книжкой обмануть. Затем уже брать код проекта и ковырять его.
>>625150 Руби не простой язык. Рельсы не простой фреймворк. Нужно знать очень много разнообразных сопутствующих вещей. Это сито отлично отфильтровывает всяких хитрецов джуниоров, которые хотят наскоком влезть рубить бабло.
Ядро коммьюнити - это сеньоры S-класса, которые перекатились в руби\рельсы, набив прежде шишек и опыта на других платформах. И сделали множество замечательных вещей. Писать на руби - удовольствие, поэтому они тут. Можно творить очень красивый код, лаконичный и отчасти волшебный - если тебе уровень позволяет. Повторюсь, требуется быть компетентным по нескольким десяткам направлений и инструментов - тогда ты хорош. Тогда тебе комфортно, тогда ты можешь.
В руби ООП сложное. Прочие непонятные интуитивно штуки тоже есть. Сам язык синтаксически-богат. Стандартную библиотеку придётся учить. Рельсы придётся учить. Десяток стандартных джемов придётся учить. А язык - нужно учить обязательно.
Если у тебя работа уровня штамповки крудов методом частичного копи-пастинга, может ты и выедешь на цитатках со стековерфлоу. Чуть шаг в сторону, чуть сложнее что - ты засыпешься. Это гарантировано. Часто необходимо читать и ковырять в глубину исходники чужих джемов. И нужно быть компетентным в области программирования в целом.
Целься примерно на 2 года обучения. Речь идёт не только о рельсах. Речь идёт о твоей общей подготовке. О том, сколько всплывёт вещей, через которые придётся продираться.
За два года вполне реально стать крепким мидлом, совмещая процесс с основной работой на пол-ставки.
И потом ты, конечно, сможешь делать вид, что вкатиться было легко. И правда, оно это рельсовсякое таким игрушечным и лёгким со стороны выглядит.
>>625183 Как Господь сказал, в шапку нужно этот дисклеймер писать в самом начале. Только что проверял свой скилл - после 2.5 лет всё ещё многого не знаю, или даже не задумывался никогда как оно работает. Выполнять задачи это не мешает, но с другой стороны легко сажает в лужу жидкой методологии при первом же собеседовании.
>>625183 А если я уже 3 года на пхп потратил, то сколько времени у меня займет руби? Понимаю, что знание языка измеряется не зубрением, а реальными проектами. Сколько там лет проекты набивать, если уже примерно знаешь аналогию.
>>625150 > Ну нужно запилить проект с некоторым маштабированием. Основная кодовая база есть, покрытие тестами около 92%.
Так ты сразу коммерческий проект хочешь брать? Вот это зря. я думал ты просто для самообучения хочешь какой-то свой проект сделать Хотя в некоторых случаях реально может прокатить копипаст с SO, но много скила ты так не набьёшь. Да и откровенные костыли там попадаются порой
>>625183 Это паста? > И правда, оно это рельсовсякое таким игрушечным и лёгким со стороны выглядит. Удваиваю. Когда начинал тоже казалось что всё легко и просто и сразу писал боевые вещи конторка была левая. и хоть меня взяли на джуниора и вроде даже отсматривали мой код, всё равно реопенов было мало Спустя где-то год понял какое дерьмо от меня в проект попадало. Стал писать по-другому. Ещё спустя год понял что и это дерьмо. Короче уже 5 лет живу тем, что периодически понимаю, что нужно делать по-другому. inb4: моя прохлада
>>625236 > Только что проверял свой скилл А где проверял?
>>625238 Зависит от того, на каком уровне писал на пыхе. Если писал хаки для друпала то и здесь, скорее всего, захочется поговнокодить. И трудно будет себя отучить. И долго. И нужна охуенная сила воли, дохуя читать годных книжек/статей и вдумчиво применять их. Или нужен ментор. Если вдумчиво с паттернами, с солидом, с оптимизацией запросов и прочими кошерными вещами работал с каким-нибудь МВЦ-фреймворком вроде YII котировался? то действительно будет проще и, по сути, нужно будет привыкнуть к синтаксису и динамизму. В первом случае, процесс может затянуться бесконечно, во втором может реально пол года хватить.
>>625328 >Писал год - дерьмо >Писал два - дерьмо >Пишу пять - дерьмо Конечно и в тебе может быть изрядная доля "проблемы". Но, кажется мне, даже если ты 20 лет будешь писать получаться будет тоже самое, может в другой обёртке, но дерьмо. И причина этому лишь одна.
>>625358 >Писал год - дерьмо >Писал два - дерьмо >Пишу пять - дерьмо Не перевирай слова. Мне мой старый код со временем начинает нравится всё меньше. Текущий я стараюсь писать так, как считаю правильным. кстати, говорят что если ты, со временем, не пересматриваешь свои подходы то ты плохо развиваешься как специалист
> и в тебе может быть изрядная доля "проблемы" Ну да. Во мне. Я другого никого и не обвинял. Просто не надо думать что у других этой проблемы нет никого конкретного не имею сейчас ввиду. Во всяком случае, из того что я вижу (на работе, что в этом треде, что на СО) у большинства проблемы двух типов: 1. Хуяк-хуяк и в продакшен. А читать доки/бестпрактисы не по-пацански. Мы и так умеем соображать, зачем время тратить? 2. Читаем дохуя этих бестправктисов а потом подгоняем задачу под них.
Вот у меня первого типа проблема. Я ленюсь читать. Когда что-то поинтереснее нужно - я доёбываюсь до наших гуру. мне легче так понять чем читать книжки с нелепыми примерами Я борюсь с этим. Таки заставляю читать. Из недавних открытий, например, был солид лол, 5 лет проработал и только узнал что это%%.
>>625397 > Обосрался со спойлерами Вот у меня первого типа проблема. Я ленюсь читать. Когда что-то поинтереснее нужно - я доёбываюсь до наших гуру. мне легче так понять чем читать книжки с нелепыми примерами Я борюсь с этим. Таки заставляю читать. Из недавних открытий, например, был солид лол, 5 лет проработал и только узнал что это. Самофикс
>>625328 >Так ты сразу коммерческий проект хочешь брать? Да, к сожалению, так вышло, что придется взять коммерческий проект, который я описал выше. Текущее решение сосет, реорганизовывать его в одиночку слишком тяжело. Есть ОС решение, которое сделано очень хорошо, но оно не полностью покрывает наши запросы. Кодирую интереса ради, но так получается, что попадаю в коммерческие проекты. Почему бы и не совместить. Нет цели сделать какое-то шикарное решение, я понимаю, что в начале буду дико лажать, но главное, чтобы работало и набивался скилл. С фреймворками был опыт работы, на Ruby писал самые примитив некоторое время назад - типа игрищами с массивами и чатиками на сокетах, да и вообще некоторые опыт в программировании есть. Единственное, время лимитировано, нужно за очень небольшой промежуток времени запустить эту платформу + дописать к неё порядка 3-4 модулей (не очень сложных). На этом закроется MVP и можно уже действительно вылизывать код.
>>625183 >>625328 Охуенный тред, пожалуй самое приятное и конструктивное общение, но вы все-таки ответьте на мой вопрос >>625150 >На сколько такой подход жизнеспособен? Возможно, я просто что-то упускаю, не хотелось бы на грабли сразу же наступать. Модули такие: -API; Выкидывать и принимать в JSON данные от сторонних приложений. -Голосование; Тут скорее важен сбор статистики, чтобы отлавливать накрутки. -Бонусная система; В общем, со стороны звучит не сложно, но там есть целая куча проблем.
>-API; Выкидывать и принимать в JSON данные от сторонних приложений.
Можно просто поместить API-роуты в неймспейс, а соответствующие контроллеры в модуль, использовать JSON.parse и виды на jbuilder и сделать апи прям на чистых рельсах.
Я использовал популярный джем grape и презентеры grape-entity, и мне очень понравилось. Тащемта, grape учить очень не долго, если просто руби-код ты уже умеешь писать.
>-Голосование; Тут скорее важен сбор статистики, чтобы отлавливать накрутки.
Собирай статистику и отлавливай накрутки, в чём проблема? Не бойся писать в БД каждый голос с дополнительной о нём информацией. Возможно, есть какой-то готовый джем, конечно, который поможет тебе решить задачу, но я не сталкивался. Погугли сам. Либо подробнее опиши проблемы, которые тебя смущают.
>-Бонусная система;
1. Мало инфы. 2. Обычно функционал системы приходится делать - ты не поверишь - с нуля руками.
> Олсо, подскажите какие тулзы ведения проекта, которые надо посмотреть, изучить.
Что ты имеешь в виду под "ведением проекта"? Сорта штуковин типа git и capistrano? Или таск-трекер? Или блокнот++?
>>625880 >Собирай статистику и отлавливай накрутки, в чём проблема? Проблемы нет, я просто рассказываю о том, что нужно реализовывать. Анализ данных вообще будет на другом сервере с Java машиной. От Рельсов нужно только кидать все собранные данные в Redis хранилище.
>ты не поверишь - с нуля руками. Да знаю я это всё. Я просто рассказываю о том, что нужно реализовать.
>Сорта штуковин типа git и capistrano Они самые. Хочу наладить путевый Development-cycle, чтобы все по порядку было: тесты->код->рефакторинг->тесты->загрузка в amazon aws.
>>625150 > Особо времени на изучение нет, поэтому планирую запилить по туториалам каноничные рельсопроекты, посмотреть YouTube, ну и какой нибудь книжкой обмануть. Затем уже брать код проекта и ковырять его. Тебе будет тяжело первое время. Умножай сроки на четыре-пять.
>>625893 Я в своё время сначала учил руби, читая книжку параллельно с придумыванием самому себе заданий к каждой главе и их решением с прочими экспериментами. Ушло пару месяцев, я вечерами это делал.
Потом читал официальный гайд по рельсам и пилил гостевуху... нет, не гостевуху, конечно, а систему управления хостингом.
Не знаю, как можно писать руби-код, не зная руби, так что не знаю, что тебе посоветовать. Хотя бы интерактивные онлайн-курсы попробуй пройти что ли.
Ютуб не смотрел вообще. Мне на нём интересны только специализированные доклады с конференций.
На тесты не забивай. Тебе повезло, что есть откуда их копипастить. И удачи тебе.
>>623926 >Пока просто копирую весь фронтенд в папку public. Это не очень удобно (надо копировать после каждого деплоя рельс) Так настрой деплой своего фронтенда, я хуй знает, на чём это делается, наверняка плагином для гульпа. >меня гложит то, что ангуляр, даже находясь на том же сервере, На каком сервере, ангуляр на клиенте работает! >делает запросы куда-то в интернет, чтобы получить инфу от рельс. HTTPS, Same Origin Policy, CSRF-токен защитят твои данные
>>625900 Первую книгу читать буду в таком случае. Думаю не всю её прочитать.
К слову, платиновые вопрос - какую IDE использовать? Rubymine на торрентах протухший, vim/emacs не предлагать - дольше буду ебучую раскладку учить. Что использовать?
>>625924 Рубимайн хуюбихуяйн скачиваешь с официального сайта и активируешь на китайском сервере.
vim — за три дня можно надрочиться, входить выходить, вкладочки открывать. Тебя потом за уши не от тянешь от .vimrc. А вот emacs это ад и погибель после вима, имхо там слишком много клавиатурных сокращений, а некоторые ещё и могут оконным менеджером блокироваться, ололо.
А так используй саблайм/notepad++/kate/geany, всё равно тебе придётся и их изучать, но там всё проще.
>>625924 Vimtutor набери в консоли, быстро научишься. Правда надо еще настроить его, плагины всякие навешать. Если влом, атом охуенен. > тесты->код->рефакторинг для тестов онлайн-сервисы обычно пользуют, вроде circle-ci или travis-ci, для рефакторинга codeclimate
>>625946 >Рубимайн хуюбихуяйн скачиваешь с официального сайта и активируешь на китайском сервере. Есть какая-нибудь инструкция?
>для тестов онлайн-сервисы обычно пользуют, вроде circle-ci или travis-ci, для рефакторинга codeclimate Как-то слишком абстрактно. Знаю про эти средства, однако хотелось бы услышать какие-нибудь истории про организацию разработки в компаниях и т.д. Разве всякие веб студии в своих проектах используют эти сервисы?
>>626218 Если в студии работают не ослоебы, то да. Уж $5 в месяц на виртуалку под jenkins и пара часов на настройку даже у последних нищебродов найдется. Что, впрочем, не отменяет того, что тесты и у себя на локалхосте гонять надо, на каждый чих в CI не полезешь.
>>626218 > организацию разработки В самом простейшем случае кто-то коммитит код в master branch - CI забирает с репозитория код, гоняет тесты и если все нормально прошло, то деплоит на staging. Оттуда одной кнопкой можно отправить в продакшн. Если нужно сложнее, то начинается ебота с ветками и создание нового приложения под каждую ветку.
Только помни что это воровство, когда будешь зарабатывать рябями в рубимайне, обязательно купи, не будь быдлом. Можешь один/два месяца после выхода на оплачиваемую руби работу, например фрилансовую, подкопить и купить.
>>626316 > обязательно купи А вот хуй я теперь куплю у них что-то, с их ебучими подписками, такую-то хуйню придумали. Пусть на корпоративных пользователях зарабатывают.
Парни, мне тут дают проект с бюджетом 8 млн рублей, а работы там оказалось месяца на 3. Правда придётся во-первых провести сбор ФТ (плотная работа с клиентом, изучение деталей бизнес-процесса), во-вторых сделать прототип (чёрно-белые картиночки) и на стороне купить дизайн по нему.
Чо делать блядь?! Я фуллстек рельсомидл, могу не потянуть.
>>626369 Да у меня там малый процент, к сожалению. Только если зарплата и процент от прибыли. Вот сегодня хотели лидов продавать. Планировали тысяч на 10 продать, но партнеры нас прокинули. Обидно.
>>626369 Бля, в общем, я решил использовать Vagrant, чтобы ебаться с рельсами и руби. Как подцепить Rubymine, чтобы код исполнялся на виртуальной машине и мне не приходилось переключаться между окнами, чтобы набрать ruby hello_word.rb
>>626383 >Чтобы по удалёнке найти работу рубистом надо быть джуниор-фуллстек. JS/SQL и так далее. Я пока не могу во всё это. Нихуя, надо просто быть нормальным бекендером. Я на Upwork ищу работу, есть постоянка, только бекендом занимаюсь.
>через месяца два у меня не будет и просто на интернет денег (если работу не найду). >Я в мухосрани. Так переедь куда-нибудь, раз накопления на 2 месяца есть. Предварительно найдя работу там, конечно. Ну или просто едь в ДС, Казань, Екб, где дохуя Руби-вакансий и сложо не найти что-то.
>>626731 >Нихуя, надо просто быть нормальным бекендером. Я на Upwork ищу работу, есть постоянка, только бекендом занимаюсь. Крутой ты чувак, чо. Я не очень крутой бекэндер, скриптер пока только. Да и вообще раз ты на апворке ищешь работу, значит скилл у тебя вполне норм, я, имхо, не дотягиваю до такой отвественности. Олсо, рельсы ни разу не крутил, копошусь в чистом руби пока. >Ну или просто едь в ДС, Казань, Екб, где дохуя Руби-вакансий и сложо не найти что-то. Я думаю над этим.
Посаны, есть такой вопрос по поводу этих ваших фрилансов. Сам уже год работаю на апворке, но не в программировании. И вот черт меня потянул полгода назад заняться автоматизацией рутины. Что-то на питоне написал, что-то на рубях. И меня вперло. В общем хочу дальше практиковаться на энтри левел задачах. А сраный апворк не разрешает иметь два профиля. Есть ли какой-то способ его наебать, но так что-бы получать деньги?
>>626755 >Я думаю над этим. Не стоит, если ты рельсы не знаешь. >Крутой ты чувак, чо. Я первые деньги на Upwork получил через 9 месяцев после начала изучения Руби, первый постоянный проект - через год. До этого никогда коммерческой разработкой не занимался, лет 5 неспешно писал олимпиады на С++ и питоне.
>>626767 Знание алгоритмов по-моему ни разу ещё не пригодилось. А вот математика, статистика нужны, но это специфика моей работы.
Ещё заметил, что хоть я никогда не читал никаких книг по паттернам, хорошему стилю кода (кроме Макконнела), я всегда нахожу какое-то красивое решение, а потом узнаю, что такой паттерн уже существует. Может помогает чтение чужого кода, может характер мышления.
>>626759 А в чем тебе проблема сменить описание в своем профиле? Первые пару заказов можно писать "Hello, I was kakashka now I am nyashka here's my dumping, choose me my master".
>>626770 >>626771 Да как бы отзывов уже достаточно много хороших. Жаль терять его даже на руби и питон. Хотя вариант конечно. Теперь бля сиди и думай над названием агентства, лол. И да, разве агентству не нужен какой-то профиль который им управляет? > "Hello, I was kakashka now I am nyashka here's my dumping, choose me my master" В прошлом брал 30 баксов в час, теперь за еду работать готов...угу..
>>626774 >Жаль терять его даже на руби и питон. Я бы на твоём месте подумал, стоит ли тебе браться за работу, в которой ты недостаточно компетентен. >И да, разве агентству не нужен какой-то профиль который им управляет? Так твой профиль и будет в агентстве отображаться. Не думаю, что у тебя с хорошим профилем будут проблемы взять заказ от агентства.
>>626775 Аналитика в основном, иногда адвордс, бинг и оптимизация конверсий на основе данных >>626776 > Я бы на твоём месте подумал, стоит ли тебе браться за работу, в которой ты недостаточно компетентен. Ну я и не буду браться за то, что судя из описания не потяну. Но когда стоит задачка уровня пройти шахматное поле конем или написать калькулятор, скраппер какой-нить или вобще скрипт для адвордса(который я для себя писал в свое время) то почему нет? Лучшего варианта для практики - я не знаю.
>>626782 >Но когда стоит задачка уровня пройти шахматное поле конем или написать калькулятор, скраппер какой-нить или вобще скрипт для адвордса(который я для себя писал в свое время) то почему нет? А тебе оно надо - получать копейки за скраперы? >Лучшего варианта для практики - я не знаю. Для практики чего? Алгоритмы и программирование в типичных задачах на Руби не попрактикуешь. Для практики по самому языку попробуй коммиты в open-source Для практики по рельсам Upwork плохо подходит. Напиши какой-нибудь проект для себя
>>626784 Для практики свободного самоощущения за языком. Когда не лезишь через каждые полчаса проверять синтаксис. Хотя, может ты и прав насчет гитхаба.
Заранее извиняюсь за нубский вопрос. В шапке треда указан платиновый путь: > И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.
А не могли бы вы, анончики, поделиться хорошими туториалами/статьями про блогам и клонам твиттера? Если на блог ещё удаётся что-то найти, то вот на клоны твиттера совсем не могу но на удивление, слышу о нём часто Заранее благодарю за ответ.
>>627249 Там один из главных то ли официальных туториалов по РоР, то ли самых распространенных - как раз об клоне твиттера, того все и в теме Мимопроходил
>>627279 У меня работает. Но эта параша жутко тормозит. >>627249 в глаза ебешься? >Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то
>>627279 >>627418 То есть до сих пор нет нормального рабочего плагина, который реализует этот функционал? И единственный способ работать над проектом на виртуальных машинах - переключаться между основной и гостевой?
1. Виртуалка с дебианом, руби через rvm. 2. Копия файлов проекта локально тоже нужна. 3. Настраиваем deployment в рубимайне. Включаем автоаплоад, чтобы правки в файлах сразу улетали на сервер. 4. Настраиваем удалённый интерпретатор.
Рубимайн подтягивает исходники всех джемов проекта, отображает их в дереве проекта и позволяет выполнять навигацию кода по ним тоже. Для меня это киллер-фича.
Файлы проекта хранятся локально, правки синкаются на виртуалку в риалтайме. Благодаря этому можно быстро переключаться по коду локально, выполнять поиск.
Внутри IDE прозрачно запускается rails server, таски rake, генераторы, тесты, rails console, таски bundler. Т. е. можно полноценно использовать фичи IDE, будто бы проект у нас локально целиком. Да, rails console и тесты прям внутри рубимайна - это очень удобно.
Интегрированный отладчик тоже работает. Под отладчиком руби работает медленно где угодно, но в особых ситуациях отладчик - огромная помощь.
Не могу сказать, что что-то как-то тормозит. На современных процах виртуалки работают почти не теряя в скорости, а руби вообще "однопоточный".
Известные мне небольшие недостатки: после bundle install выполняется полный синк кода удалённых джемов - секунд 10-20 на больших проектах (ничего страшного на самом деле); после запуска генераторов нужно вручную синкнуть дерево проекта (настраиваем хоткей - и всё ок).
>>627441 render_views и пишешь пару строк для каждого экшна, что он не крашится к хуям и что-то полезное делает. Дауна с капибарой не слушай, в крупной и богатой конторе для этого специально обученные петухи с селениумом есть, а в маленькой и бедной тебе начальник в рот нассыт если узнает, что ты автоматизируешь нажатия кнопочек в браузере вместо того, чтобы работу работать.
Фасолины, знаю, что вопрос тупой, но зачем работодатель пишет о необходимости знания протокола http? Нашёл вакансию джуна и увидел там этот пункт. Каких знаний на джуновском уровне от меня хотят по http? Да и вообще, сильно ли нужно там углубляться и изучать, или всё осваивается за вечер?
>>628216 Вряд ли тебя попросят побайтово расписать структуру http-пакета. Скорее всего хотят, что бы ты знал базовые вещи, вроде http глаголов, заголовков, скрафтить вручную отправку файла, эт церера, эт церера.
>>628216 Был на нескольких собеседованиях. Обычно всё сводилось к тому, что хттп работает запросами. Что запросы бывают гет/пост/пут/патч/етц и для чего они задуманы. Как отправляются запросы(кроме гет и пост) в современных браузерах. Что в запросах есть тело запроса и есть заголовки (просили пару заголовков для примера привести). Что такое куки и что такое сессия и как их готовить.
Так и не нашёл, где бы пропиарить своё поделие, не будучи заминусованным. Так вот, лет 6 назад, по ходу обучения Рубям, я начал собирать решения для типовых задач в один джем. Делалось это всё без мысли об общепринятых практиках, дизайн паттернах, документировании и спецификации. Но последнее время я решил на досуге начать разбирать этот неподдерживаемый талмуд на компоненты, созданные с учётом лучших практик, которые могут пригодиться кому-то ещё, и которые можно было бы без зазрения совести включать в проекты, где я не единственный бекенд. В частности, то, что я хотел бы пропиарить: https://github.com/tinbka/tracee — логгер, совместимый с рельсами, с кастомизацией всех аспектов в рамках совместимости. Уникальные возможности: стек процепроцессоров, встроенная (опционально) подсветка любого подмножества стека вызова логгера, запись в разные файлы в зависимости от log level, а также встроенные возможности измерения времени выполнения любой части кода. Также, в нём есть расширение для бектрейса исключений, но я подозреваю, что лучше было бы его выпустить отдельным джемом. Собственно, приветствуется критика, звёздочки и идеи по поводу обретения мотивации.
Я давно хотел разобрать максимум полезного из старых наработок, выбросив кучу функций, которые были за годы и так реализованы в Ruby core и ActiveSupport, но сначала у меня не было знания, потом времени, а теперь мне это кажется тщетным в отсутствии комьюнити, которое бы давало фидбек. Из ближайших планов на опенсорс (вот уже года полтора как): - фреймворк для создания скрапперов с WebUI на рельсах # наработки уже есть (rhack), но нет полноценной документации и порт Curl'a потерял в последней версии Руби совместимость, поэтому всё будет переписано с нуля на основе Curl FFI или Typhoeus; - легковесная, но полнофункциональная и расширяемая CMS, генерящая вьюшки и АПИ на основе моделей; - парсер для вложенных хешей, работающий как xpath; - пропихнуть https://gist.github.com/tinbka/9a7eb814ea8aad07d8b7 (before_render для контроллеров) в ActionPack/ActiveSupport # уже сомневаюсь, что это будет нужной штукой, а не просто proof of concept - сделать на основе https://gist.github.com/tinbka/f02edf245bb8f0d118ab джем для динамической сохранной конфигурации чего угодно
>>629973 Думал о том, куда деть $переменную, но "log" — слишком часто употребляемое слово, чтобы добавлять его к Object или Kernel в надежде, что в любом контексте оно будет работать. Так и назвать: "tracee", может быть?
Аноны, нихуя непонятно, помогите, мб кто-то поймет че хотят.
Напишите небольшое Ruby On Rails приложение, содержащее следующее: а) блоки и функционал б) Запрос модели со следующими полями: -Сумма, числовой формат, максимум 600, минимум 1. Обязательно -Дни, Числовой, максимум 30, минимум 1. Обязательно -E-mail. Электронная почта -Формат DNI / Nie CellPhone -Мобильный телефон. -Ссылка. Id только 20 позиций, создается перед сохранением объекта. с) API, который получает запросы (только для типа JSON) из внешнего приложения. Это приложение состоит из 3 "звонков". Дни и Сумма отправляются первыми, а затем e-mail ID и, наконец, мобильный телефон. API является гибким и может получить новые поля (если вы измените модель) без его изменения. d) Если происходит первый звонок, то создается новый запрос. При последующих вызовах, приложение должно обеспечить сгенерированный ответ. е) данные хранятся только если они действительны, в противном случае должно сообщать об ошибках. е) БОНУС: В 5% случаев API выдает исключение при подготовке ответа, как только данные сохранены. В этом случае данные, передаваемые не должны храниться в модели.
>>630038 >А при чём тут require? Он имел в виду, что твой log будет добавляться в Object (или в модуль Kernel) только после того, как ты сделаешь require "твоя либа"
>>630178 Это само собой, но "log" — слишком частое имя для локальной переменной, скажем, или метода некой модели, у которой есть, кхм, log. Это, в конце концов, может быть полем объекта. Поэтому, как мне кажется, нужен более уникальный референс. Да и засирать global namespace — тоже не хорошо, хотя глобальная переменная здесь лучше только тем, что глобальные переменные никто обычно не использует.
>>630255 Нет ничего невозможного, только тебе не в руби-тред, а в тред по БД (такого не существует, потому что местные не могут ни во что нетривиальное).
>>630178 >Он имел в виду, что твой log будет добавляться в Object (или в модуль Kernel) только после того, как ты сделаешь require "твоя либа" Refine'ами тебе мама запрещает пользоваться? http://ideone.com/5x8bbk
>>630337 Странный тест. Ты делаешь билд а не криейт фабрики пользователя. Есть вероятность что link_to обломается об несохранённого пользователя когда попытается сбилдить для него путь.
Ну а что касасается твоей проблемы, то тут всё просто. Ты дёргаешь напрямую current_user_link который, естественно, в спеке у тебя не определён. Если внешний дескрайб копипастил с доков по рспеку то тебе надо дёргать helper.current_user_link
Поставил таймзону в config/applcation.rb config.time_zone = 'Irkutsk' config.active_record.default_timezone = 'Irkutsk' и сломались timestamps: created_at и updated_at всегда nil, даже после touch не записываются в БД. Не могу понять, это postgresql глючит, и рельсы или я. Помогите разобраться и починить.
>>630892 Алсо, когда ставлю config.active_record.default_timezone = :local, то created_at и updated_at показывает (т.е. в базу пишутся), правда в UTC. Но мне не надо UTC, мне нужно местное время. Что это за блядские фокусы?
>>627509 >>627510 Бля. Поясните за эту штуку. Установил Rubymine, vagrant. В последнем все есть - рельсы руби гит и тд. В rm сначала поставил локальный интерпретатор. Hello world собрался без проблем. Сделал remote deployment. Все загружается на виртуальную машину и там интерпретатор все без проблем запускает. Но на локальной машине уже ничего не запускается.
>>630930 Начну с формулировки задачи, мне кажется что она не выполнима. Я хочу подключить Rubymine к vagrant и вести разработку удалённо. То есть не только деплоить на удалённый сервер, но и интерпретатор там иметь, который будет выполнять скрипты и отсылать результат в Rubymine. Однако сейчас у меня либо локальный интерпретатор работает, либо получается запускать только не удалённой машине.
Прошёл на апворке тест по рельсам. Задолбали вопросами по третьим рельсам и минитестам. 4,1 / 5 нормально или лучше на основном аккаунте не позориться?
>>630457 Ты точно отвечал это тому, кто автору либы про require говорит? Или автору? В любом случае, refine+using хороши только для патчей чужих немного кривых либ. Использовать using в дополнение к require — совсем не общая практика, т.к. если ты используешь его в global scope, то это по сути то же самое, что ты вынимаешь весь closure из refine в global scope, а если ты используешь его только в рамках какого-то класса, то тебе придётся в каждый класс в приложении добавлять using, чтобы что-то подебажить.
>>630976 Вот уж точно подмечено про третьи рельсы. 2 раза проходил, ни разу не набрал больше 3.5, причем во второй раз через год хуже, чем в первый! И это при постоянной практике. Нахуй так жить.
>>631078 >если ты используешь его в global scope, то это по сути то же самое, что ты вынимаешь весь closure из refine в global scope У него же лексическая область видимости. Будет действовать только в пределах файла.
я студент 3 курса, рельсы 3 год изучаю самостоятельно стоит искать удаленку или фриланс? имхо фриланс первым будет уж слишком тяжко, фуллстаком то работать... поделитесь опытом
>>631427 ага, и на гитхабе у меня бложик (правда с вылизанным по best practices кодом), какая то мелочуха, и пара пул рекьюстов уровня "пофиксить очепятку"
я был бы не против, конечно 30$ в час этож 30$820=4800$ охуеть но кто меня возьмет? пока профиль на upwork создал, с февраля буду искать там и на реддите
>>631554 Его придумали, чтобы делать этот самый манкипатчинг, не приводя к неожиданному поведению. Погоди, может, я неправильно понимаю термин "манкипачтинг"? Это ведь любое нарушение принципа открытости/закрытости, нет?
>>631557 Тут можно поспорить о терминах. Но явное "нарушение" с помощью refine называть нарушением язык е поворачивается. В любом случае, у термина "манкипатчинг" явно закрепилась негативная окраска, связанная с риском неожиданного поведения, так что предлагаю избегать его, говоря о рефайнах.
Сап двач. Сейчас пытаюсь вкатиться в апворк. Выполнил 2 работы полуил два отзыва по 5 звезд. И на этом все! нихуя не могу по руби найти норм работы . что делать? Думал что работа повалит более после 2-3 отзывов. Может быть получше изучить жс и от туда заявок хватать?
>>632138 Я не троль лол. Первое с проектировал дб за отзыв(2 бакса чаем дали). И 2 перенес приложение на рельсах с амазона на хероку(заказчик незал половину паролей и на каком из 15 серваков у него был продакшен) 30 баксов взял. Ответье на вопрос плз , как мне получать больше заказов ?)
>>632500 Я в этих тредах сижу практически с самого их появления, и руби начал учить с первыми статьями на хабре. Но действительно, откуда мне знать ситуацию на рынке, вкатившийся полгода назад двачер понимает всё гораздо лучше.
Сап программач. Честно сказать я уже настолько заебался, что решил зайти на двач. Ситуация следующая: Я сыч 19 лвла, уже год пытаюсь найти работу, при этом все время учу что-то новое, но редко довожу до конца, но знания остаются. Живу в Киеве, работа вроде как и есть, но блять везде нужны одни джедаи и 5 лет опыта. Я даже попал как-то на 2 собеседования для джуна, немного охуел честно сказать, что они от меня хотели, "хотя бы год коммерческого, уверенный js + какой-то angualr\react", какой тогда я джун блять, если я это знаю? Еще порой добавляются в скайп залетные просят поработать на их охуенную идею, а потом деньги появятся. Окей, я соглашаюсь, мне уже похуй, я хочу код писать и что-то полезное делать, но суть в том, что таски которые они дают не гуглятся, а на удаленке я не могу найти на них ответ, я уже наверное заебал весь stackoverflow руби тред своими неадекватными вопросами. Рельсы мне очень симпатизируют, но как-то грустно от всего этого. А еще у меня свободный английский, но даже это сука нихуя не помогает найти работу в офисе. Может ну его нахуй и пойти к индусам на апворк и бить во все двери? Кароче ребята, что посоветуете, дальше рыть эту яму или все же взять опыт с какого-то php, а дальше как пойдет?
>>633101 > что таски которые они дают не гуглятся Тащемта, работу вообще нужно работать самому, да.
> я уже наверное заебал весь stackoverflow руби тред своими неадекватными вопросами Ненавижу мудаков, которые срут своими вопросами в духе "помогите мне сделать мою работу".
>>631336 >я студент 3 курса, рельсы 3 год изучаю самостоятельно >стоит искать удаленку или фриланс? >имхо фриланс первым будет уж слишком тяжко, фуллстаком то работать... >поделитесь опытом Ну же, ебята?
>>633168 Ну я же тебе сказал, ты уже $30 в час должен брать. Вкатиться на апворк непросто, я полода сидел на мелких заказах (правда я толком не искал из-за лени). Но чисто статистически если ты будешь использовать все 60 коннектов в месяц, то уже через месяц-два найдёшь хорошую постоянку.
Короче, нефиг рассуждать, иди пробуй. Только почитай сначала как можно больше руководств по апворку, чтобы не испортить себе впечатление плохими клиентами. Если сомневаешься (или лень, как мне было), то хотя бы по паре предложений в день рассылай, через полгода найдёшь постоянку своей мечты.
>>633221 спасибо мелкие заказы - это в духе, поправить тут лизайн, добавить страничку какой-нибудь пизды? удаленки боюсь, потому что как придет сессия 8 часов в день уделять работе будет невозможно
>>616098 (OP) >После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object. а потом не получатся портянки на 10к строк как в пхп? дали мвц - нет, не хочу, хочу портянку.
>>633333 >мелкие заказы - это в духе, поправить тут лизайн, добавить страничку какой-нибудь пизды? Если ты фуллстак, то можно и такое. Хотя с 3 годами опыта в рельсах (если это действительно опыт, а не хеллоуворлды) я бы не стал таким заниматься. >удаленки боюсь, потому что как придет сессия 8 часов в день уделять работе будет невозможно Сразу обговори с заказчиком максимальное количество часов в неделю. Или договорись, что на время сессии будешь сильно меньше работать. Главное поддерживать связь с заказчиком, чтобы он не думал, что тебе просто лень.
>>633344 Руби можно очень по-разному рефакторить. Я сейчас углубляюсь в иммутабельность, композицию вместо наследования и т.п. Полезные гемы anima, adamantium, например.
я пробовал хаскель, и мне от иммутабельности и алгебраических типов мозг вынесло, почему это так не популярно? :| https://github.com/dryrb/dry-validation посмотри, stateless validation, интересно выглядит
>>633357 >Дебилу никакие паттерны не помогут. ну ебаный рот, бросаю учить паттерны >>633358 >anima, adamantium зачем извращать язык? не проще взять другой, где это все есть?
>>633387 Ну в Руби всё это есть. Object#freeze - встроенная возможность.
>>633375 >чекнешь код? Сложно что-то сказать. Кода, т.е. бизнес-логики, почти нет, одна конфигурация. Pundit одобряю, правда не вижу, где в контроллерах он вызывается. Что такое ActiveType я не знаю, для form-object'ов использую Virtus. RuboCop есть - збс.
>я пробовал хаскель, и мне от иммутабельности и алгебраических типов мозг вынесло, почему это так не популярно? :| Ещё как популярно. Кложуру и Эликсир вон хайпят. В JS завозят линзы и композицию. В Crystal null-safety - немного от алгебраических типов. Даже системный язык с функциональщиной сделали - Rust, в С++ с 11 года всё есть.
посоветуйте стул для проекта: 1. руби с рельсами: - боюсь что с сопровождением будет хуево - динамическая параша + все продумано за нас - все что не продумано заебешься делать 2. ява со спрингом + люблю яву + охуенные иде + сопровождение кажется проще, меньше ебаний с изменениями языка от версии к версии 3. нода с тайпскриптом + вроде как есть типы + все плюсы ноды - хуй знает как с сопровождением
>>633474 >Асинхронность из коробки EventMachine >сотни тысяч готовых модулей И нет рельс или чего-то сравнимого >конечно же багет неосиляторов. Хули там осиливать, с ES6 и ESLint вообще думать не надо.
Вы знали, что в класс можно добавить метод, который привязан к произвольному экземпляру произвольного класса? Т.е. вызываем мы его как метод экземпляра Foo, но self в нём будет другим.
>>634017 >За такую хуйню в проекте нужно отрезать пальцы. И сейчас ты такой обосновываешь, почему это ОПАСНО и НЕРЕКОМЕНДУЕМО, либо съебываешь в Python защищать рядовых программистов от лямбд и функций высшего порядка.
>>634047 >Проблема в другом. В чём же? >Это не при чём. Это о том, как создатели ЯП решают за программистов, как им писать код. В одной из первых версий третьего питона стандартные функции высшего порядка (map, reduce, etc.) убрали из глобальной видимости в модуль, их нужно было подключать. Потом вернули, конечно.
>>634046 Мозг человека способен воспринимать одновременно не более 7 составляющих чего-либо. Причём 7 - это у одарённых личностей, а в среднем около 5. Попробуй положить пару небольших предметов на стол, а потом добавляй по одному, стараясь удержать всю группу в фокусе как единую сущность. После очередного предмета тебе станет сложно, мозг начнёт делить группу на подгруппы, переключаясь между ними, удержать всё целиком одновременно станет не возможно.
Про это пишут в книгах про развитие внимания и памяти.
Это общий лимит восприятия, который распространяется также и на составляющие алгоритмов, на составляющие абстракций, которыми мысленно оперируют программисты, на отдельные элементы кода.
В эту проблему уходит корнями концепция элегантного кода. Структура кода, архитектура, ООП и дробление на методы, SOLID, логическая изоляция, отсутствие "хаков", одна операция на один стейтмент, KISS, DRY и прочее - целью этого на самом деле является снижение количества сущностей каждого отдельного контекста в коде. Что и делает код легко воспринимаемым, а следовательно, более качественным и простым в развитии и поддержке. DSL'и и декларативный стиль кода, где возможно, - это тоже сюда.
Идея "а давайте добавим в отдельный экземпляр класса метод, который принадлежит другому классу и выполняется в контексте другого объекта" противоестественна и нарушает основные принципы. И она сразу повышает метрику комплексности кода на 1-2 уровня.
Современное IT - на 99% конвеер, и тут в приоритете иные качества, нежели умение писать хакокод и код на пределе возможностей языка. Да, я намекаю на то, что в целом выгоднее, когда код пишут мартышки. Разумеется, специально обученные, умеющие делать это качественно.
А когда ты начинаешь внедрять свои навыки 80лвла в реальный проект - себе дороже выходит в итоге. Вот так вот грустно.
>>634061 Всё, что ты написал, очевидно. Я сам надрачиваю на рубокоп с метриками по длине/сложности методов. Но ты забыл про цели метапрограммирования, а именно - избавление конечного пользователя от необходимости держать в голове лишнние сущности. Внутри гема это может быть как угодно сложно устроено - документация в помощь. Зато для мартышки будет просто магия, которая хуй пойми как, но работает, и мартышка вместо 10 строк пишет одну, и уже в фокусе гораздо больше кода, он не размазан по экрану.
>а давайте добавим в отдельный экземпляр класса метод Там метод вообще-то добавляется в класс, т.е. ко всем экземплярам.
>который принадлежит другому классу и выполняется в контексте другого объекта Вне тела метода вообще не видно, как он использует self. Мы полагаемся только на его название и документацию. Так что контекст выполнения внутренностей метода вообще никакой роли для понимания не играют.
Короче, всё есть яд и всё есть лекарство. Просто надо думать, как это будет использоваться, и проблем не будет.
Поясните нубу плз: вот мне надо написать парсер txt/хls ( к примеру ), который будет принимать файл и выкидывать его в нужном мне виде, нужно чтобы это работало в винде, т.е. .exe мелкий, и запускалось желательно на любом компе. Это реально в руби? Или руби это не про десктоп программы?
>>634522 Это ты говно. А в няшных рельсах принято таблицы называть во множественном числе. Прочитай официальный гайд уже, от корки до корки.
И не вздумай насаживать свои плебейские вкусы. Ты должен, обязан писать код именно так, как тут заведено. Только тогда ты будешь счастлив и со временем начнёшь ощутищать гармонию и спокойствие.
хочу использовать .jst.ejs шаблоны для js, которые скопилируются asset pipeline в большой js bundle. хочу в этих шаблонах использовать ES6, но не могу нагуглить. может я отстал и что-то новое вышло?
пример: app/assets/javascripts/apps/user_modulator.es6: class UserModulator ... render() { this.$el.render(JST['templates/modulator'].template(modulator) }
app/assets/javascripts/templates/modulator.jst.ejs: <% for(let x of modulator.blah) %> ...
Накидайте пожалуйста простых реализаций морсокого боя на Ruby. Без веба/десктопа, простой консольный вариант на двух игроков ( на локальной машине, без сети и прочего). Спасибо.
>>634701 > простой консольный вариант на двух игроков ( на локальной машине, без сети и прочего). Как ты это себе представляешь? По очереди за комп садится? Или разделить экран на две части, а середину разделить фанеркой, чтобы не подглядывали? у меня от тебя ностальгия по старым играм со сплит скрином
>>634719 Может прозвучит банально, но ни я, и думаю никто другой в нее играть не собирается, мне интересна способы реализации. На гитхабе гуглится огромное количество проектов, это не проблема, я спрашивал может кто сам делал или знает интересный способ решения данной задачи.
>>634728 >мне интересна способы реализации А что там вообще реализовывать, кроме автоматической расстановки кораблей? И то есть подозрение, что нельзя расставить первые корабли так, чтобы остальным не хватило места, так что можно идти перебором по все позициям, записать все, куда можно поставить текущий корабль, и выбрать из них случайную.
>>634836 О-па о-па. А давайте ка найдём такие позиции первых кораблей, чтобы хотя бы одному не хватило места. Задачу решить в общем случае, размеры поля и кораблей считать из input.txt.
>>634855 Это такая попытка сделать код чуть более DRY? Хуёвая попытка.
0. Самодельные контейнеры не нужны. 1. В руби уже завезли nil safety. Используем и радуемся. 2. Самодельная замена each не нужна. 3. Для асинхронного кода я бы лучше посмотрел на штуковины из, например, https://github.com/ruby-concurrency/concurrent-ruby
>>634875 >Это такая попытка сделать код чуть более DRY? Хуёвая попытка. Это такая попытка сделать код чуть более читаемым. По "было/стало" видно, что попытка удачная. >Самодельные контейнеры не нужны. Классы не нужны? Любой класс, использующий переменные экземпляра - контейнер. >В руби уже завезли nil safety. Используем и радуемся. В руби нет null-safety, потому что в руби есть nil. В статье создаётся DSL, в котором nil не существует. >Самодельная замена each не нужна. Конечно, ведь есть Enumerator. Вот только в статьях принято не переусложнять сторонние вещи. >Для асинхронного кода я бы лучше посмотрел на штуковины из, например, https://github.com/ruby-concurrency/concurrent-ruby Про бритву Оккама слышал? Впрочем, гем хороший. >>634889 Использую около-ФП штуки для рефакторинга на работе, лол
Поставил twitter-bootstrap github.com/seyhunak/twitter-bootstrap-rails. Делаю горизонтальные левые вкладки http://www.bootply.com/yFqbUDA76w Запускаю, но на странице вкладки отображаются вертикально сверху (по дефолту т.е.). ЧЯДНТ?
>>635001 "там" где? В Бутплае "код" такой-же как и в Рельсе. Но в рельсе <div class="tabbable tabs-left"> отображает вертикально, как <div class="tabbable">.
таки вкатился на ап ворк. По руби знаю меньше чем половина анонов в треде( в приницпе могу написать твиттер гем и тд) заработал 70 бачинских за неделю и сегодня взяли на по часовую с рейтом в 15 баксов. Я успешен?
>>636744 >сегодня взяли на по часовую с рейтом в 15 баксов. Я успешен? Нет. Успешен будешь, когда будет постоянка часов 20 в неделю с таким рейтом. Старайся, не проебывайся, думай, как лучше сделать заказ, а не как наебать клиента или заработать по-быстрому, и скоро станешь успешен.
Лол не думал что столько интереса будет) вот ответы 1. Пилить и дорабатывать онлайн магаз про электрухи на солидусе (форк спри) в основном туда надо было экстеншены запилить. Потом будет ещё 2-3 заказа. Все с рейтом в 10$ плюс бонусы за всякую мелоч. 2. По скайпу не обшался . Просто переписываемся ,очень приятный мужык по обшению. Что именно в диалогах интересует? тут просто дохуя.
Плюс сейчас сделаю комиты в опенсорсные экстеншены солидуса(у заказчика офк спросил про такое) линкану гитхаб профиль на апворке и повышу рейт до 13 )). Кстати такое гавно эти расширения пиздец просто. Я сейчас быстрее портировал со спри чем вчера заставил один уже "Готовый" работать.
Анон, в первый раз собираюсь устраиваться на работу(стажировку). Дали тестовое задание, сделать календарик с повторяющимися ивентами(через день, неделю, месяц) и с регистрацией и авторизацией. Задание вроде сделал, глянь проект, помоги поправить говнокод https://github.com/Saneery/EventCalendar Использовал гем ice_cube и simplecalendar. У simplecalendar не было реализовано отображение повторяющихся событий, пришлось поправить метод в application.rb
>>637028 Анон, вопрос по существу - есть ли более простой способ чем туториальный deface(способ из spree) подогнать фронтенд под той же bootstrap в солидусе?
>>637139 Бамп вопросу диалогом с заказчиком я: so if i understand right я: there is no view for generation? он: there was in the spree one, but i can't find it on the solidus one, lol, but my brain is moving slowly right now [8:28:53 PM] я: yeah) same here [8:30:04 PM] Он : go to sleep :P i'm going to release payment and add a bonus, if you can play around with it tomorrow before i get up great, its just missing the front end part where the user can actually buy the gift card and email it to someone or them selves [8:30:32 PM] Он: tomorrow when i get up or when we're both on we can talk about hiring you hourly, or full time for projects [8:31:05 PM] я: Thank you . Sure i will make everything work perfect!. Thank you mate. We such a nice team [8:31:40 PM] Он: Yep! and theres a lot more to be done so hopefully you're okay working more along the lines of full time [8:31:57 PM] Я: yeah!
>>616098 (OP) Друзья анонимусы, мы ищем разработчика, для которого ответственность и забота о сроках - это жизненный принцип. Человека мотивированного, который не остановит работу только потому, что кто-то не ответил на вопрос. Человека, который умеет сам разработать сложный функционал, асинхронно обсудить возникшие вопросы (при этом не оказываясь в тупике), держать свою работу на виду (тикеты, частые коммиты), с удовольствием обсуждать проблемы с кодом (ты - это не твой код), и ответственно подходить к срокам. Работа в Printio - это возможность стать четвертым разработчиком в команде, которая любит Open Source (мы создали fabricjs.com), которая ценит технические инновации и эксперименты, и сильно заботится о коде. Мы находимся на последних версиях Ruby и Rails, тестируем, и производим регулярный refactoring, помогаем развивать новейшие технологии в браузерах, и публикуем побочные проекты), под MIT лицензией, а также статьи на известных сайтах. Мы всё время решаем интересные проблемы, и последовательно вносим улучшения не только в Printio, но и в мировое сообщество OSS разработчиков, которое позволило нам оказаться там, где мы сейчас. Необходимое:
Опыт программирования на Ruby — 2 года Опыт в Rails — 2 года Рабочее знание git Опыт в разработке архитектур и сложных систем Умение читать код Знание фронт-енд технологий (HTML, CSS, Javascript) Общее знание популярных Ruby библиотек, относящихся к web-разработке Знание английского на уровне программиста Хорошая коммуникабельность (умение чётко излагать мысли) Предпочтение *nix систем для работы (включая Мас) Одно или более из следующего: примеры завершённых проектов, активный github профиль, активность на технических соц-сайтах (stackoverflow, habr), активность в мэйл-листах, связанных с разработкой, технический блог, или хотя бы твиттер-аккаунт
Большой плюс! Обширный опыт работы с ImageMagick
Ещё плюсы Распространённый опыт в других языках программирования и разработке программ Умение писать тесты, понимание методики TDD и BDD Сисадминский опыт, поддержка серверов, установка и настройка ПО Знание английского на разговорном уровне
>>637267 Отпишись пожалуйста на [email protected] или позвони на телефон +7 (495) 212-9133 или в офис к нам заскочи Москва, Павелецкая наб. 2 стр. 3 офис 105 (Пн-Пт: 10:00-20:00, Сб-Вс: 12:00-20:00). Пообщаемся, если нужно сроки ожидания сдвинем.
>>637555 С пруфами надеюсь? >>637501 Курс Пузата качни и получи познания http://earos.ru/ Знание сео в веб девелопменте это как знания содержимого подкапотного пространства и функционирования оного при наличии прав водителя металлоколесной повозки под названием авто. >>637560 Офис теперь у них новый, ПРАСТОРНЫЙ ИВРОПЕЙСКИЙ >>637487 ват?
Как показывать код:
Быстро - https://pastebin.com
С исполнением - https://ideone.com
Требуется аккаунт GitHub - https://gist.github.com
RUBY_SHAPKA VERSION = 1.0.7 (http://pastebin.com/ZpbNwDAH)
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://rubykoans.com
И вот еще https://rubymonk.com/ - Матц одобряет.
2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
А еще можешь полистать на гитхабе гемы с нарастающей популярностю.
https://github.com/trending?l=ruby
Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion терпимого качества, для Android - заброшенный разрабами, лагающий и падающий ruboto. Для WinPhone до сих пор ничего не завезли.
5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
И это тоже, легко и просто: https://rvm.io
6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
API: http://api.rubyonrails.org
Прекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails , а вот тут все тоже, но на русском http://codenamecrud.ru/
Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/book
Для дотошных читателей есть The Rails 4 Way.
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
Почитайте еще Grimm A. - Objects on Rails
Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
- http://afreshcup.com
9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]
А еще есть русская слак конфа - https://russiandevs.slack.com она общая, но есть очень активный руби канал.
Так же русская гугл группа, активная - https://groups.google.com/forum/#!forum/ror2ru
Еще вот - https://onrails.club/
11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.
Поиск гемов https://www.ruby-toolbox.com
12. Зачем нужны тесты и как их писать?
http://rusrails.ru/a-guide-to-testing-rails-applications
http://habrahabr.ru/post/163597/
Вместо этого можно прочитать классную книгу Everyday Rails Testing
13. Где можно задать глупые и не очень вопросы?
- здесь
- stackoverflow.com
- тематические slack-конфы
- а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код?
Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows?
Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка?
Есть еще Sinatra, 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
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.
Ну, а мы открываем очередной Ruby Thread.