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

On Apr 10, 3:47pm, Jedrin [email protected] wrote:

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

On Apr 25, 8:56am, Jedrin [email protected] wrote:

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