Ну, do ... end
создает блок.Если у вас есть блок, который повторяется, вы можете вместо этого сохранить его в переменную, превратив его в Proc, передав ему Proc.new
или proc
(последний - просто сокращение для первого):
res = Proc.new do
resources :users
resources :orders
end
Затем вы можете передать Proc (res
) в качестве аргумента блока любому методу, который ожидает блок, добавив к нему &
:
constraints :subdomain => 'api' do
scope :module => 'api', &res
end
namespace :api, &res
Вот отличная статья об использовании блоков, процедур и лямбд в Ruby.