peastash 0.0.9 → 0.1.0

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: a82ba88b2a2a87b61d0033e94e8ffdb21550fe5d
4
- data.tar.gz: 9fbbd55f82230fbf185e3448f611478cbbaf8622
3
+ metadata.gz: 3ae1c4247d347a2b0bbed42330c324909a05a289
4
+ data.tar.gz: ddee185247132b7067e3dd3e7db9041c88633414
5
5
  SHA512:
6
- metadata.gz: 739af7a73e9adb45342803e1c5daeec1954f5f1e7abe51c3058a61df5224d7e8d436d0a1d064bcb6113762ebf70c06e7b9a37186555e792fdc8a911e8fb2d5cd
7
- data.tar.gz: 7a9929a16f3db58f4aa6167829b16b6482ba8796aedebff5fd26248d3df6fe4fd37861c4290bc1b7576998a83ea00d269488a2c0a4c40570fedf51c20fc7997d
6
+ metadata.gz: c3b0b19df08f1b3a01282c995dea4f4d1d128c58b3ca2986aa0df6acc03acc8937fbf4f9643a8c57cbdcf2194757195ac03ffd64d5b5d8f4d6f0f54cb0c99d63
7
+ data.tar.gz: a93bedc2e49cfe10ec896af5129b24672e4524df83ecbc39a1c3a507543c80fde302ab7b8fa6938d53fe67c8680611f3b0b4856d8f9af78e95d439feb4efedaf
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ coverage
2
2
  pkg
3
3
  .DS_STORE
4
4
  *.log
5
+ Gemfile.lock
data/README.md CHANGED
@@ -23,8 +23,8 @@ gem 'peastash'
23
23
 
24
24
  ### Getting started
25
25
  ``Peastash`` provides a simple interface to aggregate data to be sent to Logstash.
26
- The boundaries of a log entry are defined by a the ``Peastash.with_instance.log`` block.
27
- When the code inside the block is done running a log entry will be created and written.
26
+ The boundaries of a log entry are defined by the ``Peastash.with_instance.log`` block.
27
+ When the code inside the block is done running, a log entry will be created and written.
28
28
  The most basic usage would look like:
29
29
 
30
30
  ```ruby
@@ -63,9 +63,9 @@ Please note that this is a global setting and cannot be set per-instance.
63
63
 
64
64
  #### Outputs
65
65
 
66
- Peastash ships with a single output: ``Peastash::Outputs::IO``. It can be initialized either by passing it path or an IO object.
66
+ Peastash ships with a single output: ``Peastash::Outputs::IO``. It can be initialized either by passing it a path or an IO object.
67
67
  Peastash can easily be extended to output to any target.
68
- Simply configure Peastash's output with an object that responds to the ``#dump`` method. This method will be called at the end of the ``#log`` block, with 1 argument : a ``LogStash::Event`` object, that you will probably need to serialize to json.
68
+ Simply configure Peastash's output with an object that responds to the ``#dump`` method. This method will be called at the end of the ``#log`` block, with 1 argument: a ``LogStash::Event`` object that you will probably need to serialize to json.
69
69
 
70
70
  ### What if I want to use it in my rack app?
71
71
 
@@ -77,7 +77,7 @@ use Peastash::Middleware
77
77
  ```
78
78
 
79
79
  By default, the middleware only adds the ``duration``, ``status`` and ``hostname`` (machine name) fields to the log entry.
80
- In addition to using ``Peastash.with_instance.store`` to add information, you can pass one or two block arguments to ``use``, that will be called with the request env and the Rack response in parameter, in the context of the Middleware's instance.
80
+ In addition to using ``Peastash.with_instance.store`` to add information, you can pass one or two block arguments to the ``use`` dsl, that will be called with the request ``env`` and the Rack response in parameter, in the context of the Middleware's instance.
81
81
  The first block will be called **before** the request (with a ``response = nil``), while the second one will be called **after**, with the actual response. For example:
82
82
 
83
83
  ```ruby
@@ -103,7 +103,7 @@ config.peastash.source = Rails.application.class.parent_name
103
103
 
104
104
  By default, Peastash's Rails integration will log the same parameters as the Middleware version, plus the fields in the payload of the [``process_action.action_controller``](http://edgeguides.rubyonrails.org/active_support_instrumentation.html#process_action.action_controller) notification (except the params).
105
105
 
106
- All the options for ``Peastash`` can be set using the ``config.peastash`` configuratio object.
106
+ All the options for ``Peastash`` can be set using the ``config.peastash`` configuration object.
107
107
 
108
108
  #### Logging request parameters
109
109
 
@@ -113,7 +113,7 @@ To enable parameter logging, you must add the following to your configuration:
113
113
  config.peastash.log_parameters = true
114
114
  ```
115
115
 
116
- Be careful, as this can significantly increase the size of the log entries, as well as causing problem if other Logstash entries have the same field with a different data type.
116
+ Be careful, as this can significantly increase the size of the log entries, as well as causing issues if other Logstash entries have the same field with a different data type.
117
117
 
118
118
  #### Listening to ``ActiveSupport::Notifications``
119
119
  Additionaly, you can use Peastash to aggregate data from any ``ActiveSupport::Notifications``:
@@ -156,10 +156,10 @@ Using several instances, you can nest ``log`` blocks without sharing the store,
156
156
  For example, you can log your Rails query with the ``global`` instance, and your asynchronous jobs with a ``worker`` instance, and have those instances output to different files.
157
157
 
158
158
  ### Playing with tags
159
- There are three ways to tag your log entries in Peastash.with_instance.
159
+ There are three ways to tag your log entries in ``Peastash.with_instance``.
160
160
 
161
- * The first one is through configuration (see above).
162
- * The second one is by passing tags to the ``Peastash.with_instance.log`` method.
161
+ * The first one is through configuration (see above)
162
+ * The second one is by passing tags to the ``Peastash.with_instance.log`` method
163
163
  * The last one is to call the ``Peastash.with_instance.tags`` method from within a ``Peastash.with_instance.log`` block. Tags defined with this method are not persistent and will disappear at the next call to ``Peastash.with_instance.log``
164
164
 
165
165
  For example:
@@ -1,3 +1,3 @@
1
1
  class Peastash
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/peastash.rb CHANGED
@@ -115,6 +115,11 @@ class Peastash
115
115
  end
116
116
 
117
117
  def build_event(source, tags)
118
- LogStash::Event.new('@source' => source, '@fields' => store, '@tags' => @base_tags + tags)
118
+ LogStash::Event.new({
119
+ '@source' => source,
120
+ '@fields' => store,
121
+ '@tags' => @base_tags + tags,
122
+ '@pid' => Process.pid
123
+ })
119
124
  end
120
125
  end
@@ -53,7 +53,8 @@ describe Peastash::Middleware do
53
53
  expect(LogStash::Event).to receive(:new).with({
54
54
  '@source' => Peastash::STORE_NAME,
55
55
  '@fields' => { path: '/', duration: 0, status: 200, ip: nil },
56
- '@tags' => []
56
+ '@tags' => [],
57
+ '@pid' => an_instance_of(Fixnum),
57
58
  })
58
59
  Timecop.freeze { @middleware.call env_for('/') }
59
60
  end
@@ -78,7 +79,8 @@ describe Peastash::Middleware do
78
79
  expect(LogStash::Event).to receive(:new).with({
79
80
  '@source' => Peastash::STORE_NAME,
80
81
  '@fields' => { scheme: 'http', duration: 0, status: 200, ip: nil },
81
- '@tags' => []
82
+ '@tags' => [],
83
+ '@pid' => an_instance_of(Fixnum),
82
84
  })
83
85
  Timecop.freeze { @middleware.call env_for('/') }
84
86
  end
@@ -103,6 +105,7 @@ describe Peastash::Middleware do
103
105
  '@source' => Peastash::STORE_NAME,
104
106
  '@fields' => { duration: 0, status: 200, foo: 'foo', ip: nil },
105
107
  '@tags' => [],
108
+ '@pid' => an_instance_of(Fixnum),
106
109
  })
107
110
  Timecop.freeze { @middleware.call env_for('/') }
108
111
  end
@@ -35,8 +35,9 @@ describe Peastash do
35
35
  Peastash.with_instance.configure!(tags: tags)
36
36
  expect(LogStash::Event).to receive(:new).with({
37
37
  '@source' => Peastash::STORE_NAME,
38
- '@fields' => {},
39
- '@tags' => tags
38
+ '@fields' => an_instance_of(Hash),
39
+ '@tags' => tags,
40
+ '@pid' => an_instance_of(Fixnum),
40
41
  })
41
42
  Peastash.with_instance.log {}
42
43
  end
@@ -45,8 +46,9 @@ describe Peastash do
45
46
  Peastash.with_instance.configure!(source: 'foo')
46
47
  expect(LogStash::Event).to receive(:new).with({
47
48
  '@source' => 'foo',
48
- '@fields' => {},
49
- '@tags' => []
49
+ '@fields' => an_instance_of(Hash),
50
+ '@tags' => [],
51
+ '@pid' => an_instance_of(Fixnum),
50
52
  })
51
53
  Peastash.with_instance.log {}
52
54
  end
@@ -118,8 +120,9 @@ describe Peastash do
118
120
  Peastash.with_instance.configure!(tags: base_tags)
119
121
  expect(LogStash::Event).to receive(:new).with({
120
122
  '@source' => Peastash::STORE_NAME,
121
- '@fields' => {},
122
- '@tags' => base_tags + tags
123
+ '@fields' => an_instance_of(Hash),
124
+ '@tags' => base_tags + tags,
125
+ '@pid' => an_instance_of(Fixnum),
123
126
  })
124
127
  Peastash.with_instance.log(tags) {}
125
128
  end
@@ -177,8 +180,9 @@ describe Peastash do
177
180
  Peastash.with_instance.configure!(tags: base_tags)
178
181
  expect(LogStash::Event).to receive(:new).with({
179
182
  '@source' => Peastash::STORE_NAME,
180
- '@fields' => {},
181
- '@tags' => base_tags + tags + additional_tags
183
+ '@fields' => an_instance_of(Hash),
184
+ '@tags' => base_tags + tags + additional_tags,
185
+ '@pid' => an_instance_of(Fixnum),
182
186
  })
183
187
  Peastash.with_instance.log(tags) { Peastash.with_instance.tags.concat(additional_tags) }
184
188
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peastash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Boisard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-09 00:00:00.000000000 Z
11
+ date: 2015-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-event
@@ -160,7 +160,6 @@ files:
160
160
  - ".gitignore"
161
161
  - ".travis.yml"
162
162
  - Gemfile
163
- - Gemfile.lock
164
163
  - README.md
165
164
  - Rakefile
166
165
  - lib/peastash.rb
@@ -236,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
235
  version: '0'
237
236
  requirements: []
238
237
  rubyforge_project:
239
- rubygems_version: 2.4.1
238
+ rubygems_version: 2.4.2
240
239
  signing_key:
241
240
  specification_version: 4
242
241
  summary: Peastash allows you to instrument your code with the ELK stack easily.
@@ -287,3 +286,4 @@ test_files:
287
286
  - spec/peastash/rails_ext/watch_spec.rb
288
287
  - spec/peastash_spec.rb
289
288
  - spec/spec_helper.rb
289
+ has_rdoc:
data/Gemfile.lock DELETED
@@ -1,129 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- peastash (0.0.9)
5
- logstash-event
6
- thread_safe
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionmailer (4.1.1)
12
- actionpack (= 4.1.1)
13
- actionview (= 4.1.1)
14
- mail (~> 2.5.4)
15
- actionpack (4.1.1)
16
- actionview (= 4.1.1)
17
- activesupport (= 4.1.1)
18
- rack (~> 1.5.2)
19
- rack-test (~> 0.6.2)
20
- actionview (4.1.1)
21
- activesupport (= 4.1.1)
22
- builder (~> 3.1)
23
- erubis (~> 2.7.0)
24
- activemodel (4.1.1)
25
- activesupport (= 4.1.1)
26
- builder (~> 3.1)
27
- activerecord (4.1.1)
28
- activemodel (= 4.1.1)
29
- activesupport (= 4.1.1)
30
- arel (~> 5.0.0)
31
- activesupport (4.1.1)
32
- i18n (~> 0.6, >= 0.6.9)
33
- json (~> 1.7, >= 1.7.7)
34
- minitest (~> 5.1)
35
- thread_safe (~> 0.1)
36
- tzinfo (~> 1.1)
37
- arel (5.0.1.20140414130214)
38
- builder (3.2.2)
39
- coderay (1.1.0)
40
- diff-lcs (1.2.5)
41
- erubis (2.7.0)
42
- hike (1.2.3)
43
- i18n (0.6.9)
44
- json (1.8.1)
45
- logstash-event (1.2.02)
46
- mail (2.5.4)
47
- mime-types (~> 1.16)
48
- treetop (~> 1.4.8)
49
- method_source (0.8.2)
50
- mime-types (1.25.1)
51
- minitest (5.3.4)
52
- multi_json (1.10.0)
53
- polyglot (0.3.4)
54
- pry (0.9.12.6)
55
- coderay (~> 1.0)
56
- method_source (~> 0.8)
57
- slop (~> 3.4)
58
- rack (1.5.2)
59
- rack-test (0.6.2)
60
- rack (>= 1.0)
61
- rails (4.1.1)
62
- actionmailer (= 4.1.1)
63
- actionpack (= 4.1.1)
64
- actionview (= 4.1.1)
65
- activemodel (= 4.1.1)
66
- activerecord (= 4.1.1)
67
- activesupport (= 4.1.1)
68
- bundler (>= 1.3.0, < 2.0)
69
- railties (= 4.1.1)
70
- sprockets-rails (~> 2.0)
71
- railties (4.1.1)
72
- actionpack (= 4.1.1)
73
- activesupport (= 4.1.1)
74
- rake (>= 0.8.7)
75
- thor (>= 0.18.1, < 2.0)
76
- rake (10.3.1)
77
- rspec (2.14.1)
78
- rspec-core (~> 2.14.0)
79
- rspec-expectations (~> 2.14.0)
80
- rspec-mocks (~> 2.14.0)
81
- rspec-core (2.14.8)
82
- rspec-expectations (2.14.5)
83
- diff-lcs (>= 1.1.3, < 2.0)
84
- rspec-mocks (2.14.6)
85
- rspec-rails (2.14.1)
86
- actionpack (>= 3.0)
87
- activemodel (>= 3.0)
88
- activesupport (>= 3.0)
89
- railties (>= 3.0)
90
- rspec-core (~> 2.14.0)
91
- rspec-expectations (~> 2.14.0)
92
- rspec-mocks (~> 2.14.0)
93
- simplecov (0.7.1)
94
- multi_json (~> 1.0)
95
- simplecov-html (~> 0.7.1)
96
- simplecov-html (0.7.1)
97
- slop (3.5.0)
98
- sprockets (2.12.1)
99
- hike (~> 1.2)
100
- multi_json (~> 1.0)
101
- rack (~> 1.0)
102
- tilt (~> 1.1, != 1.3.0)
103
- sprockets-rails (2.1.3)
104
- actionpack (>= 3.0)
105
- activesupport (>= 3.0)
106
- sprockets (~> 2.8)
107
- thor (0.19.1)
108
- thread_safe (0.3.4)
109
- tilt (1.4.1)
110
- timecop (0.7.1)
111
- treetop (1.4.15)
112
- polyglot
113
- polyglot (>= 0.3.1)
114
- tzinfo (1.2.0)
115
- thread_safe (~> 0.1)
116
-
117
- PLATFORMS
118
- ruby
119
-
120
- DEPENDENCIES
121
- peastash!
122
- pry
123
- rack-test
124
- rails
125
- rake
126
- rspec (~> 2.14)
127
- rspec-rails
128
- simplecov (~> 0.7.1)
129
- timecop