proxes 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/lib/proxes.rb +1 -0
- data/lib/proxes/app.rb +1 -0
- data/lib/proxes/container.rb +13 -7
- data/lib/proxes/controllers/application.rb +4 -3
- data/lib/proxes/controllers/audit_logs.rb +1 -0
- data/lib/proxes/controllers/auth_identity.rb +1 -0
- data/lib/proxes/controllers/component.rb +4 -3
- data/lib/proxes/controllers/permissions.rb +1 -0
- data/lib/proxes/controllers/roles.rb +1 -0
- data/lib/proxes/controllers/users.rb +2 -1
- data/lib/proxes/db.rb +1 -0
- data/lib/proxes/forwarder.rb +4 -4
- data/lib/proxes/helpers/authentication.rb +4 -3
- data/lib/proxes/helpers/component.rb +1 -0
- data/lib/proxes/helpers/indices.rb +3 -2
- data/lib/proxes/helpers/pundit.rb +1 -0
- data/lib/proxes/helpers/views.rb +1 -0
- data/lib/proxes/helpers/wisper.rb +1 -0
- data/lib/proxes/listener.rb +4 -4
- data/lib/proxes/loggers/elasticsearch.rb +1 -0
- data/lib/proxes/models/audit_log.rb +1 -0
- data/lib/proxes/models/identity.rb +1 -0
- data/lib/proxes/models/permission.rb +3 -2
- data/lib/proxes/models/role.rb +1 -0
- data/lib/proxes/models/user.rb +1 -0
- data/lib/proxes/policies/application_policy.rb +1 -0
- data/lib/proxes/policies/audit_log_policy.rb +1 -0
- data/lib/proxes/policies/identity_policy.rb +1 -0
- data/lib/proxes/policies/permission_policy.rb +1 -0
- data/lib/proxes/policies/request/root_policy.rb +1 -0
- data/lib/proxes/policies/request/search_policy.rb +2 -1
- data/lib/proxes/policies/request/snapshot_policy.rb +1 -0
- data/lib/proxes/policies/request/stats_policy.rb +2 -1
- data/lib/proxes/policies/request_policy.rb +8 -14
- data/lib/proxes/policies/role_policy.rb +1 -0
- data/lib/proxes/policies/token_policy.rb +1 -0
- data/lib/proxes/policies/user_policy.rb +1 -0
- data/lib/proxes/proxes.rb +6 -6
- data/lib/proxes/rake_tasks.rb +2 -1
- data/lib/proxes/request.rb +2 -1
- data/lib/proxes/request/root.rb +1 -0
- data/lib/proxes/request/search.rb +4 -3
- data/lib/proxes/request/snapshot.rb +1 -0
- data/lib/proxes/request/stats.rb +4 -3
- data/lib/proxes/security.rb +1 -0
- data/lib/proxes/seed.rb +1 -3
- data/lib/proxes/services/logger.rb +3 -2
- data/lib/proxes/version.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a432c5f7cf196ae210e756336857117d3fe59a85
|
4
|
+
data.tar.gz: c7a4e4dd8fee71ebc927256e2d7a3eb531ee2be7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e545194da1aa7c629959d8a8d12334e44d959f12f98fef5eccaf97d39912660a0751a13407c84761b67a595216da757f34fc2f0d32368304978c724cf9a101f9
|
7
|
+
data.tar.gz: 22377b50360e7658ebb3f175d8024cef68415103538b767549d02eb2e1edc0fdaef21bd6959023118fd11e5d4b34206a060f4c3e55bc63c03eb2949a048d0b79
|
data/.rubocop.yml
CHANGED
data/lib/proxes.rb
CHANGED
data/lib/proxes/app.rb
CHANGED
data/lib/proxes/container.rb
CHANGED
@@ -14,20 +14,20 @@ module ProxES
|
|
14
14
|
|
15
15
|
# Make getting value from underlying hash thread safe.
|
16
16
|
def [](key)
|
17
|
-
@mutex.synchronize{@hash[key]}
|
17
|
+
@mutex.synchronize { @hash[key] }
|
18
18
|
end
|
19
19
|
|
20
20
|
# Make setting value in underlying hash thread safe.
|
21
21
|
def []=(key, value)
|
22
|
-
@mutex.synchronize{@hash[key] = value}
|
22
|
+
@mutex.synchronize { @hash[key] = value }
|
23
23
|
end
|
24
24
|
|
25
25
|
def map(&block)
|
26
|
-
@mutex.synchronize{@hash.map(&block)}
|
26
|
+
@mutex.synchronize { @hash.map(&block) }
|
27
27
|
end
|
28
28
|
|
29
29
|
def inject(memo, &block)
|
30
|
-
@mutex.synchronize{@hash.inject(memo, &block)}
|
30
|
+
@mutex.synchronize { @hash.inject(memo, &block) }
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -70,7 +70,7 @@ module ProxES
|
|
70
70
|
# Container.plugin PluginModule
|
71
71
|
# Container.plugin :csrf
|
72
72
|
def plugin(plugin, *args, &block)
|
73
|
-
raise ContainerError,
|
73
|
+
raise ContainerError, 'Cannot add a plugin to a frozen Container class' if frozen?
|
74
74
|
plugin = Plugins.load_plugin(plugin) if plugin.is_a?(Symbol)
|
75
75
|
plugin.load_dependencies(self, *args, &block) if plugin.respond_to?(:load_dependencies)
|
76
76
|
include(plugin::InstanceMethods) if defined?(plugin::InstanceMethods)
|
@@ -88,11 +88,11 @@ module ProxES
|
|
88
88
|
def routes
|
89
89
|
Plugins.plugins.inject({}) do |memo, plugin|
|
90
90
|
memo.merge!(plugin[1].route_mappings) if plugin[1].respond_to?(:route_mappings)
|
91
|
-
memo
|
92
91
|
end
|
93
92
|
end
|
94
93
|
|
95
|
-
# Return an ordered list of navigation items:
|
94
|
+
# Return an ordered list of navigation items:
|
95
|
+
# `[{order:0, link:'/users/', text:'Users'}, {order:1, link:'/roles/', text:'Roles'}]
|
96
96
|
def navigation
|
97
97
|
Plugins.plugins.map do |_key, plugin|
|
98
98
|
plugin.nav_items if plugin.respond_to?(:nav_items)
|
@@ -110,6 +110,12 @@ module ProxES
|
|
110
110
|
plugin.seeder if plugin.respond_to?(:seeder)
|
111
111
|
end.compact
|
112
112
|
end
|
113
|
+
|
114
|
+
def workers
|
115
|
+
Plugins.plugins.map do |_key, plugin|
|
116
|
+
plugin.run_workers if plugin.respond_to?(:run_workers)
|
117
|
+
end.compact
|
118
|
+
end
|
113
119
|
end
|
114
120
|
|
115
121
|
module InstanceMethods
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'wisper'
|
3
4
|
require 'sinatra/base'
|
4
5
|
require 'sinatra/flash'
|
@@ -52,10 +53,10 @@ module ProxES
|
|
52
53
|
redirect '/auth/identity'
|
53
54
|
end
|
54
55
|
|
55
|
-
before
|
56
|
-
if request.url
|
56
|
+
before(/.*/) do
|
57
|
+
if request.url =~ /.json/
|
57
58
|
request.accept.unshift('application/json')
|
58
|
-
request.path_info = request.path_info.gsub(/.json/,'')
|
59
|
+
request.path_info = request.path_info.gsub(/.json/, '')
|
59
60
|
end
|
60
61
|
end
|
61
62
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'proxes/controllers/application'
|
3
4
|
require 'proxes/helpers/component'
|
4
5
|
|
@@ -21,11 +22,11 @@ module ProxES
|
|
21
22
|
respond_to do |format|
|
22
23
|
format.html do
|
23
24
|
haml :"#{view_location}/index",
|
24
|
-
|
25
|
+
locals: { list: list, title: heading(:list), actions: actions }
|
25
26
|
end
|
26
27
|
format.json do
|
27
28
|
{
|
28
|
-
'items' => list.map
|
29
|
+
'items' => list.map(&:values),
|
29
30
|
'page' => params[:page],
|
30
31
|
'count' => params[:count],
|
31
32
|
'total' => list.to_a.size
|
@@ -79,7 +80,7 @@ module ProxES
|
|
79
80
|
respond_to do |format|
|
80
81
|
format.html do
|
81
82
|
haml :"#{view_location}/display",
|
82
|
-
|
83
|
+
locals: { entity: entity, title: heading, actions: actions }
|
83
84
|
end
|
84
85
|
format.json { entity.values.to_json }
|
85
86
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'proxes/controllers/component'
|
3
4
|
require 'proxes/models/user'
|
4
5
|
require 'proxes/policies/user_policy'
|
@@ -121,7 +122,7 @@ module ProxES
|
|
121
122
|
identity.set values
|
122
123
|
if identity.valid? && identity.save
|
123
124
|
log_action("#{dehumanized}_update_password".to_sym) if settings.track_actions
|
124
|
-
flash[:success] =
|
125
|
+
flash[:success] = 'Password Updated'
|
125
126
|
redirect '/_proxes/users/profile'
|
126
127
|
else
|
127
128
|
haml :"#{view_location}/profile", locals: { entity: entity, identity: identity, title: heading }
|
data/lib/proxes/db.rb
CHANGED
data/lib/proxes/forwarder.rb
CHANGED
@@ -6,20 +6,20 @@ module ProxES
|
|
6
6
|
class Forwarder
|
7
7
|
attr_reader :backend, :streaming
|
8
8
|
|
9
|
-
def initialize(opts= {})
|
9
|
+
def initialize(opts = {})
|
10
10
|
@backend = URI(opts[:backend]) if opts[:backend]
|
11
11
|
end
|
12
12
|
|
13
13
|
def call(env)
|
14
14
|
source_request = Rack::Request.new(env)
|
15
|
-
full_path = source_request.fullpath ==
|
15
|
+
full_path = source_request.fullpath == '' ? URI.parse(env['REQUEST_URI']).request_uri : source_request.fullpath
|
16
16
|
target_request = Net::HTTP.const_get(source_request.request_method.capitalize).new(full_path)
|
17
17
|
|
18
18
|
http = Net::HTTP.new(backend.host, backend.port)
|
19
19
|
target_response = http.request(target_request)
|
20
20
|
|
21
21
|
headers = (target_response.respond_to?(:headers) && target_response.headers) || self.class.normalize_headers(target_response.to_hash)
|
22
|
-
body = target_response.body || [
|
22
|
+
body = target_response.body || ['']
|
23
23
|
body = [body] unless body.respond_to?(:each)
|
24
24
|
|
25
25
|
# Not sure where this is coming from, but it causes timeouts on the client
|
@@ -31,7 +31,7 @@ module ProxES
|
|
31
31
|
class << self
|
32
32
|
def normalize_headers(headers)
|
33
33
|
mapped = headers.map do |k, v|
|
34
|
-
[k,
|
34
|
+
[k, v.is_a?(Array) ? v.join("\n") : v]
|
35
35
|
end
|
36
36
|
Rack::Utils::HeaderHash.new Hash[mapped]
|
37
37
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module ProxES
|
3
4
|
module Helpers
|
4
5
|
module Authentication
|
5
6
|
def current_user
|
6
7
|
return nil unless env['rack.session'] && env['rack.session']['user_id']
|
7
|
-
@users ||= Hash.new {|h,k| h[k] = User[k]}
|
8
|
+
@users ||= Hash.new { |h, k| h[k] = User[k] }
|
8
9
|
@users[env['rack.session']['user_id']]
|
9
10
|
end
|
10
11
|
|
@@ -17,11 +18,11 @@ module ProxES
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def authenticated?
|
20
|
-
|
21
|
+
current_user.nil?
|
21
22
|
end
|
22
23
|
|
23
24
|
def authenticate!
|
24
|
-
raise NotAuthenticated unless
|
25
|
+
raise NotAuthenticated unless current_user
|
25
26
|
true
|
26
27
|
end
|
27
28
|
|
@@ -1,13 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module ProxES
|
3
4
|
module Helpers
|
4
5
|
module Indices
|
5
6
|
def filter(asked, against)
|
6
|
-
return against.map { |a| a.gsub(
|
7
|
+
return against.map { |a| a.gsub(/\.\*/, '*') } if asked == ['*'] || asked == []
|
7
8
|
|
8
9
|
answer = []
|
9
10
|
against.each do |pattern|
|
10
|
-
answer.concat
|
11
|
+
answer.concat(asked.select { |idx| idx =~ /#{pattern}/ })
|
11
12
|
end
|
12
13
|
answer
|
13
14
|
end
|
data/lib/proxes/helpers/views.rb
CHANGED
data/lib/proxes/listener.rb
CHANGED
@@ -6,14 +6,14 @@ module ProxES
|
|
6
6
|
@mutex = Mutex.new
|
7
7
|
end
|
8
8
|
|
9
|
-
def method_missing(method, *args
|
9
|
+
def method_missing(method, *args)
|
10
10
|
vals = { action: method }
|
11
|
-
vals[:user] = args[0][:user] if
|
12
|
-
vals[:details] = args[0][:details] if
|
11
|
+
vals[:user] = args[0][:user] if args[0] && args[0].key?(:user)
|
12
|
+
vals[:details] = args[0][:details] if args[0] && args[0].key?(:details)
|
13
13
|
@mutex.synchronize { AuditLog.create vals }
|
14
14
|
end
|
15
15
|
|
16
|
-
def respond_to_missing?(
|
16
|
+
def respond_to_missing?(_method, _include_private = false)
|
17
17
|
true
|
18
18
|
end
|
19
19
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'proxes/models/base'
|
3
4
|
|
4
5
|
module ProxES
|
@@ -8,7 +9,7 @@ module ProxES
|
|
8
9
|
|
9
10
|
dataset_module do
|
10
11
|
def for_user(a_user, action)
|
11
|
-
where(verb: action).where{Sequel.|({role: a_user.roles}, {user_id: a_user.id})}
|
12
|
+
where(verb: action).where { Sequel.|({ role: a_user.roles }, { user_id: a_user.id }) }
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
@@ -20,7 +21,7 @@ module ProxES
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def self.verbs
|
23
|
-
[
|
24
|
+
%w[GET POST PUT DELETE HEAD OPTIONS TRACE INDEX]
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
data/lib/proxes/models/role.rb
CHANGED
data/lib/proxes/models/user.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module ProxES
|
3
4
|
class Request
|
4
5
|
class SearchPolicy < RequestPolicy
|
5
6
|
class Scope < RequestPolicy::Scope
|
6
7
|
def resolve
|
7
8
|
patterns = Permission.for_user(user, 'INDEX').map do |permission|
|
8
|
-
permission.pattern.gsub(/\{user.(.*)\}/) { |
|
9
|
+
permission.pattern.gsub(/\{user.(.*)\}/) { |_match| user.send(Regexp.last_match[1].to_sym) }
|
9
10
|
end
|
10
11
|
filter scope.index, patterns
|
11
12
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module ProxES
|
3
4
|
class Request
|
4
5
|
class StatsPolicy < RequestPolicy
|
5
6
|
class Scope < RequestPolicy::Scope
|
6
7
|
def resolve
|
7
8
|
patterns = Permission.for_user(user, 'INDEX').map do |permission|
|
8
|
-
permission.pattern.gsub(/\{user.(.*)\}/) { |
|
9
|
+
permission.pattern.gsub(/\{user.(.*)\}/) { |_match| user.send(Regexp.last_match[1].to_sym) }
|
9
10
|
end
|
10
11
|
filter scope.index, patterns
|
11
12
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'proxes/db'
|
3
4
|
require 'proxes/models/permission'
|
4
5
|
require 'proxes/services/logger'
|
@@ -16,31 +17,24 @@ module ProxES
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def method_missing(method_sym, *arguments, &block)
|
19
|
-
if method_sym.to_s[-1]
|
20
|
-
return false if user.nil?
|
20
|
+
return super if method_sym.to_s[-1] != '?'
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
return true if action_allowed? method_sym[0..-2].upcase
|
26
|
-
end
|
27
|
-
false
|
28
|
-
else
|
29
|
-
super
|
30
|
-
end
|
22
|
+
return false if user.nil?
|
23
|
+
return true if record.indices? && index_allowed?
|
24
|
+
action_allowed? method_sym[0..-2].upcase
|
31
25
|
end
|
32
26
|
|
33
27
|
def index_allowed?
|
34
28
|
patterns = Permission.for_user(user, 'INDEX').map do |permission|
|
35
|
-
permission.pattern.gsub(/\{user.(.*)\}/) { |
|
29
|
+
permission.pattern.gsub(/\{user.(.*)\}/) { |_match| user.send(Regexp.last_match[1].to_sym) }
|
36
30
|
end
|
37
|
-
|
31
|
+
filter(record.index, patterns).count.positive?
|
38
32
|
end
|
39
33
|
|
40
34
|
def action_allowed?(action)
|
41
35
|
# Give me all the user's permissions that match the verb
|
42
36
|
Permission.for_user(user, action).each do |permission|
|
43
|
-
return true if record.path =~
|
37
|
+
return true if record.path =~ /#{permission.pattern}/
|
44
38
|
end
|
45
39
|
false
|
46
40
|
end
|
data/lib/proxes/proxes.rb
CHANGED
@@ -18,23 +18,23 @@ module ProxES
|
|
18
18
|
'/users' => ::ProxES::Users,
|
19
19
|
'/roles' => ::ProxES::Roles,
|
20
20
|
'/permissions' => ::ProxES::Permissions,
|
21
|
-
'/audit-logs' => ::ProxES::AuditLogs
|
21
|
+
'/audit-logs' => ::ProxES::AuditLogs
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.nav_items
|
26
26
|
[
|
27
|
-
{ order: 0, link:'/users/', text: 'Users', target: User, icon: 'user' },
|
28
|
-
{ order: 1, link:'/roles/', text: 'Roles', target: Role, icon: 'group' },
|
29
|
-
{ order: 2, link:'/permissions/', text: 'Permissions', target: Permission, icon: 'check-square' }
|
27
|
+
{ order: 0, link: '/users/', text: 'Users', target: User, icon: 'user' },
|
28
|
+
{ order: 1, link: '/roles/', text: 'Roles', target: Role, icon: 'group' },
|
29
|
+
{ order: 2, link: '/permissions/', text: 'Permissions', target: Permission, icon: 'check-square' }
|
30
30
|
]
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.seeder
|
34
|
-
|
34
|
+
proc do
|
35
35
|
::ProxES::Role.find_or_create(name: 'user')
|
36
36
|
sa = ::ProxES::Role.find_or_create(name: 'super_admin')
|
37
|
-
%w
|
37
|
+
%w[GET POST PUT DELETE HEAD OPTIONS INDEX].each do |verb|
|
38
38
|
::ProxES::Permission.find_or_create(role: sa, verb: verb, pattern: '.*')
|
39
39
|
end
|
40
40
|
end
|
data/lib/proxes/rake_tasks.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rake'
|
3
4
|
require 'rake/tasklib'
|
4
5
|
|
@@ -22,7 +23,7 @@ module ProxES
|
|
22
23
|
|
23
24
|
desc 'Prepare ProxES migrations'
|
24
25
|
task :prep do
|
25
|
-
Dir.mkdir 'migrations' unless File.
|
26
|
+
Dir.mkdir 'migrations' unless File.exist?('migrations')
|
26
27
|
::ProxES::Container.migrations.each do |path|
|
27
28
|
FileUtils.cp_r "#{path}/.", 'migrations'
|
28
29
|
end
|
data/lib/proxes/request.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rack'
|
3
4
|
|
4
5
|
module ProxES
|
@@ -15,7 +16,7 @@ module ProxES
|
|
15
16
|
require 'proxes/request/' + endpoint.downcase
|
16
17
|
Request.const_get(endpoint).new(env)
|
17
18
|
rescue LoadError
|
18
|
-
|
19
|
+
new(env)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
data/lib/proxes/request/root.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rack'
|
3
4
|
require 'proxes/request'
|
4
5
|
|
@@ -10,9 +11,9 @@ module ProxES
|
|
10
11
|
|
11
12
|
def index=(idx)
|
12
13
|
@index = idx
|
13
|
-
self.path_info = '/' + [
|
14
|
-
|
15
|
-
|
14
|
+
self.path_info = '/' + [index, type, id, endpoint]
|
15
|
+
.map { |v| v.is_a?(Array) ? v.join(',') : v }
|
16
|
+
.select { |v| !v.nil? && v != '' }.join('/')
|
16
17
|
end
|
17
18
|
|
18
19
|
def endpoint
|
data/lib/proxes/request/stats.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rack'
|
3
4
|
require 'proxes/request'
|
4
5
|
|
@@ -9,9 +10,9 @@ module ProxES
|
|
9
10
|
|
10
11
|
def index=(idx)
|
11
12
|
@index = idx
|
12
|
-
self.path_info = '/' + [
|
13
|
-
|
14
|
-
|
13
|
+
self.path_info = '/' + [index, endpoint]
|
14
|
+
.map { |v| v.is_a?(Array) ? v.join(',') : v }
|
15
|
+
.select { |v| !v.nil? && v != '' }.join('/')
|
15
16
|
end
|
16
17
|
|
17
18
|
def endpoint
|
data/lib/proxes/security.rb
CHANGED
data/lib/proxes/seed.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'logger'
|
3
4
|
require 'yaml'
|
4
5
|
require 'singleton'
|
@@ -12,7 +13,7 @@ module ProxES
|
|
12
13
|
class Logger
|
13
14
|
include Singleton
|
14
15
|
|
15
|
-
CONFIG = './config/logger.yml'
|
16
|
+
CONFIG = './config/logger.yml'.freeze
|
16
17
|
attr_reader :loggers
|
17
18
|
|
18
19
|
def initialize
|
@@ -32,7 +33,7 @@ module ProxES
|
|
32
33
|
loggers.each { |logger| logger.send(method, *args, &block) }
|
33
34
|
end
|
34
35
|
|
35
|
-
def respond_to_missing?(method,
|
36
|
+
def respond_to_missing?(method, _include_private = false)
|
36
37
|
loggers.any? { |logger| logger.respond_to?(method) }
|
37
38
|
end
|
38
39
|
|
data/lib/proxes/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proxes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jurgens du Toit
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|