End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
CGI.new
# File tmp/rubies/ruby-3.0.5/lib/cgi/core.rb, line 850
def initialize(options = {}, &block) # :yields: name, value
@accept_charset_error_block = block_given? ? block : nil
@options={
:accept_charset=>@@accept_charset,
:max_multipart_length=>@@max_multipart_length
}
case options
when Hash
@options.merge!(options)
when String
@options[:tag_maker]=options
end
@accept_charset=@options[:accept_charset]
@max_multipart_length=@options[:max_multipart_length]
if defined?(MOD_RUBY) && !ENV.key?("GATEWAY_INTERFACE")
Apache.request.setup_cgi_env
end
extend QueryExtension
@multipart = false
initialize_query() # set @params, @cookies
@output_cookies = nil
@output_hidden = nil
case @options[:tag_maker]
when "html3"
require_relative 'html'
extend Html3
extend HtmlExtension
when "html4"
require_relative 'html'
extend Html4
extend HtmlExtension
when "html4Tr"
require_relative 'html'
extend Html4Tr
extend HtmlExtension
when "html4Fr"
require_relative 'html'
extend Html4Tr
extend Html4Fr
extend HtmlExtension
when "html5"
require_relative 'html'
extend Html5
extend HtmlExtension
end
end
Create a new CGI instance.
tag_maker-
This is the same as using the
options_hashform with the value{ :tag_maker => tag_maker }Note that it is recommended to use theoptions_hashform, since it also allows you specify the charset you will accept. options_hash-
A
Hashthat recognizes three options::accept_charset-
specifies encoding of received query string. If omitted,
@@accept_charsetis used. If the encoding is not valid, aCGI::InvalidEncodingwill be raised.Example. Suppose
@@accept_charsetis “UTF-8”when not specified:
Examplecgi=CGI.new # @accept_charset # => "UTF-8"
when specified as “EUC-JP”:
Examplecgi=CGI.new(:accept_charset => "EUC-JP") # => "EUC-JP"
:tag_maker-
Stringthat specifies which version of the HTML generation methods to use. If not specified, no HTML generation methods will be loaded.The following values are supported:
- “html3”
-
HTML 3.x
- “html4”
-
HTML 4.0
- “html4Tr”
-
HTML 4.0 Transitional
- “html4Fr”
-
HTML 4.0 with Framesets
- “html5”
-
HTML 5
:max_multipart_length-
Specifies maximum length of multipart data. Can be an
Integerscalar or a lambda, that will be evaluated when the request is parsed. This allows more complex logic to be set when determining whether to accept multipart data (e.g. consult a registered users upload allowance)Default is 128 * 1024 * 1024 bytes
Examplecgi=CGI.new(:max_multipart_length => 268435456) # simple scalar cgi=CGI.new(:max_multipart_length => -> {check_filesystem}) # lambda
block-
If provided, the block is called when an invalid encoding is encountered. For example:
Exampleencoding_errors={} cgi=CGI.new(:accept_charset=>"EUC-JP") do |name,value| encoding_errors[name] = value end
Finally, if the CGI object is not created in a standard CGI call environment (that is, it can’t locate REQUEST_METHOD in its environment), then it will run in “offline” mode. In this mode, it reads its parameters from the command line or (failing that) from standard input. Otherwise, cookies and other parameters are parsed automatically from the standard CGI locations, which varies according to the REQUEST_METHOD.