appinsights 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f03d2c25eee7d16cd76e865f2d712a06d4943f9a
4
- data.tar.gz: e3d979812ef53af3bed0545a22818b73679e2a9f
3
+ metadata.gz: 01003d9d4c44a67f7f73bb0ff83ce5a4d763a4ac
4
+ data.tar.gz: 880be6e1ab0a7bbb7726900c7c4af58b7dee518e
5
5
  SHA512:
6
- metadata.gz: 23adae4aeaadfa9c3acce91dec880c60c0b33c6ba2e6917ebc804aeb99ca5c6002dbabc8b27ad63958db222c022c839b5d55e68365724682f93a77a28948e7bf
7
- data.tar.gz: e2f65f4b5c0e5df1c524798735e134a2ee56ef5a9ece5b7e3e4bc3b0cafb581ef5007a0ea23f577a1b6ebe035448833da3209a27b1639bf5653072da0d12df15
6
+ metadata.gz: fc062486cb66e7ca600f8f278e08a7a7e08cbddf370c4fbe7d5148d396a35439adce123fccbe9261b31134a9ab888284a5e7d7eac44e7c658bf7417794d0df09
7
+ data.tar.gz: 49ae01dd89528edbfda574e6bd43b33ab4415ccd6ae6502aff308074c7e7cc7c1161183be3512508151fcd43cdf101949f08532b8d31dc946d1bb9b1bec5ce74
data/README.md CHANGED
@@ -1,2 +1,7 @@
1
1
  # appinsights
2
- Microsoft Application Insights AutoInstaller for Ruby frameworks
2
+ [![Gem Version](https://badge.fury.io/rb/appinsights.svg)](http://badge.fury.io/rb/appinsights)
3
+ [![Build Status](https://travis-ci.org/citrusbyte/appinsights.svg)](https://travis-ci.org/citrusbyte/appinsights)
4
+ [![Code Climate](https://codeclimate.com/github/citrusbyte/appinsights/badges/gpa.svg)](https://codeclimate.com/github/citrusbyte/appinsights)
5
+ [![Dependency Status](https://gemnasium.com/citrusbyte/appinsights.svg)](https://gemnasium.com/citrusbyte/appinsights)
6
+
7
+ Microsoft Application Insights Auto Installer for Ruby frameworks
@@ -1,6 +1,8 @@
1
+ require_relative 'lib/version'
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = 'appinsights'
3
- s.version = '0.0.1'
5
+ s.version = AppInsights::VERSION
4
6
  s.date = Time.now.strftime('%Y-%m-%d')
5
7
  s.summary = 'Application Insights Auto-Installer'
6
8
  s.description = 'Application Insights AutoInstaller for Ruby'
@@ -20,5 +22,5 @@ Gem::Specification.new do |s|
20
22
  s.add_dependency 'toml-rb', '~> 0.2.1'
21
23
  s.add_dependency 'application_insights', '~> 0.5.0'
22
24
 
23
- s.add_development_dependency 'rack', '~> 1.6', '>= 1.6.0'
25
+ s.add_development_dependency 'rack', '~> 1.6', '>= 1.0.0'
24
26
  end
@@ -2,19 +2,21 @@ require_relative 'errors'
2
2
  require_relative 'context'
3
3
  require_relative 'middlewares'
4
4
  require_relative 'config_loader'
5
+ require_relative 'installers/base'
5
6
 
6
7
  module AppInsights
7
8
  if defined?(Rails::VERSION)
8
- require_relative 'frameworks/rails'
9
+ require_relative 'installers/rails'
10
+ elsif defined?(Sinatra::VERSION)
11
+ require_relative 'installers/sinatra'
9
12
  else
10
- puts <<-EOS
11
- Config file not loaded.
12
- Use AppInsights::ConfigLoader.new root, filename
13
+ require 'logger'
14
+
15
+ logger = Logger.new STDOUT
16
+ logger.info <<-EOS
17
+ Framework unknown, auto installation suspended.
18
+ Use AppInsights::BaseInstaller.new app, root, filename
13
19
  to setup the Context and middlewares.
14
20
  EOS
15
-
16
- # Initialize for other frameworks
17
- #
18
- # loader = ConfigLoader.new __FILE__
19
21
  end
20
22
  end
@@ -27,9 +27,9 @@ module AppInsights
27
27
 
28
28
  def default_paths
29
29
  @default_paths ||= [
30
+ ENV['AI_CONFIG_RPATH'],
30
31
  './config/application_insights.toml',
31
- './application_insights.toml',
32
- # ENV['AI_CONFIG_PATH']
32
+ './application_insights.toml'
33
33
  ]
34
34
  end
35
35
  end
@@ -21,6 +21,10 @@ module AppInsights
21
21
  @client ||= ApplicationInsights::TelemetryClient.new
22
22
  end
23
23
 
24
+ def context
25
+ @context
26
+ end
27
+
24
28
  private
25
29
 
26
30
  def configure_contract(contract, config)
@@ -0,0 +1,34 @@
1
+ module AppInsights
2
+ class BaseInstaller
3
+ attr_accessor :app, :root, :filename, :logger
4
+
5
+ def initialize(app, root, filename = nil, logger = nil)
6
+ @app, @root, @filename, @logger = app, root, filename, logger
7
+ end
8
+
9
+ def install
10
+ AppInsights::ConfigLoader.new @root, @filename
11
+
12
+ AppInsights::Middlewares.enabled.each do |middleware, args|
13
+ @app.use middleware, *args.values
14
+ end
15
+ rescue AppInsights::ConfigFileNotFound => e
16
+ @logger.error e.message
17
+ @logger.info config_file_not_found_message
18
+ end
19
+
20
+ def logger
21
+ @logger ||= Logger.new STDOUT
22
+ end
23
+
24
+ private
25
+
26
+ def config_file_not_found_message
27
+ <<-EOS
28
+ Place your config file `application_insights.toml`
29
+ under the `config` or root directory of your application.
30
+ Check the README for manual installation.
31
+ EOS
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ module AppInsights
2
+ class RailsInstaller < Rails::Railtie
3
+ initializer 'appinsights.start_plugin' do |_app|
4
+ init Rails.root
5
+ end
6
+
7
+ def init(root, filename = nil)
8
+ installer = AppInsights::Base.new config.app_middleware,
9
+ root,
10
+ filename,
11
+ Rails.logger
12
+
13
+ installer.install
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'base'
2
+
3
+ module AppInsights
4
+ class SinatraInstaller < Sinatra::Application
5
+ def self.root
6
+ File.dirname app_file
7
+ end
8
+
9
+ def self.init(root, filename = nil)
10
+ installer = AppInsights::Base.new Sinatra::Application,
11
+ root,
12
+ filename
13
+
14
+ installer.install
15
+ end
16
+
17
+ # This will call the init method as soon as this file is required
18
+ SinatraInstaller.init SinatraInstaller.root
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module AppInsights
2
+ VERSION = '0.0.2'
3
+ end
@@ -0,0 +1,50 @@
1
+ require_relative 'helper'
2
+ require_relative 'mock/mock_app'
3
+ require_relative 'mock/mock_logger'
4
+
5
+ describe AppInsights::Context do
6
+ before do
7
+ @app = MockApp.new
8
+ @root = './test'
9
+ @logger = MockLogger.new
10
+ end
11
+
12
+ describe 'install' do
13
+ it 'logs an error if the config file is not found' do
14
+ installer = AppInsights::BaseInstaller.new @app, @root, 'wrong_file', @logger
15
+
16
+ assert @logger.messages.empty?
17
+
18
+ installer.install
19
+
20
+ deny @logger.messages.empty?
21
+ assert_equal Logger::ERROR, @logger.messages.first.first
22
+ assert_equal Logger::INFO, @logger.messages.last.first
23
+ end
24
+
25
+ it 'loads the configs from the file with no errors' do
26
+ installer = AppInsights::BaseInstaller.new @app, @root, nil, @logger
27
+
28
+ assert @logger.messages.empty?
29
+
30
+ installer.install
31
+ context = AppInsights::Context.context
32
+
33
+ assert @logger.messages.empty?
34
+ deny AppInsights::Middlewares.settings.empty?
35
+ deny AppInsights::Middlewares.enabled.empty?
36
+ assert_equal 'aaaaaaaa-aaaa-aaaa-aaaa', context.instrumentation_key
37
+ assert_equal '0.2.0', context.application.ver
38
+ end
39
+
40
+ it 'register the middlewares automatically' do
41
+ installer = AppInsights::BaseInstaller.new @app, @root, nil, @logger
42
+
43
+ assert @app.middlewares.empty?
44
+
45
+ installer.install
46
+
47
+ deny @app.middlewares.empty?
48
+ end
49
+ end
50
+ end
@@ -33,6 +33,16 @@ describe AppInsights::ConfigLoader do
33
33
  deny loader.settings.empty?
34
34
  end
35
35
 
36
+ it 'loads the config file from the ENV variable' do
37
+ ENV['AI_CONFIG_RPATH'] = 'test/config/non_default_file.toml'
38
+
39
+ loader = AppInsights::ConfigLoader.new './'
40
+
41
+ deny loader.settings.empty?
42
+
43
+ ENV.delete 'AI_CONFIG_RPATH'
44
+ end
45
+
36
46
  it 'autoconfigure the Context and middlewares' do
37
47
  tc = AppInsights::Context.telemetry_client
38
48
  settings = AppInsights::Middlewares.settings
@@ -2,6 +2,11 @@ require_relative 'helper'
2
2
 
3
3
  describe AppInsights::Middlewares do
4
4
  before do
5
+ AppInsights::Middlewares.tap do |klass|
6
+ klass.instance_variable_set :@settings, nil
7
+ klass.instance_variable_set :@enabled_middlewares, nil
8
+ end
9
+
5
10
  @configs = [
6
11
  {
7
12
  'name' => 'AppInsights::ExceptionHandling',
@@ -14,13 +19,6 @@ describe AppInsights::Middlewares do
14
19
  ]
15
20
  end
16
21
 
17
- after do
18
- AppInsights::Middlewares.tap do |klass|
19
- klass.instance_variable_set :@settings, nil
20
- klass.instance_variable_set :@enabled_middlewares, nil
21
- end
22
- end
23
-
24
22
  describe 'enabled' do
25
23
  it 'returns the middlewares enabled' do
26
24
  AppInsights::Middlewares.configure @configs
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appinsights
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emiliano Mancuso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-11 00:00:00.000000000 Z
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: toml-rb
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: '1.6'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 1.6.0
50
+ version: 1.0.0
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -57,7 +57,7 @@ dependencies:
57
57
  version: '1.6'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 1.6.0
60
+ version: 1.0.0
61
61
  description: Application Insights AutoInstaller for Ruby
62
62
  email:
63
63
  - emiliano.mancuso@gmail.com
@@ -71,10 +71,14 @@ files:
71
71
  - lib/config_loader.rb
72
72
  - lib/context.rb
73
73
  - lib/errors.rb
74
- - lib/frameworks/rails.rb
74
+ - lib/installers/base.rb
75
+ - lib/installers/rails.rb
76
+ - lib/installers/sinatra.rb
75
77
  - lib/middlewares.rb
76
78
  - lib/middlewares/exception_handling.rb
79
+ - lib/version.rb
77
80
  - rakefile
81
+ - test/base_installer_test.rb
78
82
  - test/config_loader_test.rb
79
83
  - test/context_test.rb
80
84
  - test/helper.rb
@@ -1,11 +0,0 @@
1
- module AppInsights
2
- class Railtie < Rails::Railtie
3
- initializer 'ai_agent.start_plugin' do |_app|
4
- AppInsights::ConfigLoader.new Rails.root
5
-
6
- AppInsights::Middlewares.enabled.each do |middleware, args|
7
- config.app_middleware.use middleware, *args.values
8
- end
9
- end
10
- end
11
- end