[RubyOnRails]環境変数の取得
2006年06月18日(日)17:47|yumoto
湯本です。
今回は現在開発で使用しているRubyOnRailsについていくつかご紹介したいと思います。
~環境変数の取得~
Rubyで環境変数を使用したい場合は
ENV[key]
の形で記述しkeyに対応する環境変数の値を取得しますが、RubyOnRails(以下、RoR)で環境変数を取得する場合、上記形式で取得出来なくなる場合があります。詳しくは「RailsによるアジャイルWebアプリケーション開発」の第16章chapter4のコントローラの環境の項にリクエストオブジェクトについての記述があり、ブラウザによって設定された環境変数の値へのアクセス方法が記載されています。また、Rails Framework DocumentやRuby on RailsにもRequestやsessionについての記述がありますので参考になります。
・Requestによる環境変数の取得
request.env[key]
またRoRで使用するサーバーとして候補に上げられるものはWEBrick,Apache-cgi,Apache-fcgi,lighttpdになるのですが、このWebサーバーによって環境変数の設定方法が変わってくるためここもハマりどころのひとつでしょう。
~Timeout処理について~
サイトの規模によって、情報の取得に時間かかるものが出てくるためタイムアウトの処理が必要になってきます。今回紹介するのはRoRというわけではなくRubyによる処理なのですが、仕事で触れることがありましたので紹介したいと思います。Timeout処理の記述は以下の通りです。
begin ... rescue Timeout::Error ... end
begin内での処理中にTimeoutが発生した場合、rescue Timeout::Error内の処理が行われます。
私が開発しているものではNet::HTTPライブラリを使用しており、その部分で以下のようにTimeoutの秒数指定を行い、指定秒が経過した場合にTimeoutが起こるようにしています。
net_http=Net::HTTP.new(host) net_http.open_timeout=(秒数)
上記はhost接続時における秒数指定のTimeoutですが、読み込み時におけるTimeoutの設定は以下の通りです。
net_http.read_timeout=(秒数)
状況に応じて使い分けると良いでしょう。