• Как в одном контролере передать create и destroy для двух моделей hotel и room?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    использовать nestred_resources guides.rubyonrails.org/routing.html#nested-resources и в зависимости от параметра который придет выбирать класс Room или Hotel
    Ответ написан
  • Как реализовать АдминПанель в блоге на RAILS??

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    https://github.com/comfy/comfortable-mexican-sofa - вот есть такое компактное и мощное решение
    Ответ написан
    Комментировать
  • Как создавать простые страницы на Rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    создаете контроллер StaticPagesController

    и прописываете роут как

    get 'contacts' => 'static_pages#contacts'
    Ответ написан
    1 комментарий
  • Считать переменные файла .env?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Успешно используем .env в продакшене. Откуда мнение что он не для продакшена?
    Ответ написан
    3 комментария
  • Подготовка к собеседованию Junior Ruby on Rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Я уже выучил Ruby, RoR


    до сих пор не могу сказать, что выучил рельсы и руби =)

    По сабжу

    REST, MVC, структура проекта, в каких папках что лежит, включая папку config.
    что такое представление, паршиалы, по моделям полностью - скоупы, ассоциасии. валидации, коллбеки
    контроллеры - before_action, что уже лежит в ApplicationController
    Unix - что такое приложение, процесс и порт. Что делать если при старте сервера пишет, что порт 3000 уже используется.
    По руби - идиома @a ||= b, блоки, циклы, что делаeт attr_accessor, что такое символ, константы в руби.
    По базам - прошу привести примеры какие запросы генерирует та или иная цепочка DSL ActiveRecord, например
    User.where(id: 1), User.where(id: [1]), User.where(id: []) И таких вариантов куча, нет смысла пытаться заучить, нужно разбираться.

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

    Кроме того, предлагаю банальщину - пройтись по основам railsguides и убедиться, что верно понимаете соглашения фреймворка. Rails построен на соглашениях и тот кто в них хорошо разобрался имеет высокий шанс получить работу.

    Например, большинство кандидатов на вопрос, что в имени представления index.html.erb означает html отвечают, что это язык разметки в котором вернется ответ. Т.е. они просто строят логичное предположение и не пытаются его проверить. И таких, казалось бы простых вопросов, у меня целая пачка. В большинстве случаев кандидат уходит с пониманием, что ничего на самом деле и не знает.

    P.S. лучше знать что-то одно хорошо, чем много всего по немногу.

    Но, в каждой компании по разному.
    Ответ написан
    Комментировать
  • Стоит ли учить Ruby on rails в 2018?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    У меня в блоге перевод ответа на алогичный вопрос. Отвечает сам автор фреймворка - c3gdlk.ru/blog/rails/pochemu-stoit-uchit-ruby-on-r...
    Ответ написан
    Комментировать
  • Есть ли краудфандинг на регулярной основе?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Проще всего это сделать у себя на сайте. Только не заморачивайтесь с разработкой, делается за вечер.

    Просто в HTML оформите страничку что будет сделано и сколько нужно средств. Оплата - яндекс деньги за вечер прикручиваются, они вроде как и умеют даже с физиками работать.

    Ваш сайт ужее имеет целевую аудиторию, им проще будет заплатить.
    Ответ написан
    1 комментарий
  • Почему у меня есть доступ к атрибуту метода экзепляра?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    attr_reader :name не про задание прав чтения. Это просто короткая запись для объявления метода, все что он делает, это сам объявляет метод для чтения, аналог

    def name
      @name
    end


    attr_writer :name объявляет

    def name=(value)
      @name = value
    end


    attr_accessor :name объявит сразу оба метода. move у Вас это уже метод, который работает с внутренними данными, он инкапсулирует их. Поэтому он объявлен как метод.

    На самом деле в руби все методы, в руби извне нельзя прочитать атрибут без объявленых методов. move же похож на просто метод, привычный из других ЯП. Его задача скрыть внутреннюю амплементацию класса и предоставить интерфес для работы с ним
    Ответ написан
    2 комментария
  • Почему в copybara и poltergeist после захода на страницу в цикле не могу перейти по следующему элементу?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Капибара полност аналогична действиям пользователя. Попробуйте руками повторить. Как только кликните по первой ссылке, откроется новая страница, на которой уже не будет исходного списка ссылкок.

    Для капибары удобно использовать save_and_open_page метод для отладки
    Ответ написан
  • Как лучше реализовать дерево категорий для интернет магазина в SQL?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Посмотрите как работает руби гем https://github.com/stefankroes/ancestry

    Он строкой хранит всех родителей "11/23/145", в итоге вместо кучи рекурсивных запросов используются LIKE запросы.
    Ответ написан
  • Хранение больших текстов в БД или в файлах?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Лучше в файлах, удобнее работать линуксовыми утилитами. Можно будет использовать сетевый файловые системы. Компании, которые работают с террабайтами данных даже пишут под себя свои файловые БД.
    Ответ написан
    Комментировать
  • Как реализовать модель конструктора?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Постгрес и вроде даже мускуль умеют jsonb поля, так что новую базу ставить не надо.

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


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

    P.S. исходя из опыта решения такой задачи могу еще подсказать, что Вам нужно хранить не только значения, но и данные конструктора, т.е какого типа поле, какие на нем валидации, возможные значения и так далее. Делать это лучше в реляционной модели, она идеально для этого подходит.
    Ответ написан
    Комментировать
  • Насколько правильно использовать json для хранения данных в базе данных?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Не забывайте, что база данных всего лишь инструмент. В таком простом варианте как у Вас особой разницы нет. Я бы вибирал исходя из того, насколько удобно Ваш фреймворк умеет работать с такими полями. Например, Rails очень просто умеет работать с такими полями, код приложения даже не поймет, что это одно поле внутри. Я очень активно использую такие поля в разработке.
    Ответ написан
    Комментировать
  • Как навести порядок в компании?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Вам нужна помощь того, кто работает в компании, в которой все процессы выстроены грамотно и не просто работает, но и участвует в выстраивании этих самых процессов.

    Из быстрых советов.

    1. Завести систему управления проектами, лучше Jira пока ничего не придумали. Для разработчиков не самая удобная система, но с точки зрения бизнес процессов лучше ничего нет.

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

    3. Выстроить процесс разработки. Канбан или скрам, в зависимости от проекта. И четкое флоу задачи.
    Получили требовния -> кто-то должен их прояснить -> кто-то должен сформировать пак задач, определить сроки и приоритет -> разработчики получают и делают задачи -> кто-то ревьювит код разработчика -> готовое решение заливается на тестовый сервер (или делается тестовый билд) -> разработчик первым проверяет свое решение -> QA отдел проверяет решение -> результат выкатывается на прод и клиент информируется о готовности

    4. Если еть инициативные разработчики, можно сформировать команду которая будет выстраивать эти процессы. Например встречаться раз в пару недель и обсуждать, чтобы хотелось изменить/ улучшить. К таким решениям будет больше доверия.

    Работа по выстраиванию процессов медленная и тяжелая, нужно определить приоритеты и составить план действий.

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

    По каждому направлению в котором Вам предстоить работать есть множество хороших книг, составляйте для себя список и начинайте изучать.
    Ответ написан
    1 комментарий
  • Как сделать многоразовое модальное окно в Rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Это очень просто делается на рельсе, если уметь. Расписывать долго, но подскажу, что искать

    remote формы и ссылки
    Ответ написан
    Комментировать
  • Как наработать опыт в стилистике написания кода?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Мой ответ на похожий вопрос - Режим работы, как наладить?
    Ответ написан
    Комментировать
  • Как реализовать парсинг в автономном режиме на RoR?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Active Job - всего лишь интерфейс. Ему нужен бекенд воркер, лучше использовать sidekiq. Должен быть установлен redis server.
    whenever - умный интерфейс для крона,чтобы запускать Ваши задачи на парсинг по расписанию

    Схема примерно следующая - раз в 30 секуннд с помощью whenever запускаете rake task который в свою очередь запускает ActiveJob планировщик. Этот планировщик выбирает всех пользователей, которым надо что-то парсить и для каждого такого пользователя запускает ActiveJob парсер.

    Старт и Стоп - флаги в базе данных, в зависимости от которых планировщик добавит пользователя в парсинг или нет.

    Если данные надо парсить каждые 5 секунд, то руби может быть не лучшим выбором.
    Ответ написан
    4 комментария
  • Как юзать python скрипт из-под ruby?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    У руби есть много разных методов для запуска внешних скриптов, подробно описано тут - https://stackoverflow.com/questions/7212573/when-t...

    Но, нужно понимать, что запуск скрипта блокирует весь руби процесс, поэтому если скрипт работает несколько минут, то все остальные потоки будут заблокированы. Т.е Sidekiq и Puma работать не будут.

    Будет работать Resque но он жрет куча памяти.

    Возможно Вам нужно отказаться от руби в проекте, если он на начальном этапе. Или обернуть питоновский скрипт в веб сервер, например flask и дергать его по http
    Ответ написан
    Комментировать
  • Есть ли смысл тестировать валидации моделей в Ruby on Rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Вам не надо тестировать фреймворк. Т.е например в тесте на валидацию на presence не надо проверять что и пустую строку отработает и nil отработает и еще что-то. Но, какой-то тест все равно должен быть, потому что если другой программист удалит эту валидацию - где-то 100% должен упасть тест. Если ее надо было удалять, разработчик удалит и тест, если он случайно удалил - тест упал, он починил. Тесты для этого и нужны - для командной работы и возможности менять код.

    Рспеком очень легко тестировать рельсовые стандартные валидации, гем shoulda
    Ответ написан
    Комментировать
  • Как преобразовать массив в Relation?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Сортировку Вам портит база, значит и решение нужно искать на уровне базы данных. Для постгреса выбирайте любое тут - https://stackoverflow.com/questions/866465/order-b...

    Запрос придется построить динамически, но это не особо сложно.
    Ответ написан