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

Posted by hsbt (Hiroshi SHIBATA) (Guest)
on 2012-11-06 07:35
(Received via mailing list)
Issue #7286 has been reported by hsbt (Hiroshi SHIBATA).

----------------------------------------
Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by naruse (Yui NARUSE) (Guest)
on 2012-11-06 07:46
(Received via mailing list)
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 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32472

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by xibbar (Takeyuki Fujioka) (Guest)
on 2012-11-06 08:24
(Received via mailing list)
Issue #7286 has been updated by xibbar (Takeyuki Fujioka).


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

うーむ。
----------------------------------------
Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32473

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by knu (Akinori MUSHA) (Guest)
on 2012-11-06 08:39
(Received via mailing list)
Issue #7286 has been updated by knu (Akinori MUSHA).


CGIのHTML出力機能を使っているスクリプトで cgi.header を使っているものは少なくないと思うので、この変更は痛いですね。
妥協案としては、3を採用しつつ、
- ブロックが渡されていたらタグを出力する
および
- 他のタグ生成メソッドのブロック内ではタグを出力する
ようにしておいて、ブロックなしの呼出には(将来変わるかもしれないからhttp_headerを使えと)警告を入れるということでどうでしょう。
----------------------------------------
Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32476

Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-06 11:32
(Received via mailing list)
Issue #7286 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned

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

これはちょっとまずそうですね。今から 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 #=> "<HEADER></HEADER>"

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

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32483

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by xibbar (Takeyuki Fujioka) (Guest)
on 2012-11-06 12:58
(Received via mailing list)
Issue #7286 has been updated by xibbar (Takeyuki Fujioka).


ちょっと方針を誤解していたことと、やはりインパクトが大きいので、
3にするコードを書いてみて、英語圏の方に議論してくれている2人と
redmineでやりとりしてみましょうか。
----------------------------------------
Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32492

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-06 13:13
(Received via mailing list)
Issue #7286 has been updated by mame (Yusuke Endoh).


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

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

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

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #7286: CGI#header が 1.9.3 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32494

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Posted by xibbar (Takeyuki Fujioka) (Guest)
on 2012-11-07 02:37
(Received via mailing list)
Issue #7286 has been updated by xibbar (Takeyuki Fujioka).


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 と異なる挙動となっている
https://bugs.ruby-lang.org/issues/7286#change-32527

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: Normal
Assignee: xibbar (Takeyuki Fujioka)
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リリース後にした方が良いと思います。
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.