module StrictTemplates::Concern

Public Instance Methods

render(*args, &block) click to toggle source
Calls superclass method
# File lib/strict_templates/concern.rb, line 10
def render(*args, &block)
  if !should_raise_on_queries?
    return super
  end

  callback = lambda do |name, start, finish, id, payload|
    if !should_ignore_sql_statement?(payload[:name])
      if has_custom_error_handler?
        config.strict_templates.error_handler.call(payload)
      else
        raise SQLPerformedWithinTemplateError.new("A SQL request was issued within the template: \n  #{payload[:sql]}")
      end
    end
  end

  ActiveSupport::Notifications.subscribed(callback, 'sql.active_record') do
    super
  end
end

Private Instance Methods

config() click to toggle source
# File lib/strict_templates/concern.rb, line 36
def config
  Rails.configuration if defined?(Rails)
end
has_custom_error_handler?() click to toggle source
# File lib/strict_templates/concern.rb, line 44
def has_custom_error_handler?
  config&.strict_templates&.error_handler
end
should_ignore_sql_statement?(name) click to toggle source
# File lib/strict_templates/concern.rb, line 32
def should_ignore_sql_statement?(name)
  name == 'SCHEMA' || name == 'ActiveRecord::SchemaMigration Load'
end
should_raise_on_queries?() click to toggle source
# File lib/strict_templates/concern.rb, line 40
def should_raise_on_queries?
  config&.strict_templates&.raise_on_queries != false
end