routing_concerns или будущее маршрутизации в Ruby on Rails 4.0
июля 3, 2012 | Published in Ruby on Rails, Ruby on Rails 3 | 4 Comments
Всего 5 дней назад DHH добавил новый репозиторий организации Rails на Github. представляет собой расширение Rails проверенное на работоспособность только с Rails 3.2 и предназначенное для выDRYивания кода маршрутизации.
Принцип работы плагина простой, вы объявляете concern’ы, а в них помещаете код общий для нескольких ресурсов.
Как есть:
resources :posts do resources :comments resources :photos end resources :photos do resources :comments end resources :topics do resources :comments end resources :events do resources :comments resources :photos end
Как будет, если вы будете использовать routing_concerns:
concern :commentable { resources :comments } concern :photo_attachable { resources :photos } resources :posts, concerns: [:commentable, :photo_attachable] resources :events, concerns: [:commentable, :photo_attachable] resources :photos, concerns: [:commentable] resources :topics, concerns: [:commentable]
Это в моем убогом примере используются только ресурсы, на практике в concern’ах могут быть использованы любые правила роутинга, например так:
concern :removable do post :move_to_trash, on: :member end
routing_concerns позволяют очень сильно вычистить код roures.rb. Если вы работаете над крупным приложением с десятками контроллеров и сложными вложениями, то routing_concerns сильно упростит вашу работу и сделает код определения маршрутизации более понятным.
Установить routing_concerns можно добавив его в Gemfile вашего приложения и запустив команду bundle install.
Расширение routing_concern — это прототип того, что будет встроено в Rails 4.0. Как видите, Rails 4.0 готовит множество ништяков, помимо увеличения производительности, уменьшения потребления RAM и отказа от поддержки Ruby 1.8.
июля 4, 2012 at 08:55 (#)
Опечатка в примерах кода
[language="ruby"]
resources :events, concerns: [:commentsble, :photo_attachable]
resources :photos, concerns: [:commentsble]
[/language]
июля 4, 2012 at 13:32 (#)
еба… Что за речь — ништяки, убогие примеры…
июля 4, 2012 at 13:43 (#)
Sergey, спасибо, поправил.
dmon_s, я на роль Шекспира и не претендую.
июля 4, 2012 at 14:20 (#)
> еба… Что за речь — ништяки, убогие примеры…
еба… Что за речь — еба…