jt-rails-toolbox 1.2.4 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -1
- data/jt-rails-toolbox.gemspec +6 -1
- data/lib/generators/jt/toolbox/templates/jt-toolbox.yml +7 -1
- data/lib/jt-rails-toolbox.rb +59 -15
- metadata +44 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a45f1dfd078655bd41b9d50cd255a8f555634517
|
4
|
+
data.tar.gz: 2cd6dd09ad2b11d32028ff2401015ea4443b0ffc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5723b4572f6d42a438399a7cce0d12190d813cd28a02dc2ed2dee64c65dd3e3c1bd7430571b5382633d5f8b7d5782177befccbe99b22b5a685b39fb18f641487
|
7
|
+
data.tar.gz: 54fbfdb5fab2546e7454c9cc5e0f7ed2d6b8df40b0c309b884f0ba2b806c0499d967ad3b30242bd9a507162b55f9f911b66944d37d4ea7ff5115041b0c62adc8
|
data/README.md
CHANGED
@@ -21,6 +21,12 @@ A simple configuration of `jt-toolbox.yml` file:
|
|
21
21
|
```yml
|
22
22
|
production:
|
23
23
|
exception:
|
24
|
+
airbrake:
|
25
|
+
project_host: "https://errbit.example.com"
|
26
|
+
project_id: 1
|
27
|
+
project_key: 12345678901234567890
|
28
|
+
slack:
|
29
|
+
webhook_url: https://hooks.slack.com/services/XXXXXXXX
|
24
30
|
email_prefix: '[ERROR]'
|
25
31
|
sender_address: "Your website <error@example.com>"
|
26
32
|
exception_recipients:
|
@@ -48,7 +54,11 @@ A simple configuration of `jt-toolbox.yml` file:
|
|
48
54
|
|
49
55
|
## What's in it?
|
50
56
|
|
51
|
-
- [
|
57
|
+
- [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
|
58
|
+
- [dotenv](https://github.com/bkeepers/dotenv), load environment variables from .env file
|
59
|
+
- [Exception Notification](https://github.com/smartinez87/exception_notification),
|
60
|
+
send notifications when errors occur (email, slack)
|
61
|
+
- [Airbrake](https://github.com/airbrake/airbrake), send notifications when errors occur to [Airbrake](https://airbrake.io/) or [Errbit](http://errbit.com/)
|
52
62
|
- [paperclip](https://github.com/thoughtbot/paperclip), manage file upload
|
53
63
|
- [quiet_assets](https://github.com/evrone/quiet_assets), silence assets in log
|
54
64
|
- [sidekiq](https://github.com/mperham/sidekiq), manage background jobs
|
@@ -59,6 +69,21 @@ A simple configuration of `jt-toolbox.yml` file:
|
|
59
69
|
- [jt-rails-tokenizable](https://github.com/jonathantribouharet/jt-rails-tokenizable) Generate tokens for ActiveRecord models
|
60
70
|
- simplified configuration of hostnames and `ActionMailer` with a YAML file
|
61
71
|
|
72
|
+
### http_accept_language
|
73
|
+
|
74
|
+
To install `http_accept_language` you just have to add a line in your `ApplicationController`
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
class ApplicationController < ActionController::Base
|
78
|
+
include HttpAcceptLanguage::AutoLocale
|
79
|
+
|
80
|
+
end
|
81
|
+
```
|
82
|
+
|
83
|
+
### Dotenv
|
84
|
+
|
85
|
+
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.
|
86
|
+
|
62
87
|
### Exception Notification
|
63
88
|
|
64
89
|
If `exception` is not set in `jt-toolbox.yml` file, Exception Notification is disabled.
|
@@ -67,6 +92,10 @@ In addition to the default ignored exceptions, the following exceptions are also
|
|
67
92
|
- `ActionController::InvalidCrossOriginRequest`
|
68
93
|
- `ActionController::InvalidAuthenticityToken`
|
69
94
|
|
95
|
+
### Airbrake
|
96
|
+
|
97
|
+
If `airbrake` is not set in `jt-toolbox.yml` file, Airbrake is disabled.
|
98
|
+
|
70
99
|
### Paperclip
|
71
100
|
|
72
101
|
- `convert_options` is set to `-strip`, which means all metadata of images are removed, this is used for reduced the weight of images.
|
data/jt-rails-toolbox.gemspec
CHANGED
@@ -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 = '1.
|
6
|
+
s.version = '1.3.0'
|
7
7
|
s.files = `git ls-files`.split("\n")
|
8
8
|
s.require_paths = ['lib']
|
9
9
|
s.authors = ['Jonathan TRIBOUHARET']
|
@@ -11,7 +11,12 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.license = 'MIT'
|
12
12
|
s.platform = Gem::Platform::RUBY
|
13
13
|
|
14
|
+
s.add_dependency('dotenv-rails')
|
15
|
+
s.add_dependency('http_accept_language')
|
16
|
+
|
14
17
|
s.add_dependency('exception_notification', '~> 4.1')
|
18
|
+
s.add_dependency('airbrake', '~> 5.0')
|
19
|
+
|
15
20
|
s.add_dependency('paperclip', '~> 4.2')
|
16
21
|
s.add_dependency('quiet_assets', '~> 1.1')
|
17
22
|
s.add_dependency('validates_email_format_of', '~> 1.6')
|
@@ -12,10 +12,16 @@
|
|
12
12
|
#
|
13
13
|
# production:
|
14
14
|
# exception:
|
15
|
+
# airbrake:
|
16
|
+
# project_host: "https://errbit.example.com"
|
17
|
+
# project_id: 1
|
18
|
+
# project_key: 12345678901234567890
|
19
|
+
# slack:
|
20
|
+
# webhook_url: https://hooks.slack.com/services/XXXXXXXX
|
15
21
|
# email_prefix: '[ERROR]'
|
16
22
|
# sender_address: "Your website <error@example.com>"
|
17
23
|
# exception_recipients:
|
18
|
-
#
|
24
|
+
# - my_email_for_errors@example.com
|
19
25
|
# files:
|
20
26
|
# folder: upload
|
21
27
|
# mail:
|
data/lib/jt-rails-toolbox.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require '
|
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,18 +8,19 @@ require 'jt-rails-meta'
|
|
7
8
|
require 'jt-rails-generator-user'
|
8
9
|
require 'jt-rails-tokenizable'
|
9
10
|
|
11
|
+
require 'yaml'
|
12
|
+
|
10
13
|
if Rails.env.development?
|
11
14
|
require 'quiet_assets'
|
12
15
|
end
|
13
16
|
|
14
|
-
|
15
|
-
require '
|
16
|
-
|
17
|
-
require 'yaml'
|
17
|
+
# Don't move this require
|
18
|
+
require 'airbrake'
|
19
|
+
require 'airbrake/sidekiq/error_handler'
|
18
20
|
|
19
21
|
module JTRailsToolbox
|
20
22
|
|
21
|
-
class
|
23
|
+
class Engine < ::Rails::Engine
|
22
24
|
|
23
25
|
initializer "jt-rails-toolbox" do |app|
|
24
26
|
@params = {}
|
@@ -76,14 +78,58 @@ module JTRailsToolbox
|
|
76
78
|
def configure_exception_notification(app)
|
77
79
|
return if @params['exception'].nil?
|
78
80
|
|
81
|
+
if @params['exception']['airbrake']
|
82
|
+
|
83
|
+
Airbrake.configure do |c|
|
84
|
+
if @params['exception']['airbrake']['host']
|
85
|
+
c.host = @params['exception']['airbrake']['host']
|
86
|
+
end
|
87
|
+
|
88
|
+
c.project_id = @params['exception']['airbrake']['project_id']
|
89
|
+
c.project_key = @params['exception']['airbrake']['project_key']
|
90
|
+
|
91
|
+
c.environment = Rails.env
|
92
|
+
|
93
|
+
if @params['exception']['airbrake']['ignore_environments']
|
94
|
+
c.ignore_environments = @params['exception']['airbrake']['ignore_environments']
|
95
|
+
else
|
96
|
+
c.ignore_environments = %w(development test)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Default ignored exceptions in Exception Notification
|
101
|
+
exceptions_to_ignore = %w{ActiveRecord::RecordNotFound Mongoid::Errors::DocumentNotFound AbstractController::ActionNotFound ActionController::RoutingError ActionController::UnknownFormat ActionController::UrlGenerationError}
|
102
|
+
|
103
|
+
# Additionnal exceptions to ignore
|
104
|
+
exceptions_to_ignore.push *%w{ActionController::InvalidCrossOriginRequest ActionController::InvalidAuthenticityToken}
|
105
|
+
|
106
|
+
Airbrake.add_filter do |notice|
|
107
|
+
if notice[:errors].any? { |error| exceptions_to_ignore.include?(error[:type]) }
|
108
|
+
notice.ignore!
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
require 'exception_notification'
|
114
|
+
require 'exception_notification/rails'
|
115
|
+
require 'exception_notification/sidekiq'
|
116
|
+
|
79
117
|
ExceptionNotification.configure do |config|
|
80
|
-
config.ignored_exceptions +=
|
118
|
+
config.ignored_exceptions += %w{ActionController::InvalidCrossOriginRequest ActionController::InvalidAuthenticityToken}
|
81
119
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
120
|
+
if @params['exception']['slack']
|
121
|
+
config.add_notifier :slack, {
|
122
|
+
webhook_url: params['exception']['slack']['webhook_url'],
|
123
|
+
}
|
124
|
+
end
|
125
|
+
|
126
|
+
if @params['exception']['exception_recipients']
|
127
|
+
config.add_notifier :email, {
|
128
|
+
email_prefix: @params['exception']['email_prefix'],
|
129
|
+
sender_address: @params['exception']['sender_address'],
|
130
|
+
exception_recipients: @params['exception']['exception_recipients']
|
131
|
+
}
|
132
|
+
end
|
87
133
|
end
|
88
134
|
end
|
89
135
|
|
@@ -114,8 +160,6 @@ module JTRailsToolbox
|
|
114
160
|
def configure_sidekiq(app)
|
115
161
|
Sidekiq.configure_server do |config|
|
116
162
|
config.redis = { url: @params['sidekiq']['redis_url'], namespace: @params['sidekiq']['namespace'] }
|
117
|
-
|
118
|
-
config.error_handlers << Proc.new {|ex, ctx_hash| ExceptionNotifier.notify_exception(ex, data: ctx_hash) }
|
119
163
|
end
|
120
164
|
|
121
165
|
Sidekiq.configure_client do |config|
|
@@ -126,5 +170,5 @@ module JTRailsToolbox
|
|
126
170
|
end
|
127
171
|
|
128
172
|
end
|
129
|
-
|
173
|
+
|
130
174
|
end
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jt-rails-toolbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.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-
|
11
|
+
date: 2016-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dotenv-rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: http_accept_language
|
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'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: exception_notification
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +52,20 @@ dependencies:
|
|
24
52
|
- - ~>
|
25
53
|
- !ruby/object:Gem::Version
|
26
54
|
version: '4.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: airbrake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.0'
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: paperclip
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|