1. C чего мне начать, чтобы стать рубистом? Отличным началом будет Eloquent Ruby или The Well Grounded Rubyist.
Затем читаем Metaprogramming Ruby. На протяжении чтения вы должны писать код, конечно же. Чтобы не задавать глупых вопросов уровня дибилоида, который не нашёл доки > http://ruby-doc.org/
2. Какой gem посмотреть, чтобы понять, как писать код? Лучше всего посмотреть небольшие gem'ы вроде cancan, devise, camping.
3. Есть ли GUI для руби? Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО? Да. Для iOS есть RubyMotion промышленного качества, для Android - весьма тормозной(ну это пока) ruboto. Для WinPhone традиционно ничего нет, но его ценителям не привыкать.
9. Я не могу в английский, что делать, анон? Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити? Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко. Яркий пример - [email protected]
11. Какие гемы стоит знать? capybara, rack, rspec, devise, cancan, simple_form, solr, sinatra, тысячи их.
12. Где можно задать глупые и неочень вопросы? - здесь - stackoverflow.com - в рассылке rails-talk - оф. форум рубей http://www.ruby-forum.com
13. Как фокнуть\сделать фичу\исправить баг, сложно ли это? Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
14. В чём писать код? Atom, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-ребят есть rubymine, плагины к эклипс и нетбинс.
>>441624 Большое, джанго далеко не единственное, и на практике, далеко не основное, зачем нужен питон. А вот если руби, то только рельсы. Пруф ми вронг?
>>441692 vagrant еще >>441694 Так это прекрасно, что они плагины. Ты их можешь прикрутить к рельсе(или другому фреймворку), а можешь использовать в каких-нибудь говноскриптах.
Анон, использую гем Active Admin для быстрого поднятия админки на рейлс. Но столкнулся с такой проблемой. Не могу сделать нормальный загрузчик изображений. Нужно чтобы можно было добавлять несколько в стиле загрузчика вк, на пхп или node.js я такой писал за пару минут, но тут столкнулся с проблемой. Во-первых, я новичек в рельсах, во-вторых готовых гемов нет (точнее есть один но там 0 документации), а форму актив админка кастомизировать адово тяжело, нет возможности впилить кастомный код с foreach.
Суть, реквизтирую удобный загрузчик фоточек для актив админ или аналоги актив админ гема
>>441788 Да, я просмотрел все варианты, но из коробки подходит только 1 (jquery fileupload + carrierwave) и то надо допиливать
Я обычно для своих админок на других языках реализовывал загрузку в стиле вк, то есть загружаются картинки и миниатюры, их можно удалять и добавлять по 1, например.
Готового решения для актив админ я не нашел, что странно ведь остальные админские фичи там идут из коробки. Так же у меня не получается кастамизировать, так как весь функционал актив админа (например вьюхи) запрятан в гем и я пока еще слишком непотыен чтобы понять, как мне впилить свой код. Например для отображения формы используется формтастик, но он не дает возможности сделать такую вещь, как добавить slim теги для загрузчика и к тому же сделать в них форичем вывод изображений которые уже привязаны к итему
>>442048 По сути никакого, в 2010 обезьянил со всякими CMS на php. Html, CSS вот это ещё "изучал". Скоро мне стукнет 25 и как ни странно кодинг как то проще и понятней воспринимается.
def show @post = Post.find(params[:id]) @total_up = @post.where(acepted: true).count end
Ананасы, пытаюсь сделать подсчет поставленых booleanов (аналог "лайков" вбыдле)
суть такая, кнопка с boolean типом, ну и сколько людей поставят true, столько и должно быть count показывать, надеюсь ясно изьяснился. Сейчас выдает ошибку undefined method `where' Как пофиксить? (алсо, пока одна модель post есть, без users)
>>442055 Спасибо умник, но это не то что нужно. Потому что так показывает к каждому посту одинаковое количество лойсов, даже там, где их еще не ставил. Нужно чтоб к конкретному посту находилось количество поставленных классов.
>>442056 Блять, ну и архитектура у тебя. Как ты собрался булевые значения считать? Надо сделать типа такого, post.like_count и если пользователь поставил галочку в поле acepted, то увеличиваешь like_count га 1. Но чтобы пользователи не лайкали один и тот же пост по многу раз тебе надо будет сделать у юзера has_many: liked_posts
Вот думаю уходить с юникорна на него или нет. Основное за - охуенно работает с keep alive при пользовании апликухи уебками с хуевыми каналами связи ( например 2g ).
>>442052 @total_up = Post.where(id: params[:id], acepted: true).count Но это вернет либо 1, либо 0, всегда, либо лайкнули, либо нет.
Только схема у тебя какая-то кривая, если я правильно понял. Лайки для поста надо хранить в отдельной таблице, если хочешь понимать кто и что лайкнул, либо завести счетчик в модели поста, если нужно просто количество.
Вот скажем написал я метод для объекта Хэш, как бы мне его сохранить для дальнейшего использования? Например, вот это class Hash def reverse_merge!(other_hash) self.merge!(other_hash) { |key,left,right| left } end end
>>442035 >>442083 Cпасибо, аноны, натыкался на эти статьи, когда искал решение из коробки, но кажется придется разбираться глубже и пилить свое.
А что вы используете когда вам нужно создать админку? Я сейчас больше склоняюсь к решению не юзать гемы-админки, а просто писать самому, потому что функционал админок обычно универсален и переходит из проекта в проект, его не так сложно перекопипастить. Возможно как больше раскурюсь в идеалогии и хороших практиках, проще будет написать свои генераторы.
Посноны, скажите, вот я хочу стать рельсовиком. На каком уровне и где мне нужно учить смежные технологии, вроде html/css, js/jquery, ajax, boostrap? Нужно ли задрачивать всё это, или можно обойтись самыми базовыми знаниями, или даже чтением документации впоследствии?
>>442481 Двачую вопрос. Вообще не хочу лезть в болото фронтэнда. Есть ли какие-то инструменты, позволяющие исключить это? Навесить какой-то шаблон и сосредоточиться на бэкэнде?
>>442585 Либо ты херачишь фронтэнд, либо нет. Зависит от места работы. Если работаешь на себя, то нанимаешь себе фронтэндера. Если работаешь на компанию, уточняешь при приёме, чем хочешь заниматься. Только никому не говори что НЕ УМЕЕШЬ во фронтэнд, обоссут и выгонят.
>>442632 >Только никому не говори что НЕ УМЕЕШЬ во фронтэнд, обоссут и выгонят Пускай сами себя обоссут. Не дело программиста выдрачивать расположение кнопочки в разных браузерах.
>>442671 >выдрачивать расположение кнопочки в разных браузерах. Это верстка, а не фронтенд. Фронтенд нынче включает в себя любую логику, которую ты не хочешь отправлять на сервер по тем или иным причинам. Что не отменяет того что ты должен уметь хорошо верстать.
Логика уровня "не хочу рулить, хочу только педали нажимать!".
s.gsub! /\s(http:\/\/.?\.(png|jpg))\s/ ну епт вашу. уже использую чужой регексп, но все равно он не работает. Надо чтобы строка с картинкой превращалась в картинку. def url_to_img(s) s.gsub! /\s(http:\/\/.?\.(png|jpg))\s/, '<p><img src="\1/" class="img-responsive"></p>' s.html_safe end
Привет анон, есть юзер, у юзера есть задания, есть юзер с ролью админа. Админ должен накидывать задания юзерам, что можно посмотреть на эту тему? Как реализовать накидывание заданий админом? Юзеры реализованы с помощью devise.
>>442940 А если юзер может сам тоже добавлять задания, что сейчас он и может, но мне нужно добавить админа, который может накидывать им ещё и свои задания.
Сейчас есть User и Task, я не могу разобраться как это сделать во вьюхах и контроллерах.
>>442972 В ability прописать if user.role=='admin' can :manage, Tasks else if can :read, Tasks end
и потом во вьюхе где надо добавлять таски к пользователям button_tag new_task_path if can? :manage, @task с синтаксисом могут быть ошибки, писал на память.
>>443380 Что за хуйню означает "используя контроллер тасков"? Если хочешь чтобы /user/id/tasks вёл на контроллер тасков - установи в роутах контроллер тасков.
>>443450 Короче, суть проблемы, есть Юзер, есть Таски. Юзер может создавать таски /tasks/ которые видны только ему и никому больше. Есть юзер который admin?, он имеет возможность заходить на страницы тасков других юзеров по /user/:id/tasks/ и создавать для этого конкретного юзера таск, у меня он создаёт таск таким образом только для себя, в create экшене @task.user = params[:user_id] || current_user. Где, я, что-то сделал не так?
Я создаю миграцию в 13:10 местного времени, применяю её. Делаю какую-то работу, отправляю в репозиторий. В это время замечаю, что коллега создал миграцию в 13:05. Запустится ли она, если я напишу rake db:migrate? Ведь в моём файле schema.rb таймштамп уже другой, больше, чем на миграции коллеги. Как рельсы решают эту проблему?
>>443592 А какая разница что в схеме? Она каждый раз новая генерится. Всё там нормально, выполненные миграции записываются в таблицу schema_migrations. Если какой-то миграции в таблице нет, она выполняется.
>>443653 Про это я знаю, просто у меня была проблема, что из другого контролера который отвечает за /user/:user_id/task Я не мог передать в форму :user_id Если кому-нибудь интересно, то решилось просто использованием locals: в рендере
Парни, скажите, вот я хочу учить ror, но знакомый говорит что нужно учить node.js, так как он полностью в скором времени убьет ror. Это правда, или пиздит? Чем этот нод жи эс лучше рельсов?
>>443772 Я тоже так думал, да вот только затишье в этом нод жс, одни проблемы разве что, метеор как то тухло идет, да и всеобщий ажиотаж притих, через 2-3 годика посмотрим. А пока лучше рельсы. %мимо прошареный оп жс трендов%
Уважаемы рубисты, стоит ли сейчас к вам вкатываться? До этого дрочил c#, но асп.нет как-то отбил все желание. Обладаю знаниями профессионального хелоу вордщика, во всем остальном почти что полный ноль, но присутствует желание и время.
>>443921 Да. При gem update --system Мне нужно SASS поднять для проекта, а с этим ебучим руби какие-то проблемы. Раньше я пофиксил это заменив сертификат на левый из интернета, но теперь не могу найти это.
Objective-C-блядок в треде. Заметил, что многие крутые инструменты вдохновлены рубиблядками (CocoaPods, Reactive Cocoa и прочие), в связи с чем решил слегонца подглянуть в ваш мир. Для каких целей ещё может подойти Ruby, кроме веб-хуиты на рельсах? Я так понял, что веб-кровлеры и дата-майнеры, что ещё? Есть какие-нибудь материалы, рекомендованные уже более-менее опытным разработчикам из смежных отраслей или проще сесть сразу писать с документацией? И ещё, какие IDE для OS X и для Win хороши и чем?
>>443969 Привет, можешь подсказать, почему когда я ставлю брейкпоинт на - (BOOL)splitViewController:(UISplitViewController )splitViewController collapseSecondaryViewController:(UIViewController )secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController то он не вызывается ни при каких обстоятельствах если дебаг идет с ipad и вызывается в самом начале работы приложения если таргет - айфон. На коллапсы, разколлапсы во время работы эта херня не реагирует в обоих случаях.
>>443972 Кто ебанулся? Ты ебанулся. Потому что есть headless браузеры, зомбижс и т.п. На любой другой параше будешь охуевать с регекспами и обосрешься, когда окажется, что на страницу не загружается ничего кроме body.
>>444010 А эта хуита так и должна работать. >This method is called when a split view controller is collapsing its children for a transition to a compact-width size class. Override this method to perform custom adjustments to the view controller hierarchy of the target controller. Т.е. один раз при запуске ты можешь какую-нибудь дополнительную хуиту со своими контроллерами сделать чисто для айфонов, а для айпэдов метод не вызывается, ибо не compact-width (а на iPhone 6+ compact-width считается только в портретном режиме, поэтому при изменении ориентации и смене режима отображения с full на compact в 6+ этот метод тоже вызывается). Если ты хотел, чтобы панелька со старта отображалась, задай сплитвью такую штуку >splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible; Если что-то особенное сделать хотел, просто cmd+клик по UISplitViewControllerDelegate, там описание всех делегатных методов в .h понятное, даже в документации рыться не нужно. За это я, блядь, люблю Apple.
>>444676 Т.е. тебе обязательно работать на контракте , но при этом вакансий мало. Вполне себе по-русски. Ныть о том что всё хуёво, денег мало, но я честный человек, а те кто получают много - воруют.
Вопрос по ajax. Я добавляю пост через ajax, и сразу же хочу его удалить, но он не удаляется, удаляются только старые посты. Нужно перезагрузить страницу чтоб удалить самый свежедобавленный. Как пофиксить? Посмотреть можно тут https://vkontanke.herokuapp.com/
Я прочитал несколько книг по руби, рельсам, хорошему коду. Потом подписался на разные рассылки и блоги, мониторю рубифлоу. И что я вижу там? 10% контента это анонсы гемов (часто в таком формате, как будто подразумевается, что ты их покупаешь), ещё 10% - разная информация, например, о конференциях, иногда полезная. В оставшуюся долю входят различные переложения и мнения о книгах, которые я уже прочёл, либо гайды для новичков, обсосанные сто раз (как деплоить, как создать модель, как сделать автозагрузку кода из либ - и всё это переписывается с каждой версией рельс или руби).
>>444851 Rails.4 Ты сильно угоняешься за тем, как меняется спека твоего языка? Если для тебя это проблема - значит дело хуёво. > Angular Очередной фронтовый инструмент. > CoffeeScript Синтаксический сахар над JS для рубистов > Slim Шаблоны > Sass Фронтовый инструмент > Git Без комментариев > Capistrano Без комментариев >Unicorn Половина твоих удивлений это негодование уровня "как вы успеваете читать changelog <insert language name>".
>>444851 >Бля, похоже, за этим никогда не угнаться. Ёбаный табун постоянно меняющихся утилит и технологий. Как вы успеваете за ними следить? А я и не успеваю. И мне похуй, что я не знаю всех фишек.
Почему все так упорно используют этот рспек, когда юнит-тест такой простой и няшный. Не уже ли вам нравится писать лапшу вроде expect(hui).to eql('hui') или как там его вместо assert_equal 'hui', hui неужели так приятно изголяться с макросами и каким-то shared_examples когда можно просто включить модуль пикстронглирелейтед
Рубаны, как сейчас обстоит дело с дружением RoR и Windows? Читал статьи про установку рельс на винду, и везде пишут, что нужно юзать линух, т.к. винду разработчики на рельсах слабо поддерживают. Но эти статьи 3-4 годичной давности. Что с поддержкой винды сейчас? Можно ли нормально кодировать сайт легкой-средней сложности на рубях по виндусом? Смогу ли я потом свой проект демонстрировать на других машинах, или даже запускать на реальном хостинге? не_разбираюсь_в_вебпрограммировании_и_линухе
>>445320 >>445322 >>445407 Окей, спасибо за ответы; попробую сначала вагрант (пока еще не особо понял что это), если не покатит, то придется ставить линукс
1. >if parameters > raise ArgumentError, "parameters should be >hash" unless parameters.kind_of?(Hash) >end Что это за хуйня вообще? Кто мешал сделать однострочный if parameters.present? || parameters.kind_of?(Hash)
Множественные return в теле - плохая практика.
>sleep 5 Это вообще пизда. Полная блокировка контекста.
Используй Fibers и continuations для отложенных вызовов без блокировки контекста.
Ребят, подскажите, почему юзер может быть не залогинен в websocket_rails контроллере? В остальных контроллерах current_user и user_signed_in? работают правильно. Куда копать? Eсли что использую devise
Почаны, решил запилить полное тестирование(нагрузочное, модульное, интегральное и все все) для приложения на ror. В идеале нужно чтобы приложение автоматически тестировалось перед билдом, например, в результате чего составлялся ебаотчет и этот отчет отправлялся бы на почту. Инфы нашел не так много как хотелось бы. На что стоит обратить внимание, рубаны? RSpec + Capybara + разные примочки или посмотреть в сторону Selenium? Накидайте еще годных инструментов для тестирования ror приложений.
Алсо >Какой из методов, HTTParty.get или build_url, принимает хэш в качествк второго аргумента? Очевидно, что build_url. Если бы HTTParty.get принимал в данном случае второй аргумент, то тут без скобок уже не обойтись. Не люблю скобки, хоть и расставлять их для лучшей читаемости полезно, пожалуй.
VCR записывает запросы, которые ты делаешь, затем воспроизводит. Используя его, ты как минимум будешь уверен, что приложение не делает лишние реквесты и реагирует как положено на известные ответы сервера.
>>441544 Смотрю я тут что-то на руби, и мне немного хуевато от его применимости. Я уже 3 года херачу круды на рельсах и прочие околоштуки. Платят хорошо, работа не пыльная. Рельсы - удобная штука, как ни крути.
Но блять, какие есть перспективы? Взять прогромистскую вакансию в любой конторе более-мене е известной: нужды плюсовики (на всякие тяжёлые штуки), нужны питонисты (скрипты-хуепты), нужны джависты и дотнетчики в махровый ынтырпрайз. Даже жаваскрипт-фронтендеры нужны, потому что без фронтэнда все будут хуй сосать.
А что же у рельсов? Какие-то стартапы, хуяпы, компании, занимающиеся хуй пойми чем.
Меня моя позиция пока устраивает, но иногда поглядываю на вакансии всяких Ораклов, Интелов и прочих Майкрософтов и думаю, что в более долгосрочной перспективе я буду сосать хуйцы.
И распространённое "знать надо не язык а фундаментальные блаблабла" и "язык можно выучить за неделю" дико идёт по пизде когда дело касается реальности - всем похуй, что я сколько-то там лет писал на чём-то там и интересуюсь ещё ворохом штук - им нужна конкретная штука, здесь и сейчас. И несколько лет работы жаваскриптером и рубистом нихуя не будут считаться, когда спросят "опыт коммерческой разработке - год" на какого-нибудь джависта в говнолегаси интерпрайз".
Кто виноват и что делать? Был у кого опыт перехода с одного стека на другой? Ruby -> Python и Java -> .NET не считаются.
>>446202 >А что же у рельсов? Какие-то стартапы, хуяпы, компании, занимающиеся хуй пойми чем. Нужны бэкендеры, потому что без бэкенда все будут хуй сосать.
Не понял, что не так в долгосрочной перспективе. Как раз именно в ней рубям нет альтернатив, интернет не заканчивает развиваться, а такого проработанного окружения, как на руби - в вебе нет вообще нигде. Только-только подбираются кое-как всякие недоделки типа пхп и жсов, и всё равно не могут, потому что изначально калеки. Скажи просто, что тебе надоело дрочить одно и то же/хочется неизведанного байтоебства/чувствуешь, что это "ненастоящее" программирование.
>>446250 >Ещё комплекс неполноценности из-за работы на/в ноунейм конторы, которые не делают нихуя интересного/важного/пафосного. Dat feel. Как я тебя понимаю.
>>446050 сделай дебаговый вывод переменной env['warden'] в теле websocket контроллеров. Есть подозрение что там отдельный стек выполнения, который может быть не связан с твоим основным приложением.
>>446582 еще замечу, что проблема не стабильная, например сейчас на продакшен сервере ее нет, но у меня на локальном сервере она воспроизводится и обойти ее не могу
Рельсовики, а расскажите как у проводится интеграционное тестирование (integration testing). Я слышал про cucumber, но не очень понимаю что он использует. Это тупо DSL к селениуму? Какой движок селениума? Быстро прогоняются тесты? Я сам django-макака, и у нас с интеграционными тестами хуево, все ебашат юнит-тесты и всё.
>>445410 Конечно понимаю что у всех разные фетиши но мне намного удобнее читать простой вызов метода с двумя аргументами чем "вызов метода с аргуметом и блоком в котором вызывается метод, который возвращает объект, у которого вызывается метод который принимает результат передачи моего объекта в eq)". Опечатываться в таких перлах навеное особенно весело.
>>445316 Можно, windows ruby installer (rubyinstaller.org) под 2.1 руби + devkit настроить для билда некоторых гемов (1 минута, в доках есть), гем debugger поменять в Gemfile рельсопроекта на какой-нибудь другой, например byebug. Всё.
Столкнувшись в очередной раз с наследием рубидебилизма в форме http://chaijs.com/ (сайт не открывается, угадайте почему? ответ: потому, что это проект рубидебилов) чаша моей ненависти переполнилась настолько, что я пришел в ваш тред из рид-онли пожелать вам рака яичек. Вы все, кто пишет на руби, вы - блядские гуманитарии безмозглые. Ваше место у параши. Убейте себя об стену. Выколите себе глаза. Но самое главное - не лезьте, слышите? Не лезьте, блядь, в другие языки программирования со своим рубиговном. Ненавижу вас. Умрите. Просто умрите. Вы не программисты, вы ёбаные виабушные гуманитарии. Блядь. Все. Пиздец.
(Автор этого поста был предупрежден.)
>>446940 Потому, что это говно, chaijs, запилено рубитупицами, которые притащили его из какой-то своей виабушной параши. Затем рубиублюдки перетащили эту срань в божественный selenium webdriver, породив кондишены уровня урока русского языка в 3Б классе вроде status.should.be.ok или, что еще хуже, status.should.eventually.be.ok где status это true или false.
Только в забитой анимеговном голове тупого руби-идиота могла родиться идея к четким понятиям true и false добавить какое-то ебучее покрытое гноем и прыщами ok. Только червяки из суши-бара могли настолько выесть мозг рубидауну, чтобы условие могло быть eventually. И только пучеглазые рубиговноеды могли, засрав webdriver своим хипстерским говном, отправить сайт с доками в вечный даун, таким образом, что разобраться в этой азиатской сраке, которую они напиздоебошили теперь окончательно невозможно. should, блядь. shall бы ещё использовали. Уроды ебанутые. Держите свои охуетиельные руби-идеи внутри своих гетто-комьюнити для таких же выродков. Гвоздей бы вам в темечко повбивать. Сукины дети тупорылые.
>>446939 > (Автор этого поста был предупрежден.) Батхёрт рубидауна. Картинку верни на место, узкоглазый. Там иллюстрация к тому, что надо сделать с этим языком программирования и всеми его адептами заодно.
>>446941 С чего ты вообще решил, что chaijs на руби? Если это и так, то он либо не на рельсах, либо на очень древних рельсах.
>status.should.be.ok Мы говорим о каких-то разных рубипродуктах. Я подобную хуйню видел только на php, selenium твой не юзал никогда. Алсо, should в rspec уже deprecated, если что. Ну и наконец, как именно мы виноваты в том, что какой-то даун написал говнокод, а ты опознал, что это руби и начал обобщать?
>>446989 > С чего ты вообще решил, что chaijs на руби? Он не на руби, но он написан рубидебилами.
> Я подобную хуйню видел только на php > should в rspec уже deprecated Типичное мышление рубишизофреника. А я каждый раз видел такую хуйню, когда меня просили "посмотреть проект на руби". Из руби выползла ублюдочная практика разрабатывать школьную говноСУБД под каждый говнопроектик более чем из 10 аутистов. Mongrel, MongoDB, NoSQL-и, вот это всё. Из руби-рельсов пошла привычка делать точку входа в приложение не в форме исполняющегося скрипта, а в виде какой-то ссаной приблуды типа grunt, с кучей ебучих конфигурационных файлов, написание которых занимает примерно столько же, сколько и написание самого приложения. Типичный руби-программист представляет собою лося, который пытается распутать своими кривыми рогами клубок ниток, от чего положение этого клубка еще только больше усугубляется. Я уже видел в каком-то проекте на ноде попытку перетащить в sqlite базу практику activerecord в стиле Users - user, меня чуть не выблевало. Руби - рассадник шизофрении и дегенеративных идей в программировании. Назови мне хоть что-нибудь, хоть одно положительное явление, которое ruby привнесло в программирование? Кроме, пожалуй, практики использования @ вместо this, ничего больше нету. Лютый пиздос, прямо как на видеорилейтеде.
>>447117 >Из руби-рельсов пошла привычка делать точку входа в приложение не в форме исполняющегося скрипта, а в виде какой-то ссаной приблуды типа grunt, с кучей ебучих конфигурационных файлов, написание которых занимает примерно столько же, сколько и написание самого приложения. Convention over configuration, please. Ты о таком даже не слышал ведь, уебень пиздоголовый?
>теплый ламповый Node.JS. Ох лол, там уже до рубистов было всё проебано. А самые дегенеративные из них, которым почему-то не жилось спокойно в рубимирке, ушли именно туда. Хайподауны, что с них взять.
>>447013 в вебсокет-контроллере написал puts user_signed_in? внешне все нормально на сайте, кнопка выход присутствует, но когда пытаюсь сделать ставку (сайт с играми казиношными), вылазит уведомление, что нужно авторизоваться, а это как раз в вебсокет-контролллерах игр прописано вобще я из-за этого
>>447158 > Convention over configuration Самая гнусная и мерзкая гниль, которую можно только придумать. Вместо явно передаваемого состояния - учи мемы пиздоглазые тайные соглашения, которые в каждом релизе меняются. > Ты о таком даже не слышал ведь Слышал. К сожалению. И ведь каким надо быть ёбнутым ублюдком, чтобы утверждать будто это что-то хорошее? > А самые дегенеративные из них, которым почему-то не жилось спокойно в рубимирке, ушли именно туда. Вот заберите их обратно. > Хайподауны Описание всего руби-комьюнити одним словом.
>>447172 > Слышал. К сожалению. И ведь каким надо быть ёбнутым ублюдком, чтобы утверждать будто это что-то хорошее? Тогда хули ты пиздишь про грант и конфиги? Определись уже.
>>447176 > Да тебе же в питон, нахрен ты вообще в руби лезешь? Так я не лезу, это они лезут. >>447182 > Тогда хули ты пиздишь про грант и конфиги? Грант и конфиги - то же самое соглашение, которое заключается в том, что вместо непосредственно воплощенной в программный код инициализации, приложение запускается каким-то летающим по орбите анусом странной конструкции. И самое страшное - что эта рубизараза распространяется по мозгам разработчиков все дальше и дальше.
>>447186 Ебать дибил. Грунт - это мавен с жсоном вместо иксемеля. Как-раз таки конфигурейшон овер конвеншн. Для ценитителей подольше посидеть, понаписать рутинной хуйни вместо того чтоб посмотреть аниме или сводить школьницу в кино.
Он просто тролль или долбанутый. Возможно оба варианта сразу. Ибо ладно он бы вылез с какой-нибудь технологии, но нода.жс, лол.
Конвешн овер конфигурейшн в рельсах сделан почти интуитивно. Все работает из коробки как надо. KISS, блядь.
>Mongrel, MongoDB, NoSQL Намешал в кучу, MongoDB - nosql субд, mongrel тупо http сервак на руби. Монгу используют десятки тысяч людей. Монгрел и Вебрик на руби, а на питоне аж пять выдает вики Gunicorn, Paste, Tornado, Twisted, Zope. Так что это все херня. Вот в жс любят плодить либы, когда как на руби вся движуха вокруг парочки популярных отточенных гемов крутится обычно.
>Я уже видел в каком-то проекте на ноде попытку перетащить в sqlite базу практику activerecord в стиле Users - user Что сказать-то хотел?
Товарищи рубисты, такой вопрос. Как сделать в руби анонимные классы? Я на руби перекатился с C#, там я мог делать так: collection2 = collection1.Select(item => new { field1 = Yoba1(item), field2 = Yoba2(item) }).ToList() Select в C# работает как map в руби. Метод выше создает коллекцию из объектов анонимного класса, имеющего два поля field1 и field2. А как сделать подобное в руби? Мне пришло в голову использовать хэши: collection2 = collection1.map {|item| { field1: yoba1(item), field2: yoba2(item) }} Не сильно ли от этого пострадает производительность? Вообще, как бы вы решили эту задачу?
В приложении на рельсах есть много ajax запросов, мне их нужно протестировать. js код хранится в .js.erb шаблонах и там просто манипуляция с несколькими DOM-элементами. У меня уже установлена capybara, но она медленная, можно ли как-то такое протестировать с помощью mocha-chai-sinon или jasmine? Я пока плохо разбираюсь и не могу понять как запустить код в шаблонах.
Анонасы, хочу добавить возможность создавать группы как ВК. Как такое смоделировать? user has many groups, ну, и возможность подписыватя на группы чтоб были видны посты от туда. чето у меня постоянно каша, когда пытаюсь думать над таким. пойду посплю короче, с утра лучше думается https://vkontanke.herokuapp.com/
>>447746 Вроде парсил без особых проблем когда писал генератор постов в программач. А, нет, вспомнил, я wgetом выкачал весь зк, а потом парсил из локальных файлов.
Учу рубин по книге "The Well-Grounded Rubyist". В книге есть такой пример: https://github.com/eleloya/the-well-grounded-rubyist/blob/master/NOTES.md У меня он не работает. После того как ввожу Config::CONFIG["bindir"], терминал выдает "NameError: uninitialized constant Config". В новой версии поменяли константу?
>>447763 Не вариант выкачивать весь сайт. >>447752 Как это использовать?
Разобрался, как пользоваться куки в open-uri: open_doc = open("сайт", "Cookie" => "куки") В итоге исключение и такой стектрейс: C:/Ruby21/lib/ruby/2.1.0/net/http.rb:920:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) from C:/Ruby21/lib/ruby/2.1.0/net/http.rb:920:in `block in connect' from C:/Ruby21/lib/ruby/2.1.0/timeout.rb:76:in `timeout' from C:/Ruby21/lib/ruby/2.1.0/net/http.rb:920:in `connect' from C:/Ruby21/lib/ruby/2.1.0/net/http.rb:863:in `do_start' from C:/Ruby21/lib/ruby/2.1.0/net/http.rb:852:in `start' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:313:in `open_http' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:724:in `buffer_open' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:210:in `block in open_loop' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:208:in `catch' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:208:in `open_loop' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:704:in `open' from C:/Ruby21/lib/ruby/2.1.0/open-uri.rb:34:in `open'
Матзсаны, а вот как реализовывать связь рельсоприложения с сервисом, допустим, обработки изображений? Допустим, при загрузке юзером изображения/пачки изображений надо приляпать к нему логотип. Или, там, аудио/видео обработать. Как этот сервис и связь с ним реализовать? Отдельное приложение делать, а потом его с рельсами дружить? А как? В самих рельсах весь функционал реализовывать? А куда его пихать? А если много юзеров одновременно сервисом воспользуются, то надо же очередь организовывать в самом сервисе? А как потом рельсоприложение из сервиса уведомлять о результате? Что мне гуглить на эту тему? Что читать?
>>448273 Это только для аплоада. Мне хочется знать, как файл (не обязательно изображение) после аплоада передавать в сервис для обработки, как этот сервис организовать и как устроить обратную связь от сервиса. Мне интересно то, какими способами подобные задачи решаются. Допустим вот, пользователь аплоадит файл zip, чтобы сервис его переконвертировал в tar. Рельсоприложение же не должно само конвертацией заниматься? Не вызывать ведь в контроллере `unzip file.zip -d tmp/; tar -cf file.tar tmp/*`.
# Choose what kind of storage to use for this uploader: storage Rails.env.production? ? :fog : :file # storage :fog
# Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end
version :small do process :resize_to_fill => [128, 128] end
version :medium do process :resize_to_fill => [220, 110] end
version :touch do process :resize_to_fill => [240, 240] end
>>448292 Да блять. Я знаю как реализовать обработку. Не о самом сервисе вопрос, а о том, как его связать с рельсоприложением, в каком месте и как его вызывать из приложения. Про структуру всего этого говна вопрос.
И так, в простой has many through есть проблемка. Вот user создает group though subscribe, коим образом и куда засунуть подписку на группу? Чтобы другие могли подписываться, и в каком контроллере это все обрабатывать. Ну и вообще, может кто уже делал такое, или знает годные example на гитхабе. Где бы была типичная реализация по типу вконтактика, где можно пилить группы, подписываться на них. Реквестирую гуру моделирования
Есть пользователь <user>, который создает объекты <object>. Есть пользователь другой категории <mocha>, который ставит на эти объекты штамп - допущено/недопущено. Отношения <user> и <object> это has_many/belongs_to, правильно? А в отношениях <mocha> и <object> я теряюсь. Как смоделировать? Нюфак
>>449238 Пачибо. Алсоу, еще один вопрос. Мои пользователи не хранятся в рельсовой базе данных (заходят по ldap), а объекты - хранятся. Как реализовать взаимодействие таких не-БДшных юзеров с БДщными объектами в рамках ActiveRecord? На ум приходит только создание бесполезной таблицы для пользователей и её наполнение по мере аутентификации юзеров через ldap. Но это как-то не рубишно.
>>449299 Метапрограммирование тип, ну. На деле почти никогда такое не пишут.
>>449249 А вот это уже вопрос косячности рельс: не первый раз слышу от более опытных коллег, что модели должно быть по барабану где храниться, и не нужно было жестко её привязывать к БД. Твой вариант с постепенным наполнением таблицы, наверное, единственный рабочий.
>>449304 >не первый раз слышу от более опытных коллег, что модели должно быть по барабану где храниться
Ну тогда надо будет писать свой драйвер, который будет обращаться к Active Directory и вытягивать список пользователей оттуда. И во все таблицы где есть поле user_id прописывать айди выдернутый из Active Directory.
Бля, так то интересная задача. Как хотя бы в теории ее решить? Призываю разум улья зк.
>>449452 Вытянуть пользователей из AD несложно (http://www.rubydoc.info/gems/ruby-net-ldap/0.0.4/Net/LDAP). Только смысла в этом 0, ибо пароли не вытащишь, и авторизовывать все равно по LDAP придется. Потом это все рассинхронизируется и полетит поносным колобком по всему проекту.
Блять, я нихуя не пойму эти ебучие рельсы! Смотрю всякие видео, курсы, codeschool, читал "Гибкая разработка веб-приложений в среде Rails", блять сука, не могу самостоятельно даже примитивный проект написать. Не пойму логику. Вот, к примеру, двач. Как на каждой доске отобразить треды, которые принадлежат этой доске? Хуй знает.
#controllers/threads_controller.rb class ThreadsController < ApplicationController def index @doska = Doska.find(params[:doska_id]) @threads = @doska.threads end end
#views/threads/index.html.erb <h1>@doska.name</h1> <ul> <% @threads.each do |t| %> <li>t.name</li> <% end %> </ul>
>>449839 Что там не понимать? При переходе по определённому адресу из routes.rb вызывается метод контроллера соответствующий, по дефолту этот метод пытается вывалить соответсвующий view (по имени). Переменные @ при рендере копируются в scope этого view и доступны оттуда.
>>449811 А с тредами-то, С ТРЕДАМИ как быть? При создании треда же надо автоматически создавать первый пост? Или при создании нового поста надо указывать, принадлежит ли он какому-либо треду, и если нет, то создавать тред, а в него сувать пост? Ведь почти все свойства треда (тайтл, автор, сообщение) -- это свойства его первого поста.
>>449979 > При создании треда же надо автоматически создавать первый пост? При создании треда ты можешь создавать первый пост автоматически. Либо можешь вообще ликвидировать понятие треда и построить всё вокруг связанных постов. Так даже правильнее будет (Пост у которого нет parent_id является тредом, комментарии всегда имеют parent_id)
>>449991 Ассоциация 1-1 к модели Attachment Вторым аргументом идёт совершенно бесмысленный scope на себя же, который проверяет есть ли привязанная модель Attachment.
>>449999 Ни разу не правильнее. Свойства треда куда девать? Прикреплённый, закрытый. Постам отдать? Но ведь для них это будет лишней, неиспользуемой функциональностью.
>>450004 У треда могут быть ответы и у ответа могут быть ответы. Так или иначе на первый взгляд к высокой нормальной форме оба варианта не приводятся. Но ты можешь сделать отдельные ассоциации pinned_posts, closed_posts и вынести их в отдельные таблицы, внося ключи соответствующих постов.
Кто-нибудь из вас изучал исходный код рельс? Есть ли в этом профит? Просто я могу сейчас поковырять кучу других штук, почитать статьи и т.д., стоит ли читать рельсы? Если начну читать, то откуда начинать? Я так думаю с rails s, да? Я ньюфаг, кода почти не читаю, поэтому думаю, что не совсем эффективно прокачиваюсь. Как считаете уметь в исходный код рельс это на уровне "ну окей, молодец" или "лолшто? не знаешь - не человек"? И сколько по времени должно уйти на чтение основы рельс? Т.е. если читать то, как вещи в общем работают внутри фреймворка, но не читать, например, код каждого метода в какой-нибудь ActiveSupport, т.к. после чтения одного-двух будет понятно где они помещаются в общей картине. Сейчас я хочу понять что именно происходит, когда я запускаю сервер и посылаю гет реквест к index действию контроллера. Как происходит раутинг? Наверное какие-нибудь хитрые регекспы и хеш-таблица или как-то иначе?
>>450047 >Как считаете уметь в исходный код рельс это на уровне "ну окей, молодец" или "лолшто? не знаешь - не человек"? Не собираешься контрибьютить - не лезь. Лучше изучай проекты написанные на рельсах.
> когда я запускаю сервер и посылаю гет реквест к index действию контроллера. Представь что твой сервер это матрёшка, в которой каждая вложенная кукла - делает что-то с запросом. Одна из матрёшек это роутер - который определяет какой контроллер вызвать. Другая матрёшка это обработчик входящих параметров. Третья - обрабатывает кукисы. Эти штуки называются Middlewares. Твой контроллер - Endpoint, поскольку он возвращает конечный оформленный ответ и запрос дальше не прокидывает.
Каждая следующая матрёшка получает от предыдущей переменные среды и ответ предыдущей матрёшки.
Анон, а ты веришь, что каким-то людям дано писать код, а каким нет? Я вот сейчас решаю задачки. Иногда не могу решить, смотрю гитхабы других людей и просто хватаюсь за голову - насколько хорошие решения. А у меня странные индусские конструкции. Это пройдет со временем?
Забавно, не могу найти такой хелпер в гугле, хотя в какой то книге он был. Есть "#{time_ago_in_words(comment.created_at)}" Получается что то типа about 3 hours. А надо сделать датой, как strftime("%H:%M:%S"). Помогите.
Пацаны, я наконец то запилил группы https://vkontanke.herokuapp.com/groups У меня такой вопрос к гуру, вот поглядите https://github.com/ID25/social/blob/groups/app/helpers/application_helper.rb Этот хелпер превращает ссылку в картинку если там в конце расширение правильное, или просто ссылку. Но пришлось аж 3 раза копировать этот хелпер, чтобы поменять стили в каждом img. Ну и еще, текст сливается с ссылкой, аноны говорят надо каждую строку отдельно проверять чтоб такого не было, но как? Есть у кого примеры?
0. Есть subscribe действие в контроллере, к которому при нажатии кнопки отправляется post реквест с value: 'subscribe' или value: 'unsubscribe'. Чтобы не вводить условие в контроллере, я решил отправлять value к модели: ModelName.send(params[:value], current_user.id, params[:whatever]) - это норм или лучше так не делать? Так я избавился от ветвления в контроллере, но теперь названия методов, которые я отправляю хранятся в роутере! Может быть вернуть обратно? А может быть запилить ещё одно действие unsubscribe?
1. Если метод использует какой-нибудь аттрибут объекта, скажем id, то лучше отправлять только этот аттрибут или весь объект целеком и позволить методу извлечь всё что требуется самостоятельно?
2. Есть несколько простых действий в контроллере, которые загружают данные из БД и рендерят дефолтный шаблон. Стоит ли их тестрировать? Стоит ли тестировать валидации и ассоциации? Я не вижу ценности в таких тестах, если честно, но с другой стороны thoughtbot написали shoulda matchers, и возможно неспроста.
3. Как заставить devise редиректить неавторизированного пользователя на sign_up страницу, а не sign_in? В вики ничего не нашёл.
4. PL/pgSQL. Как написать и использовать процедуру в рельсах?
5. Как вынести функционал в микросервис? Пока читаю про них время от времени и не могу понять как это на практике реализуется. Какие-то RabbitMQ, очереди, RPC - как вы это делаете?
6. Какой код идёт в хелперы? Я пока решил туда класть всю логику из вьюх - условия, генерацию HTML, форматирование данных и даже запросы к БД, чтобы избежать N+1 запросов, если простые eager load или preload не подходят.
>>450292 >ModelName.send(params[:value], current_user.id, params[:whatever]) Очень плохо. Смотришь в контроллер, а оказывается, что надо смотреть в роутинг и совершенно непонятно, что он делает. Делай отдельные экшены subscribe, unsubscribe и т.д. Спасибо потом мне скажешь.
>Стоит ли тестировать валидации и ассоциации? Нет особого смысла.
>Пока читаю про них время от времени и не могу понять как это на практике реализуется. Какие-то RabbitMQ, очереди, RPC - как вы это делаете? Если ты про асинхронные действия, есть, например sidekiq.
>Какой код идёт в хелперы? Я пока решил туда класть всю логику из вьюх Ну и правильно. >и даже запросы к БД А вот это уже не очень. На практике выясняется, что лучше все необходимые запросы делать в контроллере и явным образом через locals отправлять во вьюху, вместо использования instance переменных контроллера. Да, это некрасиво выглядит, но зато точно знаешь откуда что берется и можешь отследить все изменения переменной по пути во вьюху.
>>450292 >Есть subscribe действие в контроллере, к которому при нажатии кнопки отправляется post реквест с value: 'subscribe' или value: 'unsubscribe'. Чтобы не вводить условие в контроллере, я решил отправлять value к модели: ModelName.send(params[:value], current_user.id, params[:whatever]) - это норм или лучше так не делать? Так я избавился от ветвления в контроллере, но теперь названия методов, которые я отправляю хранятся в роутере! Может быть вернуть обратно? А может быть запилить ещё одно действие unsubscribe?
В руби нет честных областей видимости. Через send ты сможешь вызвать и private и protected методы. То что ты предлагаешь хуже чем User.find_by_sql("select * from users where id = #{params[:value]}")
>1. Если метод использует какой-нибудь аттрибут объекта, скажем id, то лучше отправлять только этот аттрибут или весь объект целеком и позволить методу извлечь всё что требуется самостоятельно? Чем точнее и чётче описаны действия методы - тем лучше. Входящий параметр часть описания. Лучше прокидывай только этот атрибут.
>4. PL/pgSQL. Как написать и использовать процедуру в рельсах? Рельсы не слишком хорошо дружат с хранимыми процедурами из-за глубоких завязок в ORM.
>5. Как вынести функционал в микросервис? Пока читаю про них время от времени и не могу понять как это на практике реализуется. Какие-то RabbitMQ, очереди, RPC - как вы это делаете? Слишком обширную тему ты затронул. MQ - MessageQueue. Это паттерн сообщений между разнесёнными системами. RPC - Remote Procedures Call. Это паттерн исполнения процедур на сторонней системе.
Опиши что за функционал ты имеешь ввиду и можно будет порекомендовать что-то конкретное.
>6. Какой код идёт в хелперы? Я пока решил туда класть всю логику из вьюх - условия, генерацию HTML, форматирование данных и даже запросы к БД, чтобы избежать N+1 запросов, если простые eager load или preload не подходят.
В хелперы идёт любой код который используется не однократно и не вписывается в рамки определений model,view,controller. N+1 никак с хелперами не связаны, хелперы не кэшируют результат соотв-но и проблему твою не решают.
не троллирую. в чем профит рельс перед js framework? язык. но есть же ec6. больше библиотек и инструментов, но это временно. начал разбираться с npm, jspm... все очень просто. я давно с руби колупаюсь и js не так хорошо знаю. интересно, почему новички сюда лезут. нужно же и jspm разобрать и bundler, rake... все дублируется.
у js большой плюс в том, что можно разобраться в js, все. и потратить время которое уйдет на разбирательство с ruby, на erlang.. что угодно. главная задача ведь экономия времени.
Аноны. Очень простой вопрос: Я старый виндузятник. Мне не очень нравится линукс (хотя, Fedora новая - неплохая системка, но там куча всего в репозиториях самой Федоры просто нет...Плюс ебаный FFADO для моей звуковой карты нихуя не ставится), смогу ли я успешно кодить на рельсах из под винды? Сейчас посыпятся слова: сервера на линуксе, будут проблемы с путями к файлам, но мне это пока не особо важно, потому что пути можно поправить, а мою неприязнь к линуксу - нет.
>>450409 У тебя бывало, что после второго дня чтения гайдов на английском становится сложно изьясняться по-русски? Controller-specific asset не могу по-русски.
>>450407 >но что-то видимо все пока очень сырое, даже документации кое-где нет: >implying этим js лучше rails Г'cпади, этот ваш js даже лучше php никогда не станет. Разве что после смерти твоих правнуков.
>>450411 я не говорю, что лучше. если ты собрался писать веб программы, то тебе нужен js. так-как ничего больше браузер не исполняет. может лучше тогда и дальше писать на js? а свободное время потратить на изучение чего-то другого. мне кажется, полезнее изучить erlang или С, субд, алгоритмы получше, чем ruby. ruby не поможет тебе делать меньше ошибок, или поможет? это тоже динамический язык.
>>450407 > если ты про написание последовательного кода, то можно. это шутка, про асинхронность везде. Покажи. Все, что я видел, это лапша из коллбэков.
каждый из этих инструментов может делать то, что не может другой. js и ruby не многим отличаются.
я не пытаюсь ничего втюхать. немного странно, что кто-то начинает с рельс. было интересно узнать почему. у рельс больше инструментов. больше литературы. вот, узнал.
>>450525 Для юзера пилить свой вход, таблицу в БД, CURRENT_USER и кучу говна в хелперах, и для мочи тоже самое дублировать? Или как. Подскажи. >>450526 Нихуя не понял. А может так?
>>450537 Замечательно все с этим вашим STI: def current_user auth_token = User.encrypt cookies[:auth_token] @current_user ||= User.find_by auth_token: auth_token end Теперь эта хуйня не работает. Теперь надо так:
Имеется форма авторизации, передающая логин и пароль
<%= form_tag session_path, remote: true do |f| %> .... <% end %>
Она привязана к экшену, который делает запрос на сторонний сервак с полученными логином и пасом и получает ответ.
def create phone = params[:login] password = params[:password] ..... response = HTTParty.post ..... respond_to do |format| if response.parsed_response['resp'] == 'authorized' format.js { render partial: 'reload_page' } elsif response.parsed_response['resp'] == 'no_such_user' format.js { render partial: 'return_error'} end end end
в случае получения того или иного ответа я пытаюсь отрендрить один из двух js-партиалов, на что не вполне резонно получаю ХУЙ в виде: ActionController::UnknownFormat in SessionsController#create
Аноны, как, ну как блять сделать так, чтобы когда я создаю новый тред на доске у меня тред автоматически принимал параметр :board_id? Пытался делать так:
>>451064>>451066 Cпасибо, но это не помогло. Но это не важно, я уже нашел решение. Теперь другой вопрос, как реализовать репосты, по типу ВК. Я даже не знаю, тащить чужие посты в массив своих, чтоб они отображались в своем профиле, кто нибудь делал такое? Нужна помощь и подсказка.
Что-то не могу разобраться а артиклями в описаниях тестов. Писать или не писать? Например: it 'subscribes the user to the project' vs it 'subscribes user to project' А может вообще использовать неопределённые артикли? Я грамматическое правило знаю, но ИРЛ его недостаточно для безупречного использования артиклей. Я пока решил не писать артикли, потому что так выходит короче и иногда позволяет написать более точное описание теста в одну строку.
"Basically, Ruby tries to assign values to as many variables as possible. And the sponge parameters get the lowest priority: if the method runs out of arguments after it’s performed the assignments of required arguments, then a catch-all parameter like c ends up as an empty array. The required arguments both before c and after c get taken care of before c does."
>def >broken_args(x,y,z=1) >end
"it’s a syntax error, because there’s no way it could be correct. Once you’ve given x its argument and sponged up all the remaining arguments in the array y , nothing can ever be left for z."
>And the sponge parameters get the lowest priority >Once you’ve given x its >argument and sponged up all the remaining arguments >in the array y , nothing can ever be left for z.
Это я такой глупенький или автор противоречит сам себе?
Анончики, а вот подскажите, хочу, чтобы при открытии каждого треда был путь board/1/thr/2 Вот как я пытаюсь это сделать: <%= link_to board_thr_path do %> <b><%= thr.title %></b> <% end %
В результате: undefined local variable or method `board_thr_path' for #<#<Class:0xa82bb44>:0xb55c7f78>
Посоветуйте гем для упрощения работы с ajax. Надоело из проекта в проект писать одну и ту же js-лапшу. Чаще всего повторяется задача: по ajax принять данные и отрисовать их в модальном бутстраповском окне.
>>441544 1. Есть сайт с кучей статей, статьи на каком-то сумасшедшем диалекте BBCode с перекрестными тегами, с незакрытыми тегами, с левыми тегами, с абсолютно неадекватным использованием тегов etc., и, естественно, только одна-единственная неизвестная мне реализация этого BBCode способна более-менее это чудо распарсить. Я перевожу это на Markdown. Титаническими усилиями, кучей костылей, но худо-бедно автоматически. Предполагается, что пользователи тоже будут добавлять свои статьи. Markdown позволяет инлайнить HTML. Как себя максимально обезопасить? Как сделать так, чтобы незакрытый тег уебка-пользователя не портил мне всю вертку? Как сделать так, чтобы JavaScript нельзя было встроить, но любой безопасный HTML при этом можно было? Смотрю в сторону Sanitize с вырезанием определенных «опасных» тегов которые еще надо все-все предусмотреть, но спрашиваю наперёд. 2. Статьи все по разным категориям раскиданы. Правильно ли я думаю, что для этих категорий лишние сущности плодить не надо и все сделать на рутинге и очень кастомных контроллерах? Хотя, где контроллер там и сущность. В общем, сам путаюсь уже, что здесь точно надо, но для каждой статьи должна быть указана категория, и тупорылый пользователь может неправильно ввести ее название и создать левую категорию. Следовательно, имеет смысл дать пользователю выбрать уже существующую категорию или же создать свою, но в таком случае уже и надо смело пилить новую сущность. Извините, если плохо объяснил, но, наверное, на такие тупые вопросы у опытных есть файлик с кучей ссылок по теме. Я буду сам разбираться, конечно, но если кому-то будет нечего делать, то, может, и поможет мне кто. 3. Еще интересует всякая херня вроде активированных пунктов бутстраповского меню. Как это все правильно организовывать? Я могу в пыхостайле это все оформить, вручную вписывая кучу всяких конструкций для проверки раздела сайта и все такое, но это ведь хуйня наверняка и все придумано до меня.
>>452103 Если функция возвращает void, то ноль она вернуть уже не может. Либо одинокий «return;», либо вообще можешь его опустить. Если необходимо вернуть какое-то значение, то и объяви что-то вроде «int main()».
Как можно реализовать аналог репостов? Есть группы и посты пользователей, их надо как то отобразить на своей странице если репостнул, ну и должны отображаться откуда репост сделан.
Часто приходится верстать, бутстрап - не таблетка от верстки, все-равно придется. Тащемта у меня верстка занимает много больше времени чем написание логики. Тащемта верстка - декларативное дерьмище, ангуляр - говно, которое делает и дерьмо медленным, а жс - вообще язык больных индусов
Хорошо, попробуем еще раз. Как правильно сделать разбивку статей по категориям? Нужно ли создавать модель Categories или же лучше в контроллере Publications сделать кастомный экшн с группированием статей, прикостылять рутинг и радоваться?
>>452241 Алсо, у категорий-то есть небольшая иерархия. Вложенность не глубже второго уровня, но видимо, предстоит много с чем попердолиться. Не представляю, как эту хуйню сделать.
>>452241 Я думаю что категории у тебя могут и добавляться и удаляться. Так что лучше сделать отдельную модель для этого. Если у тебя будет только одна вложенная категория в другую то просто сделай модель SubCategory. Если же вложенность более глубокая, то вот тебе пример http://www.rusrails.ru/active-record-associations#samoprisoedinenie
>>452250 Спасибо, что откликнулся, бро. Почитаю всё и чужие рельсосайты на гитхабе полистаю. Но я недоволен тем, насколько вся эта херня получается неуклюжей. Так как любой пользователь может добавить категорию для своей статьи, он может опечататься или продублировать другую категорию, не заметив, что уже была подходящая. Необходимо учесть, что некоторые новые категории не должны быть утверждены до проверки статьи модератором. Со скрипом могу это сделать. Также не забываем, что модератор может не просто изменить название категории, но и переместить статью в другую категорию. Тогда нужно удалить старую категорию, если она оказалась без статей теперь вообще. И прочее, прочее, прочее… Как-то это неаккуратно все, и от этого уйти нельзя, судя по всему.
Раньше для названия категории в таблице была отдельная колонка. При первом приближении это не самая удачная затея, но если присмотреться, то диву даешься, насколько именно для данного случая это удобно, потому что всей этой чушью в итоге занимается база данных, а с индексами оно еще и не тормозит, да и вообще вся эта логика реализуется автоматически и никакого внимания к себе не требует. Но да, не универсально.
>>452256 >Так как любой пользователь может добавить категорию для своей статьи, он может опечататься или продублировать другую категорию, не заметив, что уже была подходящая. Необходимо учесть, что некоторые новые категории не должны быть утверждены до проверки статьи модератором. Либо запрети пользователю создавать категории и разреши это только модераторам, либо сделай livesearch по категориям, но все равно это ненадежно будет.
>Также не забываем, что модератор может не просто изменить название категории, но и переместить статью в другую категорию. Тогда нужно удалить старую категорию, если она оказалась без статей теперь вообще. А если в этой категории в будущем будут статьи, то ее заново создавать придется? Но если ты все таки хочешь это делать, то пользуйся коллбеками. В твоем случае нужен after_update и вот это http://api.rubyonrails.org/classes/ActiveModel/Dirty.html чтобы получить старое значение, там ты проверяешь изменившийся параметр, и если он категория, проверяешь кол-во статей с этой категорией, если оно равно 0, то удаляешь эту категорию.
>Раньше для названия категории в таблице была отдельная колонка. Плохое решение, при изменении категории, или при переименовывании пришлось бы проходить по всем статьям.
>3. Еще интересует всякая херня вроде активированных пунктов бутстраповского меню. Как это все правильно организовывать? Я могу в пыхостайле это все оформить, вручную вписывая кучу всяких конструкций для проверки раздела сайта и все такое, но это ведь хуйня наверняка и все придумано до меня. https://github.com/comfy/active_link_to
>>452263 > Плохое решение Я же сказал, что для этой задачи. Категории не переименовывались. Никогда. Совсем. И невозможно представить, что должно в этом мире произойти, чтобы хотя бы что-то пришлось переименовать. Это уже не суть важно, конечно, и понятно, что делать надо правильно, а не как мне хочется.
> А если в этой категории в будущем будут статьи, то ее заново создавать придется? По большей части, я это задумывал для тех случаев, когда опечатка в названии или дубль. Естественно, такая категория уже в дальнейшем не будет использоваться. Нечаяннное же создание категории, которая будет использоваться в дальнейшем, исключено практически.
> запрети пользователю создавать категории и разреши это только модераторам И тогда у нас в модели статьи будет всегда храниться ненужное название категории, на которую она и без того ссылается.
Есть модель Подписчики с полем date (например, 2012-12-12), куда каждый месяц заносится число подписчиков. Есть данные за весь прошлый год и начало этого. Нужно сделать, чтобы когда я вызываю квартальный метод, он возвращал мне 1 квартал 2015 и 2 последних квартала 2014. Вызываю годовой - 3 рандомных числа из 2015, 2014 и 2013 годов.
Сейчас это выглядит как-то так: scope :monthly, -> { order('date DESC').limit(3).reverse } scope :annual, -> { что тута? } scope :quarter, -> { а тута? }
>>452277 >тута — (Кричит.) Оооааа, бля, какой же ты мудак, блядь! Мы сидим тута. Вдвоём тута. Сидим. Сидим, ёпта, сидим! Ты можешь заткнуться, просто, блядь, сидеть, нихуя не говорить, вообще, блядь, молчать просто?
Нихуя непонятно из твоего вопроса. Что за рандомные числа? Квартальный метод у тебя возвращает три квартала вместо одного. Вообще охуеть.
>>452095 >3. Еще интересует всякая херня вроде активированных пунктов бутстраповского меню. Как это все правильно организовывать? Я могу в пыхостайле это все оформить, вручную вписывая кучу всяких конструкций для проверки раздела сайта и все такое, но это ведь хуйня наверняка и все придумано до меня. Если будешь использовать твиттор бутстрап https://github.com/seyhunak/twitter-bootstrap-rails , то можешь использовать Navbar Helper, он сам за тебя решает какая страница сейчас активная и соответственно подсвечивает ее в главном меню.
Числа это подписчики, например, в твиттере. Они меняются и каждый месяц в БД заносится новое число. Потом я могу смотреть динамику, как росли/убавлялись подписки.
Мне нужна динамика за последние 3 месяца, последние 3 квартала и 3 года. Сечёшь?
Здарова бандиты, только начал изучать ruby, а вопрос по рельсам. Что делать, если запрос выполняется долго, а ответ браузеру нужен прямо сейчас?
Пример простейший - импорт в бд из CSV файла с кучей строчек. Пока у нас там идет запись в бд, я бы хотел сразу отрендерить в браузер вьюху, да так, чтобы на бекграунде импорт продолжил работать.
Так вот я хотел сделать что-то такое: render "view" #heavy code goes here Так вот, код после рендера будет выполняться, или render заевршает выполнение кода в контроллере?
Что за хуйня, немного поменял вьюхи только, и случился пиздец, каждый ajax запрос, дублируется. типа открывает сразу две формы или отправляется сразу 2 поста, все сохраняются. Что это может быть? Как фиксить? Я даже не могу понять почему так происходит.
>>452387>>452411>>452429 Я все опробовал, в запросах все всем рендерится и добавляется. Но я уже разобрался, это турболинкс ебучий был. Зато наконец добавил ajax к лойсам и прочему. ну и еще немного десигн подправил http://vkontanke.herokuapp.com/
>>452301 Как забрать последние 3 месяца я знаю, меня интересовали только кварталы и годы. И по аналогии не получится, потому что нужно по одному значению с каждого квартала/года, а твой код в лучшем случае вытащит всё за определённый период.
>>452577 Быстрый. Нормальное ООП в отличие Nodejs. Нормальная многопоточность. Отсутствие зоопарка непонятных сторонних библиотек - почти всё делается нативными.
> Нормальная многопоточность define "Нормальная" > JRuby для тредов, которые не цвета этого текста.
> Отсутствие зоопарка непонятных сторонних библиотек > Отсутствие зоопарка сторонних библиотек > Отсутствие сторонних библиотек > Отсутствие библиотек pic related
немного нестандартный вопрос, но вроде комьюнити хорошее, спрошу тут: Решил на досуге пописывать на рубях 2 года вебчик-хуебчик в аутсорсинге книжечку себе выбрал из шапки, после страниц 10 забил, попробовал написать скрипт чтоб качал файлы по ссылкам из txt-шнка в указанную папку - минут за 10 осилил, опять вернулось терпение читать дальше.. Для следующего практического забега решил накатить nokogiri и попарсить один сайтец, а уперся в то, что я под шиндой, а нокогири под шинду на 2.2 пока не работает и не собирается. Вопрос - что из прыщей быстрей и легче всего поставить для рубей на виртуалку? Спасибо
>>452655 Нахуя ты 2.2 поставил, дебил? Ставь 2.1, обновляй RubyGems, ставь Nokogiri и не еби себе мозги. В 2.2 новых функций не завезли, там только по ошибкам и сборщику мусора прошлись, тебе на это похуй должно быть.
>>452655 Не слушай этого говноеда с виндой >>452704. Ставь ubuntu (а лучше xubuntu) на виртуалку, накатывай rvm и наслаждайся работой всего связанного с руби без проблем. Сам так уже джва года делаю.
>>452655 >Вопрос - что из прыщей быстрей и легче всего поставить для рубей на виртуалку? Спасибо ubuntu >накатывай rvm rbenv засирает меньше >>452704 Этот вообще отмороженный. Благо хоть не 1.9.3 посоветовал.
>>452740 >>452734 Сука, какие же вы поехавшие дегенераты. Он себе книжечку выбрал, ему похуй 2.1 там или 2.2 (там более синтаксических изменений между этими версиями вообще нет). Нахуй ему сраная прыщевиртуалка вообще? На 2.1 без проблем накатываются и нокогитри, и sqlite и всякая параша ещё, все равно он забросит этот руби через пару недель. И хуле ты вообще со своим 1.9.3 вылез, я его вообще не советовал.
>>452747 >все равно он забросит этот руби через пару недель. Когда не сможет поставить рубирейсер или какой-нибудь ещё гем на шиндошс. Всё правильно посоветовали с убунтой.
>>452747-кун, Во-первых спасибо большое за совет, так и поступлю - прыщи на виртуалку потом накачу, сейчас интересней руби, а не ставить убунту Во-вторых - >все равно он забросит этот руби через пару недель. У меня сложилось впечатление что ты какой-то илитист немножечко. Я 2+ года професионально пишу на Java, делаю фронтендец на GWT, хорошо ботаю js, в руби решил понаехать ради рельс, чтоб на коленке быстро пилить леваки, когда нужны будут моар денег. Не суди всех вот так вот с 1 поста. Да и "пердолинг отпугнёт" - 2 года тырпрайзной джавы научили меня долго читать логи и пользоваться гуглом/стековерфлоу - этого, думаю, более чем достаточно.
Рандомхер 23лвл, из знаний только html и css. Хочу начать учить я.п., выбор стоит медлу ruby и pyhon. Ruby мне больше симпатизирует, но по нему меньше инфы и сложнее найти работку в офисе(требуют от 2 лет разработки и т.д., начальных вакансий нет). Подскажите, почему вы выбрали руби? Кулстори пришедших к у успеху приветствуeтся.
>>452773 Не, ну а хуле они приебались со своими убунтами, блядь. Ставь на винду, и если уже действительно будет чего-то не хватать, то тогда уже ставь виртуалку. А раз на джаве пишешь, можешь ещё и JRuby попробовать (там первый пререлиз 9к 2.2 поддерживает), и можно ебаться в идее со всякими рефакторингами и прочей мутной хуетой. И я вообще не хотел сказать, что ты плохой кодер или типа того, просто в 95% при изучении нового языка его быстро забрасывают к хуям, особенно если он не востребован.
>>452805 раз уж ты собрался писать для веб, то начни с js. он же тебе тоже будет нужен для frontend программ. серверные программы на js тоже можно писать, см. nodejs. если с nodejs не получится, то переключишься на ruby. возможно таким образом потратишь меньше времени.
>>452818 >Не, ну а хуле они приебались со своими убунтами, блядь. Ставь на винду, и если уже действительно будет чего-то не хватать, то тогда уже ставь виртуалку. Нет! Сначала зайди в этот тред и ещё разок спроси "а чо под виндой низя???".
>>452891 Дай пизды, давай пизды, крепко давай пызды. Я хочу обратиться к тебе, читатель нашего журнала — расти истинным борцом. Занимайся спортом, ходи в качалку и наращивай мускулы. И пиздись. Пиздись от рассвета до заката и от заката до рассвета. Пиздись так, чтобы однажды, когда придет твой смертный час, не обоссаться со стыда. Чтобы сходя в могилу, не пришлось прятать глаза от детей и внуков. Чтобы честно сказать себе — я прожил жизнь не зря. Мне не было мучительно больно и обидно за бесцельно прожитые годы. Всю свою жизнь, от рассвета до заката и от заката до рассвета, я давал пизды.
>>452864 Да пошел ты нахуй, хуле приебался, блядь? >>452871 Какой нахуй Cygwin, сука, он и без него отлично работает. Дохуя самых популярных нативных пакетов заранее скомпилированы под шинду, а значит можно и без девкита RI ебаться с рубями. > О как, интерпретатор влияет на рефакторинг. Бля, ну идея, я же типа за IDE для джава-макак говорю. Ставишь руби плагин, MRI/JRuby и там всякие рефакторинги, генерация кода и прочий пиздец для дебилов.
Скоро перекот, посоны. Алсо, в ubuntu до сих пор apt-get ставит 1.9.3. 2.0 и выше в официальных репозиториях вообще нет. В Arch завозят свежайшие версии быстрее всех, тащемта. Одна печаль, под Hyper-V сложно арчик завести. Поэтому пердолюсь с ubuntu и rvm. Никому не советую.
>>452942 > Называй Совместимость. Если обновляешь что-то одно, то может понадобиться что-то еще другое обновить, а там уже дальше цепная реакция. В дистрибутивах вроде убунты процесс обновления очень медленный и довольно бюрократичный, и в целом всё обновляется только с инкрементом версии дистрибутива. На самом деле, оно даже и не упало никому на хуй так часто обновлять что-то. Очень сильно сомневаюсь, что в этом треде заметному количеству людей действительно будет необходим MRI 2.2.5, а 2.0.0 сильно помешает что-то сделать. Я сам только недавно задумался о том, нахуя мне нужны rvm/rbenv и уже как минимум на боевых серверах ставлю все из нормального репозитория.
>>452903 Из реп ставят те, кто не разрабатывает, а использует готовые продукты. Или те, кому не нужен зоопарк версий. А в генте есть божественный eselect - позволяет выбрать версию руби тож.
>>453072 >а использует готовые продукты. Читай админы. Которым компиляция из сурсов или из нерепозитарных источников - это как чума (ОЙ ПРОБЛЕМЫ С ОБНОВЛЕНИЕМ)
>>453089 У нас используют. Работает, потому что (в отличии от пердоликов, админящих локалхост) мир каждый день по три раза с разными юзами не пересобирают.
>>453072 Админ локалхоста, съеби уже. Версии руби меняются исключительно средствами самого руби, поскольку их очень часто нужно иметь 2-3-n на одной машине.
>>453115 > Версии руби меняются исключительно средствами самого руби, поскольку их очень часто нужно иметь 2-3-n на одной машине. > те, кто не разрабатывает, а использует готовые продукты. > те, кому не нужен зоопарк версий. читать научись, свитерок
>>453116 >зоопарк Админ локалхоста такой админ локалхоста. rvm это не зоопарк, а штатное средство, если у тебя одному сайту нужен один руби, а другому другой. Ещё скажи что gcc-4.4 и gcc-4.7, лежащие вместе в /usr/bin - зоопарк, уёба.
>>453121 > если у тебя одному сайту нужен один руби, а другому другой ... то это значит, что либо ты дебил, либо разработчики руби, т.к. не подумали об обратной совместимости.
>>453124 Дебилы в том числе и разработчики ядра, поскольку в работающее ядро нельзя загрузить модуль, собранный версией gcc, отличающейся от той, которой собиралось само ядро и остальные модули. Обтекай. И да, все популярные языки для веба (пиздон, пхп) - имеют так или иначе несовместимые версии. И это нормально. Зато у некрософта недокументированная багофича в апи позволяла запускать SimCity 1 (виндовый), имитируя багу маллока из первых Win 3.1. Потому что работа игры была завязана именно на эту багу. По крайней мере, в XP SP3 было так, на 64-битках начиная с дристы, не проверял
>>453126 Потому что ты каждый раз после попердолек ребутишь машину. А у некоторых и ядро, собранное старой версией gcc, вполне в работе. Есть и новое, но чтобы его загрузить, надо сначала ребутнутся. Хотя откуда днищешкольнику с пердолингом ноута знать, что такое аптайм.
>>453134 Это не баг, а фича же. Она сразу выделяет 300-1000 метров памяти и потом просто распределяет программе. При этом со всеми библиотеками, свингом, джявафх и легасиговном JRE весит всего 30 МБ.
>>453133 свиерок, прикинь, я свою рабочую машину тоже раз в неделю минимум ребучу я ведь код не на сервере пишу) и версия мне рубей одна нужна - под текущий проект так что вернись в свой серверный шкаф
>>441544 Работаю в связке Ruby+FXRuby. Что надо прописать для того, чтобы вместе с окном при запуске проекта не запускалась командная строка. Пока что работаю на ШинХР.
Анон, что за хуйня? Ввод и вывод кириллицы на прыщах происходит без проблем, как только запускаешь на Виндовс(7, 8, ХР) - каракули. #encodin/coding: utf-8 не спасает, смена кодировки в редакторе либо засерает весь код либо не помогает. Как бороться с этой хренью?
Сап, у меня в приложении есть авторизация в вк, но вк высылает аксесс_токен только на тот домен, который указан в настройках приложения. Как мне тестить приложение на локалхосте?
Сейчас пытаюсь заюзать ngrok, но чет вк возвращает > redirect_uri has wrong domain В настройках приложения в вк поставил адрес сайта http://<...>.ngrok.com/ и домен ngrok.com
Пацаны, привлекает руби, хочу выбрать как 1 язык для обучения, можете рассказать, что такое рельсы, почему нет возможности обрабатывать память, насколько быстро работает с массивами? Можете ли привести примеры известных программ работающих на руби?
рельсы это самый популярный и не очень хороший фреймворк для разработки вебсайтов. нет возможности обрабатывать память потому что она тебе и не нужна в рубях (и вообще, что значит "обрабатывать память"?) нормально работает с массивами если не считать крупных вебсайтов на рельсах (вроде гитхаба лол), то следующее что мне приходит на ум - metasploit
>>462007 я неделю не заходил, 5 постов появилось. это не пхп по популярности, это лучше.
Анон, помоги пожалуйста. Есть РСпек, который не смог. Могу запустить им пусто файл или файл с чистым Руби. При запуске спека жалуется на отсутствие библиотек, прямоты моих рук и качественной жизни. Скрин прилагаю. Гугление стаковерфлоу не дало ответа, советы схожих тем применил, не помогло. Что делать? Бочку соснул, хуйцы сделал
>>463961 спек должен запуститься с надписью типа успешно:0, провалено:1, ожидается:0. При запуске работающего спека такая же фигня. Выше (где правильный текст) запуск пустого файла.
1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Eloquent Ruby или The Well Grounded Rubyist.
Затем читаем Metaprogramming Ruby. На протяжении чтения вы должны писать код, конечно же.
Чтобы не задавать глупых вопросов уровня дибилоида, который не нашёл доки > http://ruby-doc.org/
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
Не веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancan, devise, camping.
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
Для дотошных читателей есть The Rails 4 Way.
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
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]
11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancan, simple_form, solr, sinatra, тысячи их.
12. Где можно задать глупые и неочень вопросы?
- здесь
- stackoverflow.com
- в рассылке rails-talk
- оф. форум рубей http://www.ruby-forum.com
13. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
14. В чём писать код?
Atom, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-ребят есть rubymine, плагины к эклипс и нетбинс.
Предыдущие треды:
https://2ch.hk/pr/res/425593.html
http://arhivach.org/thread/46624/
http://arhivach.org/thread/32141/
http://arhivach.org/thread/35764/