jt-rails-toolbox 2.1.0 → 2.2.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: 25f6980f68e7d9623965444bee47fdf23769708a
4
- data.tar.gz: 7990d495a90d5040ba9344efe6634ba61af73e3f
3
+ metadata.gz: 844f258e0659fee463d6ea2465a283bb42402cb6
4
+ data.tar.gz: 3b8145a50885a5c2eb5a7051c41a4aa107b632f8
5
5
  SHA512:
6
- metadata.gz: 2a17c9a312993d3c716aec4e19dc99e6eb6bf2f19855171346a2ce120e30ab36bf6fd44948e2e9e0789a8a59a307d98155eadf6839c884060f9440508160f144
7
- data.tar.gz: 8903e09b31dbe63a68b1b62f3e8c6f7a3dd8643f2fad439aee34b0adaa00f25dea79f218675d9862b1b2fb5892e82335bd00ab481a3e1d56cacd2c6e4035b04d
6
+ metadata.gz: b649badbb99452621dec6a1c8371baab5b2f914b4887bb3b7af98cd9ea85d99f3dc120c74eb25b683e95a1d207a85d6aea722eca5c27a00cb5f803e73387a011
7
+ data.tar.gz: f246dfd58a8c606d633e8413c7762320a82bae9d6135fe9bb5e3584bb99522a1ad499c2e64b42b4638f2c61419aba414737f40dc9747920776394b64aa286598
data/README.md CHANGED
@@ -10,17 +10,22 @@ JTRailsToolbox is distributed as a gem, which is how it should be used in your a
10
10
 
11
11
  Include the gem in your Gemfile:
12
12
 
13
- gem 'jt-rails-toolbox', '~> 2.0'
13
+ gem 'jt-rails-toolbox', '~> 2.0'
14
14
 
15
15
  Create a `jt-toolbox.yml` file:
16
16
 
17
- rails g jt:toolbox
17
+ rails g jt:toolbox
18
18
 
19
19
  A simple configuration of `jt-toolbox.yml` file:
20
20
 
21
21
  ```yml
22
22
  production:
23
+ airbrake:
24
+ project_host: "https://errbit.example.com"
25
+ project_id: 1
26
+ project_key: 12345678901234567890
23
27
  exception:
28
+ slack_webhook_url: https://hooks.slack.com/services/XXXXXXXX
24
29
  email_prefix: '[ERROR]'
25
30
  sender_address: "Your website <error@example.com>"
26
31
  exception_recipients:
@@ -48,7 +53,11 @@ A simple configuration of `jt-toolbox.yml` file:
48
53
 
49
54
  ## What's in it?
50
55
 
51
- - [Exception Notification](https://github.com/smartinez87/exception_notification), send email notifications when errors occur
56
+ - [http_accept_language](https://github.com/iain/http_accept_language), helps you detect the users preferred language, as sent by the "Accept-Language" HTTP header
57
+ - [dotenv](https://github.com/bkeepers/dotenv), load environment variables from .env file
58
+ - [Exception Notification](https://github.com/smartinez87/exception_notification),
59
+ send notifications when errors occur (email, slack)
60
+ - [Airbrake](https://github.com/airbrake/airbrake), send notifications when errors occur to [Airbrake](https://airbrake.io/) or [Errbit](http://errbit.com/)
52
61
  - [paperclip](https://github.com/thoughtbot/paperclip), manage file upload
53
62
  - [sidekiq](https://github.com/mperham/sidekiq), manage background jobs
54
63
  - [validates_email_format_of](https://github.com/validates-email-format-of/validates_email_format_of), who doesn't need to validate email format?
@@ -59,6 +68,21 @@ A simple configuration of `jt-toolbox.yml` file:
59
68
  - simplified configuration of hostnames and `ActionMailer` with a YAML file
60
69
  - some helper methods
61
70
 
71
+ ### http_accept_language
72
+
73
+ To install `http_accept_language` you just have to add a line in your `ApplicationController`
74
+
75
+ ```ruby
76
+ class ApplicationController < ActionController::Base
77
+ include HttpAcceptLanguage::AutoLocale
78
+
79
+ end
80
+ ```
81
+
82
+ ### Dotenv
83
+
84
+ It's a good practice to not include credentials for third party services in your code. You can defined it in a `.env` file which I recommend to not include in your git repository.
85
+
62
86
  ### Exception Notification
63
87
 
64
88
  If `exception` is not set in `jt-toolbox.yml` file, Exception Notification is disabled.
@@ -67,6 +91,10 @@ In addition to the default ignored exceptions, the following exceptions are also
67
91
  - `ActionController::InvalidCrossOriginRequest`
68
92
  - `ActionController::InvalidAuthenticityToken`
69
93
 
94
+ ### Airbrake
95
+
96
+ If `airbrake` is not set in `jt-toolbox.yml` file, Airbrake is disabled.
97
+
70
98
  ### Paperclip
71
99
 
72
100
  - `convert_options` is set to `-strip`, which means all metadata of images are removed, this is used for reduced the weight of images.
@@ -76,7 +104,7 @@ In addition to the default ignored exceptions, the following exceptions are also
76
104
  ### Sidekiq
77
105
 
78
106
  - configured for `ActiveJob`
79
- - configured to send notification error with Exception Notification
107
+ - configured to send notification error with Exception Notification or Airbrake
80
108
  - redis url is by default `redis://localhost:6379/0` and the namespace is `#{name of your application}` for production and `#{name of your application}-{environment}` for others.
81
109
 
82
110
  #### Warning
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.summary = "Common libs used for Ruby On Rails development."
4
4
  s.description = "JTRailsToolbox contains a list of common libs used for Ruby On Rails development."
5
5
  s.homepage = 'https://github.com/jonathantribouharet/jt-rails-toolbox'
6
- s.version = '2.1.0'
6
+ s.version = '2.2.0'
7
7
  s.files = `git ls-files`.split("\n")
8
8
  s.require_paths = ['lib']
9
9
  s.authors = ['Jonathan TRIBOUHARET']
@@ -12,8 +12,13 @@ Gem::Specification.new do |s|
12
12
  s.platform = Gem::Platform::RUBY
13
13
 
14
14
  s.add_dependency('rails', '~> 5.0')
15
+
16
+ s.add_dependency('dotenv-rails')
17
+ s.add_dependency('http_accept_language')
15
18
 
16
19
  s.add_dependency('exception_notification', '~> 4.1')
20
+ s.add_dependency('airbrake', '~> 5.0')
21
+
17
22
  s.add_dependency('paperclip', '~> 4.2')
18
23
  s.add_dependency('validates_email_format_of', '~> 1.6')
19
24
  s.add_dependency('rails-i18n', '~> 4.0')
@@ -11,7 +11,12 @@
11
11
  # redis_url: redis://localhost:6379/nameoftheapp
12
12
  #
13
13
  # production:
14
+ # airbrake:
15
+ # project_host: "https://errbit.example.com"
16
+ # project_id: 1
17
+ # project_key: 12345678901234567890
14
18
  # exception:
19
+ # slack_webhook_url: https://hooks.slack.com/services/XXXXXXXX
15
20
  # email_prefix: '[ERROR]'
16
21
  # sender_address: "Your website <error@example.com>"
17
22
  # exception_recipients:
@@ -1,4 +1,5 @@
1
- require 'exception_notification'
1
+ require 'dotenv/rails-now'
2
+ require 'http_accept_language'
2
3
  require 'paperclip'
3
4
  require 'sidekiq'
4
5
  require 'validates_email_format_of'
@@ -7,9 +8,6 @@ require 'jt-rails-meta'
7
8
  require 'jt-rails-generator-user'
8
9
  require 'jt-rails-tokenizable'
9
10
 
10
- require 'exception_notification/rails'
11
- require 'exception_notification/sidekiq'
12
-
13
11
  require 'yaml'
14
12
 
15
13
  module JTRailsToolbox
@@ -28,6 +26,7 @@ module JTRailsToolbox
28
26
 
29
27
  process_params
30
28
  configure_exception_notification(app)
29
+ configure_airbrake(app)
31
30
  configure_mail(app)
32
31
  configure_paperclip(app)
33
32
  configure_sidekiq(app)
@@ -72,14 +71,49 @@ module JTRailsToolbox
72
71
  def configure_exception_notification(app)
73
72
  return if @params['exception'].nil?
74
73
 
74
+ require 'exception_notification'
75
+ require 'exception_notification/rails'
76
+ require 'exception_notification/sidekiq'
77
+
75
78
  ExceptionNotification.configure do |config|
76
79
  config.ignored_exceptions += ['ActionController::InvalidCrossOriginRequest', 'ActionController::InvalidAuthenticityToken']
77
80
 
78
- config.add_notifier :email, {
79
- email_prefix: @params['exception']['email_prefix'],
80
- sender_address: @params['exception']['sender_address'],
81
- exception_recipients: @params['exception']['exception_recipients']
82
- }
81
+ if !@params['exception']['slack_webhook_url'].blank?
82
+ config.add_notifier :slack, {
83
+ webhook_url: params['exception']['slack_webhook_url'],
84
+ }
85
+ end
86
+
87
+ if @params['exception']['exception_recipients']
88
+ config.add_notifier :email, {
89
+ email_prefix: @params['exception']['email_prefix'],
90
+ sender_address: @params['exception']['sender_address'],
91
+ exception_recipients: @params['exception']['exception_recipients']
92
+ }
93
+ end
94
+ end
95
+ end
96
+
97
+ def configure_airbrake(app)
98
+ return if @params['airbrake'].nil?
99
+
100
+ require 'airbrake'
101
+ require 'airbrake/sidekiq/error_handler'
102
+
103
+ Airbrake.configure do |c|
104
+ if @params['airbrake']['host']
105
+ c.host = @params['airbrake']['host']
106
+ end
107
+
108
+ c.project_id = @params['airbrake']['project_id']
109
+ c.project_key = @params['airbrake']['project_key']
110
+ c.environment = Rails.env
111
+
112
+ if @params['airbrake']['ignore_environments']
113
+ c.ignore_environments = @params['airbrake']['ignore_environments']
114
+ else
115
+ c.ignore_environments = %w(development test)
116
+ end
83
117
  end
84
118
  end
85
119
 
@@ -110,8 +144,6 @@ module JTRailsToolbox
110
144
  def configure_sidekiq(app)
111
145
  Sidekiq.configure_server do |config|
112
146
  config.redis = { url: @params['sidekiq']['redis_url'], namespace: @params['sidekiq']['namespace'] }
113
-
114
- config.error_handlers << Proc.new {|ex, ctx_hash| ExceptionNotifier.notify_exception(ex, data: ctx_hash) }
115
147
  end
116
148
 
117
149
  Sidekiq.configure_client do |config|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jt-rails-toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan TRIBOUHARET
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-25 00:00:00.000000000 Z
11
+ date: 2016-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dotenv-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: http_accept_language
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: exception_notification
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +66,20 @@ dependencies:
38
66
  - - ~>
39
67
  - !ruby/object:Gem::Version
40
68
  version: '4.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: airbrake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: paperclip
43
85
  requirement: !ruby/object:Gem::Requirement