Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

vsuhachev

  • 153
    вклад
  • 2
    вопроса
  • 265
    ответов
  • 33%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как перевести сообщения об ошибке GraphQL для Rails 6 используя интернационализацию?

    vsuhachev @vsuhachev
    Один за вариантов - собрать перевод из мета-информации которая есть в сообщении об ошибке. Завязаться на код ошибки как идентификатор для локализации

    require "json"
    require "i18n"
    
    errors = JSON.parse(<<~JSON, symbolize_names: true)[:errors]
      {
        "errors": [
          {
            "message": "Argument 'facultativeMark' on InputObject 'FacultativeMarkAttributes' is required. Expected type Int!",
            "locations": [
              {
                "line": 2,
                "column": 52
              }
            ],
            "path": [
              "mutation addfacultativMark",
              "addFacultativeMark",
              "attributes",
              "facultativeMark"
            ],
            "extensions": {
              "code": "missingRequiredInputObjectAttribute",
              "argumentName": "facultativeMark",
              "argumentType": "Int!",
              "inputObjectType": "FacultativeMarkAttributes"
            }
          }
        ]
      }
    JSON
    
    I18n.available_locales = [:ru]
    I18n.locale = :ru
    
    I18n.backend.store_translations(:ru, YAML.load(<<~YAML)["ru"])
      ru:
        external_api:
          errors:
            missingRequiredInputObjectAttribute: Аргумент '%{argumentName}' для '%{inputObjectType}' является обязательным. Ожидается тип '%{argumentType}'
    YAML
    
    errors.each do |error|
      vars = error[:extensions].dup
      code = vars.delete(:code)
      error[:message_en] = error[:message]
      error[:message] = I18n.t(code, scope: "external_api.errors", **vars)
    end
    
    pp errors
    Ответ написан более года назад
    4 комментария
    4 комментария
  • Зачем мне dry-rb валидатор в rails приложении?

    vsuhachev @vsuhachev
    Если у вас по каким-то причинам принимаемые на вход данные и модели не совпадают 1-в-1, то входящие данные проще валидировать не через модели, а отдельным вадидатором, а потом уже преобразовать в модели. Такой валидатор можно написать на ActiveModel, Dry, json-schema или еще как, тут вопрос ваших предпочтений. Валидации в модели они не заменяют, их все равно лучше написать (аналогично с внешними ключами, уникальными индексами и прочими ограничениями на уровне БД).

    Так а почему dry? У dry-подхода есть полезные особенности, например типы/схемы/структуры легко переиспользовать, ими проще проверять сильно вложенные данные, можно гибче настроить проверки(в сравнении с ActiveModel). Из минусов можно назвать то, что оно пока не устаканилось, бывают ломающие изменения. Не всегда есть исчерпывающая документация, сообщество не такое большое как у рельс.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как решить проблему ruby с установкой nio4r и json?

    vsuhachev @vsuhachev
    Подскажите, как это победить? В Google для себя решения найти не смог, так как почти везде советуют поставить Devkit b gcc, но мне это не помогло


    Вам нужно ставить инструменты сборки на целевой машине и это не только компилятор gcc, но и всякие утилиты типа make, autoconf и т.п. Это можно сделать и в самом Шефе через соответствующий кукбук.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Является ли ruby вымирающим языком?

    vsuhachev @vsuhachev
    Умирает/не умирает - это все субъективно. Для кого-то он уже умер, для свидетелей секты "статической типизации" изначально был мертвым :)

    Объективно Ruby:
    • Поддерживается
    • Развивается. Появляются новомодные фичи типа jit, паттерн-матчинга, вывода типов, ractors. Оптимизируется.
    • Используется в проде (вакансии есть)
    • Имеет огромное комьюнити
    • Имеет кучу библиотек (rubygems)


    Ну и еще общее соображение - для программиста не зазорно знать несколько языков. Даже если руби вам не пригодится, время потрпченное на него не уйдет впустую... ООП он более-менее одинаковый везде, SOLID применим и на php и на java, навыки написания тестов пригодятся и на js...

    Вобщем не парьтесь, если нравится - учите. Многие вообще с Бэйсика-Паскаля начинали, и ничего.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как исправить ошибку "cap aborted! rbenv: bundle: command not found"?

    vsuhachev @vsuhachev
    Похоже, что у вас на удаленном хосте не установлен бандлер. Для старых версий руби он не был дефолтным гемом. Вам нужно его поставить руками на удаленном хосте, зайдя туда по ssh

    gem install bundler
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Как в Ruby эффективнее обработать stdin?

    vsuhachev @vsuhachev
    Если читать через единожды выделенный буфер, то все летает и память не ест..

    require "memory_profiler"
    
    report = MemoryProfiler.report do
      $stdout.sync = true
    
      buffer_size = 5_000
      buffer = String.new("", capacity: buffer_size)
    
      while (readed = $stdin.read(buffer_size, buffer))
        $stdout << readed
      end
    end
    
    report.pretty_print(to_file: "memory_profiler.log")



    Total allocated: 5545 bytes (4 objects)
    Total retained: 5041 bytes (1 objects)
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как в Rails, в классе-родителе, определить константу, чтобы значение было разным для "детей"?

    vsuhachev @vsuhachev
    class_attribute
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как узнать причину почему Ruby on Rails не подгружает стили?

    vsuhachev @vsuhachev
    Можно использовал 2 варианта:

    Первый: компилить ассеты перед сборкой образа и паковать `public/assets` в образ. А затем эту папку как volume цеплять в контейнер к nginx и писать соответствующий конфиг для nginx

    Второй: компилить ассеты в контейнере (включать servse_static_assets в рельсах) и настроить кэширование для ассетов на стороне веб-сервера.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Permission denied @ rb_file_s_symlink при установке libv8 через gem?

    vsuhachev @vsuhachev
    `Failed to build gem native extension` - для сборки гемов, поставляемых в исходниках нужен компилятор, библиотеки, туллчейн, етц... Вроде все это можно было настроить под Виндой, гуглите

    Второй способ - виртуалка с линукс
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как использовать шаблон формула из бд на ruby on rails?

    vsuhachev @vsuhachev
    Вы можете написать интерпретатор, исполняющий ваши формулы. Самый простой путь это сделать - освоить какую нибудь библиотеку для парсинга. На ruby я использовал treetop и citrus, последний вам подойдет.

    Поглядите пример для citrus, там как раз разбирается такой интерпретатор простейших выражений.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как создавать простые страницы на Rails?

    vsuhachev @vsuhachev
    есть гем high_voltage
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как реализовать модель конструктора?

    vsuhachev @vsuhachev
    Я решал такую задачу на РСУБД, особо сложного в ней ничего нет

    NoSQL я бы рекомендовал применять только если вы разрабатываете что-то гигантское, где необходимо горизонтальное масштабирование на много серверов. Сам по себе схема-лесс можно реализовать и на postgres или mysql с помощью типов json/jsonb.

    Целостность данных на прикладном уровне вам придется обеспечивать "вручную" (т.е. писать эту логику) в обоих случаях, независимо от хранилища.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Что выбрать для карьеры c# или ruby?

    vsuhachev @vsuhachev
    Выбирайте шарп! Иначе руби не полюбите :)
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Пытаюсь задать тему для gem kaminari, но выбивает ошибку, в чем дело?

    vsuhachev @vsuhachev
    он хочет имя темы, укажите default например.
    rails g kaminari:views THEME [options]
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как исправить ошибки при rake assets:precompile?

    vsuhachev @vsuhachev
    Подобные странные проблемы лечил установкой nodejs на девелоперском окружении (сейчас у вас therubyracer в качестве движка js)
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как избавиться от проблемы при eager load каталога lib и использовании кастомных шаблонов контроллеров?

    vsuhachev @vsuhachev
    Не выгружать `lib/templates` на продакшн, а так же как `app/assets`, `test` и другие ненужные вещи?
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Какие есть способы работы и организации схем объектов в React?

    vsuhachev @vsuhachev
    И что самое главное - они постоянно изменяются, после чего через отвалившиеся тесты приходится отлавливать в каких компонентах произошли изменения и там это все править.


    Мне кажется что проблема из организационной области. Обычно, неплохой идеей является сначала разработать спецификацию API, а уж потом что-то кодить.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Каковы недостатки Ruby?

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

    Новички приходя в профессию ищут то что "круто", и внезапно писать тонны фигурных скобок, звездочек и ; это круто. Папа может в си...
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Постоянно натыкаюсь на "Bundler::GemNotFound", сначала это был rake затем concurrent-ruby, как преодолеть?

    vsuhachev @vsuhachev
    therubyracer это интерпретатор js для венды. Вы вроде в линуксе, поэтому вам проще убрать therubyracer из гемфайла и поставить ноду (как пакет в систему)
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как кешировать изменения в HABTM связях?

    vsuhachev @vsuhachev
    Такого способа нет. Вам нужно писать код с учетом этой особенности.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • Drno
    • 11 ответов
    • 1 вопрос
  • HardBot
    HardBot
    • 7 ответов
    • 0 вопросов
  • VoidVolker
    VoidVolker
    • 7 ответов
    • 0 вопросов
  • Expert1222
    • 5 ответов
    • 0 вопросов
  • poly-titova
    Полина Титова
    • 5 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации