diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 4b5657a57955b..669732a148a3c 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Prefer MIME constants to strings. #7707 [Dan Kubb] + * Allow array and hash query parameters. Array route parameters are converted/to/a/path as before. #6765, #7047, #7462 [bgipsy, Jeremy McAnally, Dan Kubb, brendan] # Add a #dbman attr_reader for CGI::Session and make CGI::Session::CookieStore#generate_digest public so it's easy to generate digests diff --git a/actionpack/lib/action_controller/deprecated_request_methods.rb b/actionpack/lib/action_controller/deprecated_request_methods.rb index a6cf87e358886..93663bdda4063 100644 --- a/actionpack/lib/action_controller/deprecated_request_methods.rb +++ b/actionpack/lib/action_controller/deprecated_request_methods.rb @@ -6,10 +6,10 @@ class AbstractRequest # For backward compatibility, the post format is extracted from the # X-Post-Data-Format HTTP header if present. def post_format - case content_type.to_s - when 'application/xml' + case content_type + when Mime::XML :xml - when 'application/x-yaml' + when Mime::YAML :yaml else :url_encoded diff --git a/actionpack/lib/action_controller/mime_type.rb b/actionpack/lib/action_controller/mime_type.rb index 17b3d861ec47d..b179fe2f892e4 100644 --- a/actionpack/lib/action_controller/mime_type.rb +++ b/actionpack/lib/action_controller/mime_type.rb @@ -24,7 +24,7 @@ class AcceptItem #:nodoc: def initialize(order, name, q=nil) @order = order @name = name.strip - q ||= 0.0 if @name == "*/*" # default "*/*" to end of list + q ||= 0.0 if @name == Mime::ALL # default wilcard match to end of list @q = ((q || 1.0).to_f * 100).to_i end @@ -70,7 +70,7 @@ def parse(accept_header) # Take care of the broken text/xml entry by renaming or deleting it text_xml = list.index("text/xml") - app_xml = list.index("application/xml") + app_xml = list.index(Mime::XML.to_s) if text_xml && app_xml # set the q value to the max of the two @@ -84,9 +84,9 @@ def parse(accept_header) # delete text_xml from the list list.delete_at(text_xml) - + elsif text_xml - list[text_xml].name = "application/xml" + list[text_xml].name = Mime::XML.to_s end # Look for more specific xml-based types and sort them ahead of app/xml diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb index 38584a6481c26..cd80415f8295e 100755 --- a/actionpack/lib/action_controller/request.rb +++ b/actionpack/lib/action_controller/request.rb @@ -60,16 +60,16 @@ def content_type begin # Receive header sans any charset information. content_type = @env['CONTENT_TYPE'].to_s.sub(/\s*\;.*$/, '').strip.downcase - + if x_post_format = @env['HTTP_X_POST_DATA_FORMAT'] case x_post_format.to_s.downcase when 'yaml' - content_type = 'application/x-yaml' + content_type = Mime::YAML.to_s when 'xml' - content_type = 'application/xml' + content_type = Mime::XML.to_s end end - + Mime::Type.lookup(content_type) end end diff --git a/actionpack/lib/action_controller/response.rb b/actionpack/lib/action_controller/response.rb index 38647670f2f2a..429b3eff3210f 100755 --- a/actionpack/lib/action_controller/response.rb +++ b/actionpack/lib/action_controller/response.rb @@ -20,7 +20,7 @@ def content_type end def charset=(encoding) - self.headers["Content-Type"] = "#{content_type || "text/html"}; charset=#{encoding}" + self.headers["Content-Type"] = "#{content_type || Mime::HTML}; charset=#{encoding}" end def charset diff --git a/actionpack/lib/action_controller/test_process.rb b/actionpack/lib/action_controller/test_process.rb index beccec6f94459..b1eb9e38ef3a1 100644 --- a/actionpack/lib/action_controller/test_process.rb +++ b/actionpack/lib/action_controller/test_process.rb @@ -325,29 +325,29 @@ def close class TestUploadedFile # The filename, *not* including the path, of the "uploaded" file attr_reader :original_filename - + # The content type of the "uploaded" file attr_reader :content_type - - def initialize(path, content_type = 'text/plain') + + def initialize(path, content_type = Mime::TEXT) raise "#{path} file does not exist" unless File.exist?(path) @content_type = content_type @original_filename = path.sub(/^.*#{File::SEPARATOR}([^#{File::SEPARATOR}]+)$/) { $1 } @tempfile = Tempfile.new(@original_filename) FileUtils.copy_file(path, @tempfile.path) end - + def path #:nodoc: @tempfile.path end - + alias local_path path - + def method_missing(method_name, *args, &block) #:nodoc: @tempfile.send(method_name, *args, &block) end end - + module TestProcess def self.included(base) # execute the request simulating a specific http method and set/volley the response diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index 1b3cf5d95ebf8..d66b43cd68a16 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -470,11 +470,11 @@ def create_template_source(extension, template, render_symbol, locals) if template_requires_setup?(extension) body = case extension.to_sym when :rxml, :builder - "controller.response.content_type ||= 'application/xml'\n" + + "controller.response.content_type ||= Mime::XML\n" + "xml = Builder::XmlMarkup.new(:indent => 2)\n" + template when :rjs - "controller.response.content_type ||= 'text/javascript'\n" + + "controller.response.content_type ||= Mime::JS\n" + "update_page do |page|\n#{template}\nend" end else diff --git a/actionpack/lib/action_view/helpers/asset_tag_helper.rb b/actionpack/lib/action_view/helpers/asset_tag_helper.rb index 93e695ddbb30f..8b9e4094ce1e1 100644 --- a/actionpack/lib/action_view/helpers/asset_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/asset_tag_helper.rb @@ -149,19 +149,19 @@ def javascript_include_tag(*sources) if !File.exists?(joined_javascript_path) File.open(joined_javascript_path, "w+") do |cache| javascript_paths = expand_javascript_sources(sources).collect do |source| - compute_public_path(source, 'javascripts', 'js', false) + compute_public_path(source, 'javascripts', 'js', false) end cache.write(join_asset_file_contents(javascript_paths)) end end - content_tag("script", "", { - "type" => "text/javascript", "src" => javascript_path(joined_javascript_name) + content_tag("script", "", { + "type" => Mime::JS, "src" => javascript_path(joined_javascript_name) }.merge(options)) else expand_javascript_sources(sources).collect do |source| - content_tag("script", "", { "type" => "text/javascript", "src" => javascript_path(source) }.merge(options)) + content_tag("script", "", { "type" => Mime::JS, "src" => javascript_path(source) }.merge(options)) end.join("\n") end end @@ -252,15 +252,15 @@ def stylesheet_link_tag(*sources) end tag("link", { - "rel" => "Stylesheet", "type" => "text/css", "media" => "screen", + "rel" => "Stylesheet", "type" => Mime::CSS, "media" => "screen", "href" => stylesheet_path(joined_stylesheet_name) }.merge(options)) else options.delete("cache") expand_stylesheet_sources(sources).collect do |source| - tag("link", { - "rel" => "Stylesheet", "type" => "text/css", "media" => "screen", "href" => stylesheet_path(source) + tag("link", { + "rel" => "Stylesheet", "type" => Mime::CSS, "media" => "screen", "href" => stylesheet_path(source) }.merge(options)) end.join("\n") end diff --git a/actionpack/lib/action_view/helpers/java_script_macros_helper.rb b/actionpack/lib/action_view/helpers/java_script_macros_helper.rb index 6304a1a8b2f2a..0d9e87fba0883 100644 --- a/actionpack/lib/action_view/helpers/java_script_macros_helper.rb +++ b/actionpack/lib/action_view/helpers/java_script_macros_helper.rb @@ -198,10 +198,10 @@ def text_field_with_auto_complete(object, method, tag_options = {}, completion_o content_tag("div", "", :id => "#{object}_#{method}_auto_complete", :class => "auto_complete") + auto_complete_field("#{object}_#{method}", { :url => { :action => "auto_complete_for_#{object}_#{method}" } }.update(completion_options)) end - + private def auto_complete_stylesheet - content_tag('style', <<-EOT, :type => 'text/css') + content_tag('style', <<-EOT, :type => Mime::CSS) div.auto_complete { width: 350px; background: #fff; @@ -217,17 +217,17 @@ def auto_complete_stylesheet margin:0; padding:3px; } - div.auto_complete ul li.selected { - background-color: #ffb; + div.auto_complete ul li.selected { + background-color: #ffb; } - div.auto_complete ul strong.highlight { + div.auto_complete ul strong.highlight { color: #800; margin:0; padding:0; } EOT end - + end end end diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb index ad74a85584f69..4dd78543678bd 100644 --- a/actionpack/lib/action_view/helpers/javascript_helper.rb +++ b/actionpack/lib/action_view/helpers/javascript_helper.rb @@ -132,7 +132,7 @@ def button_to_function(name, *args, &block) # public/javascripts/ directory, and use +javascript_include_tag+ to # create remote def javascript_tag(content, html_options = {}) - content_tag("script", javascript_cdata_section(content), html_options.merge(:type => "text/javascript")) + content_tag("script", javascript_cdata_section(content), html_options.merge(:type => Mime::JS)) end def javascript_cdata_section(content) #:nodoc: diff --git a/actionpack/lib/action_view/helpers/url_helper.rb b/actionpack/lib/action_view/helpers/url_helper.rb index 688790094b0b1..dc9154dea5cad 100644 --- a/actionpack/lib/action_view/helpers/url_helper.rb +++ b/actionpack/lib/action_view/helpers/url_helper.rb @@ -295,7 +295,7 @@ def mail_to(email_address, name = nil, html_options = {}) for i in 0...tmp.length string << sprintf("%%%x",tmp[i]) end - "" + "" elsif encode == "hex" email_address_encoded = '' email_address_obfuscated.each_byte do |c|