once-ler 2.2.0 → 2.3.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 +4 -4
- data/lib/once-ler.rb +3 -1
- data/lib/onceler/ambitious_helpers.rb +2 -0
- data/lib/onceler/basic_helpers.rb +26 -23
- data/lib/onceler/configuration.rb +4 -2
- data/lib/onceler/extensions/active_record.rb +17 -15
- data/lib/onceler/recordable.rb +27 -24
- data/lib/onceler/recorder.rb +6 -4
- data/lib/onceler.rb +2 -0
- metadata +10 -96
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b0b20c91e0119b7c52664f20bf7845edc455c6a8104014cbf533ce3bbc73783c
|
|
4
|
+
data.tar.gz: ce0eeec381933d756630b23c9c90c2b9e8d2c921c1fe20c3fea455fcc36b263e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 844575394b40e652f8dfe8e927269930d595611c9cbb27acfb12afcdf59a68d01df31017e84e52897b8294f32f891f0df831041f25d7faddf7fe8e55a0a58355
|
|
7
|
+
data.tar.gz: a170009e5db17f3b9ba0d367695e0c5ed4bee6f1b0c03675951e0466946ecef984737fc57c2ee04025346ff5841566e424200b85a37bc7fd3caf109a02eca0c6
|
data/lib/once-ler.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "onceler/ambitious_helpers"
|
|
2
4
|
require "onceler/recorder"
|
|
3
5
|
|
|
@@ -15,26 +17,27 @@ module Onceler
|
|
|
15
17
|
def let_once(name, &block)
|
|
16
18
|
raise ArgumentError, "wrong number of arguments (0 for 1)" if name.nil?
|
|
17
19
|
raise "#let or #subject called without a block" if block.nil?
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
onceler(create_own: true)[name] = block
|
|
19
22
|
add_onceler_hooks!
|
|
20
23
|
@current_let_once = name
|
|
21
24
|
define_method(name) { onceler[name] }
|
|
22
25
|
end
|
|
23
26
|
|
|
24
|
-
# TODO NamedSubjectPreventSuper
|
|
25
|
-
def subject_once(name = nil, &
|
|
27
|
+
# TODO: NamedSubjectPreventSuper
|
|
28
|
+
def subject_once(name = nil, &)
|
|
26
29
|
name ||= :subject
|
|
27
|
-
let_once(name, &
|
|
30
|
+
let_once(name, &)
|
|
28
31
|
alias_method :subject, name if name != :subject
|
|
29
32
|
end
|
|
30
33
|
|
|
31
34
|
def around_once(&block)
|
|
32
|
-
onceler(:
|
|
35
|
+
onceler(create_own: true).add_around(block)
|
|
33
36
|
add_onceler_hooks!
|
|
34
37
|
end
|
|
35
38
|
|
|
36
39
|
def before_once(&block)
|
|
37
|
-
onceler(:
|
|
40
|
+
onceler(create_own: true) << block
|
|
38
41
|
add_onceler_hooks!
|
|
39
42
|
end
|
|
40
43
|
|
|
@@ -44,22 +47,20 @@ module Onceler
|
|
|
44
47
|
|
|
45
48
|
# add second scope argument to explicitly differentiate between
|
|
46
49
|
# :each / :once
|
|
47
|
-
[
|
|
48
|
-
once_method =
|
|
50
|
+
%i[let let! subject subject!].each do |method|
|
|
51
|
+
once_method = :"#{method.to_s.delete_suffix("!")}_once"
|
|
49
52
|
define_method(method) do |name = nil, scope = nil, &block|
|
|
50
53
|
if once_scopes.include?(scope)
|
|
51
54
|
send once_method, name, &block
|
|
52
55
|
else
|
|
53
|
-
super
|
|
56
|
+
super(name, &block)
|
|
54
57
|
end
|
|
55
58
|
end
|
|
56
|
-
end
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
[:let, :let!, :subject, :subject!].each do |method|
|
|
60
|
+
# set up let_each, etc.
|
|
60
61
|
each_method = method.to_s
|
|
61
|
-
bang = each_method.
|
|
62
|
-
each_method =
|
|
62
|
+
bang = each_method.delete_suffix!("!")
|
|
63
|
+
each_method = :"#{each_method}_each#{"!" if bang}"
|
|
63
64
|
define_method(each_method) do |name = nil, &block|
|
|
64
65
|
send method, name, :each, &block
|
|
65
66
|
end
|
|
@@ -69,11 +70,11 @@ module Onceler
|
|
|
69
70
|
scope = args.first
|
|
70
71
|
case scope
|
|
71
72
|
when :record, :reset
|
|
72
|
-
onceler(:
|
|
73
|
+
onceler(create_own: true).hooks[:before][scope] << block
|
|
73
74
|
when *once_scopes
|
|
74
75
|
before_once(&block)
|
|
75
76
|
else
|
|
76
|
-
super
|
|
77
|
+
super
|
|
77
78
|
end
|
|
78
79
|
end
|
|
79
80
|
|
|
@@ -81,26 +82,26 @@ module Onceler
|
|
|
81
82
|
scope = args.first
|
|
82
83
|
case scope
|
|
83
84
|
when :record, :reset
|
|
84
|
-
onceler(:
|
|
85
|
+
onceler(create_own: true).hooks[:after][scope] << block
|
|
85
86
|
else
|
|
86
87
|
super
|
|
87
88
|
end
|
|
88
89
|
end
|
|
89
90
|
|
|
90
|
-
def around(*args, &
|
|
91
|
+
def around(*args, &)
|
|
91
92
|
scope = args.first
|
|
92
93
|
case scope
|
|
93
94
|
when *once_scopes
|
|
94
|
-
around_once(&
|
|
95
|
+
around_once(&)
|
|
95
96
|
when :once_and_each
|
|
96
|
-
around_once(&
|
|
97
|
-
around(:each, &
|
|
97
|
+
around_once(&)
|
|
98
|
+
around(:each, &)
|
|
98
99
|
else
|
|
99
|
-
super
|
|
100
|
+
super
|
|
100
101
|
end
|
|
101
102
|
end
|
|
102
103
|
|
|
103
|
-
def onceler(create_own
|
|
104
|
+
def onceler(create_own: false)
|
|
104
105
|
if create_own
|
|
105
106
|
@onceler ||= Recorder.new(self)
|
|
106
107
|
else
|
|
@@ -110,6 +111,7 @@ module Onceler
|
|
|
110
111
|
|
|
111
112
|
def parent_onceler
|
|
112
113
|
return unless superclass.respond_to?(:onceler)
|
|
114
|
+
|
|
113
115
|
superclass.onceler
|
|
114
116
|
end
|
|
115
117
|
|
|
@@ -117,6 +119,7 @@ module Onceler
|
|
|
117
119
|
|
|
118
120
|
def add_onceler_hooks!
|
|
119
121
|
return if @onceler_hooks_added
|
|
122
|
+
|
|
120
123
|
@onceler_hooks_added = true
|
|
121
124
|
|
|
122
125
|
before(:all) do |group|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Onceler
|
|
2
4
|
def self.configuration
|
|
3
5
|
@configuration ||= Configuration.new
|
|
@@ -18,8 +20,8 @@ module Onceler
|
|
|
18
20
|
|
|
19
21
|
def hooks
|
|
20
22
|
@hooks ||= {
|
|
21
|
-
before: {record: [], reset: []},
|
|
22
|
-
after:
|
|
23
|
+
before: { record: [], reset: [] },
|
|
24
|
+
after: { record: [], reset: [] }
|
|
23
25
|
}
|
|
24
26
|
end
|
|
25
27
|
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "active_record"
|
|
2
4
|
require "rails/version"
|
|
3
5
|
|
|
4
6
|
# monkey-patch this to not clear connections so that we don't lose our
|
|
5
7
|
# transactions
|
|
6
8
|
|
|
7
|
-
module ActiveRecord
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
module ActiveRecord
|
|
10
|
+
module TestFixtures
|
|
11
|
+
def teardown_fixtures
|
|
12
|
+
if ::Rails.version < "7.2"
|
|
13
|
+
if run_in_transaction?
|
|
14
|
+
ActiveSupport::Notifications.unsubscribe(@connection_subscriber) if @connection_subscriber
|
|
15
|
+
@fixture_connections.each do |connection|
|
|
16
|
+
connection.rollback_transaction if connection.transaction_open?
|
|
17
|
+
connection.pool.lock_thread = false
|
|
18
|
+
end
|
|
19
|
+
@fixture_connections.clear
|
|
20
|
+
teardown_shared_connection_pool
|
|
21
|
+
else
|
|
22
|
+
ActiveRecord::FixtureSet.reset_cache
|
|
15
23
|
end
|
|
16
|
-
|
|
17
|
-
teardown_shared_connection_pool
|
|
18
|
-
else
|
|
19
|
-
ActiveRecord::FixtureSet.reset_cache
|
|
20
|
-
end
|
|
21
|
-
else
|
|
22
|
-
if run_in_transaction?
|
|
24
|
+
elsif run_in_transaction?
|
|
23
25
|
teardown_transactional_fixtures
|
|
24
26
|
else
|
|
25
27
|
ActiveRecord::FixtureSet.reset_cache
|
data/lib/onceler/recordable.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Onceler
|
|
4
4
|
module Recordable
|
|
@@ -25,22 +25,20 @@ module Onceler
|
|
|
25
25
|
instance_eval(&recording.block)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
def __retvals(inherit
|
|
28
|
+
def __retvals(inherit: false)
|
|
29
29
|
retvals = @__inherited_retvals.merge(@__retvals)
|
|
30
|
-
retvals.
|
|
30
|
+
retvals.each_with_object({}) do |(key, val), hash|
|
|
31
31
|
hash[key] = val if __mutated?(key, val) || inherit
|
|
32
|
-
hash
|
|
33
32
|
end
|
|
34
33
|
end
|
|
35
34
|
|
|
36
|
-
def __ivars(inherit
|
|
35
|
+
def __ivars(inherit: false)
|
|
37
36
|
ivars = instance_variables - @__ignore_ivars
|
|
38
|
-
ivars.
|
|
39
|
-
|
|
37
|
+
ivars.each_with_object({}) do |key, hash|
|
|
38
|
+
unless /\A@__/.match?(key.to_s)
|
|
40
39
|
val = instance_variable_get(key)
|
|
41
40
|
hash[key] = val if __mutated?(key, val) || inherit
|
|
42
41
|
end
|
|
43
|
-
hash
|
|
44
42
|
end
|
|
45
43
|
end
|
|
46
44
|
|
|
@@ -53,13 +51,15 @@ module Onceler
|
|
|
53
51
|
# memory (not reassigned), and nothing about it has been changed
|
|
54
52
|
return true unless @__inherited_values[key].equal?(val)
|
|
55
53
|
return true unless __values_equal?(@__inherited_cache[key], val)
|
|
54
|
+
|
|
56
55
|
false
|
|
57
56
|
end
|
|
58
57
|
|
|
59
58
|
def __values_equal?(obj1, obj2)
|
|
60
|
-
if ActiveRecord::Base
|
|
59
|
+
if obj1.is_a?(ActiveRecord::Base) && obj2.is_a?(ActiveRecord::Base)
|
|
61
60
|
cache_key = [obj1, obj2]
|
|
62
61
|
return @__comparison_cache[cache_key] if @__comparison_cache.key?(cache_key)
|
|
62
|
+
|
|
63
63
|
# so as to avoid cycles while traversing AR associations
|
|
64
64
|
@__comparison_cache[cache_key] = true
|
|
65
65
|
@__comparison_cache[cache_key] = obj1.attributes == obj2.attributes &&
|
|
@@ -75,14 +75,14 @@ module Onceler
|
|
|
75
75
|
cache1 = obj1.instance_variable_get(:@association_cache)
|
|
76
76
|
cache2 = obj2.instance_variable_get(:@association_cache)
|
|
77
77
|
cache1.size == cache2.size &&
|
|
78
|
-
|
|
78
|
+
cache1.all? { |k, v| cache2.key?(k) && __values_equal?(v.target, cache2[k].target) }
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
def __data(inherit
|
|
81
|
+
def __data(inherit: false)
|
|
82
82
|
@__data ||= {}
|
|
83
83
|
@__data[inherit] ||= begin
|
|
84
84
|
@__comparison_cache = {}
|
|
85
|
-
data = [__ivars(inherit), __retvals(inherit)]
|
|
85
|
+
data = [__ivars(inherit:), __retvals(inherit:)]
|
|
86
86
|
begin
|
|
87
87
|
data = Marshal.dump(data)
|
|
88
88
|
rescue TypeError
|
|
@@ -106,11 +106,11 @@ module Onceler
|
|
|
106
106
|
|
|
107
107
|
def find_dump_error(key, val, prefix = "")
|
|
108
108
|
return if __visited_dump_vars.include?(val)
|
|
109
|
+
|
|
109
110
|
__visited_dump_vars << val
|
|
110
111
|
|
|
111
112
|
Marshal.dump(val)
|
|
112
113
|
rescue TypeError
|
|
113
|
-
|
|
114
114
|
# see if anything inside val can't be dumped...
|
|
115
115
|
sub_prefix = "#{prefix}#{key} (#<#{val.class}>) => "
|
|
116
116
|
|
|
@@ -124,25 +124,29 @@ module Onceler
|
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
# hash key/value?
|
|
127
|
-
val.each_pair
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
if val.respond_to?(:each_pair)
|
|
128
|
+
val.each_pair do |k, v|
|
|
129
|
+
find_dump_error("hash key #{k}", k, sub_prefix)
|
|
130
|
+
find_dump_error("[#{k.inspect}]", v, sub_prefix)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
131
133
|
|
|
132
134
|
# array element?
|
|
133
|
-
val.each_with_index
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
if val.respond_to?(:each_with_index)
|
|
136
|
+
val.each_with_index do |v, i|
|
|
137
|
+
find_dump_error("[#{i}]", v, sub_prefix)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
136
140
|
end
|
|
137
141
|
|
|
138
142
|
# guess it's val proper
|
|
139
|
-
raise TypeError
|
|
143
|
+
raise TypeError, "Unable to dump #{prefix}#{key} (#<#{val.class}>) in #{self.class.metadata[:location]}: #{$!}"
|
|
140
144
|
end
|
|
141
145
|
|
|
142
146
|
def copy_from(other)
|
|
143
147
|
# need two copies of things for __mutated? checks (see above)
|
|
144
|
-
@__inherited_cache = Marshal.load(other.__data(:
|
|
145
|
-
ivars, retvals = Marshal.load(other.__data(:
|
|
148
|
+
@__inherited_cache = Marshal.load(other.__data(inherit: true)).inject(&:merge)
|
|
149
|
+
ivars, retvals = Marshal.load(other.__data(inherit: true))
|
|
146
150
|
@__inherited_retvals = retvals
|
|
147
151
|
@__inherited_values = ivars.merge(retvals)
|
|
148
152
|
ivars.each do |key, value|
|
|
@@ -154,4 +158,3 @@ module Onceler
|
|
|
154
158
|
end
|
|
155
159
|
end
|
|
156
160
|
end
|
|
157
|
-
|
data/lib/onceler/recorder.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "onceler/recordable"
|
|
2
4
|
|
|
3
5
|
module Onceler
|
|
@@ -33,7 +35,7 @@ module Onceler
|
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
def [](name)
|
|
36
|
-
if @retvals
|
|
38
|
+
if @retvals&.key?(name)
|
|
37
39
|
@retvals[name]
|
|
38
40
|
elsif parent
|
|
39
41
|
parent[name]
|
|
@@ -63,7 +65,7 @@ module Onceler
|
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
# wrap the before in a lambda
|
|
66
|
-
stack =
|
|
68
|
+
stack = lambda do
|
|
67
69
|
@recordings.each do |recording|
|
|
68
70
|
recording.record_onto!(@tape)
|
|
69
71
|
end
|
|
@@ -91,8 +93,8 @@ module Onceler
|
|
|
91
93
|
|
|
92
94
|
def hooks
|
|
93
95
|
@hooks ||= {
|
|
94
|
-
before: {record: [], reset: []},
|
|
95
|
-
after:
|
|
96
|
+
before: { record: [], reset: [] },
|
|
97
|
+
after: { record: [], reset: [] }
|
|
96
98
|
}
|
|
97
99
|
end
|
|
98
100
|
|
data/lib/onceler.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: once-ler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jon Jensen
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activerecord
|
|
@@ -16,20 +15,20 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '7.
|
|
18
|
+
version: '7.1'
|
|
20
19
|
- - "<"
|
|
21
20
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '8.
|
|
21
|
+
version: '8.2'
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
25
|
requirements:
|
|
27
26
|
- - ">="
|
|
28
27
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '7.
|
|
28
|
+
version: '7.1'
|
|
30
29
|
- - "<"
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '8.
|
|
31
|
+
version: '8.2'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
34
33
|
name: rspec
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,90 +57,6 @@ dependencies:
|
|
|
58
57
|
- - ">="
|
|
59
58
|
- !ruby/object:Gem::Version
|
|
60
59
|
version: '4.0'
|
|
61
|
-
- !ruby/object:Gem::Dependency
|
|
62
|
-
name: appraisal
|
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - "~>"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: 2.3.0
|
|
68
|
-
type: :development
|
|
69
|
-
prerelease: false
|
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - "~>"
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: 2.3.0
|
|
75
|
-
- !ruby/object:Gem::Dependency
|
|
76
|
-
name: debug
|
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
|
78
|
-
requirements:
|
|
79
|
-
- - ">="
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: '0'
|
|
82
|
-
type: :development
|
|
83
|
-
prerelease: false
|
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
-
requirements:
|
|
86
|
-
- - ">="
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '0'
|
|
89
|
-
- !ruby/object:Gem::Dependency
|
|
90
|
-
name: database_cleaner
|
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
|
92
|
-
requirements:
|
|
93
|
-
- - "~>"
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: '2.0'
|
|
96
|
-
type: :development
|
|
97
|
-
prerelease: false
|
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - "~>"
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '2.0'
|
|
103
|
-
- !ruby/object:Gem::Dependency
|
|
104
|
-
name: database_cleaner-active_record
|
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - "~>"
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '2.0'
|
|
110
|
-
type: :development
|
|
111
|
-
prerelease: false
|
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - "~>"
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '2.0'
|
|
117
|
-
- !ruby/object:Gem::Dependency
|
|
118
|
-
name: rake
|
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - ">="
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
124
|
-
type: :development
|
|
125
|
-
prerelease: false
|
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '0'
|
|
131
|
-
- !ruby/object:Gem::Dependency
|
|
132
|
-
name: sqlite3
|
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - ">="
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '0'
|
|
138
|
-
type: :development
|
|
139
|
-
prerelease: false
|
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
141
|
-
requirements:
|
|
142
|
-
- - ">="
|
|
143
|
-
- !ruby/object:Gem::Version
|
|
144
|
-
version: '0'
|
|
145
60
|
description: once-ler supercharges your let's and before's with the performance of
|
|
146
61
|
before(:all)
|
|
147
62
|
email: jon@instructure.com
|
|
@@ -161,8 +76,8 @@ files:
|
|
|
161
76
|
homepage: http://github.com/instructure/once-ler
|
|
162
77
|
licenses:
|
|
163
78
|
- MIT
|
|
164
|
-
metadata:
|
|
165
|
-
|
|
79
|
+
metadata:
|
|
80
|
+
rubygems_mfa_required: 'true'
|
|
166
81
|
rdoc_options: []
|
|
167
82
|
require_paths:
|
|
168
83
|
- lib
|
|
@@ -170,15 +85,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
170
85
|
requirements:
|
|
171
86
|
- - ">="
|
|
172
87
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: '3.
|
|
88
|
+
version: '3.3'
|
|
174
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
90
|
requirements:
|
|
176
91
|
- - ">="
|
|
177
92
|
- !ruby/object:Gem::Version
|
|
178
93
|
version: 2.6.0
|
|
179
94
|
requirements: []
|
|
180
|
-
rubygems_version:
|
|
181
|
-
signing_key:
|
|
95
|
+
rubygems_version: 4.0.10
|
|
182
96
|
specification_version: 4
|
|
183
97
|
summary: rspec supercharger
|
|
184
98
|
test_files: []
|