Changeset 986
- Timestamp:
- 11/12/07 22:58:17 (1 year ago)
- Files:
-
- trunk/lib/merb/server.rb (modified) (3 diffs)
- trunk/lib/merb/template/erubis.rb (modified) (1 diff)
- trunk/lib/merb/view_context.rb (modified) (2 diffs)
- trunk/spec/fixtures/controllers/render_spec_controllers.rb (modified) (1 diff)
- trunk/spec/merb/abstract_controller_spec.rb (modified) (1 diff)
- trunk/spec/merb/mail_controller_spec.rb (modified) (1 diff)
- trunk/spec/merb/responder_spec.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/merb/server.rb
r981 r986 297 297 end 298 298 299 def load_erubis_inline_helpers 300 partials = Merb::AbstractController._abstract_subclasses.map {|x| 301 Dir.glob("#{Object.full_const_get(x)._template_root}/**/_*") }.flatten 302 303 partials.each do |partial| 304 eruby = Erubis::Eruby.new(File.read(partial)) 305 eruby.def_method(Merb::GlobalHelper, partial.gsub("/", "__").gsub(".", "_"), partial) 306 end 307 end 308 299 309 def load_application 300 310 MERB_PATHS.each do |glob| … … 303 313 load_action_arguments 304 314 load_controller_template_path_cache 315 load_erubis_inline_helpers 305 316 @app_loaded = true 306 317 (@after_app_blocks || []).each { |b| b.call } … … 348 359 load_action_arguments(loaded_classes) 349 360 load_controller_template_path_cache 361 load_erubis_inline_helpers 350 362 rescue Exception => e 351 363 puts "Error reloading file #{file}: #{e}" trunk/lib/merb/template/erubis.rb
r905 r986 4 4 class ErubisViewContext < ViewContext 5 5 include ::Merb::ErubisCaptureMixin 6 7 def partial(template, opts={}) 8 9 unless @_template_format 10 @web_controller.choose_template_format(Merb.available_mime_types, {}) 11 end 12 13 template = @web_controller._cached_partials["#{template}.#{@_template_format}"] ||= 14 @web_controller.send(:find_partial, template) 15 16 template_method = template.gsub(/\//, "__").gsub(/\./, "_") 17 18 if with = opts.delete(:with) 19 as = opts.delete(:as) || template.match(/(.*\/_)([^\.]*)/)[2] 20 @_merb_partial_locals = opts 21 sent_template = [with].flatten.map do |temp| 22 @_merb_partial_locals[as.to_sym] = temp 23 send(template_method) rescue raise Merb::ControllerExceptions::TemplateNotFound, 24 "No template matched at #{template}" 25 end.join 26 else 27 @_merb_partial_locals = opts 28 sent_template = send(template_method) rescue nil 29 end 30 31 return sent_template if sent_template 32 33 raise Merb::ControllerExceptions::TemplateNotFound, "No template matched at #{template}" 34 end 35 36 def method_missing(sym, *args, &blk) 37 @_merb_partial_locals[sym] || @web_controller.send(sym, *args, &blk) rescue super 38 end 39 6 40 end 7 41 trunk/lib/merb/view_context.rb
r807 r986 23 23 @_content_type 24 24 @_merb_unmatched 25 @_template_format26 25 @_provided_formats 27 26 @template] … … 70 69 # and delegate them back to the controller. 71 70 def method_missing(sym, *args, &blk) 72 if @web_controller.respond_to? sym 73 @web_controller.send(sym, *args, &blk) 74 elsif @_merb_partial_locals.key? sym 75 @_merb_partial_locals[sym] 76 else 77 super 78 end 71 @_merb_partial_locals[sym] || @web_controller.send(sym, *args, &blk) rescue super 79 72 end 80 73 trunk/spec/fixtures/controllers/render_spec_controllers.rb
r964 r986 114 114 Merb::Server.load_action_arguments 115 115 Merb::Server.load_controller_template_path_cache 116 Merb::Server.load_erubis_inline_helpers trunk/spec/merb/abstract_controller_spec.rb
r964 r986 15 15 after(:all) do 16 16 Merb::Server.load_controller_template_path_cache 17 Merb::Server.load_erubis_inline_helpers 17 18 end 18 19 trunk/spec/merb/mail_controller_spec.rb
r964 r986 7 7 end 8 8 Merb::Server.load_controller_template_path_cache 9 Merb::Server.load_erubis_inline_helpers 9 10 10 11 class Merb::Mailer trunk/spec/merb/responder_spec.rb
r964 r986 245 245 Merb::Server.load_action_arguments 246 246 Merb::Server.load_controller_template_path_cache 247 Merb::Server.load_erubis_inline_helpers 247 248 248 249 describe "A Merb Responder's Content Negotiation" do
