ezlog 0.8.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a2b7013c5c263e56e4531fc3e1fd0d70d5e9ec4f807babd2a95d3c68a66d365
4
- data.tar.gz: 3684e63ae988f43c40291383e5c62b36e7907d0c3a377022616c70fe08a8550f
3
+ metadata.gz: 522f8d12a7a34a7aa83c51c6729dd212909979a3c0db32ad622436056be3ea03
4
+ data.tar.gz: ebf173e4431cb016de8e6a14b418b71106221982d3ebc082d53b2ed0a31fd3b5
5
5
  SHA512:
6
- metadata.gz: 9279792e2f20e69fc8594d7034557ba742e708a3140f78ea8439f2c78bf4bd4e303d36215edfd30fc4ca1d9d868f1e61aac1f3fe805145d17e59f6df39d9d913
7
- data.tar.gz: a6400bdc976110d23a3aba7df254314950c326846805601778c192d7a5ceaa37c94a12d414e38654f6627954f92dab51e9017ce864c70dbc064b1d4b491540e1
6
+ metadata.gz: c9efef1e23b6b8b77689d513665676aad77340d04131ca6241b565ac2cf7e8e78f21dbb0adf8ea06ce2a76008b12d7d350cbd7ea35de6d2228367b486bbda7b8
7
+ data.tar.gz: 14a749943851eadf758f2e71f0a9680f9af86c2b2895e5a946918d50696fe1f19ccacb090b37f40935d972150fb18af1d6602bb93b711917a471b8d8b4ced249
data/CHANGELOG.md CHANGED
@@ -1,3 +1,78 @@
1
+ ### 0.10.0 (2021-07-01)
2
+
3
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.6...v0.10.0)
4
+
5
+ * Features & enhancements
6
+ * Do not log exceptions which are handled by Rails. Therefore you can't get false alarms from your exception notifier
7
+
8
+ ### 0.9.6 (2021-06-30)
9
+
10
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.5...v0.9.6)
11
+
12
+ * Fix
13
+ * fixing a Rails 6.1 specific issue with ActiveRecord array parameter in a query (`User.where(id: [1,2,3,4])`)
14
+
15
+ ### 0.9.5 (2020-10-01)
16
+
17
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.4...v0.9.5)
18
+
19
+ * Fix
20
+ * fixing an issue with the Sidekiq job's log context generation:
21
+ using a namespaced Sidekiq worker (`SomeModule::SomeWorker`) cause the log context generations to fail with: `NameError: wrong constant name SomeModule::SomeWorker`
22
+
23
+ ### 0.9.4 (2020-09-26)
24
+
25
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.3...v0.9.4)
26
+
27
+ * Features & enhancements
28
+ * added Ruby 2.7 to the list of version CI will test the code with
29
+ * remove dot-files and Rakefile from the gem
30
+ * Fix
31
+ * stop using `Hash#merge` with multiple arguments as it's only supported from Ruby 2.6
32
+
33
+ ### 0.9.3 (2020-09-20)
34
+
35
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.2...v0.9.3)
36
+
37
+ * Features & enhancements
38
+ * Switching to [Oj](https://github.com/ohler55/oj) for fast JSON serialization
39
+ * Allow level to be formatted (so it can be logged as a number too)
40
+
41
+ if you want to use Ougai-like numbers you can do something like this:
42
+ ```ruby
43
+ config.ezlog.layout_options = { level_formatter: ->(level_number) { (level_number + 2) * 10 } }
44
+
45
+ Rails.logger.error('Boom!')
46
+ #=> {"logger":"Application","timestamp":"2020-09-20T19:29:03+02:00","level":50,"hostname":"BUD010256.local","pid":19872,"message":"Boom!"}
47
+ ```
48
+ * initial context (a context which will be added to every single line of log) can be configured via `config.ezlog.layout_options` and it defaults to `{environment: ::Rails.env}`
49
+
50
+ ### 0.9.2 (2020-09-19)
51
+
52
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.1...v0.9.2)
53
+
54
+ * Features & enhancements
55
+ * Improvements of the [Sidekiq](https://github.com/mperham/sidekiq) integration
56
+ * supports additional job information: batch id, tags and thread id (bid, tags, tid)
57
+ * support logging "death" events (setting up a death_handler)
58
+
59
+ ### 0.9.1 (2020-05-10)
60
+
61
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.9.0...v0.9.1)
62
+
63
+ * Bug fixed
64
+ * Fixed a bug in access log exclusion pattern matching that would exclude partial matches for a path if it was
65
+ specified as a string (expecting to be excluded only in case of a full match).
66
+
67
+ ### 0.9.0 (2020-05-10)
68
+
69
+ [Full Changelog](https://github.com/emartech/ezlog/compare/v0.8.0...v0.9.0)
70
+
71
+ * Features & enhancements
72
+ * Ezlog now supports [Rails](https://rubyonrails.org/) 6.
73
+ * Added the ability to exclude certain paths from access logging. Use the `exclude_paths` configuration option to
74
+ add paths (strings or regexps) to exclude from your access logs.
75
+
1
76
  ### 0.8.0 (2020-04-07)
2
77
 
3
78
  [Full Changelog](https://github.com/emartech/ezlog/compare/v0.7.1...v0.8.0)
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  Ezlog is intended to be a zero-configuration structured logging setup for pure Ruby or [Ruby on Rails](https://rubyonrails.org/)
7
7
  projects using any (or all) of the following libraries or frameworks:
8
8
 
9
- * [Ruby on Rails](https://rubyonrails.org/)
9
+ * [Ruby on Rails](https://rubyonrails.org/) (5.x and 6.x supported)
10
10
  * [Sidekiq](https://github.com/mperham/sidekiq)
11
11
  * [Sequel](https://sequel.jeremyevans.net/)
12
12
  * [Rack::Timeout](https://github.com/heroku/rack-timeout)
@@ -93,6 +93,7 @@ In addition to this, Ezlog also does the following:
93
93
  * It disables Rails's default logging of uncaught errors and injects its own error logger into the application, which
94
94
  * logs 1 line per error, including the error's name and context (stack trace, etc.),
95
95
  * logs every error at ERROR level instead of the default FATAL.
96
+ * does not log exceptions which are handled by Rails (`ActionDispatch::ExceptionWrapper.rescue_responses`)
96
97
  * It disables Rails's default request logging, which logs several lines per event during the processing of an action,
97
98
  and replaces the default Rack access log with its own access log middleware. The end result is an access log that
98
99
  * contains all relevant information (request ID, method, path, params, client IP, duration and response status code), and
@@ -134,6 +135,12 @@ Using this configuration, Ezlog will only log the `action` parameter under the `
134
135
  all parameters serialized into a single string under the key `params_serialized`. You won't lose any information,
135
136
  but you can make sure that only the relevant parameters of your requests are searchable (and thus protect your logs).
136
137
 
138
+ Should you want to exclude certain paths (e.g. a healthcheck URL) from your access logs, you can use the following option:
139
+
140
+ ```ruby
141
+ config.ezlog.exclude_paths = ['/healthcheck', %r(/monitoring/.*)] # default is empty so everything gets logged
142
+ ```
143
+
137
144
  #### The log level
138
145
 
139
146
  The logger's log level is determined as follows (in order of precedence):
data/ezlog.gemspec CHANGED
@@ -16,16 +16,17 @@ Gem::Specification.new do |spec|
16
16
  }
17
17
 
18
18
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
19
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^((test|spec|features)/|Rakefile|\.)}) }
20
20
  end
21
21
  spec.bindir = "exe"
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "logging", "~> 2.0"
26
+ spec.add_dependency "oj", "~> 3.0"
26
27
 
27
28
  spec.add_development_dependency "bundler", "~> 2.0"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rake", ">= 12.3.3"
29
30
  spec.add_development_dependency "rspec", "~> 3.0"
30
31
  spec.add_development_dependency "sidekiq", ">= 5.0"
31
32
  spec.add_development_dependency "sequel", "~> 5.0"
@@ -1,10 +1,11 @@
1
1
  require 'time'
2
- require 'json'
2
+ require 'oj'
3
3
 
4
4
  module Ezlog
5
5
  class LoggingLayout < ::Logging::Layout
6
- def initialize(context = {})
6
+ def initialize(context = {}, options = {})
7
7
  @initial_context = context
8
+ @level_formatter = options.fetch(:level_formatter, ->(numeric_level) { ::Logging::LNAMES[numeric_level] })
8
9
  end
9
10
 
10
11
  def format(event)
@@ -12,7 +13,7 @@ module Ezlog
12
13
  add_initial_context_to log_entry
13
14
  add_logging_context_to log_entry
14
15
  add_event_information_to log_entry, event
15
- ::JSON.dump(log_entry) + "\n"
16
+ ::Oj.dump(log_entry, mode: :json) + "\n"
16
17
  end
17
18
 
18
19
  private
@@ -20,8 +21,8 @@ module Ezlog
20
21
  def basic_information_for(event)
21
22
  {
22
23
  'logger' => event.logger,
23
- 'timestamp' => event.time.iso8601,
24
- 'level' => ::Logging::LNAMES[event.level],
24
+ 'timestamp' => event.time.iso8601(3),
25
+ 'level' => @level_formatter.call(event.level),
25
26
  'hostname' => Socket.gethostname,
26
27
  'pid' => Process.pid
27
28
  }
@@ -46,17 +47,17 @@ module Ezlog
46
47
  when Hash
47
48
  obj
48
49
  else
49
- {message: obj}
50
+ { 'message' => obj }
50
51
  end
51
52
  end
52
53
 
53
54
  def exception_message_by(exception)
54
55
  {
55
- message: exception.message,
56
- error: {
57
- class: exception.class.name,
58
- message: exception.message,
59
- backtrace: exception.backtrace&.first(20)
56
+ 'message' => exception.message,
57
+ 'error' => {
58
+ 'class' => exception.class.name,
59
+ 'message' => exception.message,
60
+ 'backtrace' => exception.backtrace&.first(20)
60
61
  }
61
62
  }
62
63
  end
@@ -3,10 +3,10 @@ module Ezlog
3
3
  class AccessLog
4
4
  include LogContextHelper
5
5
 
6
- def initialize(app, logger, whitelisted_params)
6
+ def initialize(app, logger, config)
7
7
  @app = app
8
8
  @logger = logger
9
- @whitelisted_params = whitelisted_params&.map &:to_s
9
+ @config = config
10
10
  end
11
11
 
12
12
  def call(env)
@@ -29,23 +29,36 @@ module Ezlog
29
29
  end
30
30
 
31
31
  def log_request(request, status)
32
+ return if path_ignored?(request)
33
+
32
34
  message = {
33
35
  message: '%s %s - %i (%s)' % [request.method, request.filtered_path, status, Rack::Utils::HTTP_STATUS_CODES[status]],
34
36
  remote_ip: request.remote_ip,
35
37
  method: request.method,
36
38
  path: request.filtered_path,
37
- params: params_to_log_in(request),
39
+ params: params_to_log(request),
38
40
  response_status_code: status
39
41
  }
40
- message.merge! params_serialized: request.filtered_parameters.inspect if @whitelisted_params
42
+ message.merge! params_serialized: request.filtered_parameters.inspect if @config.log_only_whitelisted_params
41
43
  @logger.info message
42
44
  end
43
45
 
44
- def params_to_log_in(request)
45
- if @whitelisted_params.nil?
46
- request.filtered_parameters
46
+ def path_ignored?(request)
47
+ @config.exclude_paths.any? do |pattern|
48
+ case pattern
49
+ when Regexp
50
+ pattern.match? request.path
51
+ else
52
+ pattern == request.path
53
+ end
54
+ end
55
+ end
56
+
57
+ def params_to_log(request)
58
+ if @config.log_only_whitelisted_params
59
+ request.filtered_parameters.slice *@config.whitelisted_params&.map(&:to_s)
47
60
  else
48
- request.filtered_parameters.slice *@whitelisted_params
61
+ request.filtered_parameters
49
62
  end
50
63
  end
51
64
  end
@@ -33,6 +33,8 @@ module Ezlog
33
33
  end
34
34
 
35
35
  Hash[param_value_pairs]
36
+ rescue NoMethodError
37
+ params
36
38
  end
37
39
 
38
40
  def type_casted_values_from(event)
@@ -9,9 +9,15 @@ module Ezlog
9
9
  def call(env)
10
10
  @app.call(env)
11
11
  rescue Exception => exception
12
- @logger.error exception
12
+ @logger.error exception unless handled?(exception)
13
13
  raise
14
14
  end
15
+
16
+ private
17
+
18
+ def handled?(exception)
19
+ ActionDispatch::ExceptionWrapper.rescue_responses.key? exception.class.name
20
+ end
15
21
  end
16
22
  end
17
23
  end
data/lib/ezlog/railtie.rb CHANGED
@@ -4,13 +4,18 @@ module Ezlog
4
4
  config.ezlog.enable_sequel_logging = false
5
5
  config.ezlog.log_only_whitelisted_params = false
6
6
  config.ezlog.whitelisted_params = [:controller, :action]
7
+ config.ezlog.exclude_paths = []
8
+ config.ezlog.initial_context = { environment: ::Rails.env }
9
+ config.ezlog.layout_options = {}
7
10
 
8
11
  initializer "ezlog.initialize" do
9
12
  require "ezlog/rails/extensions"
10
13
  end
11
14
 
12
15
  initializer 'ezlog.configure_logging' do |app|
13
- ::Logging.logger.root.appenders = ::Logging.appenders.stdout 'stdout', layout: Ezlog::LoggingLayout.new(environment: ::Rails.env)
16
+ ::Logging.logger.root.appenders =
17
+ ::Logging.appenders.stdout 'stdout', layout: Ezlog::LoggingLayout.new(app.config.ezlog.initial_context,
18
+ app.config.ezlog.layout_options)
14
19
  ::Logging.logger.root.level = app.config.log_level
15
20
  end
16
21
 
@@ -29,16 +34,26 @@ module Ezlog
29
34
  initializer 'ezlog.configure_rails_middlewares' do |app|
30
35
  app.config.middleware.insert_after ::ActionDispatch::RequestId, Ezlog::Rails::RequestLogContext
31
36
  app.config.middleware.delete ::Rails::Rack::Logger
32
- app.config.middleware.insert_before ::ActionDispatch::DebugExceptions, Ezlog::Rails::AccessLog, Ezlog.logger('AccessLog'), whitelisted_params(app)
37
+ app.config.middleware.insert_before ::ActionDispatch::DebugExceptions, Ezlog::Rails::AccessLog, Ezlog.logger('AccessLog'), config.ezlog
33
38
  app.config.middleware.insert_after ::ActionDispatch::DebugExceptions, Ezlog::Rails::LogExceptions, Ezlog.logger('Application')
34
39
  end
35
40
 
36
41
  config.after_initialize do
37
- Ezlog::Rails::LogSubscriber.detach ::ActionController::LogSubscriber
38
- Ezlog::Rails::LogSubscriber.detach ::ActionView::LogSubscriber
39
- if defined? ::ActiveRecord
40
- Ezlog::Rails::LogSubscriber.detach ::ActiveRecord::LogSubscriber
41
- Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
42
+ case ::Rails::VERSION::MAJOR
43
+ when 6
44
+ ::ActionController::LogSubscriber.detach_from :action_controller
45
+ ::ActionView::LogSubscriber.detach_from :action_view
46
+ if defined? ::ActiveRecord
47
+ ::ActiveRecord::LogSubscriber.detach_from :active_record
48
+ Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
49
+ end
50
+ else
51
+ Ezlog::Rails::LogSubscriber.detach ::ActionController::LogSubscriber
52
+ Ezlog::Rails::LogSubscriber.detach ::ActionView::LogSubscriber
53
+ if defined? ::ActiveRecord
54
+ Ezlog::Rails::LogSubscriber.detach ::ActiveRecord::LogSubscriber
55
+ Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
56
+ end
42
57
  end
43
58
  end
44
59
 
@@ -56,15 +71,12 @@ module Ezlog
56
71
  config.options[:job_logger] = Ezlog::Sidekiq::JobLogger
57
72
  config.error_handlers << Ezlog::Sidekiq::ErrorLogger.new
58
73
  config.error_handlers.delete_if { |handler| handler.is_a? ::Sidekiq::ExceptionHandler::Logger }
74
+ config.death_handlers << Ezlog::Sidekiq::DeathLogger.new
59
75
  end
60
76
  end
61
77
 
62
78
  def disable_rack_timeout_logging
63
79
  ::Rack::Timeout::Logger.logger = ::Logger.new(nil)
64
80
  end
65
-
66
- def whitelisted_params(app)
67
- app.config.ezlog.log_only_whitelisted_params ? app.config.ezlog.whitelisted_params : nil
68
- end
69
81
  end
70
82
  end
@@ -55,3 +55,5 @@ RSpec::Matchers.define :log do
55
55
  log_output_is_expected.to include_log_message(expected).at_level(log_level)
56
56
  end
57
57
  end
58
+
59
+ RSpec::Matchers.define_negated_matcher :not_log, :log
data/lib/ezlog/sidekiq.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  module Ezlog
2
2
  module Sidekiq
3
+ autoload :DeathLogger, 'ezlog/sidekiq/death_logger'
3
4
  autoload :ErrorLogger, 'ezlog/sidekiq/error_logger'
4
5
  autoload :JobContext, 'ezlog/sidekiq/job_context'
5
6
  autoload :JobLogger, 'ezlog/sidekiq/job_logger'
@@ -0,0 +1,15 @@
1
+ require 'sidekiq'
2
+
3
+ module Ezlog
4
+ module Sidekiq
5
+ class DeathLogger
6
+ include LogContextHelper
7
+
8
+ def call(job, error)
9
+ within_log_context(JobContext.from_job_hash(job)) do
10
+ ::Sidekiq.logger.error error
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,13 +4,18 @@ module Ezlog
4
4
  class << self
5
5
  def from_job_hash(job_hash)
6
6
  return {} if job_hash.nil?
7
- basic_info_from(job_hash).merge named_arguments_from(job_hash)
7
+ thread_info.merge(basic_info_from(job_hash)).merge(named_arguments_from(job_hash))
8
8
  end
9
9
 
10
10
  private
11
11
 
12
+ def thread_info
13
+ { tid: Thread.current['sidekiq_tid'] || (Thread.current.object_id ^ ::Process.pid).to_s(36) }
14
+ end
15
+
16
+
12
17
  def basic_info_from(job)
13
- {
18
+ h = {
14
19
  jid: job['jid'],
15
20
  queue: job['queue'],
16
21
  worker: job_class(job),
@@ -18,6 +23,9 @@ module Ezlog
18
23
  enqueued_at: job['enqueued_at'],
19
24
  run_count: (job['retry_count'] || -1) + 2
20
25
  }
26
+ h[:bid] = job['bid'] if job['bid']
27
+ h[:tags] = job['tags'] if job['tags']
28
+ h
21
29
  end
22
30
 
23
31
  def named_arguments_from(job)
@@ -29,7 +37,7 @@ module Ezlog
29
37
  end
30
38
 
31
39
  def method_parameters_of(job)
32
- Kernel.const_get(job_class(job).to_sym).instance_method(:perform).parameters
40
+ Kernel.const_get(job_class(job)).instance_method(:perform).parameters
33
41
  end
34
42
 
35
43
  def job_class(job)
data/lib/ezlog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ezlog
2
- VERSION = '0.8.0'
2
+ VERSION = '0.10.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ezlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zoltan Ormandi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2021-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: oj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +56,16 @@ dependencies:
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '10.0'
61
+ version: 12.3.3
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '10.0'
68
+ version: 12.3.3
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -129,14 +143,10 @@ executables: []
129
143
  extensions: []
130
144
  extra_rdoc_files: []
131
145
  files:
132
- - ".gitignore"
133
- - ".rspec"
134
- - ".travis.yml"
135
146
  - CHANGELOG.md
136
147
  - Gemfile
137
148
  - LICENSE.txt
138
149
  - README.md
139
- - Rakefile
140
150
  - bin/console
141
151
  - bin/setup
142
152
  - ezlog.gemspec
@@ -156,6 +166,7 @@ files:
156
166
  - lib/ezlog/rspec/helpers.rb
157
167
  - lib/ezlog/rspec/matchers.rb
158
168
  - lib/ezlog/sidekiq.rb
169
+ - lib/ezlog/sidekiq/death_logger.rb
159
170
  - lib/ezlog/sidekiq/error_logger.rb
160
171
  - lib/ezlog/sidekiq/job_context.rb
161
172
  - lib/ezlog/sidekiq/job_logger.rb
@@ -181,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
192
  - !ruby/object:Gem::Version
182
193
  version: '0'
183
194
  requirements: []
184
- rubygems_version: 3.0.3
195
+ rubygems_version: 3.1.2
185
196
  signing_key:
186
197
  specification_version: 4
187
198
  summary: A zero-configuration logging solution for projects using Sidekiq, Rails,
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
12
- .ruby-version
13
- Gemfile.lock
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format progress
2
- --color
3
- --require spec_helper
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.4.6
7
- - 2.5.5
8
- - 2.6.3
9
- before_install: gem install bundler -v 2.0.1
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec