appinsights 0.0.2 → 0.0.3
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 +4 -4
- data/README.md +188 -0
- data/appinsights.gemspec +1 -1
- data/lib/appinsights.rb +7 -7
- data/lib/{config_loader.rb → appinsights/config_loader.rb} +0 -0
- data/lib/{context.rb → appinsights/context.rb} +0 -0
- data/lib/{errors.rb → appinsights/errors.rb} +0 -0
- data/lib/{installers → appinsights/installers}/base.rb +0 -0
- data/lib/appinsights/installers/rails.rb +18 -0
- data/lib/{installers → appinsights/installers}/sinatra.rb +3 -3
- data/lib/{middlewares.rb → appinsights/middlewares.rb} +0 -0
- data/lib/{middlewares → appinsights/middlewares}/exception_handling.rb +0 -0
- data/lib/{version.rb → appinsights/version.rb} +1 -1
- metadata +11 -11
- data/lib/installers/rails.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d20dcc9f60a001f8ace5c97f9e9cb8157c0a9de
|
4
|
+
data.tar.gz: 83e30a63ca45290f6089ca93a221a67b85908307
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff7a702005292eaa2e6d2e8dbc6ff960c8cfe82c1905d2a9f642e48418d501a0fe1d58980d2a3a978c539661071c07b9975cc4ef6acee48f5645647bdd7f0137
|
7
|
+
data.tar.gz: 969fa848c73a60da51faec3ffb187082f5598bda75ac607cc8590757a3c9684b3a1d30a851b5f91bd50c4e42f55a990494dd23278e469602464e96d86d7ae360
|
data/README.md
CHANGED
@@ -5,3 +5,191 @@
|
|
5
5
|
[](https://gemnasium.com/citrusbyte/appinsights)
|
6
6
|
|
7
7
|
Microsoft Application Insights Auto Installer for Ruby frameworks
|
8
|
+
|
9
|
+
## Dependencies
|
10
|
+
|
11
|
+
`appinsights` requires:
|
12
|
+
|
13
|
+
- Ruby 2.0 or later
|
14
|
+
- `application_insights` to connect with Microsoft Application Insights
|
15
|
+
- `toml-rb` to read the config file
|
16
|
+
|
17
|
+
Install dependencies using `dep` is easy as run:
|
18
|
+
|
19
|
+
$ dep install
|
20
|
+
|
21
|
+
# Installation
|
22
|
+
|
23
|
+
Install the latest release using `gem`
|
24
|
+
|
25
|
+
$ gem install appinsights
|
26
|
+
|
27
|
+
Or just add `gem 'appinsights'` in your _Gemfile_ and then run:
|
28
|
+
|
29
|
+
$ bundle install
|
30
|
+
|
31
|
+
## Automatic
|
32
|
+
|
33
|
+
This is the recommended installation and it will be automatically fired if your
|
34
|
+
application uses one of the supported frameworks:
|
35
|
+
|
36
|
+
- Rails
|
37
|
+
- Sinatra
|
38
|
+
|
39
|
+
In case the _automatic installation_ is not available (non-supported framework,
|
40
|
+
missing config file, etc.) you can always install the Application Insights Instruments
|
41
|
+
using the _Manual_ installation
|
42
|
+
|
43
|
+
|
44
|
+
### Rails
|
45
|
+
|
46
|
+
`rails` automatically loads the gem if it is listed on the _Gemfile_.
|
47
|
+
There is nothing else to do.
|
48
|
+
|
49
|
+
### Sinatra
|
50
|
+
|
51
|
+
`sinatra`, like other `rack` based frameworks, needs to require the library.
|
52
|
+
|
53
|
+
Add the following line in your _sinatra application file_:
|
54
|
+
|
55
|
+
require 'appinsights'
|
56
|
+
|
57
|
+
> NOTE: Ensure that `sinatra` was required first.
|
58
|
+
|
59
|
+
## Manual
|
60
|
+
|
61
|
+
Choosing a _Manual_ configuration is for those who have an application using a
|
62
|
+
non-supported framework or the ones who wants to have total control of the application.
|
63
|
+
|
64
|
+
The only requisite for your _application_ is to support usage of `rack` middlewares.
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
require 'appinsights'
|
68
|
+
|
69
|
+
# app - Application where we will attach the middlewares
|
70
|
+
# root - Root directory of the application
|
71
|
+
# filename (optional) - Relative path of the config file
|
72
|
+
# logger (optional) - Logger object to log errors and info.
|
73
|
+
|
74
|
+
installer = AppInsights::BaseInstaller.new app, root, filename, logger
|
75
|
+
|
76
|
+
# Now you have an installer ready to be executed
|
77
|
+
|
78
|
+
installer.install
|
79
|
+
|
80
|
+
# This will load the configuration file and add the middlewares enabled on the
|
81
|
+
# config file.
|
82
|
+
```
|
83
|
+
|
84
|
+
In case you want to check the configs or which middlewares were enabled using
|
85
|
+
ruby code, here is some useful lines of code:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
# Check the Context settings.
|
89
|
+
Application::Context.context
|
90
|
+
=> #<ApplicationInsights::Channel::TelemetryContext:0x007f961dbf3b18 ...>
|
91
|
+
|
92
|
+
|
93
|
+
# Check the Middlewares settings
|
94
|
+
AppInsights::Middlewares.settings
|
95
|
+
=> [{"name"=>"AppInsights::ExceptionHandling", "enabled"=>true}, ... ]
|
96
|
+
|
97
|
+
# Check the Middlewares enabled
|
98
|
+
AppInsights::Middlewares.enabled
|
99
|
+
=> [[AppInsights::ExceptionHandling, {}], ... ]
|
100
|
+
```
|
101
|
+
|
102
|
+
|
103
|
+
# Configuration file
|
104
|
+
|
105
|
+
`appinsights` uses TOML, a minimal configuration file format that's easy to read.
|
106
|
+
If you are not familiar with TOML, please [read the specs][toml_specs].
|
107
|
+
|
108
|
+
## Structure
|
109
|
+
|
110
|
+
There are two big _structures_ inside the configuration file.
|
111
|
+
|
112
|
+
1. Application Insights Context settings
|
113
|
+
2. Middlewares
|
114
|
+
|
115
|
+
### 1. Application Insights Context settings
|
116
|
+
|
117
|
+
All this settings must be grouped by _'ai'_ table.
|
118
|
+
This settings are defined for every _contract_ on the [SDK][ai_sdk]
|
119
|
+
|
120
|
+
The only exception and the most important setting is the **instrumentation_key**
|
121
|
+
that must be defined under the _'ai'_ table.
|
122
|
+
|
123
|
+
Lets see an example:
|
124
|
+
|
125
|
+
```toml
|
126
|
+
[ai]
|
127
|
+
instrumentation_key = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
|
128
|
+
custom = 4
|
129
|
+
properties = 'belong to the context'
|
130
|
+
|
131
|
+
# Contracts configuration
|
132
|
+
|
133
|
+
[ai.application]
|
134
|
+
ver = '0.2.0'
|
135
|
+
|
136
|
+
[ai.device]
|
137
|
+
id = 'device001'
|
138
|
+
os = 'OSX'
|
139
|
+
|
140
|
+
[ai.user]
|
141
|
+
id = 'a_user_id'
|
142
|
+
accountId = '1234567890'
|
143
|
+
```
|
144
|
+
|
145
|
+
### 2. Middlewares
|
146
|
+
|
147
|
+
This is the other important structure on the configuration file.
|
148
|
+
Here we will define which middleware we want to use and enable or disable it.
|
149
|
+
We defined `appinsights` to be as flexible as possible, so we can configure
|
150
|
+
middlewares defined in other libraries but they were defined in our scope.
|
151
|
+
|
152
|
+
Of course that you can add extra parameters for your personal usage but
|
153
|
+
there are two required parameters for every _middleware_ definition:
|
154
|
+
|
155
|
+
- `name` - Complete constant name of the middleware
|
156
|
+
- `enabled` - boolean
|
157
|
+
|
158
|
+
And given there are some _middleware_ which needs extra parameters at the
|
159
|
+
initialization process, you can define a hash with the attributes and we will
|
160
|
+
preserve the order of the attributes defined.
|
161
|
+
|
162
|
+
If you are a little confused, here is a valid example for both scenarios:
|
163
|
+
|
164
|
+
```toml
|
165
|
+
[[middleware]]
|
166
|
+
name = 'AppInsights::ExceptionHandling'
|
167
|
+
enabled = true
|
168
|
+
|
169
|
+
[[middleware]]
|
170
|
+
name = 'ApplicationInsights::Rack::TrackRequest'
|
171
|
+
enabled = true
|
172
|
+
|
173
|
+
[middleware.initialize]
|
174
|
+
instrumentation_key = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
|
175
|
+
buffer_size = 250
|
176
|
+
send_interval = 30
|
177
|
+
```
|
178
|
+
|
179
|
+
## Location
|
180
|
+
|
181
|
+
By default `appinsights` will search for the configuration file, starting at
|
182
|
+
the root of the project
|
183
|
+
|
184
|
+
- `./config/application_insights.toml`
|
185
|
+
- `./application_insights.toml`
|
186
|
+
|
187
|
+
You can also use a custom file name and path before start the application.
|
188
|
+
Set the environment variable `AI_CONFIG_RPATH` with the relative path of the file
|
189
|
+
|
190
|
+
$ export AI_CONFIG_RPATH='./settings/appinsights_settings.toml'
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
[toml_specs]: https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.3.1.md
|
195
|
+
[ai_sdk]: https://github.com/Microsoft/AppInsights-Ruby/tree/master/lib/application_insights/channel/contracts
|
data/appinsights.gemspec
CHANGED
data/lib/appinsights.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require_relative 'errors'
|
2
|
-
require_relative 'context'
|
3
|
-
require_relative 'middlewares'
|
4
|
-
require_relative 'config_loader'
|
5
|
-
require_relative 'installers/base'
|
1
|
+
require_relative 'appinsights/errors'
|
2
|
+
require_relative 'appinsights/context'
|
3
|
+
require_relative 'appinsights/middlewares'
|
4
|
+
require_relative 'appinsights/config_loader'
|
5
|
+
require_relative 'appinsights/installers/base'
|
6
6
|
|
7
7
|
module AppInsights
|
8
8
|
if defined?(Rails::VERSION)
|
9
|
-
require_relative 'installers/rails'
|
9
|
+
require_relative 'appinsights/installers/rails'
|
10
10
|
elsif defined?(Sinatra::VERSION)
|
11
|
-
require_relative 'installers/sinatra'
|
11
|
+
require_relative 'appinsights/installers/sinatra'
|
12
12
|
else
|
13
13
|
require 'logger'
|
14
14
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module AppInsights
|
4
|
+
class RailsInstaller < Rails::Railtie
|
5
|
+
initializer 'appinsights.start_plugin' do |_app|
|
6
|
+
init Rails.root
|
7
|
+
end
|
8
|
+
|
9
|
+
def init(root, filename = nil)
|
10
|
+
installer = AppInsights::BaseInstaller.new config.app_middleware,
|
11
|
+
root,
|
12
|
+
filename,
|
13
|
+
Rails.logger
|
14
|
+
|
15
|
+
installer.install
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -7,9 +7,9 @@ module AppInsights
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.init(root, filename = nil)
|
10
|
-
installer = AppInsights::
|
11
|
-
|
12
|
-
|
10
|
+
installer = AppInsights::BaseInstaller.new Sinatra::Application,
|
11
|
+
root,
|
12
|
+
filename
|
13
13
|
|
14
14
|
installer.install
|
15
15
|
end
|
File without changes
|
File without changes
|
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.
|
4
|
+
version: 0.0.3
|
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
|
+
date: 2015-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: toml-rb
|
@@ -68,15 +68,15 @@ files:
|
|
68
68
|
- README.md
|
69
69
|
- appinsights.gemspec
|
70
70
|
- lib/appinsights.rb
|
71
|
-
- lib/config_loader.rb
|
72
|
-
- lib/context.rb
|
73
|
-
- lib/errors.rb
|
74
|
-
- lib/installers/base.rb
|
75
|
-
- lib/installers/rails.rb
|
76
|
-
- lib/installers/sinatra.rb
|
77
|
-
- lib/middlewares.rb
|
78
|
-
- lib/middlewares/exception_handling.rb
|
79
|
-
- lib/version.rb
|
71
|
+
- lib/appinsights/config_loader.rb
|
72
|
+
- lib/appinsights/context.rb
|
73
|
+
- lib/appinsights/errors.rb
|
74
|
+
- lib/appinsights/installers/base.rb
|
75
|
+
- lib/appinsights/installers/rails.rb
|
76
|
+
- lib/appinsights/installers/sinatra.rb
|
77
|
+
- lib/appinsights/middlewares.rb
|
78
|
+
- lib/appinsights/middlewares/exception_handling.rb
|
79
|
+
- lib/appinsights/version.rb
|
80
80
|
- rakefile
|
81
81
|
- test/base_installer_test.rb
|
82
82
|
- test/config_loader_test.rb
|
data/lib/installers/rails.rb
DELETED
@@ -1,16 +0,0 @@
|
|
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
|