what does "use" statement do ?

I have left my ruby books at home. I am looking at some code that has
stuff like

use Rack::Flash

and some other more complex statements similar to that. I am not sure
what "use" does and it is too common a word to google. Any links or
explanations would be appreciated ..

Thanks

I have left my ruby books at home. I am looking at some code that has
stuff like

use Rack::Flash

This (in a rack configuration file) tells rack to add the Rack::Flash
middleware to the middleware stack. Hopefully that gives you something
more explicit to google for

Fred.

Here is another one I don't quite understand. It seems like
RequestLog is used for logging http requests,
but I am not sure how it is getting set up. The second part
where :logger is seen doesn't quite make sense either.

Is the ruby use statement similar to the Perl use statement ? I saw
some site trying to explain it in Perl a bit. I guess I need to try to
locate my Programming in Ruby book tonight hopefully.

if $config['mongo']

      begin

        require 'request_log'
        # customize the middleware with our own fields
        use RequestLog::Middleware,
                 :logger => lambda { |data|
RequestLog::Db.requests.insert(data.attributes.merge({:port =>
data.env['SERVER_PORT'], :appname => "myapp"})) }

      end

RequestLog is apparently from here:
http://rubydoc.info/gems/request_log/0.1.2/frames

It's starting to make a little more sense, as RequestLog::Middleware
is a class I just realized, but I am not used
to this type of approach ..

module RequestLog
  class Middleware
    def initialize(app, options = {})
      @app = app
      @logger = options[:logger] || lambda { |
data> ::RequestLog::Db.requests.insert(data.attributes) }
      @profiler = options[:profiler] || ::RequestLog::Profiler
      @timeout = options[:timeout] || 0.3
      @only_path = options[:only_path]
    end

..
end
..
end

Here is another one I don't quite understand. It seems like
RequestLog is used for logging http requests,
but I am not sure how it is getting set up. The second part
where :logger is seen doesn't quite make sense either.

Is the ruby use statement similar to the Perl use statement ? I saw
some site trying to explain it in Perl a bit. I guess I need to try to
locate my Programming in Ruby book tonight hopefully.

There is no ruby use statement. Rack defines a use method (probably
using instance_eval, which is why it looks like you're calling a top
level method) that takes a class as its argument, instantiates it and
pushes it onto its list of middlewares

Fred