[ruby-trunk - Bug #7286][Open] CGI#header が 1.9.3 と異なる挙動となっている

Issue #7286 has been reported by hsbt (Hiroshi SHIBATA).


Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by naruse (Yui NARUSE).

hsbt (Hiroshi SHIBATA) wrote:

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9 系に戻して、新しい機能はメソッド名を
header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

100%互換とかただの根拠のない噂なので、あまり広めないでください!

Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by knu (Akinori MUSHA).

CGIのHTML出力機能を使っているスクリプトで cgi.header を使っているものは少なくないと思うので、この変更は痛いですね。
妥協案としては、3を採用しつつ、

  • ブロックが渡されていたらタグを出力する
    および
  • 他のタグ生成メソッドのブロック内ではタグを出力する
    ようにしておいて、ブロックなしの呼出には(将来変わるかもしれないからhttp_headerを使えと)警告を入れるということでどうでしょう。

Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by mame (Yusuke E.).

Status changed from Open to Assigned

問題報告ありがとうございます > 柴田さん
ちゃんと考えてなかったので見逃してました (Zachary S. が文句言ってくれてたのに) 。

これはちょっとまずそうですね。今から cgi.rb で html5 書くユーザと、cgi.rb で
書かれたレガシーコードをメンテする可哀想なユーザ、多分後者の方が多いと思うので。

といいつつ、既存コードで CGI.new(“html5”).header って書かれてる可能性ってどのくらい
ありますかね。考えにくければ、以下のような感じにするのが素直じゃないでしょうか。

puts CGI.new .header #=> “Content-Type: text/html” +
deprecated 警告
puts CGI.new(“html4”).header #=> “Content-Type: text/html” +
deprecated 警告
puts CGI.new(“html5”).header #=> “”

つまり xibbar さんの 3 ですが。


Yusuke E. [email protected]

Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by xibbar (Takeyuki F.).

  1. 現状のまま
  2. HTML4以前の時のみ、CGI#headerの挙動を変える
  3. HTML5の時のみ、CGI#headerの挙動を変える

うーむ。

Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by xibbar (Takeyuki F.).

ちょっと方針を誤解していたことと、やはりインパクトが大きいので、
3にするコードを書いてみて、英語圏の方に議論してくれている2人と
redmineでやりとりしてみましょうか。

Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by xibbar (Takeyuki F.).

CGI#http_headerを新設という方向は変えずに、
html4までは
alias :header :http_header
が効くようにして、
html5の時は、
CGI#headerが上書きされるような仕様にしておこうかと思います。

— a/lib/cgi/core.rb
+++ b/lib/cgi/core.rb
@@ -171,6 +171,7 @@ class CGI
return buf
end
end # http_header()

  • alias :header :http_header

    def _header_for_string(content_type) #:nodoc:
    buf = ‘’


Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。

Issue #7286 has been updated by mame (Yusuke E.).

xibbar (Takeyuki F.) wrote:

ちょっと方針を誤解していたことと、やはりインパクトが大きいので、
3にするコードを書いてみて、英語圏の方に議論してくれている2人と
redmineでやりとりしてみましょうか。

いいと思います。よろしくおねがいします。

方針について余談ですが、「100% 互換」のスローガンは、機能の議論を加速させるのに大変役立ったと思っています。
しかし一般ユーザに対する売り文句としては、衆目を集めるメリットより、ちょっとしたことで失望させるデメリットの方が大きそうなので、あんまり声高に主張しないほうがいいんじゃないかと思っています。(preview1
のリリースアナウンスでも書いてません)


Yusuke E. [email protected]

Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki F.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-11-06 trunk 37486) [x86_64-darwin12.2.0]

http://bugs.ruby-lang.org/issues/show/7110 の変更の結果、CGI#header の挙動が 1.9
系と異なる挙動となっています。

2.0.0 は 100% 互換という方針だったと思うので、今の trunk の CGI#header は 1.9
系に戻して、新しい機能はメソッド名を header_tag 等にするか、変更自体を2.0.0リリース後にした方が良いと思います。