When you invoke ActionView::Base, it in turn invokes a LookupContext object. The LookupContext class object has some class level macros that builds some instance methods corresponding to a format:
register_detail(:formats) { ActionView::Base.default_formats || [:html, :text, :js, :css, :xml, :json] } def self.register_detail(name, options = {}, &block) self.registered_details << name initialize = registered_details.map { |n| "@details[:#{n}] = details[:#{n}] || default_#{n}" } Accessors.send :define_method, :"default_#{name}", &block Accessors.module_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{name} @details.fetch(:#{name}, []) end def #{name}=(value) value = value.present? ? Array(value) : default_#{name} _set_detail(:#{name}, value) if value != @details[:#{name}] end remove_possible_method :initialize_details def initialize_details(details) #{initialize.join("\n")} end METHOD end So these methods are included as instance methods via the Accessors module. Later the LookupContext class override the formats method with its own definition: def formats=(values) if values values.concat(default_formats) if values.delete "*/*" if values == [:js] values << :html @html_fallback_for_js = true end end super(values) end 1) So what was the purpose of adding a formats method to the Accessors module and then include it into LookupContext, if it will always be overriden by LookupContext's own implementation? 2) What is meant by expand ["*/*"] values in the comment "# Override formats= to expand ["*/*"] values " which is directly above the formats implementation on LookupContext? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.