Module: InfluxDB::Rails

Extended by:
Logger
Defined in:
lib/influxdb-rails.rb,
lib/influxdb/rails/rack.rb,
lib/influxdb/rails/rails.rb,
lib/influxdb/rails/logger.rb,
lib/influxdb/rails/railtie.rb,
lib/influxdb/rails/version.rb,
lib/influxdb/rails/backtrace.rb,
lib/influxdb/rails/configuration.rb,
lib/influxdb/rails/instrumentation.rb,
lib/influxdb/rails/exception_presenter.rb,
lib/influxdb/rails/air_traffic_controller.rb,
lib/influxdb/rails/middleware/hijack_render_exception.rb,
lib/influxdb/rails/middleware/hijack_rescue_action_everywhere.rb

Defined Under Namespace

Modules: AirTrafficController, Instrumentation, Logger, Middleware Classes: Backtrace, Configuration, ExceptionPresenter, Rack, Railtie

Constant Summary collapse

VERSION =
"0.0.1"

Constants included from Logger

Logger::PREFIX

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.clientObject

Returns the value of attribute client.



22
23
24
# File 'lib/influxdb-rails.rb', line 22

def client
  @client
end

.configurationObject



29
30
31
# File 'lib/influxdb-rails.rb', line 29

def configuration
  @configuration ||= InfluxDB::Rails::Configuration.new
end

Class Method Details

.configure(silent = false) {|configuration| ... } ⇒ Object

Yields:



24
25
26
27
# File 'lib/influxdb-rails.rb', line 24

def configure(silent = false)
  yield(configuration)
  self.client = InfluxDB::Client.new
end

.current_timestampObject



54
55
56
# File 'lib/influxdb-rails.rb', line 54

def current_timestamp
  Time.now.utc.to_i
end

.ignorable_exception?(e) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
61
62
# File 'lib/influxdb-rails.rb', line 58

def ignorable_exception?(e)
  configuration.ignore_current_environment? ||
  !!configuration.ignored_exception_messages.find{ |msg| /.*#{msg}.*/ =~ e.message  } ||
  configuration.ignored_exceptions.include?(e.class.to_s)
end

.initializeObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/influxdb/rails/rails.rb', line 10

def self.initialize
  ActionController::Base.send(:include, InfluxDB::Rails::AirTrafficController)
  ActionController::Base.send(:include, InfluxDB::Rails::Middleware::HijackRescueActionEverywhere)
  ActionController::Base.send(:include, InfluxDB::Rails::Benchmarking)
  ActionController::Base.send(:include, InfluxDB::Rails::Instrumentation)

  ::Rails.configuration.middleware.insert_after 'ActionController::Failsafe', InfluxDB::Rack

  InfluxDB.configure(true) do |config|
    config.logger                ||= ::Rails.logger
    config.debug                   = true
    config.environment           ||= ::Rails.env
    config.application_root      ||= ::Rails.root
    config.application_name      ||= "Application"
    config.framework               = "Rails"
    config.framework_version       = ::Rails.version
  end

  if defined?(PhusionPassenger)
    PhusionPassenger.on_event(:starting_worker_process) do |forked|
      InfluxDB::Worker.spawn_threads() if forked
    end
  else
    InfluxDB::Worker.spawn_threads()
  end
end

.report_exception(e, env = {}) ⇒ Object Also known as: transmit



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/influxdb-rails.rb', line 38

def report_exception(e, env = {})
  begin
    env = influxdb_request_data if env.empty? && defined? influxdb_request_data
    exception_presenter = ExceptionPresenter.new(e, env)
    log :info, "Exception: #{exception_presenter.to_json[0..512]}..."

    InfluxDB::Rails.client.write_point "rails.exceptions",
      :context => exception_presenter.context,
      :dimensions => exception_presenter.dimensions

  rescue => e
    log :info, "[InfluxDB] Something went terribly wrong. Exception failed to take off! #{e.class}: #{e.message}"
  end
end

.report_exception_unless_ignorable(e, env = {}) ⇒ Object Also known as: transmit_unless_ignorable



33
34
35
# File 'lib/influxdb-rails.rb', line 33

def report_exception_unless_ignorable(e, env = {})
  report_exception(e, env) unless ignorable_exception?(e)
end

.rescue(&block) ⇒ Object



64
65
66
67
68
69
70
71
72
# File 'lib/influxdb-rails.rb', line 64

def rescue(&block)
  block.call
rescue StandardError => e
  if configuration.ignore_current_environment?
    raise(e)
  else
    transmit_unless_ignorable(e)
  end
end

.rescue_and_reraise(&block) ⇒ Object



74
75
76
77
78
79
# File 'lib/influxdb-rails.rb', line 74

def rescue_and_reraise(&block)
  block.call
rescue StandardError => e
  transmit_unless_ignorable(e)
  raise(e)
end