Module: Appsignal

Defined in:
lib/appsignal.rb,
lib/appsignal/cli.rb,
lib/appsignal/agent.rb,
lib/appsignal/config.rb,
lib/appsignal/marker.rb,
lib/appsignal/railtie.rb,
lib/appsignal/version.rb,
lib/appsignal/listener.rb,
lib/appsignal/aggregator.rb,
lib/appsignal/auth_check.rb,
lib/appsignal/capistrano.rb,
lib/appsignal/transaction.rb,
lib/appsignal/transmitter.rb,
lib/appsignal/careful_logger.rb,
lib/appsignal/middleware/chain.rb,
lib/appsignal/to_appsignal_hash.rb,
lib/appsignal/exception_notification.rb,
lib/appsignal/middleware/delete_blanks.rb,
lib/appsignal/aggregator/post_processor.rb,
lib/appsignal/transaction/params_sanitizer.rb,
lib/appsignal/middleware/action_view_sanitizer.rb,
lib/appsignal/transaction/transaction_formatter.rb,
lib/appsignal/middleware/active_record_sanitizer.rb

Defined Under Namespace

Modules: CarefulLogger, Middleware, ToAppsignalHash Classes: Agent, Aggregator, AuthCheck, CLI, Capistrano, Config, ExceptionNotification, Listener, Marker, MissingController, ParamsSanitizer, ParamsSanitizerCopy, ParamsSanitizerCopyScrub, ParamsSanitizerDestructive, ParamsSanitizerDestructiveScrub, PostProcessor, Railtie, Transaction, TransactionFormatter, Transmitter

Constant Summary collapse

VERSION =
'0.6.1'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.in_memory_logObject (readonly)

Returns the value of attribute in_memory_log.



10
11
12
# File 'lib/appsignal.rb', line 10

def in_memory_log
  @in_memory_log
end

.subscriberObject

Returns the value of attribute subscriber.



9
10
11
# File 'lib/appsignal.rb', line 9

def subscriber
  @subscriber
end

Class Method Details

.active?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/appsignal.rb', line 81

def active?
  config && config[:active] == true
end

.agentObject



47
48
49
# File 'lib/appsignal.rb', line 47

def agent
  @agent ||= Appsignal::Agent.new
end

.configObject



71
72
73
# File 'lib/appsignal.rb', line 71

def config
  @config ||= Appsignal::Config.new(Rails.root, Rails.env).load
end

.enqueue(transaction) ⇒ true

Convenience method for adding a transaction to the queue. This queue is managed and is periodically pushed to Appsignal.

Returns:

  • (true)

    True.

Since:

  • 0.5.0



18
19
20
# File 'lib/appsignal.rb', line 18

def enqueue(transaction)
  agent.enqueue(transaction)
end

.flush_in_memory_logObject



59
60
61
# File 'lib/appsignal.rb', line 59

def flush_in_memory_log
  Appsignal.logger << @in_memory_log.string
end

.is_ignored_exception?(exception) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
88
# File 'lib/appsignal.rb', line 85

def is_ignored_exception?(exception)
  Array.wrap(Appsignal.config[:ignore_exceptions]).
    include?(exception.class.name)
end

.jsonObject



63
64
65
# File 'lib/appsignal.rb', line 63

def json
  ActiveSupport::JSON
end

.listen_for_exception(&block) ⇒ Object



22
23
24
25
26
27
# File 'lib/appsignal.rb', line 22

def listen_for_exception(&block)
  yield
rescue Exception => exception
  send_exception(exception)
  raise exception
end

.loggerObject



51
52
53
54
55
56
57
# File 'lib/appsignal.rb', line 51

def logger
  @in_memory_log = StringIO.new unless @in_memory_log
  @logger ||= Logger.new(@in_memory_log).tap do |l|
    l.level = Logger::INFO
    l.formatter = Logger::Formatter.new
  end
end

.logger=(l) ⇒ Object



67
68
69
# File 'lib/appsignal.rb', line 67

def logger=(l)
  @logger = l
end

.post_processing_middleware {|@post_processing_chain| ... } ⇒ Object

Yields:

  • (@post_processing_chain)


75
76
77
78
79
# File 'lib/appsignal.rb', line 75

def post_processing_middleware
  @post_processing_chain ||= PostProcessor.default_middleware
  yield @post_processing_chain if block_given?
  @post_processing_chain
end

.send_exception(exception) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/appsignal.rb', line 29

def send_exception(exception)
  unless is_ignored_exception?(exception)
    Appsignal.agent
    env = ENV.to_hash

    transaction = Appsignal::Transaction.create(SecureRandom.uuid, env)
    transaction.add_exception(
      Appsignal::ExceptionNotification.new(env, exception, false)
    )
    transaction.complete!
    Appsignal.agent.send_queue
  end
end

.transactionsObject



43
44
45
# File 'lib/appsignal.rb', line 43

def transactions
  @transactions ||= {}
end