• Режим работы, как наладить?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Это нормальная стадия развития разработчика, обычно обостряется после чтения Макконела, Фаулера и дядьки Боба Мартина.
    Еще это бывает от того, что задачки скушные и хочется хоть как-то себя развлечь.

    Мне в свое время очень помогал трекер времени, я знал эстимейт и сколько уже потратил и если время почти закончилось, а решение где-то далеко - значит пора искать подходящее, а не идеальное.

    Но, так или иначе здравая програмиссткая лень возьмет верх, а накопленный опыт позволит решать задачи сразу хорошо.

    Это тоже опыт, и многие застревают в этом этапе на годы. То, что вы это понимаете - очень хорошо.

    Удачи, коллега ))
    Ответ написан
  • Какие книги почитать по функциональному программированию?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Сам год назад задавался подобным вопросом, книги прочел по эликсиру, эрлангу, окамлу и хаскелю. И только в книге по хаскелю первычной целью было объяснить функциональный подход, и только потом язык. Очень легко читается - https://www.ozon.ru/context/detail/id/8696277/
    Ответ написан
    Комментировать
  • Где можно найти туториалы тестированию RSpec на Ruby on Rails на русском?

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

    Если для себя, то самый простой вариант найти того, кто научит, и заплатить. Если разбираться самому, то только писать кучу тестов и следовать примерно следующему плану

    0 Что такое тест, общая концепция написания тестов, FactoryGirl и Faker, DatabaseCleaner
    1 Тесты на модель
    2 Тесты на контроллер
    3 Тесты на чистый руби класс
    4 Интеграционные тесты
    5 Интеграционные тесты с джаваскриптом
    6 Моки и стабы

    когда разберетесь с каждым из пунктов, останется только практика. Подсматривать как пишут другие можно тут - https://github.com/gitlabhq/gitlabhq/tree/master/spec
    Ответ написан
    Комментировать
  • Почему не перезапускается Puma (Rails)?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    У Вас не убивается пума, поэтому и не стартует новый инстанс сервера

    Решения Вашей проблемы 3
    1 Очень простой, но может и не получиться. Поиграть с версиями капистрано и пумы., может какае-то связка и заработает
    2 Ковырнуть исходники, посмотреть какие команды выполняются на restart и почему текущий сервер не убивается
    3 Использовать какую-либо тулзу для мониторинга сервера. Она же будет его перезапускать и будет делать это правильно. Простой вариант - гем https://github.com/ddollar/foreman, получше (но сложнее) -тулза https://mmonit.com/monit/
    Ответ написан
    Комментировать
  • Как делать бэкапы Postgresql по-простому?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    https://github.com/backup/backup - очень простой руби гем, хорошо настраивается, еще и нотификаки на почту присылает. Из простых инструментов лучше ничего не видел
    Ответ написан
    Комментировать
  • Летние стажировки в IT?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Пойдите на кафдру IT Вашего универа или самого круногов городе. Там обычно висят кучу объяв, заодно можно и в деканат зайти спросить.
    Ответ написан
    3 комментария
  • Как вставить картинку в React + Rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    assets_url используйте чтобы получить путь в ответе от API

    Если API не используете, его нужно положить в скрытый элемент в data атрибут и считать через javascript
    Ответ написан
  • Старые книги по UNIX. Представляют ли какую-то ценность?

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

    Вопросов много последнее время про книги, я даже пост накатал по этом поводу https://vk.com/rubyboost?w=wall-111011401_115%2Fall

    Автор, Администрирование, как и программирование очень растяжимое понятие. Нужно искать книги/мануалы/курсы именно под конкретные задачи, хотя для понимания внутреннего устройства никсов полезно будет что-то почитать. Выбираете любую книгу, читаете пару глав, смотрите нравится или нет
    Ответ написан
    Комментировать
  • Как использовать simple_form в rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    simple_form это всего лишь хелпер, т.е функция которая генерирует HTML Она не умеет никакой логики.

    Задача, которую вы пытаетесь решить очень нетривиальна, но решается примерно следующим образом

    1) Формируете правила формирования формы, какого типа поля на нее можно будет добавлять, какие значения доступны, валидации. Все эти правила удобнее всего хранить реляционной структурой

    2) Когда Вам нужно вывести форму, нужно построить новый класс на основе ActiveModel::Model этот класс будет иметь все возможности модели Rails но не будет привязан к конкретной таблице с ее полями. Этот класс навешивает сам на себя валидации и прочую логику, исходя из пункта 1

    3) Если база PostgreSQL то проще всего все значения сохранять в одно jsonb поле

    В общем случае задача которую вы описали довольно сложная, пример кода не покажу потому что его очень много, он Вас скорее запутает. Попробуйте сначала подумать, может быть можно поменять задачу, не разрешать добавлять абсолютно любые поля, а просто выбирать из нескольких наборов полей. Тогда хорошо работает STI все с тем же jsonb полем и доступом через store
    Ответ написан
  • Почему в production недоступен robots.txt?

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

    Руби слишком медленный, чтобы делать это в продакшене, там этим должен заниматься ваш основной веб сервер - nginx или на крайняк apache

    В config/environments/production.rb
    rails < 4 - config.serve_static_assets = true
    rails = 5 - config.serve_static_files = true
    Ответ написан
    9 комментариев
  • Можно ли попросить Вас о критике кода (code review)?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Привет, в принципе код неплох, можно лишь дать несколько общих советов

    Короткие имена переменных - плохая привычка, даже если они сразу используются
    Четко раздели публичные и приватные методы
    В методе execute, results - не самое удачное имя переменной, потому что это только промежуточные результаты, сам результат строится в последнем цикле
    Независимо от того, сам пишешь код, или в команде, всегда нужно стараться писать код так, как буд-то он пишется в команде. Например для функции track_points не помещает комментарием пример результирующего хеша, который она вернет. С ключами и значениями. Тот, кто будет читать этот код, сэкономит кучу времени

    метод ranges_to_score хоть и слишком длинный по рубишным канонам, выглядит довольно целостным, единственное замечание - if track.base? || elevation <= SKYDIVE_RANGE в постусловии - злоупотребление сахаром. Этот if там почти не видно.
    К этому методу также комментарием описал бы формат возвращаемого массива

    Можешь еще глянуть мой цикл статей об ошибках новичков в rails - c3gdlk.ru/blog/rails/ruby-on-rails-samye-rasprostr...
    я его писал на основе комментариев, которые оставляю к коду моих падаванов.
    Ответ написан
    2 комментария
  • Сколько стоит codereview и что дают на выходе?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Из Вашего вопроса не совсем понятно зачем Вам это нужно.

    Если проект разросся так, что его дальнейшее развитие невозможно, то тогда Вам как раз и нужен ревьювер и он будет стоить кучу денег. От 1500р в час, если Вам повезет.

    Если перед выпуском продукта хотите быть уверены. что все будет работать нормально, лучше покройте код тестами.

    Если вы хотите просто подтянуть качество кода и получить опыт, то есть gem https://github.com/whitesmith/rubycritic который укажет на много ошибок. Также у меня в блоге есть цикл статей, который описывает самые распространенные ошибки начинающего рейлс разработчика c3gdlk.ru/blog/rails/ruby-on-rails-samye-rasprostr... Некоторые из них просто рекомендации, что-то вроде style guide. Некоторые делают код и подход к работе намного лучше.

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

    Все логика в так называемых "Сервисах" - https://en.wikipedia.org/wiki/Service-oriented_arc...
    Хороший пример реализации, в который можно подсматривать - https://github.com/gitlabhq/gitlabhq
    Ответ написан
    Комментировать
  • Как перехватить исключение в блоке инициализации?

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

    def initialize(*args)
      if args.size == 3
         wagons, train_type, name = args
         #main logic here
      else
         #handle error
      end
    Ответ написан
    Комментировать
  • Как в Ruby on Rails в визуальном редакторе загружать картинки?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Вам нужно смотреть не документацию плагина, а документацию gema для этого плагина. Или любого другого, который понравится. Если gem умеет загружать ассеты, то в документации об этом будет написано. Я точно знаю, что ckeditor умеет https://github.com/galetahub/ckeditor , причем работает со всеми популярными загрузчиками файлов - carrierwave, dragonfly, refile, paperclip.

    Конкретно под tinymce есть отдельный гем для загрузки https://github.com/dreyercalitz/tinymce-rails-file...
    Ответ написан
    Комментировать
  • Зачем Rails прекомпилирует эссэты?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Кроме того в процессе компиляции к имени файла добавится дайджест - хеш который гарантирует, что у пользователя обновятся закешированные ассеты. Поэтому надо не забывать использовать image-url и прочие хелперы в Saas файлах
    Ответ написан
    Комментировать
  • Очередь задач resque. Одна большая или несколько мелких?

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

    Идеальный вариант, переехать на Sidekiq - он и сам по себе намного быстрее и при необходимости можно настроить количество задач, которые выполняются одновременно.

    Если такой возможности нет, то можно запускать одну большую задачу, отлавливать падение синхронизации через begin rescue чтобы не нарушать общий процесс. Для всех отловленных запустить отдельную задачу. Если их не много, то нагрузка возрастет только на время их обработки
    Ответ написан
    3 комментария
  • Почему в Rails 4.2.6 вместо DELETE у меня отправляется GET?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Метод подставляется с помощью javascript

    Он должен быть включен и в вашем манифесте должны бить подключены следующие файлы

    app/assets/javascripts/aplication.js

    #= require jquery
    #= require jquery_ujs
    Ответ написан
    Комментировать
  • Кто проходил удачные дистанционные курсы по Ruby on rails?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    Могу ответить с другой стороны, со стороны того, кто эти курсы ведет. С недавнего времени мы начали обучать всех желающих в стремлении найти себе нового сотрудника. Первый курс был основан на моем личном опыте, Второй, который мы начинаем, основан уже на анализе проблем новичков - мы выделили примерно 50 стандартных ошибок/вопросов, которые возникают у каждого новичка.

    Пообщайтесь с авторами курсов, поинтересуйтесь, как они решают Вашу задачу. Как правило, чтобы попасть на работу стажером, достаточно туториала Хартла и одного простенького приложения написанного самостоятельно.
    Если есть хороший опыт с хорошими PHP фреймворками, то можно и джуном попасть. Может быть и правда проще получить опыт в другой технологии, а потом найти интенсив который поможет быстро перейти.
    Ответ написан
    Комментировать
  • Как правильней записывать в БД связи?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    можно использовать accept_nested_attributes - https://robots.thoughtbot.com/accepts-nested-attri...
    Ответ написан
    Комментировать