Если у вас есть общее хранилище, напишите 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

Ответы на вопрос(2)

Ваш ответ на вопрос