# File lib/url_mount.rb, line 64
  def url(env = {}, opts = {})
    unless env.key?('rack.version')
      opts = env
      env  = nil
    end

    @callbacks.each{|blk| blk.call(env,opts)} if env

    requirements_met =  (local_required_variables - (opts.keys + options.keys)).empty?

    if !required_to_generate? && !requirements_met
      nil
    else
      raise Ungeneratable, "Missing required variables" if !requirements_met
      path = local_segments.inject([]){|url, segment| str = segment.to_s(opts); url << str if str; url}.join
      match = /(.*?)\/?$/.match(path)
      result = match[1]
      path = url_mount.nil? ? result : File.join(url_mount.to_s(opts), result)
      _host   = opts.delete(:host)    || host
      _scheme = opts.delete(:scheme)  || scheme
      if _host || _scheme
        _scheme ||= "http"
        raise Ungeneratable, "Missing host when generating absolute url" if _scheme && !_host
        uri = URI.parse(path)
        uri.host    = _host
        uri.scheme  = _scheme || "http"
        uri.to_s
      else
        path
      end
    end
  end