Search
Write a publication
Pull to refresh

Comments 21

Теперь можно путешествовать во времени без Timecop. github.com/rails/rails/pull/12824

Module#concerning это как ActiveSupport::Concern, но в том же файле, чтобы не нужно было искать что где реализовано. Использовать его нужно когда вы не собираетесь includ'ить concern в несколько моделей.
Так же замечательно обновился.
Честно говоря, я бы оценил релиз не самым интересным, вот почему:
— Spring все могли использовать и до этого, кто-то даже предпочитал Zeus, я понимаю DHH, что он пользует это при разработке Basecamp, но все же история похожа на Turbolinks, хотя в целом диктат в таких вещах понятен, он приводит хотя бы к стандарту, но какой ценой
— функционал Enums не то, что бесполезен в сравненнии с State Machine, но и вреден, например задали список значений, заполнили базу, а потом передумали или случайно изменили порядок, приват каша
— Mail Preview так же похоже на историю со Spring, есть замечательно работающий mailcatcher который удобен и намного шире функционалом, призадуматься бы как его привнести в разработку в Rails по умолчанию или не тащить ничего такого лишнего
— secrets.yml вообще выглядит как наивная шутка, особенно стоит ожидать фэйлов в ближайшем времени на поске по github кто обновит проекты с версий < 4.1 и забудет в gitignore добавить

— самое отличное обновление это default_scope давно пора было это исправить и сделать нормально, спасибо.

Ну и при обновлении был только маленький нюанс с State Machine, но он легко патчится github.com/pluginaweek/state_machine/issues/251
Мне кажется enums неправильно рассматривать как аналог state machine, он скорее был введен для поддержки однородных списков, которым не нужны колбеки, валидации и транзакционность. Например такое поле как пол (мужской, женский), будет очень удобно реализовать через enums.
Наверное было бы удобно, если бы не легкость сломать это все.

было:
enum sex: [ :man, :woman]

решили и добавили для Таиланда через полгода собранных отзывов:
enum sex: [:ladyboy, :man, :woman]

и все пошло не так.
человеческий фактор может поломать что угодно ;) но такая вот реализация должна свести на минимум подобные ошибки
enum sex: {woman: 0, man: 1}
нет. все может работать.
enum sex: [:man, :woman, :ladyboy]

с добавлением в конец проблем никаких нет.
Добавл в начало, как раз чтобы показать ненадежность и легкость совершить ошибку, это же массив, тут даже перестановка может поломать все.
Добавление в начало массива (или изменение порядка) ломает много гемов. Например easy_roles (когда mask метод используется). Так что многие уже привыкли к такому поведению. Да и комментарий рядом написать с предупреждением никто не мешает. И code review тоже никто не отменял.
Так что многие уже привыкли к такому поведению.

Это я понимаю, что сломать можно, что угодно, особенно в Ruby с таким богатым инструментарием, но ведь плохоже же тянуть потенциальную проблему с таким решеним в стандартную установку Rails 4, разве нет?

Если что-то может сломаться, это обязательно сломается © 1-ый закон Мёрфи
У вас неправильный порядок: всякому известно, что man это единичка, а woman — нолик.
А зачем добавлять secrets.yml в gitignore? Как раз удобно иметь его в репозитории, чтобы избежать трюкачества при деплое. И генератор нового приложения в Rails 4.1, кстати, его в gitignore не добавляет.
Чтобы потом ключами не светить на весь github например.
Ну так для этого переменные окружения есть.
Все пошло по новой, ок, а secrets.yml для чего тогда?
Это официальный способ хранения конфируации теперь (в том числе секретных ключей, но не только). Вы смотрели на secrets.yml, который создается генератором нового приложения? Там по-умолчанию пробиты значения для test и development окружения, а для production берется из окружения (через ERB). Соответсвенно, когда разработчик берет код из репозитория, у него локально все сразу работает. При деплое тоже не надо создавать/линковать никаких файлов, достаточно выставить переменные окружения. Ну и при этом доступ к конфигурации из приложения через Rails.application.secrets. Вроде все удобно (если, конечно, в gitignore не добавлять).
ОК, ваши доводы, что если делать правильно ясны.
А я вам говорю, что без этого костыля можно было обходиться как и раньше используя Figaro например, как раз это и отнес к сомнительным нововведениям. А тут заведомый trap, так что давайте поживем и посмотрим сколько ключей уплывут таким образом в github, а не через окружение.
Ну вот, по-моему, основная ценность как раз в том, что теперь есть официальный способ делать это без костылей. Раньше кто-то использовал Figaro, кто-то RailsConfig, кто-то свои yaml-ы, инициалайзеры и другие костыли. Нравится вам Figaro — используйте, никто не заставляет переходить. Но для тех кто начинает новый проект на рельсах, теперь на одну проблему меньше. На мой взляд, это хорошее нововведение, а никак не костыль.
Минимальная версия gem'а mysql2 теперь 0.3.13. При неподходящей версии выводит сообщение, что gem не подключен или неправильная версия.
Sign up to leave a comment.

Articles