Если у вас есть общее хранилище, напишите before_action, которая перезагружает маршруты при каждом прикосновении к конкретному файлу, и коснитесь этого файла, если вы хотите, чтобы все экземпляры перезагружали маршруты.
ы можем заставить Rails reload_routes на нескольких серверах / экземплярах?
У нас есть многопользовательская платформа в Google App-Engine, работающая на 5+ экземплярах, и мы хотим, чтобы все наши сайты определяли свой собственный набор маршрутов из серверной части. Каждый раз, когда у нас появляется новый сайт, нам необходимо перезапустить все серверы, чтобы получить доступ к новым маршрутам.
Мы следили за этимруководство но он работает только в локальной среде и не обновляет маршруты навсе серверы в производстве без перезапуска серверов.
Наши файлы маршрутов выглядят так:
routes.rb
Frontend::Application.routes.draw do
root 'home#index'
...
DynamicRoutes.load
end
Библиотека / dynamic_routes.rb
def self.load
Frontend::Application.routes.draw do
Site.all.each do |site|
site.routes.each do |custom_route|
route_name = custom_route[0]
route = custom_route[1]
# write the route with the host constraint
self.constraints(:host => site.hostname) do
case route_name
when :contact_form
mapper.match "#{route}", to: 'contact_forms#new' as: "contact_#{site.id}"
end
...
end
end
end
end
end
def self.reload
Frontend::Application.reload_routes!
end
после каждого обновления маршрутов или создания нового сайта мы запускаемDynamicRoutes::reload