ree_lib 1.3.4 → 1.3.6
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 +4 -4
- data/.ruby-version +1 -1
- data/Gemfile +3 -0
- data/Gemfile.lock +61 -59
- data/lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb +8 -33
- data/lib/ree_lib/packages/ree_actions/package/ree_actions/method_plugin.rb +48 -0
- data/lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb +18 -1
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_connection.rb +1 -2
- data/lib/ree_lib/packages/ree_json/package/ree_json/functions/from_json.rb +10 -12
- data/lib/ree_lib/packages/ree_json/package/ree_json/functions/to_json.rb +6 -30
- data/lib/ree_lib/packages/ree_json/package/ree_json.rb +1 -1
- data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/from_json_spec.rb +2 -11
- data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/to_json_spec.rb +1 -7
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/beans/logger.rb +4 -18
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/config.rb +0 -10
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/beans/logger_spec.rb +0 -16
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/multi_logger_spec.rb +1 -24
- data/lib/ree_lib/packages/ree_logger/spec/spec_helper.rb +1 -5
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/functions/build_mapper_factory.rb +1 -3
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/functions/build_mapper_strategy.rb +9 -7
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/benchmarks/mapper_benchmark_spec.rb +2 -2
- data/lib/ree_lib/packages/ree_migrator/spec/spec_helper.rb +1 -2
- data/lib/ree_lib/version.rb +1 -1
- metadata +57 -87
- data/lib/ree_lib/packages/ree_json/package/ree_json/constants.rb +0 -31
- data/lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/rollbar_appender.rb +0 -79
- data/lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/rollbar_appender_spec.rb +0 -33
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 51394aa942aea366320eac555b2e11af83a26f66bc843bcb92ab5002db7de4c5
|
|
4
|
+
data.tar.gz: 50d25f85c91e72bf5209fdb93b666aa3391ba37daa573cd27bdb3625de5e4f69
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dd3eb4e01579306109a70f90182e184144dca99c8dd93d2e231387d10dd7d79c4e9959f8c2f0dd1852793857f5f4abca2d4dedef85929583aaa42af5f0467c4a
|
|
7
|
+
data.tar.gz: 3fb94861b0d7898708f0b18472e701d095104a9326bc7be8bd1e2fd20245943f37fac4c497a7380ac3016e64a5d88c532e4b4d3060f69d90c7f4ae9e216bffbd
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.1
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,96 +1,98 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: ../ree
|
|
3
|
+
specs:
|
|
4
|
+
ree (1.3.0)
|
|
5
|
+
base64
|
|
6
|
+
commander
|
|
7
|
+
logger
|
|
8
|
+
|
|
1
9
|
PATH
|
|
2
10
|
remote: .
|
|
3
11
|
specs:
|
|
4
|
-
ree_lib (1.3.
|
|
5
|
-
bigdecimal
|
|
6
|
-
binding_of_caller
|
|
7
|
-
i18n
|
|
8
|
-
loofah
|
|
9
|
-
|
|
10
|
-
rainbow (~> 3.1.1)
|
|
12
|
+
ree_lib (1.3.5)
|
|
13
|
+
bigdecimal
|
|
14
|
+
binding_of_caller
|
|
15
|
+
i18n
|
|
16
|
+
loofah
|
|
17
|
+
rainbow
|
|
11
18
|
ree
|
|
12
|
-
sequel
|
|
13
|
-
tzinfo
|
|
19
|
+
sequel
|
|
20
|
+
tzinfo
|
|
14
21
|
|
|
15
22
|
GEM
|
|
16
23
|
remote: https://rubygems.org/
|
|
17
24
|
specs:
|
|
18
|
-
addressable (2.8.
|
|
19
|
-
public_suffix (>= 2.0.2, <
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
addressable (2.8.8)
|
|
26
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
27
|
+
base64 (0.3.0)
|
|
28
|
+
bigdecimal (4.0.1)
|
|
29
|
+
binding_of_caller (2.0.0)
|
|
22
30
|
debug_inspector (>= 1.2.0)
|
|
23
|
-
bootsnap (1.
|
|
31
|
+
bootsnap (1.23.0)
|
|
24
32
|
msgpack (~> 1.2)
|
|
25
33
|
commander (5.0.0)
|
|
26
34
|
highline (~> 3.0.0)
|
|
27
|
-
concurrent-ruby (1.3.
|
|
28
|
-
crack (1.0.
|
|
35
|
+
concurrent-ruby (1.3.6)
|
|
36
|
+
crack (1.0.1)
|
|
29
37
|
bigdecimal
|
|
30
38
|
rexml
|
|
31
39
|
crass (1.0.6)
|
|
32
40
|
debug_inspector (1.2.0)
|
|
33
|
-
diff-lcs (1.
|
|
34
|
-
faker (3.
|
|
41
|
+
diff-lcs (1.6.2)
|
|
42
|
+
faker (3.6.0)
|
|
35
43
|
i18n (>= 1.8.11, < 2)
|
|
36
|
-
hashdiff (1.
|
|
44
|
+
hashdiff (1.2.1)
|
|
37
45
|
highline (3.0.1)
|
|
38
|
-
i18n (1.14.
|
|
46
|
+
i18n (1.14.8)
|
|
39
47
|
concurrent-ruby (~> 1.0)
|
|
40
|
-
logger (1.
|
|
41
|
-
loofah (2.
|
|
48
|
+
logger (1.7.0)
|
|
49
|
+
loofah (2.25.0)
|
|
42
50
|
crass (~> 1.0.2)
|
|
43
51
|
nokogiri (>= 1.12.0)
|
|
44
|
-
msgpack (1.
|
|
45
|
-
nokogiri (1.
|
|
52
|
+
msgpack (1.8.0)
|
|
53
|
+
nokogiri (1.19.1-x86_64-darwin)
|
|
46
54
|
racc (~> 1.4)
|
|
47
|
-
nokogiri (1.
|
|
55
|
+
nokogiri (1.19.1-x86_64-linux-gnu)
|
|
48
56
|
racc (~> 1.4)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
pg (1.5.9)
|
|
54
|
-
public_suffix (6.0.1)
|
|
57
|
+
ostruct (0.6.3)
|
|
58
|
+
pg (1.6.3-x86_64-darwin)
|
|
59
|
+
pg (1.6.3-x86_64-linux)
|
|
60
|
+
public_suffix (7.0.2)
|
|
55
61
|
racc (1.8.1)
|
|
56
|
-
rack (3.
|
|
57
|
-
rack-test (2.
|
|
62
|
+
rack (3.2.5)
|
|
63
|
+
rack-test (2.2.0)
|
|
58
64
|
rack (>= 1.3)
|
|
59
65
|
rainbow (3.1.1)
|
|
60
|
-
rake (13.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
logger (~> 1.6.5)
|
|
64
|
-
rexml (3.3.6)
|
|
65
|
-
strscan
|
|
66
|
-
roda (3.88.0)
|
|
66
|
+
rake (13.3.1)
|
|
67
|
+
rexml (3.4.4)
|
|
68
|
+
roda (3.101.0)
|
|
67
69
|
rack
|
|
68
|
-
|
|
69
|
-
rspec (3.13.0)
|
|
70
|
+
rspec (3.13.2)
|
|
70
71
|
rspec-core (~> 3.13.0)
|
|
71
72
|
rspec-expectations (~> 3.13.0)
|
|
72
73
|
rspec-mocks (~> 3.13.0)
|
|
73
|
-
rspec-core (3.13.
|
|
74
|
+
rspec-core (3.13.6)
|
|
74
75
|
rspec-support (~> 3.13.0)
|
|
75
|
-
rspec-expectations (3.13.
|
|
76
|
+
rspec-expectations (3.13.5)
|
|
76
77
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
77
78
|
rspec-support (~> 3.13.0)
|
|
78
|
-
rspec-mocks (3.13.
|
|
79
|
+
rspec-mocks (3.13.7)
|
|
79
80
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
80
81
|
rspec-support (~> 3.13.0)
|
|
81
|
-
rspec-support (3.13.
|
|
82
|
-
ruby-prof (
|
|
83
|
-
|
|
82
|
+
rspec-support (3.13.7)
|
|
83
|
+
ruby-prof (2.0.2)
|
|
84
|
+
base64
|
|
85
|
+
ostruct
|
|
86
|
+
sequel (5.101.0)
|
|
84
87
|
bigdecimal
|
|
85
|
-
sqlite3 (2.
|
|
86
|
-
sqlite3 (2.
|
|
87
|
-
strscan (3.1.0)
|
|
88
|
+
sqlite3 (2.9.0-x86_64-darwin)
|
|
89
|
+
sqlite3 (2.9.0-x86_64-linux-gnu)
|
|
88
90
|
timecop (0.9.10)
|
|
89
91
|
tzinfo (2.0.6)
|
|
90
92
|
concurrent-ruby (~> 1.0)
|
|
91
93
|
warden (1.2.9)
|
|
92
94
|
rack (>= 2.0.9)
|
|
93
|
-
webmock (3.
|
|
95
|
+
webmock (3.26.1)
|
|
94
96
|
addressable (>= 2.8.0)
|
|
95
97
|
crack (>= 0.3.2)
|
|
96
98
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
@@ -104,18 +106,18 @@ PLATFORMS
|
|
|
104
106
|
|
|
105
107
|
DEPENDENCIES
|
|
106
108
|
bootsnap
|
|
107
|
-
faker
|
|
108
|
-
pg
|
|
109
|
+
faker
|
|
110
|
+
pg
|
|
109
111
|
rack-test
|
|
110
112
|
rake (~> 13.0)
|
|
113
|
+
ree!
|
|
111
114
|
ree_lib!
|
|
112
|
-
roda
|
|
113
|
-
rollbar (~> 3.6.0)
|
|
115
|
+
roda
|
|
114
116
|
rspec
|
|
115
117
|
ruby-prof
|
|
116
|
-
sqlite3
|
|
117
|
-
timecop
|
|
118
|
-
warden
|
|
118
|
+
sqlite3
|
|
119
|
+
timecop
|
|
120
|
+
warden
|
|
119
121
|
webmock
|
|
120
122
|
|
|
121
123
|
BUNDLED WITH
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
package_require("ree_mapper/errors/type_error")
|
|
3
3
|
package_require("ree_mapper/errors/coercion_error")
|
|
4
|
+
package_require("ree_actions/method_plugin")
|
|
4
5
|
|
|
5
6
|
module ReeActions
|
|
6
7
|
module DSL
|
|
7
8
|
def self.included(base)
|
|
8
9
|
base.extend(ClassMethods)
|
|
10
|
+
base.extend(Ree::MethodAddedHook)
|
|
9
11
|
base.include(ReeMapper::DSL)
|
|
10
12
|
base.include(Ree::Inspectable)
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
def self.extended(base)
|
|
14
16
|
base.extend(ClassMethods)
|
|
17
|
+
base.extend(Ree::MethodAddedHook)
|
|
15
18
|
base.include(ReeMapper::DSL)
|
|
16
19
|
end
|
|
17
20
|
|
|
@@ -31,39 +34,11 @@ module ReeActions
|
|
|
31
34
|
|
|
32
35
|
Ree.container.compile(dsl.package, name)
|
|
33
36
|
end
|
|
34
|
-
|
|
35
|
-
def method_added(method_name)
|
|
36
|
-
return super if method_name != :call
|
|
37
|
-
|
|
38
|
-
if @__original_call_defined
|
|
39
|
-
remove_instance_variable(:@__original_call_defined)
|
|
40
|
-
return
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
@__original_call_defined = true
|
|
44
|
-
|
|
45
|
-
alias_method(:__original_call, :call)
|
|
46
|
-
|
|
47
|
-
define_method :call do |user_access, attrs, **opts, &proc|
|
|
48
|
-
if self.class.const_defined?(:ActionCaster)
|
|
49
|
-
caster = self.class.const_get(:ActionCaster)
|
|
50
|
-
|
|
51
|
-
if !caster.respond_to?(:cast)
|
|
52
|
-
raise ArgumentError.new("ActionCaster does not respond to `cast` method")
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
attrs = begin
|
|
56
|
-
caster.cast(attrs)
|
|
57
|
-
rescue ReeMapper::TypeError, ReeMapper::CoercionError => e
|
|
58
|
-
raise ReeActions::ParamError, e.message
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
__original_call(user_access, attrs, **opts, &proc)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
nil
|
|
66
|
-
end
|
|
67
37
|
end
|
|
68
38
|
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Register the method plugin if the plugin system is available
|
|
42
|
+
if defined?(Ree) && Ree.respond_to?(:register_method_added_plugin)
|
|
43
|
+
Ree.register_method_added_plugin(ReeActions::MethodPlugin)
|
|
69
44
|
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class ReeActions::MethodPlugin
|
|
4
|
+
def self.active?
|
|
5
|
+
true # Always active when registered
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def initialize(method_name, is_class_method, target)
|
|
9
|
+
@method_name = method_name
|
|
10
|
+
@is_class_method = is_class_method
|
|
11
|
+
@target = target
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call
|
|
15
|
+
# Only wrap :call method for classes that include ReeActions::DSL
|
|
16
|
+
return nil unless @method_name == :call
|
|
17
|
+
return nil unless ree_actions_class?
|
|
18
|
+
|
|
19
|
+
Proc.new do |instance, next_layer, *args, **kwargs, &block|
|
|
20
|
+
# ReeActions call signature: call(user_access, attrs, **opts, &block)
|
|
21
|
+
# First arg is user_access, second is attrs (the one to cast)
|
|
22
|
+
user_access, attrs, *rest_args = args
|
|
23
|
+
|
|
24
|
+
if instance.class.const_defined?(:ActionCaster)
|
|
25
|
+
caster = instance.class.const_get(:ActionCaster)
|
|
26
|
+
|
|
27
|
+
unless caster.respond_to?(:cast)
|
|
28
|
+
raise ArgumentError.new("ActionCaster does not respond to `cast` method")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
attrs = begin
|
|
32
|
+
caster.cast(attrs)
|
|
33
|
+
rescue ReeMapper::TypeError, ReeMapper::CoercionError => e
|
|
34
|
+
raise ReeActions::ParamError, e.message
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Call next layer with cast attrs
|
|
39
|
+
next_layer.call(user_access, attrs, *rest_args, **kwargs, &block)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def ree_actions_class?
|
|
46
|
+
@target.included_modules.any? { |m| m.name == "ReeActions::DSL" }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -25,11 +25,13 @@ RSpec.describe ReeActions::DSL, type: [:autoclean] do
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
before do
|
|
28
|
+
Ree.enable_benchmark_mode
|
|
28
29
|
Ree.enable_irb_mode
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
after do
|
|
32
33
|
Ree.disable_irb_mode
|
|
34
|
+
Ree.disable_benchmark_mode
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
it {
|
|
@@ -41,10 +43,24 @@ RSpec.describe ReeActions::DSL, type: [:autoclean] do
|
|
|
41
43
|
depends_on :ree_dao
|
|
42
44
|
end
|
|
43
45
|
|
|
46
|
+
class TestFn
|
|
47
|
+
include Ree::FnDSL
|
|
48
|
+
|
|
49
|
+
fn :test_fn
|
|
50
|
+
|
|
51
|
+
contract None = Integer
|
|
52
|
+
def call
|
|
53
|
+
1
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
44
57
|
class TestAction
|
|
45
58
|
include ReeActions::DSL
|
|
46
59
|
|
|
47
|
-
action :test_action
|
|
60
|
+
action :test_action do
|
|
61
|
+
benchmark
|
|
62
|
+
link :test_fn
|
|
63
|
+
end
|
|
48
64
|
|
|
49
65
|
ActionCaster = build_mapper.use(:cast) do
|
|
50
66
|
integer :user_id
|
|
@@ -52,6 +68,7 @@ RSpec.describe ReeActions::DSL, type: [:autoclean] do
|
|
|
52
68
|
|
|
53
69
|
contract Any, ActionCaster.dto(:cast) => Integer
|
|
54
70
|
def call(user_access, attrs)
|
|
71
|
+
test_fn
|
|
55
72
|
attrs[:user_id]
|
|
56
73
|
end
|
|
57
74
|
end
|
|
@@ -9,8 +9,7 @@ class ReeDao::BuildConnection
|
|
|
9
9
|
|
|
10
10
|
fn :build_connection do
|
|
11
11
|
link :connections
|
|
12
|
-
|
|
13
|
-
link 'ree_dao/build_methods', -> { BuildMethods }
|
|
12
|
+
import -> { DatasetExtensions & BuildMethods }
|
|
14
13
|
end
|
|
15
14
|
|
|
16
15
|
TIMEZONES = [:utc, :local].freeze
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
class ReeJson::FromJson
|
|
2
2
|
include Ree::FnDSL
|
|
3
3
|
|
|
4
|
-
fn :from_json
|
|
5
|
-
link 'ree_json/constants', -> {
|
|
6
|
-
DEFAULT_OPTIONS & MODES & ESCAPE_MODES & TIME_FORMATS
|
|
7
|
-
}
|
|
8
|
-
end
|
|
4
|
+
fn :from_json
|
|
9
5
|
|
|
10
6
|
ParseJsonError = Class.new(StandardError)
|
|
11
7
|
|
|
12
8
|
contract(
|
|
13
|
-
|
|
9
|
+
String,
|
|
14
10
|
Ksplat[
|
|
15
|
-
mode?: Or[*MODES],
|
|
16
11
|
symbol_keys?: Bool,
|
|
17
12
|
RestKeys => Any
|
|
18
13
|
] => Any
|
|
19
14
|
).throws(ParseJsonError)
|
|
20
15
|
def call(object, **opts)
|
|
21
|
-
options =
|
|
22
|
-
|
|
16
|
+
options = {}
|
|
17
|
+
|
|
18
|
+
if opts.delete(:symbol_keys)
|
|
19
|
+
options[:symbolize_names] = true
|
|
20
|
+
end
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
rescue ArgumentError, EncodingError, TypeError
|
|
22
|
+
JSON.parse(object, **options)
|
|
23
|
+
rescue JSON::ParserError, ArgumentError, EncodingError, TypeError
|
|
26
24
|
raise ParseJsonError.new
|
|
27
25
|
end
|
|
28
|
-
end
|
|
26
|
+
end
|
|
@@ -1,39 +1,15 @@
|
|
|
1
1
|
class ReeJson::ToJson
|
|
2
2
|
include Ree::FnDSL
|
|
3
3
|
|
|
4
|
-
fn :to_json
|
|
5
|
-
link 'ree_json/constants', -> {
|
|
6
|
-
ESCAPE_MODES & DEFAULT_OPTIONS & MODES & TIME_FORMATS
|
|
7
|
-
}
|
|
8
|
-
end
|
|
4
|
+
fn :to_json
|
|
9
5
|
|
|
10
6
|
doc(<<~DOC)
|
|
11
|
-
Dumps arbitrary object to json
|
|
7
|
+
Dumps arbitrary object to json.
|
|
12
8
|
to_json({id: 1}) # => "{\"id\":1}"
|
|
13
|
-
to_json({id: 1}, mode: :object) # => "{\":id\":{\"^o\":\"Object\"}}"
|
|
14
|
-
|
|
15
|
-
List of all available Ksplat options could be found here:
|
|
16
|
-
https://github.com/ohler55/oj/blob/develop/pages/Modes.md
|
|
17
9
|
DOC
|
|
18
10
|
|
|
19
|
-
contract(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
mode?: Or[*MODES],
|
|
23
|
-
escape_mode?: Or[*ESCAPE_MODES],
|
|
24
|
-
float_precision?: Integer,
|
|
25
|
-
time_format?: Or[*TIME_FORMATS],
|
|
26
|
-
use_as_json?: Bool,
|
|
27
|
-
use_raw_json?: Bool,
|
|
28
|
-
use_to_hash?: Bool,
|
|
29
|
-
use_to_json?: Bool,
|
|
30
|
-
RestKeys => Any
|
|
31
|
-
] => String
|
|
32
|
-
).throws(ArgumentError, TypeError)
|
|
33
|
-
def call(object, **opts)
|
|
34
|
-
options = DEFAULT_OPTIONS
|
|
35
|
-
.merge(opts)
|
|
36
|
-
|
|
37
|
-
Oj.dump(object, options)
|
|
11
|
+
contract(Any => String)
|
|
12
|
+
def call(object)
|
|
13
|
+
JSON.generate(object)
|
|
38
14
|
end
|
|
39
|
-
end
|
|
15
|
+
end
|
|
@@ -7,11 +7,6 @@ RSpec.describe :from_json do
|
|
|
7
7
|
expect(from_json("{\"id\":1}", symbol_keys: true)).to eq({id: 1})
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
it {
|
|
11
|
-
result = from_json("{\":id\":{\"^o\":\"Object\"}}", mode: :object)
|
|
12
|
-
expect(result[:id]).to be_a(Object)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
10
|
it {
|
|
16
11
|
expect(from_json("null")).to eq(nil)
|
|
17
12
|
}
|
|
@@ -36,15 +31,11 @@ RSpec.describe :from_json do
|
|
|
36
31
|
expect(from_json("[1,true,\"hello\"]")).to eq([1, true, "hello"])
|
|
37
32
|
}
|
|
38
33
|
|
|
39
|
-
it {
|
|
40
|
-
expect(from_json("{\"^o\":\"Object\"}", mode: :object)).to be_a(Object)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
34
|
it {
|
|
44
35
|
expect{from_json("{213: \"123\"}")}.to raise_error(ReeJson::FromJson::ParseJsonError)
|
|
45
36
|
}
|
|
46
37
|
|
|
47
38
|
it {
|
|
48
|
-
expect { from_json(nil
|
|
39
|
+
expect { from_json(nil) }.to raise_error(Ree::Contracts::ContractError)
|
|
49
40
|
}
|
|
50
|
-
end
|
|
41
|
+
end
|
|
@@ -11,10 +11,9 @@ class ReeLogger::Logger
|
|
|
11
11
|
link :config
|
|
12
12
|
link :not_blank, from: :ree_object
|
|
13
13
|
link :is_blank, from: :ree_object
|
|
14
|
-
link
|
|
15
|
-
link
|
|
16
|
-
link
|
|
17
|
-
link 'ree_logger/appenders/rollbar_appender', -> { RollbarAppender }
|
|
14
|
+
link "ree_logger/rate_limiter", -> { RateLimiter }
|
|
15
|
+
link "ree_logger/appenders/file_appender", -> { FileAppender }
|
|
16
|
+
link "ree_logger/appenders/stdout_appender", -> { StdoutAppender }
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
def build
|
|
@@ -36,22 +35,9 @@ class ReeLogger::Logger
|
|
|
36
35
|
)
|
|
37
36
|
end
|
|
38
37
|
|
|
39
|
-
if config.rollbar.enabled
|
|
40
|
-
opts = {}
|
|
41
|
-
opts[:branch] = config.rollbar.branch if config.rollbar.branch
|
|
42
|
-
opts[:host] = config.rollbar.host if config.rollbar.host
|
|
43
|
-
|
|
44
|
-
appenders << RollbarAppender.new(
|
|
45
|
-
config.levels.rollbar,
|
|
46
|
-
access_token: config.rollbar.access_token,
|
|
47
|
-
environment: config.rollbar.environment,
|
|
48
|
-
**opts
|
|
49
|
-
)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
38
|
build_logger(
|
|
53
39
|
appenders,
|
|
54
|
-
ENV[
|
|
40
|
+
ENV["APP_NAME"],
|
|
55
41
|
RateLimiter.new(
|
|
56
42
|
config.rate_limit.interval,
|
|
57
43
|
config.rate_limit.max_count
|
|
@@ -17,22 +17,12 @@ class ReeLogger::Config
|
|
|
17
17
|
RATE_LIMIT_MAX_COUNT = 600
|
|
18
18
|
|
|
19
19
|
def build
|
|
20
|
-
is_rollbar_enabled = parse_bool_string(ENV['LOG_ROLLBAR_ENABLED'])
|
|
21
|
-
|
|
22
20
|
to_obj({
|
|
23
21
|
file_path: ENV['LOG_FILE_PATH'],
|
|
24
22
|
file_auto_flush: parse_bool_string(ENV['LOG_FILE_AUTO_FLUSH']),
|
|
25
23
|
levels: {
|
|
26
24
|
file: parse_level(ENV['LOG_LEVEL_FILE']),
|
|
27
25
|
stdout: parse_level(ENV['LOG_LEVEL_STDOUT']),
|
|
28
|
-
rollbar: is_rollbar_enabled ? parse_level(ENV['LOG_LEVEL_ROLLBAR']) : nil,
|
|
29
|
-
},
|
|
30
|
-
rollbar: {
|
|
31
|
-
enabled: is_rollbar_enabled,
|
|
32
|
-
access_token: is_rollbar_enabled ? ENV.fetch('LOG_ROLLBAR_ACCESS_TOKEN') : nil,
|
|
33
|
-
environment: is_rollbar_enabled ? ENV.fetch('LOG_ROLLBAR_ENVIRONMENT') : nil,
|
|
34
|
-
branch: ENV['LOG_ROLLBAR_BRANCH'],
|
|
35
|
-
host: ENV['LOG_ROLLBAR_HOST']
|
|
36
26
|
},
|
|
37
27
|
rate_limit: {
|
|
38
28
|
interval: get_int_value('LOG_RATE_LIMIT_INTERVAL', RATE_LIMIT_INTERVAL),
|
|
@@ -14,10 +14,6 @@ RSpec.describe :logger do
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
before(:each) do
|
|
18
|
-
allow(Rollbar).to receive(:log)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
17
|
let(:log_file_path) { ENV['LOG_FILE_PATH'] }
|
|
22
18
|
|
|
23
19
|
let(:exception) {
|
|
@@ -26,25 +22,16 @@ RSpec.describe :logger do
|
|
|
26
22
|
|
|
27
23
|
it {
|
|
28
24
|
expect { logger.info('hello world') }.to output(/hello world/).to_stdout
|
|
29
|
-
expect(Rollbar).to have_received(:log)
|
|
30
25
|
expect(File.read(log_file_path)).to match("hello world")
|
|
31
26
|
}
|
|
32
27
|
|
|
33
|
-
it {
|
|
34
|
-
expect { logger.info('hello world', { rollbar_scope: {fingerprint: 'test', test: 'test'}, param: 1, another_param: { name: 'John'} }) }.to output(/John/).to_stdout
|
|
35
|
-
expect(Rollbar).to have_received(:log)
|
|
36
|
-
expect(File.read(log_file_path)).to match("John")
|
|
37
|
-
}
|
|
38
|
-
|
|
39
28
|
it {
|
|
40
29
|
expect { logger.debug('debug message') }.to_not output(/debug message/).to_stdout
|
|
41
|
-
expect(Rollbar).not_to have_received(:log)
|
|
42
30
|
expect(File.read(log_file_path)).to_not match("debug")
|
|
43
31
|
}
|
|
44
32
|
|
|
45
33
|
it {
|
|
46
34
|
expect { logger.warn('warning message') }.to output(/warning message/).to_stdout
|
|
47
|
-
expect(Rollbar).to have_received(:log)
|
|
48
35
|
expect(File.read(log_file_path)).to match("warning message")
|
|
49
36
|
}
|
|
50
37
|
|
|
@@ -54,20 +41,17 @@ RSpec.describe :logger do
|
|
|
54
41
|
}
|
|
55
42
|
expect(output).to match(/some error message/)
|
|
56
43
|
expect(output).to_not match(/method|args/)
|
|
57
|
-
expect(Rollbar).to have_received(:log)
|
|
58
44
|
expect(File.read(log_file_path)).to match("some error message")
|
|
59
45
|
expect(File.read(log_file_path)).to_not match("PARAMETERS: {:method=>{:name=>:call, :args=>{:block=>{}}}}")
|
|
60
46
|
}
|
|
61
47
|
|
|
62
48
|
it {
|
|
63
49
|
expect { logger.fatal('some fatal message', {}, exception) }.to output(/some fatal message/).to_stdout
|
|
64
|
-
expect(Rollbar).to have_received(:log)
|
|
65
50
|
expect(File.read(log_file_path)).to match("some fatal message")
|
|
66
51
|
}
|
|
67
52
|
|
|
68
53
|
it {
|
|
69
54
|
expect { logger.unknown('unknown message') }.to output(/unknown message/).to_stdout
|
|
70
|
-
expect(Rollbar).to have_received(:log)
|
|
71
55
|
expect(File.read(log_file_path)).to match("unknown message")
|
|
72
56
|
}
|
|
73
57
|
end
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
#frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'rollbar'
|
|
4
3
|
package_require('ree_logger/multi_logger')
|
|
5
4
|
package_require('ree_logger/appenders/stdout_appender')
|
|
6
5
|
package_require('ree_logger/appenders/file_appender')
|
|
7
|
-
package_require('ree_logger/appenders/rollbar_appender')
|
|
8
6
|
|
|
9
7
|
RSpec.describe ReeLogger::MultiLogger do
|
|
10
8
|
link :is_blank, from: :ree_object
|
|
@@ -39,14 +37,6 @@ RSpec.describe ReeLogger::MultiLogger do
|
|
|
39
37
|
)
|
|
40
38
|
}
|
|
41
39
|
|
|
42
|
-
let(:rollbar_appender) {
|
|
43
|
-
ReeLogger::RollbarAppender.new(
|
|
44
|
-
:info,
|
|
45
|
-
access_token: ENV['LOG_ROLLBAR_ACCESS_TOKEN'],
|
|
46
|
-
environment: ENV['LOG_ROLLBAR_ENVIRONMENT']
|
|
47
|
-
)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
40
|
let(:logger) {
|
|
51
41
|
multi_logger.new(
|
|
52
42
|
'SomeCoolApp',
|
|
@@ -56,40 +46,32 @@ RSpec.describe ReeLogger::MultiLogger do
|
|
|
56
46
|
}
|
|
57
47
|
|
|
58
48
|
let(:logger_with_appenders) {
|
|
59
|
-
[file_appender, stdout_appender
|
|
49
|
+
[file_appender, stdout_appender].map { logger.add_appender(_1) }
|
|
60
50
|
|
|
61
51
|
logger
|
|
62
52
|
}
|
|
63
53
|
|
|
64
|
-
before(:each) do
|
|
65
|
-
allow(Rollbar).to receive(:log)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
54
|
it {
|
|
69
55
|
expect { logger.add_appender(stdout_appender) }.to change { logger.appenders }
|
|
70
56
|
}
|
|
71
57
|
|
|
72
58
|
it {
|
|
73
59
|
expect { logger.info('any message') }.to_not output(/any message/).to_stdout
|
|
74
|
-
expect(Rollbar).not_to have_received(:log)
|
|
75
60
|
expect(File.read(log_file_path)).to_not match('any message')
|
|
76
61
|
}
|
|
77
62
|
|
|
78
63
|
it {
|
|
79
64
|
expect { logger_with_appenders.info('hello world') }.to output(/hello world/).to_stdout
|
|
80
|
-
expect(Rollbar).to have_received(:log)
|
|
81
65
|
expect(File.read(log_file_path)).to match("hello world")
|
|
82
66
|
}
|
|
83
67
|
|
|
84
68
|
it {
|
|
85
69
|
expect { logger_with_appenders.info {'block message'} }.to output(/block message/).to_stdout
|
|
86
|
-
expect(Rollbar).to have_received(:log)
|
|
87
70
|
expect(File.read(log_file_path)).to match("block message")
|
|
88
71
|
}
|
|
89
72
|
|
|
90
73
|
it {
|
|
91
74
|
expect { logger_with_appenders.info('hello world', { param: 1, another_param: { name: 'John'}, password: 'password01' }) }.to output(/John/).to_stdout
|
|
92
|
-
expect(Rollbar).to have_received(:log)
|
|
93
75
|
expect(File.read(log_file_path)).to match("John")
|
|
94
76
|
expected = if RUBY_VERSION >= '3.4'
|
|
95
77
|
'password: "FILTERED"'
|
|
@@ -101,13 +83,11 @@ RSpec.describe ReeLogger::MultiLogger do
|
|
|
101
83
|
|
|
102
84
|
it {
|
|
103
85
|
expect { logger_with_appenders.debug('debug message') }.to_not output(/debug message/).to_stdout
|
|
104
|
-
expect(Rollbar).not_to have_received(:log)
|
|
105
86
|
expect(File.read(log_file_path)).to_not match("debug")
|
|
106
87
|
}
|
|
107
88
|
|
|
108
89
|
it {
|
|
109
90
|
expect { logger_with_appenders.warn('warning message') }.to output(/warning message/).to_stdout
|
|
110
|
-
expect(Rollbar).to have_received(:log)
|
|
111
91
|
expect(File.read(log_file_path)).to match("warning message")
|
|
112
92
|
}
|
|
113
93
|
|
|
@@ -118,13 +98,11 @@ RSpec.describe ReeLogger::MultiLogger do
|
|
|
118
98
|
expect(output).to match(/some error message/)
|
|
119
99
|
expect(output).to_not match(/method|args/)
|
|
120
100
|
expect(File.read(log_file_path)).to match("some error message")
|
|
121
|
-
expect(Rollbar).to have_received(:log)
|
|
122
101
|
expect(File.read(log_file_path)).to_not match("PARAMETERS: {:method=>{:name=>:call, :args=>{:block=>{}}}}")
|
|
123
102
|
}
|
|
124
103
|
|
|
125
104
|
it {
|
|
126
105
|
expect { logger_with_appenders.fatal('some fatal message', { email: 'some@mail.com', password: 'password01' }, exception) }.to output(/some fatal message/).to_stdout
|
|
127
|
-
expect(Rollbar).to have_received(:log)
|
|
128
106
|
expect(File.read(log_file_path)).to match("some fatal message")
|
|
129
107
|
expected = if RUBY_VERSION >= '3.4'
|
|
130
108
|
'password: "FILTERED"'
|
|
@@ -136,7 +114,6 @@ RSpec.describe ReeLogger::MultiLogger do
|
|
|
136
114
|
|
|
137
115
|
it {
|
|
138
116
|
expect { logger_with_appenders.unknown('unknown message') }.to output(/unknown message/).to_stdout
|
|
139
|
-
expect(Rollbar).to have_received(:log)
|
|
140
117
|
expect(File.read(log_file_path)).to match("unknown message")
|
|
141
118
|
}
|
|
142
119
|
|
|
@@ -15,9 +15,5 @@ ENV['LOG_FILE_PATH'] = '/tmp/ree_logger.log'
|
|
|
15
15
|
ENV['LOG_FILE_AUTO_FLUSH'] = 'true'
|
|
16
16
|
ENV['LOG_LEVEL_FILE'] = 'info'
|
|
17
17
|
ENV['LOG_LEVEL_STDOUT'] = 'info'
|
|
18
|
-
ENV['LOG_LEVEL_ROLLBAR'] = 'info'
|
|
19
18
|
ENV['LOG_RATE_LIMIT_INTERVAL'] = '60'
|
|
20
|
-
ENV['LOG_RATE_LIMIT_COUNT'] = '600'
|
|
21
|
-
ENV['LOG_ROLLBAR_ACCESS_TOKEN'] = 'SET_YOUR_TOKEN'
|
|
22
|
-
ENV['LOG_ROLLBAR_ENABLED'] = 'true'
|
|
23
|
-
ENV['LOG_ROLLBAR_ENVIRONMENT'] = 'test'
|
|
19
|
+
ENV['LOG_RATE_LIMIT_COUNT'] = '600'
|
|
@@ -4,9 +4,7 @@ class ReeMapper::BuildMapperFactory
|
|
|
4
4
|
include Ree::FnDSL
|
|
5
5
|
|
|
6
6
|
fn :build_mapper_factory do
|
|
7
|
-
|
|
8
|
-
link 'ree_mapper/mapper_factory', -> { MapperFactory }
|
|
9
|
-
link 'ree_mapper/mapper_strategy', -> { MapperStrategy }
|
|
7
|
+
import -> { Mapper & MapperFactory & MapperStrategy}
|
|
10
8
|
end
|
|
11
9
|
|
|
12
10
|
contract(ArrayOf[MapperStrategy] => SubclassOf[MapperFactory])
|
|
@@ -5,15 +5,17 @@ class ReeMapper::BuildMapperStrategy
|
|
|
5
5
|
|
|
6
6
|
fn :build_mapper_strategy
|
|
7
7
|
|
|
8
|
-
contract(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
contract(
|
|
9
|
+
Kwargs[
|
|
10
|
+
method: Symbol,
|
|
11
|
+
dto: Class,
|
|
12
|
+
always_optional: Bool
|
|
13
|
+
] => ReeMapper::MapperStrategy
|
|
14
|
+
)
|
|
13
15
|
def call(method:, dto: Hash, always_optional: false)
|
|
14
16
|
ReeMapper::MapperStrategy.new(
|
|
15
|
-
method:
|
|
16
|
-
dto:
|
|
17
|
+
method: method,
|
|
18
|
+
dto: dto,
|
|
17
19
|
always_optional: always_optional
|
|
18
20
|
)
|
|
19
21
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require 'benchmark'
|
|
3
3
|
|
|
4
|
+
package_require "ree_mapper"
|
|
5
|
+
|
|
4
6
|
no_contracts = Ree::Contracts.no_contracts?
|
|
5
7
|
Ree.disable_contracts
|
|
6
8
|
|
|
7
|
-
package_require "ree_mapper"
|
|
8
|
-
|
|
9
9
|
RSpec.xdescribe 'Mapper Benchmark' do
|
|
10
10
|
link :build_mapper_factory, from: :ree_mapper
|
|
11
11
|
link :build_mapper_strategy, from: :ree_mapper
|
data/lib/ree_lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ree_lib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ruslan Gatiyatov
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: ree
|
|
@@ -27,114 +27,100 @@ dependencies:
|
|
|
27
27
|
name: tzinfo
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
|
-
- - "
|
|
30
|
+
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version:
|
|
32
|
+
version: '0'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
|
-
- - "
|
|
37
|
+
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
39
|
+
version: '0'
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: loofah
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- - "
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: 2.24.0
|
|
47
|
-
type: :runtime
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: 2.24.0
|
|
54
|
-
- !ruby/object:Gem::Dependency
|
|
55
|
-
name: oj
|
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - "~>"
|
|
44
|
+
- - ">="
|
|
59
45
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
46
|
+
version: '0'
|
|
61
47
|
type: :runtime
|
|
62
48
|
prerelease: false
|
|
63
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
50
|
requirements:
|
|
65
|
-
- - "
|
|
51
|
+
- - ">="
|
|
66
52
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
53
|
+
version: '0'
|
|
68
54
|
- !ruby/object:Gem::Dependency
|
|
69
55
|
name: i18n
|
|
70
56
|
requirement: !ruby/object:Gem::Requirement
|
|
71
57
|
requirements:
|
|
72
|
-
- - "
|
|
58
|
+
- - ">="
|
|
73
59
|
- !ruby/object:Gem::Version
|
|
74
|
-
version:
|
|
60
|
+
version: '0'
|
|
75
61
|
type: :runtime
|
|
76
62
|
prerelease: false
|
|
77
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
64
|
requirements:
|
|
79
|
-
- - "
|
|
65
|
+
- - ">="
|
|
80
66
|
- !ruby/object:Gem::Version
|
|
81
|
-
version:
|
|
67
|
+
version: '0'
|
|
82
68
|
- !ruby/object:Gem::Dependency
|
|
83
69
|
name: sequel
|
|
84
70
|
requirement: !ruby/object:Gem::Requirement
|
|
85
71
|
requirements:
|
|
86
|
-
- - "
|
|
72
|
+
- - ">="
|
|
87
73
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
74
|
+
version: '0'
|
|
89
75
|
type: :runtime
|
|
90
76
|
prerelease: false
|
|
91
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
78
|
requirements:
|
|
93
|
-
- - "
|
|
79
|
+
- - ">="
|
|
94
80
|
- !ruby/object:Gem::Version
|
|
95
|
-
version:
|
|
81
|
+
version: '0'
|
|
96
82
|
- !ruby/object:Gem::Dependency
|
|
97
83
|
name: binding_of_caller
|
|
98
84
|
requirement: !ruby/object:Gem::Requirement
|
|
99
85
|
requirements:
|
|
100
|
-
- - "
|
|
86
|
+
- - ">="
|
|
101
87
|
- !ruby/object:Gem::Version
|
|
102
|
-
version:
|
|
88
|
+
version: '0'
|
|
103
89
|
type: :runtime
|
|
104
90
|
prerelease: false
|
|
105
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
92
|
requirements:
|
|
107
|
-
- - "
|
|
93
|
+
- - ">="
|
|
108
94
|
- !ruby/object:Gem::Version
|
|
109
|
-
version:
|
|
95
|
+
version: '0'
|
|
110
96
|
- !ruby/object:Gem::Dependency
|
|
111
97
|
name: rainbow
|
|
112
98
|
requirement: !ruby/object:Gem::Requirement
|
|
113
99
|
requirements:
|
|
114
|
-
- - "
|
|
100
|
+
- - ">="
|
|
115
101
|
- !ruby/object:Gem::Version
|
|
116
|
-
version:
|
|
102
|
+
version: '0'
|
|
117
103
|
type: :runtime
|
|
118
104
|
prerelease: false
|
|
119
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
106
|
requirements:
|
|
121
|
-
- - "
|
|
107
|
+
- - ">="
|
|
122
108
|
- !ruby/object:Gem::Version
|
|
123
|
-
version:
|
|
109
|
+
version: '0'
|
|
124
110
|
- !ruby/object:Gem::Dependency
|
|
125
111
|
name: bigdecimal
|
|
126
112
|
requirement: !ruby/object:Gem::Requirement
|
|
127
113
|
requirements:
|
|
128
|
-
- - "
|
|
114
|
+
- - ">="
|
|
129
115
|
- !ruby/object:Gem::Version
|
|
130
|
-
version:
|
|
116
|
+
version: '0'
|
|
131
117
|
type: :runtime
|
|
132
118
|
prerelease: false
|
|
133
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
134
120
|
requirements:
|
|
135
|
-
- - "
|
|
121
|
+
- - ">="
|
|
136
122
|
- !ruby/object:Gem::Version
|
|
137
|
-
version:
|
|
123
|
+
version: '0'
|
|
138
124
|
- !ruby/object:Gem::Dependency
|
|
139
125
|
name: rack-test
|
|
140
126
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -153,100 +139,86 @@ dependencies:
|
|
|
153
139
|
name: roda
|
|
154
140
|
requirement: !ruby/object:Gem::Requirement
|
|
155
141
|
requirements:
|
|
156
|
-
- - "
|
|
142
|
+
- - ">="
|
|
157
143
|
- !ruby/object:Gem::Version
|
|
158
|
-
version:
|
|
144
|
+
version: '0'
|
|
159
145
|
type: :development
|
|
160
146
|
prerelease: false
|
|
161
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
162
148
|
requirements:
|
|
163
|
-
- - "
|
|
149
|
+
- - ">="
|
|
164
150
|
- !ruby/object:Gem::Version
|
|
165
|
-
version:
|
|
151
|
+
version: '0'
|
|
166
152
|
- !ruby/object:Gem::Dependency
|
|
167
153
|
name: sqlite3
|
|
168
154
|
requirement: !ruby/object:Gem::Requirement
|
|
169
155
|
requirements:
|
|
170
|
-
- - "
|
|
156
|
+
- - ">="
|
|
171
157
|
- !ruby/object:Gem::Version
|
|
172
|
-
version:
|
|
158
|
+
version: '0'
|
|
173
159
|
type: :development
|
|
174
160
|
prerelease: false
|
|
175
161
|
version_requirements: !ruby/object:Gem::Requirement
|
|
176
162
|
requirements:
|
|
177
|
-
- - "
|
|
163
|
+
- - ">="
|
|
178
164
|
- !ruby/object:Gem::Version
|
|
179
|
-
version:
|
|
165
|
+
version: '0'
|
|
180
166
|
- !ruby/object:Gem::Dependency
|
|
181
167
|
name: pg
|
|
182
168
|
requirement: !ruby/object:Gem::Requirement
|
|
183
169
|
requirements:
|
|
184
|
-
- - "
|
|
170
|
+
- - ">="
|
|
185
171
|
- !ruby/object:Gem::Version
|
|
186
|
-
version:
|
|
172
|
+
version: '0'
|
|
187
173
|
type: :development
|
|
188
174
|
prerelease: false
|
|
189
175
|
version_requirements: !ruby/object:Gem::Requirement
|
|
190
176
|
requirements:
|
|
191
|
-
- - "
|
|
177
|
+
- - ">="
|
|
192
178
|
- !ruby/object:Gem::Version
|
|
193
|
-
version:
|
|
179
|
+
version: '0'
|
|
194
180
|
- !ruby/object:Gem::Dependency
|
|
195
181
|
name: warden
|
|
196
182
|
requirement: !ruby/object:Gem::Requirement
|
|
197
183
|
requirements:
|
|
198
|
-
- - "
|
|
184
|
+
- - ">="
|
|
199
185
|
- !ruby/object:Gem::Version
|
|
200
|
-
version:
|
|
186
|
+
version: '0'
|
|
201
187
|
type: :development
|
|
202
188
|
prerelease: false
|
|
203
189
|
version_requirements: !ruby/object:Gem::Requirement
|
|
204
190
|
requirements:
|
|
205
|
-
- - "
|
|
191
|
+
- - ">="
|
|
206
192
|
- !ruby/object:Gem::Version
|
|
207
|
-
version:
|
|
193
|
+
version: '0'
|
|
208
194
|
- !ruby/object:Gem::Dependency
|
|
209
195
|
name: timecop
|
|
210
196
|
requirement: !ruby/object:Gem::Requirement
|
|
211
197
|
requirements:
|
|
212
|
-
- - "
|
|
213
|
-
- !ruby/object:Gem::Version
|
|
214
|
-
version: 0.9.10
|
|
215
|
-
type: :development
|
|
216
|
-
prerelease: false
|
|
217
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
-
requirements:
|
|
219
|
-
- - "~>"
|
|
220
|
-
- !ruby/object:Gem::Version
|
|
221
|
-
version: 0.9.10
|
|
222
|
-
- !ruby/object:Gem::Dependency
|
|
223
|
-
name: rollbar
|
|
224
|
-
requirement: !ruby/object:Gem::Requirement
|
|
225
|
-
requirements:
|
|
226
|
-
- - "~>"
|
|
198
|
+
- - ">="
|
|
227
199
|
- !ruby/object:Gem::Version
|
|
228
|
-
version:
|
|
200
|
+
version: '0'
|
|
229
201
|
type: :development
|
|
230
202
|
prerelease: false
|
|
231
203
|
version_requirements: !ruby/object:Gem::Requirement
|
|
232
204
|
requirements:
|
|
233
|
-
- - "
|
|
205
|
+
- - ">="
|
|
234
206
|
- !ruby/object:Gem::Version
|
|
235
|
-
version:
|
|
207
|
+
version: '0'
|
|
236
208
|
- !ruby/object:Gem::Dependency
|
|
237
209
|
name: faker
|
|
238
210
|
requirement: !ruby/object:Gem::Requirement
|
|
239
211
|
requirements:
|
|
240
|
-
- - "
|
|
212
|
+
- - ">="
|
|
241
213
|
- !ruby/object:Gem::Version
|
|
242
|
-
version:
|
|
214
|
+
version: '0'
|
|
243
215
|
type: :development
|
|
244
216
|
prerelease: false
|
|
245
217
|
version_requirements: !ruby/object:Gem::Requirement
|
|
246
218
|
requirements:
|
|
247
|
-
- - "
|
|
219
|
+
- - ">="
|
|
248
220
|
- !ruby/object:Gem::Version
|
|
249
|
-
version:
|
|
221
|
+
version: '0'
|
|
250
222
|
description: Ree Lib provides set of packages to extend Ruby Standard Library
|
|
251
223
|
email:
|
|
252
224
|
- ruslan.gatiyatov@gmail.com
|
|
@@ -284,6 +256,7 @@ files:
|
|
|
284
256
|
- lib/ree_lib/packages/ree_actions/package/ree_actions.rb
|
|
285
257
|
- lib/ree_lib/packages/ree_actions/package/ree_actions/dsl.rb
|
|
286
258
|
- lib/ree_lib/packages/ree_actions/package/ree_actions/errors.rb
|
|
259
|
+
- lib/ree_lib/packages/ree_actions/package/ree_actions/method_plugin.rb
|
|
287
260
|
- lib/ree_lib/packages/ree_actions/spec/ree_actions/dsl_spec.rb
|
|
288
261
|
- lib/ree_lib/packages/ree_actions/spec/spec_helper.rb
|
|
289
262
|
- lib/ree_lib/packages/ree_array/.gitignore
|
|
@@ -756,7 +729,6 @@ files:
|
|
|
756
729
|
- lib/ree_lib/packages/ree_json/.rspec
|
|
757
730
|
- lib/ree_lib/packages/ree_json/bin/console
|
|
758
731
|
- lib/ree_lib/packages/ree_json/package/ree_json.rb
|
|
759
|
-
- lib/ree_lib/packages/ree_json/package/ree_json/constants.rb
|
|
760
732
|
- lib/ree_lib/packages/ree_json/package/ree_json/functions/from_json.rb
|
|
761
733
|
- lib/ree_lib/packages/ree_json/package/ree_json/functions/to_json.rb
|
|
762
734
|
- lib/ree_lib/packages/ree_json/spec/ree_json/functions/from_json_spec.rb
|
|
@@ -768,7 +740,6 @@ files:
|
|
|
768
740
|
- lib/ree_lib/packages/ree_logger/package/ree_logger.rb
|
|
769
741
|
- lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/appender.rb
|
|
770
742
|
- lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/file_appender.rb
|
|
771
|
-
- lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/rollbar_appender.rb
|
|
772
743
|
- lib/ree_lib/packages/ree_logger/package/ree_logger/appenders/stdout_appender.rb
|
|
773
744
|
- lib/ree_lib/packages/ree_logger/package/ree_logger/beans/logger.rb
|
|
774
745
|
- lib/ree_lib/packages/ree_logger/package/ree_logger/config.rb
|
|
@@ -781,7 +752,6 @@ files:
|
|
|
781
752
|
- lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
|
|
782
753
|
- lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/appender_spec.rb
|
|
783
754
|
- lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/file_appender_spec.rb
|
|
784
|
-
- lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/rollbar_appender_spec.rb
|
|
785
755
|
- lib/ree_lib/packages/ree_logger/spec/ree_logger/appenders/stdout_appender_spec.rb
|
|
786
756
|
- lib/ree_lib/packages/ree_logger/spec/ree_logger/beans/logger_spec.rb
|
|
787
757
|
- lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/colorized_formatter_spec.rb
|
|
@@ -1082,14 +1052,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1082
1052
|
requirements:
|
|
1083
1053
|
- - ">="
|
|
1084
1054
|
- !ruby/object:Gem::Version
|
|
1085
|
-
version: '3.
|
|
1055
|
+
version: '3.4'
|
|
1086
1056
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1087
1057
|
requirements:
|
|
1088
1058
|
- - ">="
|
|
1089
1059
|
- !ruby/object:Gem::Version
|
|
1090
1060
|
version: '0'
|
|
1091
1061
|
requirements: []
|
|
1092
|
-
rubygems_version:
|
|
1062
|
+
rubygems_version: 4.0.3
|
|
1093
1063
|
specification_version: 4
|
|
1094
1064
|
summary: Ruby Standard Library Extensions
|
|
1095
1065
|
test_files: []
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
class ReeJson::Constants
|
|
2
|
-
# see detailed docsumentation for modes
|
|
3
|
-
# https://github.com/ohler55/oj/blob/develop/pages/Modes.md
|
|
4
|
-
|
|
5
|
-
MODES = [
|
|
6
|
-
:strict,
|
|
7
|
-
:null,
|
|
8
|
-
:compat,
|
|
9
|
-
:json,
|
|
10
|
-
:rails,
|
|
11
|
-
:object,
|
|
12
|
-
:custom,
|
|
13
|
-
:wab,
|
|
14
|
-
].freeze
|
|
15
|
-
|
|
16
|
-
ESCAPE_MODES = [
|
|
17
|
-
:newline, # allows unescaped newlines in the output.
|
|
18
|
-
:json, # follows the JSON specification. This is the default mode.
|
|
19
|
-
:xss_safe, # escapes HTML and XML characters such as & and <.
|
|
20
|
-
:ascii, # escapes all non-ascii or characters with the hi-bit set.
|
|
21
|
-
:unicode_xss, # escapes a special unicodes and is xss safe.
|
|
22
|
-
].freeze
|
|
23
|
-
|
|
24
|
-
TIME_FORMATS = [].freeze
|
|
25
|
-
|
|
26
|
-
DEFAULT_OPTIONS = {
|
|
27
|
-
time_format: :xmlschema,
|
|
28
|
-
use_as_json: true,
|
|
29
|
-
mode: :rails,
|
|
30
|
-
}.freeze
|
|
31
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'appender'
|
|
4
|
-
require 'digest'
|
|
5
|
-
|
|
6
|
-
class ReeLogger::RollbarAppender < ReeLogger::Appender
|
|
7
|
-
include Ree::LinkDSL
|
|
8
|
-
|
|
9
|
-
link 'ree_logger/log_event', -> { LogEvent }
|
|
10
|
-
|
|
11
|
-
contract(
|
|
12
|
-
Symbol,
|
|
13
|
-
Kwargs[
|
|
14
|
-
access_token: String,
|
|
15
|
-
environment: String,
|
|
16
|
-
],
|
|
17
|
-
Ksplat[
|
|
18
|
-
branch?: Nilor[String],
|
|
19
|
-
host?: Nilor[String],
|
|
20
|
-
] => Any
|
|
21
|
-
)
|
|
22
|
-
def initialize(level, access_token:, environment:, **opts)
|
|
23
|
-
super(level, nil)
|
|
24
|
-
|
|
25
|
-
require 'rollbar'
|
|
26
|
-
|
|
27
|
-
Rollbar.configure do |config|
|
|
28
|
-
config.enabled = true
|
|
29
|
-
config.access_token = access_token
|
|
30
|
-
config.environment = environment
|
|
31
|
-
config.branch = opts[:branch] if opts[:branch]
|
|
32
|
-
config.host = opts[:host] if opts[:host]
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
contract(LogEvent, Nilor[String] => nil)
|
|
37
|
-
def append(event, progname = nil)
|
|
38
|
-
rollbar_level =
|
|
39
|
-
case event.level
|
|
40
|
-
when :fatal
|
|
41
|
-
'critical'
|
|
42
|
-
when :unknown
|
|
43
|
-
'critical'
|
|
44
|
-
else
|
|
45
|
-
event.level.to_s
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
fingerprint = event.message.to_s
|
|
49
|
-
|
|
50
|
-
if event.exception
|
|
51
|
-
fingerprint += event.exception.class.to_s
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
scope = {}
|
|
55
|
-
parameters = event.parameters.dup
|
|
56
|
-
|
|
57
|
-
if parameters.key?(:rollbar_scope) && parameters[:rollbar_scope].is_a?(Hash)
|
|
58
|
-
scope = scope.merge(
|
|
59
|
-
parameters.delete(:rollbar_scope)
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
if !scope[:fingerprint]
|
|
64
|
-
fingerprint = event.message.to_s
|
|
65
|
-
|
|
66
|
-
if event.exception
|
|
67
|
-
fingerprint += event.exception.class.to_s
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
scope[:fingerprint] = Digest::MD5.new.update(fingerprint).to_s
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
Rollbar.scoped(scope) do
|
|
74
|
-
Rollbar.log(rollbar_level, event.message, event.exception, parameters)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
nil
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
package_require('ree_logger/appenders/rollbar_appender')
|
|
4
|
-
|
|
5
|
-
RSpec.describe ReeLogger::RollbarAppender do
|
|
6
|
-
let(:rollbar_appender) { described_class }
|
|
7
|
-
|
|
8
|
-
let(:log_event) {
|
|
9
|
-
ReeLogger::LogEvent.new(
|
|
10
|
-
:info,
|
|
11
|
-
"Some message",
|
|
12
|
-
nil,
|
|
13
|
-
{}
|
|
14
|
-
)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
# comment "before" block to test sending to api
|
|
18
|
-
before do
|
|
19
|
-
allow(Rollbar).to receive(:log)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "sends log event to Rollbar" do
|
|
23
|
-
appender = rollbar_appender.new(
|
|
24
|
-
:info,
|
|
25
|
-
access_token: ENV['LOG_ROLLBAR_ACCESS_TOKEN'],
|
|
26
|
-
environment: ENV['LOG_ROLLBAR_ENVIRONMENT']
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
expect(appender).to respond_to(:append)
|
|
30
|
-
expect { appender.append(log_event) }.not_to raise_error
|
|
31
|
-
expect(Rollbar).to have_received(:log)
|
|
32
|
-
end
|
|
33
|
-
end
|