logstash-logger 0.26.1 → 1.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +53 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +85 -105
  5. data/Appraisals +6 -20
  6. data/CHANGELOG.md +61 -0
  7. data/Gemfile +2 -2
  8. data/README.md +12 -833
  9. data/docs/buffering.md +86 -0
  10. data/docs/customization.md +86 -0
  11. data/docs/outputs.md +65 -0
  12. data/docs/rails.md +349 -0
  13. data/docs/ssl.md +102 -0
  14. data/docs/troubleshooting.md +106 -0
  15. data/docs/usage.md +148 -0
  16. data/gemfiles/rails_8.0.gemfile +10 -0
  17. data/gemfiles/rails_8.1.gemfile +9 -0
  18. data/lib/logstash-logger/buffer.rb +15 -5
  19. data/lib/logstash-logger/configuration.rb +1 -2
  20. data/lib/logstash-logger/device/aws_stream.rb +96 -17
  21. data/lib/logstash-logger/device/base.rb +2 -2
  22. data/lib/logstash-logger/device/connectable.rb +30 -12
  23. data/lib/logstash-logger/device/file.rb +21 -4
  24. data/lib/logstash-logger/device/firehose.rb +6 -0
  25. data/lib/logstash-logger/device/http.rb +104 -0
  26. data/lib/logstash-logger/device/kafka.rb +182 -38
  27. data/lib/logstash-logger/device/kinesis.rb +10 -1
  28. data/lib/logstash-logger/device/redis.rb +8 -1
  29. data/lib/logstash-logger/device/tcp.rb +54 -12
  30. data/lib/logstash-logger/device.rb +24 -2
  31. data/lib/logstash-logger/formatter/base.rb +97 -11
  32. data/lib/logstash-logger/formatter/cee_syslog.rb +8 -11
  33. data/lib/logstash-logger/formatter/json.rb +13 -0
  34. data/lib/logstash-logger/formatter/json_lines.rb +13 -0
  35. data/lib/logstash-logger/formatter.rb +14 -6
  36. data/lib/logstash-logger/logger.rb +6 -19
  37. data/lib/logstash-logger/multi_logger.rb +2 -1
  38. data/lib/logstash-logger/railtie.rb +1 -1
  39. data/lib/logstash-logger/tagged_logging.rb +3 -1
  40. data/lib/logstash-logger/version.rb +1 -1
  41. data/logstash-logger.gemspec +8 -4
  42. data/spec/device/aws_stream_limits_spec.rb +219 -0
  43. data/spec/device/connectable_spec.rb +51 -0
  44. data/spec/device/file_spec.rb +65 -0
  45. data/spec/device/firehose_spec.rb +4 -1
  46. data/spec/device/http_spec.rb +176 -0
  47. data/spec/device/kafka_spec.rb +429 -14
  48. data/spec/device/kinesis_spec.rb +4 -1
  49. data/spec/device/tcp_spec.rb +94 -5
  50. data/spec/device/tcp_tls_integration_spec.rb +91 -0
  51. data/spec/device_spec.rb +13 -0
  52. data/spec/formatter/base_spec.rb +82 -1
  53. data/spec/formatter/cee_syslog_spec.rb +71 -19
  54. data/spec/formatter/framing_spec.rb +58 -0
  55. data/spec/formatter/json_lines_spec.rb +41 -0
  56. data/spec/formatter/json_spec.rb +49 -0
  57. data/spec/formatter_spec.rb +19 -2
  58. data/spec/logger_spec.rb +5 -5
  59. data/spec/multi_logger_spec.rb +16 -0
  60. data/spec/spec_helper.rb +7 -5
  61. data/spec/support/tls_helper.rb +30 -0
  62. data/spec/support/unserializable_value.rb +10 -0
  63. data/spec/tagged_logging_spec.rb +15 -0
  64. metadata +101 -16
  65. data/.travis.yml +0 -26
  66. data/gemfiles/rails_3.2.gemfile +0 -9
  67. data/gemfiles/rails_4.0.gemfile +0 -9
  68. data/gemfiles/rails_4.1.gemfile +0 -9
  69. data/gemfiles/rails_4.2.gemfile +0 -9
  70. data/gemfiles/rails_5.0.gemfile +0 -9
  71. data/gemfiles/rails_5.1.gemfile +0 -9
data/spec/logger_spec.rb CHANGED
@@ -58,14 +58,14 @@ describe LogStashLogger do
58
58
 
59
59
  expect(listener_event['severity']).to eql('INFO')
60
60
  expect(listener_event['message']).to eq(message)
61
- expect(listener_event['host']).to eq(hostname)
61
+ expect(listener_event['host']['hostname']).to eq(hostname)
62
62
  end
63
63
 
64
64
  it 'takes a logstash-formatted json string as input and writes out a logstash event' do
65
65
  logger.info(logstash_event.to_json)
66
66
 
67
67
  expect(listener_event['message']).to eq(logstash_event['message'])
68
- expect(listener_event['host']).to eq(hostname)
68
+ expect(listener_event['host']['hostname']).to eq(hostname)
69
69
  end
70
70
 
71
71
  it 'takes a LogStash::Event as input and writes it out intact' do
@@ -74,7 +74,7 @@ describe LogStashLogger do
74
74
  expect(listener_event['message']).to eq(logstash_event['message'])
75
75
  expect(listener_event['severity']).to eq(logstash_event['severity'])
76
76
  expect(listener_event['@timestamp'].iso8601).to eq(logstash_event.timestamp.iso8601)
77
- expect(listener_event['host']).to eq(hostname)
77
+ expect(listener_event['host']['hostname']).to eq(hostname)
78
78
  end
79
79
 
80
80
  it 'takes a data hash as input and writes out a logstash event' do
@@ -89,7 +89,7 @@ describe LogStashLogger do
89
89
  expect(listener_event['message']).to eq(data["message"])
90
90
  expect(listener_event['severity']).to eq(data['severity'])
91
91
  expect(listener_event['foo']).to eq(data['foo'])
92
- expect(listener_event['host']).to eq(hostname)
92
+ expect(listener_event['host']['hostname']).to eq(hostname)
93
93
  expect(listener_event['@timestamp']).to_not be_nil
94
94
  end
95
95
 
@@ -99,7 +99,7 @@ describe LogStashLogger do
99
99
  logger.info(message)
100
100
 
101
101
  expect(listener_event['message']).to eq(message.inspect)
102
- expect(listener_event['host']).to eq(hostname)
102
+ expect(listener_event['host']['hostname']).to eq(hostname)
103
103
  expect(listener_event['severity']).to eq('INFO')
104
104
  end
105
105
 
@@ -56,4 +56,20 @@ describe LogStashLogger::MultiLogger do
56
56
  logger.info 'test'
57
57
  end
58
58
  end
59
+
60
+ it "can call .reset on each logger" do
61
+ subject.loggers.each do |logger|
62
+ expect(logger).to receive(:reset).and_call_original
63
+ end
64
+
65
+ subject.reset
66
+ end
67
+
68
+ it "delegates #log to loggers" do
69
+ subject.loggers.each do |logger|
70
+ expect(logger).to receive(:add).with(::Logger::DEBUG, "test", nil)
71
+ end
72
+
73
+ subject.log(::Logger::DEBUG, "test")
74
+ end
59
75
  end
data/spec/spec_helper.rb CHANGED
@@ -2,11 +2,12 @@ require 'pry'
2
2
  require 'securerandom'
3
3
 
4
4
  require 'simplecov'
5
+ require 'simplecov-cobertura'
6
+ SimpleCov.formatters = [
7
+ SimpleCov::Formatter::HTMLFormatter,
8
+ SimpleCov::Formatter::CoberturaFormatter
9
+ ]
5
10
  SimpleCov.start
6
- if ENV['CI']=='true'
7
- require 'codecov'
8
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
9
- end
10
11
 
11
12
  RSpec.configure do |config|
12
13
  config.order = "random"
@@ -53,6 +54,7 @@ RSpec.shared_context 'device' do
53
54
  let(:tcp_device) { LogStashLogger::Device.new(type: :tcp, port: port, sync: true) }
54
55
  let(:ssl_tcp_device) { LogStashLogger::Device.new(type: :tcp, port: port, ssl_enable: true, sync: true) }
55
56
  let(:unix_device) { LogStashLogger::Device.new(type: :unix, path: '/tmp/logstash', sync: true) }
57
+ let(:http_device) { LogStashLogger::Device.new(type: :http, url: 'http://localhost', sync: true) }
56
58
 
57
59
  let(:file) { Tempfile.new('test') }
58
60
  let(:file_device) { LogStashLogger::Device.new(type: :file, path: file.path)}
@@ -83,7 +85,7 @@ RSpec.shared_context 'device' do
83
85
  let(:unix_uri) { "unix:///some/path/to/socket" }
84
86
  let(:file_uri) { "file://#{file.path}" }
85
87
  let(:redis_uri) { "redis://localhost:6379" }
86
- let(:kafka_uri) { "kafka://localhost:9092" }
88
+ let(:kafka_uri) { "kafka://localhost:9092/logstash" }
87
89
  let(:stdout_uri) { "stdout://localhost" }
88
90
  let(:stderr_uri) { "stderr://localhost" }
89
91
 
@@ -0,0 +1,30 @@
1
+ require 'openssl'
2
+ require 'tempfile'
3
+
4
+ # Builds throwaway self-signed certificates for TLS specs. Nothing is written
5
+ # outside Tempfile, and the keys never leave the test process.
6
+ module TLSHelper
7
+ def self.self_signed(common_name: 'localhost', dns: ['localhost'], ips: ['127.0.0.1'])
8
+ key = OpenSSL::PKey::RSA.new(2048)
9
+ cert = OpenSSL::X509::Certificate.new
10
+ cert.version = 2
11
+ cert.serial = rand(2**64)
12
+ cert.subject = cert.issuer = OpenSSL::X509::Name.parse("/CN=#{common_name}")
13
+ cert.public_key = key.public_key
14
+ cert.not_before = Time.now - 60
15
+ cert.not_after = Time.now + 3600
16
+ ef = OpenSSL::X509::ExtensionFactory.new(cert, cert)
17
+ cert.add_extension(ef.create_extension('basicConstraints', 'CA:TRUE', true))
18
+ sans = dns.map { |d| "DNS:#{d}" } + ips.map { |i| "IP:#{i}" }
19
+ cert.add_extension(ef.create_extension('subjectAltName', sans.join(','))) unless sans.empty?
20
+ cert.sign(key, OpenSSL::Digest.new('SHA256'))
21
+ [cert, key]
22
+ end
23
+
24
+ def self.cert_file(cert)
25
+ Tempfile.new(['logstash-logger-test', '.crt']).tap do |f|
26
+ f.write(cert.to_pem)
27
+ f.flush
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ # A value whose JSON conversion always raises, with or without ActiveSupport
2
+ class UnserializableValue
3
+ def to_json(*)
4
+ raise JSON::GeneratorError, 'cannot serialize'
5
+ end
6
+
7
+ def as_json(*)
8
+ raise JSON::GeneratorError, 'cannot serialize'
9
+ end
10
+ end
@@ -28,5 +28,20 @@ describe LogStashLogger do
28
28
 
29
29
  logger.info(message)
30
30
  end
31
+
32
+ context 'when tag is an integer' do
33
+ let(:tag) { 10 }
34
+
35
+ it "puts the integer into the tags array on the logstash event" do
36
+ expect(logdev).to receive(:write) do |event_string|
37
+ event = JSON.parse(event_string)
38
+ expect(event['tags']).to match_array([10])
39
+ end
40
+
41
+ logger.tagged(tag) do
42
+ logger.info(message)
43
+ end
44
+ end
45
+ end
31
46
  end
32
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Butler
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-14 00:00:00.000000000 Z
11
+ date: 2026-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-event
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: poseidon
56
+ name: ruby-kafka
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: syslog
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0.4'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0.4'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +192,62 @@ dependencies:
178
192
  - - ">="
179
193
  - !ruby/object:Gem::Version
180
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop-performance
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rubocop-rails
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rubocop-rake
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rubocop-rspec
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
181
251
  description: Ruby logger that writes directly to LogStash
182
252
  email:
183
253
  - dwbutler@ucla.edu
@@ -185,22 +255,25 @@ executables: []
185
255
  extensions: []
186
256
  extra_rdoc_files: []
187
257
  files:
258
+ - ".github/workflows/tests.yml"
188
259
  - ".gitignore"
189
260
  - ".rspec"
190
261
  - ".rubocop.yml"
191
- - ".travis.yml"
192
262
  - Appraisals
193
263
  - CHANGELOG.md
194
264
  - Gemfile
195
265
  - LICENSE.txt
196
266
  - README.md
197
267
  - Rakefile
198
- - gemfiles/rails_3.2.gemfile
199
- - gemfiles/rails_4.0.gemfile
200
- - gemfiles/rails_4.1.gemfile
201
- - gemfiles/rails_4.2.gemfile
202
- - gemfiles/rails_5.0.gemfile
203
- - gemfiles/rails_5.1.gemfile
268
+ - docs/buffering.md
269
+ - docs/customization.md
270
+ - docs/outputs.md
271
+ - docs/rails.md
272
+ - docs/ssl.md
273
+ - docs/troubleshooting.md
274
+ - docs/usage.md
275
+ - gemfiles/rails_8.0.gemfile
276
+ - gemfiles/rails_8.1.gemfile
204
277
  - lib/logstash-logger.rb
205
278
  - lib/logstash-logger/buffer.rb
206
279
  - lib/logstash-logger/configuration.rb
@@ -211,6 +284,7 @@ files:
211
284
  - lib/logstash-logger/device/connectable.rb
212
285
  - lib/logstash-logger/device/file.rb
213
286
  - lib/logstash-logger/device/firehose.rb
287
+ - lib/logstash-logger/device/http.rb
214
288
  - lib/logstash-logger/device/io.rb
215
289
  - lib/logstash-logger/device/kafka.rb
216
290
  - lib/logstash-logger/device/kinesis.rb
@@ -247,10 +321,12 @@ files:
247
321
  - samples/unix.conf
248
322
  - spec/configuration_spec.rb
249
323
  - spec/constructor_spec.rb
324
+ - spec/device/aws_stream_limits_spec.rb
250
325
  - spec/device/balancer_spec.rb
251
326
  - spec/device/connectable_spec.rb
252
327
  - spec/device/file_spec.rb
253
328
  - spec/device/firehose_spec.rb
329
+ - spec/device/http_spec.rb
254
330
  - spec/device/io_spec.rb
255
331
  - spec/device/kafka_spec.rb
256
332
  - spec/device/kinesis_spec.rb
@@ -260,12 +336,14 @@ files:
260
336
  - spec/device/stderr_spec.rb
261
337
  - spec/device/stdout_spec.rb
262
338
  - spec/device/tcp_spec.rb
339
+ - spec/device/tcp_tls_integration_spec.rb
263
340
  - spec/device/udp_spec.rb
264
341
  - spec/device/unix_spec.rb
265
342
  - spec/device_spec.rb
266
343
  - spec/formatter/base_spec.rb
267
344
  - spec/formatter/cee_spec.rb
268
345
  - spec/formatter/cee_syslog_spec.rb
346
+ - spec/formatter/framing_spec.rb
269
347
  - spec/formatter/json_lines_spec.rb
270
348
  - spec/formatter/json_spec.rb
271
349
  - spec/formatter/logstash_event_spec.rb
@@ -275,13 +353,15 @@ files:
275
353
  - spec/rails_spec.rb
276
354
  - spec/silenced_logging_spec.rb
277
355
  - spec/spec_helper.rb
356
+ - spec/support/tls_helper.rb
357
+ - spec/support/unserializable_value.rb
278
358
  - spec/syslog_spec.rb
279
359
  - spec/tagged_logging_spec.rb
280
360
  homepage: http://github.com/dwbutler/logstash-logger
281
361
  licenses:
282
362
  - MIT
283
363
  metadata: {}
284
- post_install_message:
364
+ post_install_message:
285
365
  rdoc_options: []
286
366
  require_paths:
287
367
  - lib
@@ -289,25 +369,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
289
369
  requirements:
290
370
  - - ">="
291
371
  - !ruby/object:Gem::Version
292
- version: '0'
372
+ version: '3.3'
293
373
  required_rubygems_version: !ruby/object:Gem::Requirement
294
374
  requirements:
295
375
  - - ">="
296
376
  - !ruby/object:Gem::Version
297
377
  version: '0'
298
378
  requirements: []
299
- rubyforge_project:
300
- rubygems_version: 2.7.3
301
- signing_key:
379
+ rubygems_version: 3.5.22
380
+ signing_key:
302
381
  specification_version: 4
303
382
  summary: LogStash Logger for ruby
304
383
  test_files:
305
384
  - spec/configuration_spec.rb
306
385
  - spec/constructor_spec.rb
386
+ - spec/device/aws_stream_limits_spec.rb
307
387
  - spec/device/balancer_spec.rb
308
388
  - spec/device/connectable_spec.rb
309
389
  - spec/device/file_spec.rb
310
390
  - spec/device/firehose_spec.rb
391
+ - spec/device/http_spec.rb
311
392
  - spec/device/io_spec.rb
312
393
  - spec/device/kafka_spec.rb
313
394
  - spec/device/kinesis_spec.rb
@@ -317,12 +398,14 @@ test_files:
317
398
  - spec/device/stderr_spec.rb
318
399
  - spec/device/stdout_spec.rb
319
400
  - spec/device/tcp_spec.rb
401
+ - spec/device/tcp_tls_integration_spec.rb
320
402
  - spec/device/udp_spec.rb
321
403
  - spec/device/unix_spec.rb
322
404
  - spec/device_spec.rb
323
405
  - spec/formatter/base_spec.rb
324
406
  - spec/formatter/cee_spec.rb
325
407
  - spec/formatter/cee_syslog_spec.rb
408
+ - spec/formatter/framing_spec.rb
326
409
  - spec/formatter/json_lines_spec.rb
327
410
  - spec/formatter/json_spec.rb
328
411
  - spec/formatter/logstash_event_spec.rb
@@ -332,5 +415,7 @@ test_files:
332
415
  - spec/rails_spec.rb
333
416
  - spec/silenced_logging_spec.rb
334
417
  - spec/spec_helper.rb
418
+ - spec/support/tls_helper.rb
419
+ - spec/support/unserializable_value.rb
335
420
  - spec/syslog_spec.rb
336
421
  - spec/tagged_logging_spec.rb
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- language: ruby
2
- dist: trusty
3
- sudo: false
4
- cache: bundler
5
- before_install:
6
- - gem update --system
7
- - gem install bundler
8
- after_success:
9
- bundle exec codeclimate-test-reporter
10
- rvm:
11
- - 2.2.7
12
- - 2.3.4
13
- - 2.4.1
14
- - 2.5.0
15
- - jruby-9.1.5.0
16
- - rubinius-3
17
- gemfile:
18
- - gemfiles/rails_4.2.gemfile
19
- - gemfiles/rails_5.0.gemfile
20
- - gemfiles/rails_5.1.gemfile
21
- matrix:
22
- allow_failures:
23
- - rvm: rubinius-3
24
- addons:
25
- code_climate:
26
- repo_token: 4d712355fa2863c0f33f413eeede4e52cc221c4bc989a692d97574b1f6010b69
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "codecov", :require => false, :group => :test
6
- gem "codeclimate-test-reporter", :group => :test, :require => nil
7
- gem "rails", "~> 3.2.18"
8
-
9
- gemspec :path => "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "codecov", require: false, group: :test
6
- gem "codeclimate-test-reporter", group: :test, require: nil
7
- gem "rails", "~> 4.0.0"
8
-
9
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "codecov", require: false, group: :test
6
- gem "codeclimate-test-reporter", group: :test, require: nil
7
- gem "rails", "~> 4.1.1"
8
-
9
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "codecov", require: false, group: :test
6
- gem "codeclimate-test-reporter", group: :test, require: nil
7
- gem "rails", "~> 4.2.0"
8
-
9
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "codecov", require: false, group: :test
6
- gem "codeclimate-test-reporter", group: :test, require: nil
7
- gem "rails", "~> 5.0.0"
8
-
9
- gemspec path: "../"
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "codecov", require: false, group: :test
6
- gem "codeclimate-test-reporter", group: :test, require: nil
7
- gem "rails", "~> 5.1.0"
8
-
9
- gemspec path: "../"