• Почему переменная в моделе меняется?

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

    Кроме того присваивание работает по ссылке, поэтому массив нужно именно скопировать

    class Book < ActiveRecord::Base
      DEFAULT_TYPES = ['Classics', 'Fantasy']
    
      after_initialize :set_default_book_types
    
      def book_types
        @book_types
      end
    
      def set_default_book_types
        @book_types = DEFAULT_TYPES.map(&:clone)
      end
    end
    Ответ написан
    Комментировать
  • Почему в Ruby нет абстрактного класса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    stackoverflow.com/questions/715604/why-do-dynamic-...

    По сути в ruby/python не нужны абстрактные классы. Во всяком случае так считали авторы языков, основываясь на идее, что в этих языках все проверки на существование методов происходят в рантайме, ну и можно в рантайме подменять методы и много чего еще творить с классами.
    Ответ написан
    Комментировать
  • Все ли в Ruby является объектами?

    @vsuhachev
    Вообще говоря любая сущность в конечном итоге является стркутурой/инстркуциями в памяти, т.е. "объектом". Вопрос в том можно ли получить доступ к этой сущности из runtime/compiletime/designtime/etc. К большинству таких сущностей в Ruby в рантайме можно иметь доступ как к стандартным объектам языка.

    Но например к командам(скомпилированному коду программы) такой доступ получить нельзя, хотя можно по другому - с помощью чтения исходников выполняемой программы из нее самой, изменением их и компиляции с помощью eval и передачи управления новому коду.

    Кстати, на заметку - контексты выполнения в функциях/блоках это тоже объекты языка (Binding)
    Ответ написан
    Комментировать
  • Почему задачи в sidekiq уходят на разные процессы?

    conf
    @conf
    Ruby developer
    Привет. Скорее всего у вас задачи с обоих окружений кладутся в одну базу данных в редисе. Попробуйте поиграться с настройками базы данных редиса, там это как-то указывается через урл, на память не помню. Ну и на всякий случай удостоверьтесь что правильно запускаете sidekiq, в нужном окружении и с нужным гемфайлом.
    Ответ написан
    Комментировать
  • Выбор архитекруты для websockeт'ов. eventloop или акторы?

    5HT
    @5HT
    Erlang
    TL;DR: Имплементация любой системы актеров автоматически является ивент лупом.

    Ивентлупом обычно называются планировщики, например в виде С библиотек таких как libuv, которая используется в node.js, Julia, Rust, а также в ивентлупом называют такие библиотеки как в D, например Vibe.D. Актеры Эрланга это больше чем просто планировщик, это также еще и система обмена сообщениями.

    Если вам не нужно чтобы ваши единицы планирования общались между собой, вам возможно не нужна система актеров, и можно будет быстро это написать прямо на C с использование libuv. Как только вы захотите чтобы единицы планирования общались между собой вам потребуется что-то больше чем просто цикл по стекам.

    Вопрос, к сожалению, не имеет смысла, так как Эрланг предоставляет даже больше чем просто систему актеров. Вы не найдете WebSocket сервер для Erlang который не поддерживает концепцию актеров, а также не найдете WebSocket сервер для Erlang который не поддерживает концепцию event loop.
    Ответ написан
    Комментировать
  • Есть ли перспектива у Ruby(RoR)?

    dmitry-polushkin
    @dmitry-polushkin
    Инженер программного обеспечения
    Глупо учить язык программирования, а не техники программирования (ФП, ОПП, рефакторинг, хайлоад, БД, алгоритмы, структуры данных и т.д.).

    Год назад я бы сказал, что у руби нет будущего (имею 7 лет опыта в Ruby on Rails), теперь я думаю, что на следующие 3-5 лет определённо запас мощности есть. Однако, вы всё же задумайтесь о том, что бы учить методы и техники, паттерны и способы взаимодействия с людьми через ЯП, а не сам ЯП. ЯП и фреймворк легко выучить, легко так же получить опыт, если действительно заинтересоваться. Куда легче всё это понять и выучить, когда ты понимаешь технологию. Да и в конце концов, можно и самому стать архитектором фреймворка и языка - тогда уж точно получите массу опыта и станете действительно сильным программистом.
    Ответ написан
    Комментировать
  • Как побороть свою лень?

    Bandicoot
    @Bandicoot
    Вась-программист
    Я просто сразу начинаю писать код, не думая о результате. Настраиваю себя на рабочий процесс. Потом, когда уже пойдет-поедет и я войду в состояние "потока", начинаю работать с умом. Просматриваю, что уже написал. При необходимости переписываю и решаю, что делать дальше.
    Сначала нужно вообще что-то сделать, затем сделать это правильно и потом сделать как следует.
    Ответ написан
    1 комментарий
  • Стоит ли сегодня переплачивать за сайт на ruby? Или сэкономить на php?

    @vsuhachev
    Расширяемое и производительное приложение можно разработать на любом языке, вопрос как всегда в исполнителях.

    Вы рассуждаете слишком наивно: вложу в 2 раза меньше и получу то же самое. Увы, получить вы можете все что угодно от в 10 раз лучше до в 10 раз хуже, независимо от технологии.

    Если речь идет об одном и том же разработчике - все равно одной технологией (PHP) он владеет лучше и возможно вам предлагают еще и оплатить свое обучение (Rails) с не прогнозируемым для вас результатом.

    Если это разные разработчики, то тут нужно смотреть и сравнивать. Возможно те кто просят дешевле и делают хуже. Или, например, стандартные требования укладываются в их CMSку, а вот расширенные - ценник может вырасти в 5 раз.

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

    PS: почитал тут про тормознутость ruby от коллег php-шников, кратко - это миф из давнего прошлого, современному положению дел не соответствует
    Ответ написан
    Комментировать
  • Какой есть движок блога с кармой как на stackexchange.com и возможностью сворачивать ветки "срачей" как на slashdot.org?

    Freika
    @Freika
    Senior Ruby on Rails developer
    Дак пилите, кто вам мешает.
    Ответ написан
    Комментировать
  • Почему r-o-r выдает ошибку при попытке осуществить проверку на приемлемость введенной строки?

    @rsludge
    Все не совсем так. Ваше регулярное выражение в целом валидно, но для обозначения начала и конца строки ( а не линии внутри строки) следует использовать не ^ и $, а \A и \z. Это настолько частая ошибка, идущая от незнания особенностей регулярок в руби, что в свое время было бурное обсуждение того, что это нужно изменить. В итоге видимо просто добавили в рельсу предупреждение в виде ошибки.
    Чтобы понятно было, в чем именно ошибка:
    "filename.png\n some other text" будет валидной, хотя не должна.
    Ответ написан
    1 комментарий
  • Какой функциональный язык программирования выбрать для изучения в свободное время?

    afiskon
    @afiskon
    Erlang - учится быстро, легко перейти с Python, один из немногих функциональных языков, активно использующийся нынче в продакте.

    Haskell - разорвет мозг на много маленьких кусочков (в хорошем смысле). Благодаря Haskell вы навсегда измените свои представления о программировании. Знания, полученные в процессе его изучения, пригодятся на протяжение всей карьеры независимо от того, на чем на самом деле будете писать.

    Я об этих языках время от времени пописываю в своем бложике. Можете почитать тынц, тынц и далее по ссылкам.
    Ответ написан
    Комментировать
  • Есть ли сервис для ревью кода?

    TrueDrago
    @TrueDrago
    Простите, но сразу вспомнился Говнокод.ру
    Ответ написан
    Комментировать