Search code examples
rubythinpadrino

Inserting middleware in Padrino


I have a skeleton Padrino (0.10.7) project, with pretty much no code. I am trying to insert a middleware in boot.rb:

##
# Add your after (RE)load hooks here
#
Padrino.after_load do
    DataMapper.finalize
    Padrino.use MyClass      #Line (1) added by me
end

Padrino.load!

In MyClass,

class MyClass
    def initialize arg
    @arg = arg
    end
end

If I try to use thin server (1.5.x), I get this exception (only when I insert my middleware):

Uncaught exception: app required

Same works fine with builtin webrick.

Any idea on how to make it work with thin?


Solution

  • Never mind, found it. Basically, you need to define the call (env) method too, otherwise it wont even start the server. This is what minimum is required from a middleware:

    class MyClass
        def initialize app
            @app = app
        end
        def call env
            @app.call env
        end
    end