2017-04-08

SinatraでIPアドレスやユーザーエージェントなどのリクエスト情報を参照する

SinatraでIPアドレスやユーザーエージェントの情報を参照する方法です。

コード

IPアドレスの取得


get '/' do
  request.ip
end

ユーザーエージェントの取得


get '/' do
  request.user_agent
end

これまで特に必要なかったので知りませんでしたが、 requestオブジェクトでは以下のような情報が参照できるようです。


get '/' do
  t = %w[text/css text/html application/javascript]
  request.accept              # ['text/html', '*/*']
  request.accept? 'text/xml'  # true
  request.preferred_type(t)   # 'text/html'
  request.body                # request body sent by the client (see below)
  request.scheme              # "http"
  request.script_name         # "/example"
  request.path_info           # "/foo"
  request.port                # 80
  request.request_method      # "GET"
  request.query_string        # ""
  request.content_length      # length of request.body
  request.media_type          # media type of request.body
  request.host                # "example.com"
  request.get?                # true (similar methods for other verbs)
  request.form_data?          # false
  request["some_param"]       # value of some_param parameter. [] is a shortcut to the params hash.
  request.referrer            # the referrer of the client or '/'
  request.user_agent          # user agent (used by :agent condition)
  request.cookies             # hash of browser cookies
  request.xhr?                # is this an ajax request?
  request.url                 # "http://example.com/example/foo"
  request.path                # "/example/foo"
  request.ip                  # client IP address
  request.secure?             # false (would be true over ssl)
  request.forwarded?          # true (if running behind a reverse proxy)
  request.env                 # raw env hash handed in by Rack
end

今までは必要があったら調べるという感じでしたが、 ざっとでいいのでREADME呼んだ方が良さそうですね。

参考リンク

Ruby」の記事

最新のプログラミング記事