class Kugiru::Handler

Public Class Methods

call(template, source = nil) click to toggle source
# File lib/kugiru/handler.rb, line 8
    def self.call(template, source = nil)
      source ||= template.source

      <<~RUBY
        csv = OpenStruct.new(
          utf8_bom: ::Kugiru.configuration.utf8_bom,
          streaming: ::Kugiru.configuration.streaming,
          cols: {},
          data: []
        )
        #{source}
        controller.send(:send_file_headers!, type: 'text/csv', filename: csv.filename)
        _builder_args = csv.to_h.slice(:utf8_bom, :cols, :data)
        if csv.streaming
          response.headers['Cache-Control'] = 'no-cache'
          response.headers['X-Accel-Buffering'] = 'no'
          ::Kugiru::Builder.build_enumerator(_builder_args)
        else
          ::Kugiru::Builder.build(_builder_args)
        end
      RUBY
    end