Module: InfluxDB::Rails
- Extended by:
- Logger
- Defined in:
- lib/asklytics-influxdb-rails.rb,
lib/influxdb/rails/rack.rb,
lib/influxdb/rails/logger.rb,
lib/influxdb/rails/context.rb,
lib/influxdb/rails/railtie.rb,
lib/influxdb/rails/version.rb,
lib/influxdb/rails/backtrace.rb,
lib/influxdb/rails/sql/query.rb,
lib/influxdb/rails/configuration.rb,
lib/influxdb/rails/sql/normalizer.rb,
lib/influxdb/rails/instrumentation.rb,
lib/influxdb/rails/exception_presenter.rb,
lib/influxdb/rails/middleware/subscriber.rb,
lib/influxdb/rails/air_traffic_controller.rb,
lib/influxdb/rails/middleware/sql_subscriber.rb,
lib/influxdb/rails/middleware/render_subscriber.rb,
lib/influxdb/rails/middleware/simple_subscriber.rb,
lib/influxdb/rails/middleware/request_subscriber.rb,
lib/influxdb/rails/middleware/hijack_render_exception.rb,
lib/influxdb/rails/middleware/hijack_rescue_action_everywhere.rb
Overview
InfluxDB::Rails contains the glue code needed to integrate with InfluxDB and Rails. This is a singleton class.
Defined Under Namespace
Modules: AirTrafficController, Instrumentation, Logger, Middleware, Sql Classes: Backtrace, Configuration, Context, ExceptionPresenter, Rack, Railtie
Constant Summary collapse
- VERSION =
"1.0.0".freeze
Constants included from Logger
Class Attribute Summary collapse
-
.client ⇒ Object
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize.
-
.configuration ⇒ Object
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize.
Class Method Summary collapse
- .configure(_silent = false) {|configuration| ... } ⇒ Object
- .current ⇒ Object
-
.current_timestamp ⇒ Object
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize.
- .ignorable_exception?(ex) ⇒ Boolean
-
.report_exception(ex, env = {}) ⇒ Object
(also: transmit)
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize.
- .report_exception_unless_ignorable(ex, env = {}) ⇒ Object (also: transmit_unless_ignorable)
- .rescue ⇒ Object
- .rescue_and_reraise ⇒ Object
Class Attribute Details
.client ⇒ Object
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/asklytics-influxdb-rails.rb', line 42 def client @client ||= InfluxDB::Client.new \ database: configuration.influxdb_database, username: configuration.influxdb_username, password: configuration.influxdb_password, hosts: configuration.influxdb_hosts, port: configuration.influxdb_port, async: configuration.async, use_ssl: configuration.use_ssl, retry: configuration.retry, open_timeout: configuration.open_timeout, read_timeout: configuration.read_timeout, max_delay: configuration.max_delay, time_precision: configuration.time_precision end |
.configuration ⇒ Object
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize
61 62 63 |
# File 'lib/asklytics-influxdb-rails.rb', line 61 def configuration @configuration ||= InfluxDB::Rails::Configuration.new end |
Class Method Details
.configure(_silent = false) {|configuration| ... } ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/asklytics-influxdb-rails.rb', line 30 def configure(_silent = false) yield(configuration) # if we change configuration, reload the client self.client = nil InfluxDB::Logging.logger = configuration.logger unless configuration.logger.nil? end |
.current ⇒ Object
75 76 77 |
# File 'lib/asklytics-influxdb-rails.rb', line 75 def current @current ||= InfluxDB::Rails::Context.new end |
.current_timestamp ⇒ Object
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize
110 111 112 |
# File 'lib/asklytics-influxdb-rails.rb', line 110 def InfluxDB.now(configuration.time_precision) end |
.ignorable_exception?(ex) ⇒ Boolean
114 115 116 |
# File 'lib/asklytics-influxdb-rails.rb', line 114 def ignorable_exception?(ex) configuration.ignore_current_environment? || configuration.ignore_exception?(ex) end |
.report_exception(ex, env = {}) ⇒ Object Also known as: transmit
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/asklytics-influxdb-rails.rb', line 87 def report_exception(ex, env = {}) = InfluxDB::Rails. env = influxdb_request_data if env.empty? && defined? influxdb_request_data exception_presenter = ExceptionPresenter.new(ex, env) log :info, "Exception: #{exception_presenter.to_json[0..512]}..." = configuration..call( exception_presenter.context.merge(exception_presenter.dimensions) ) client.write_point \ configuration.series_name_for_exceptions, values: exception_presenter.values.merge(ts: ), tags: , timestamp: rescue StandardError => ex log :info, "[InfluxDB::Rails] Something went terribly wrong." \ " Exception failed to take off! #{ex.class}: #{ex.}" end |
.report_exception_unless_ignorable(ex, env = {}) ⇒ Object Also known as: transmit_unless_ignorable
79 80 81 |
# File 'lib/asklytics-influxdb-rails.rb', line 79 def report_exception_unless_ignorable(ex, env = {}) report_exception(ex, env) unless ignorable_exception?(ex) end |
.rescue ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/asklytics-influxdb-rails.rb', line 118 def rescue yield rescue StandardError => ex raise ex if configuration.ignore_current_environment? transmit_unless_ignorable(ex) end |
.rescue_and_reraise ⇒ Object
126 127 128 129 130 131 |
# File 'lib/asklytics-influxdb-rails.rb', line 126 def rescue_and_reraise yield rescue StandardError => ex transmit_unless_ignorable(ex) raise ex end |