Я разрабатываю драгоценный камень, который также является Rails::Engine
Я хотел бы, чтобы движок добавлял пользовательское промежуточное ПО в хост-приложение, и я сделал это с помощью следующего кода.
module MyModule
class Engine < ::Rails::Engine
isolate_namespace MyModule
initializer "my_gem.middleware" do |app|
app.config.app_middleware.use "MyModule::MyMiddleware"
end
end
end
Однако это также добавляет промежуточное ПО к тем маршрутам, которые определены в файле route.rb Engine. Как я могу этого избежать? Я только хочу, чтобы промежуточное программное обеспечение было добавлено в хост-приложение.
Например, рассмотрим следующие маршруты, определенные в хост-приложении.
Rails.application.routes.draw do
mount MyModule::Engine => "/engine"
root :to => Proc.new { |env| [200, {'Content-Type' => 'text/html'}, ["Hello World"]] }
end
Все, что ниже /engine
, НЕ должно проходить через MyMiddleware
Я, вероятно, иду по неправильному пути, чтобы добиться этого, и, может быть, мне следует поискать какое-то другое решение?