2011-04-20 24 views
6

que tiene una joya que ofrece algunos middleware bastidor, la única manera en que puedo conseguir que funcione es colocar esto en mi application.rbAñadir automáticamente middleware bastidor con una joya

config.middleware.use "TBBC::Editor::Middleware" 

¿Cómo puedo hacerlo para que este middleware se use automáticamente cuando mi gema se usa en un archivo Gem de aplicaciones?

Respuesta

12

Si tiene la intención de que su joya se use con Rails 3, podría proporcionar un Railtie. Luego puede cargarlo automáticamente en caso de que se use Rails.

Asumiendo el nombre de su joya es tbbc, colocar esto en lib/tbbc/railtie.rb:

module TBBC 
    class Railtie < Rails::Railtie 
    initializer "tbbc.insert_middleware" do |app| 
     app.config.middleware.use "TBBC::Editor::Middleware" 
    end 
    end 
end 

En lib/tbbc.rb:

require "tbbc/railtie" if defined? Rails 

No se puede agregar automáticamente el middleware para aplicaciones de rack genéricos. Para aplicaciones que no son Rails, esto será algo que el usuario tiene que hacer.

+0

Parece que no funciona, agregué una línea de puesta en el bloque de inicialización y no parece que se haya ejecutado – Arcath

+0

¿Se está cargando el archivo? ¿Y la clase es una subclase de 'Rails :: Railtie'? – molf

+0

El archivo se está cargando, solo el bloque no se está ejecutando. ¿Cómo podría decir si es una subclase? – Arcath

Cuestiones relacionadas