Rubyのお願いです。$scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https';

$http_url = $scheme . '://' . $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
上記のPHPソースをRubyで書くとどうなるのでしょうか?どなたか助けて下さい。$_SERVERが難しくてよくわかりませんToT

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/07/25 23:05:10
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント100pt

質問のコードに忠実に書くと、

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}"
}
id:hayaiee

丁寧なご回答ありがとうございました!

2011/07/26 09:57:18

その他の回答1件)

id:nuna No.1

回答回数32ベストアンサー獲得回数11

ポイント100pt

PHP詳しくないですが、Rubyの場合はENVで環境変数がとれます。

scheme = ENV['HTTPS'] == 'on' ? 'https' : 'http'

url = "#{scheme}://#{ENV['HTTP_HOST']}:#{ENV['SERVER_PORT']}#{ENV['REQUEST_URI']}"

id:hayaiee

わざわざありがとうございます!助かりました^^

2011/07/26 09:57:54
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント100pt

質問のコードに忠実に書くと、

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}"
}
id:hayaiee

丁寧なご回答ありがとうございました!

2011/07/26 09:57:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません