$http_url = $scheme . '://' . $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
上記のPHPソースをRubyで書くとどうなるのでしょうか?どなたか助けて下さい。$_SERVERが難しくてよくわかりませんToT
質問のコードに忠実に書くと、
scheme = (! ENV['HTTPS'].nil? || ENV['HTTPS'] != 'on') ? 'http' : 'https' http_url = scheme + '://' + ENV['HTTP_HOST'] + ':' + ENV['SERVER_PORT'] + ENV['REQUEST_URI']
https の判定は、こっちの方が好みかな。
scheme = /on/i =~ ENV['HTTPS'] ? 'https' : 'http' http_url = scheme + '://' + ENV['HTTP_HOST'] + ':' + ENV['SERVER_PORT'] + ENV['REQUEST_URI']
というか、'on' と比較しているのは、IIS 対策だと思うんですけど、
IIS は、'ON' / 'OFF' で設定するんでは無かったかな、と。
http://php.net/manual/ja/reserved.variables.server.php
↑の 'PHP_SELF'、'argv'、'argc' 以外は、ENV から取得できます。
こんな CGI で、ENV から取得できる値の一覧が手に入ります。
puts "Content-type: text/plain; charset=Shift_JIS\n\n" ENV.each { |key, value| puts "#{key} : #{value}" }
PHP詳しくないですが、Rubyの場合はENVで環境変数がとれます。
scheme = ENV['HTTPS'] == 'on' ? 'https' : 'http'
url = "#{scheme}://#{ENV['HTTP_HOST']}:#{ENV['SERVER_PORT']}#{ENV['REQUEST_URI']}"