CGIで128MBよりもデカイファイルをアップロードするには(定数の変更)
gmailで困ったというメールが来たのでチケット化してみました。
https://bugs.ruby-lang.org/issues/8370
cgi.rbでは、一度にアップロードできるファイルサイズの上限を
定数で決めています。
CGI::MAX_MULTIPART_LENGTH = 128 * 1024 * 1024
件のメールでは、どうも、定数で上限が
決まっているから困ったと言っているようです。
しかし、Rubyは恐ろしいことに、定数は上書きラクショーです。
そのつもりで定数化しているのでした。
require 'cgi' CGI.class_eval{remove_const(:MAX_MULTIPART_LENGTH)} CGI::MAX_MULTIPART_LENGTH = 512 * 1024 * 1024
いきなり代入すると、warningが出て、気分が悪いので、
一旦remove_constしてから代入するとよろしいです。
Rubyってすごいですよね。
通常は定数で定義されていたら諦めるんだと思います。
なんでチケット化したかというと、仕様に取り込むかどうかを
決めたかったからですね。