kuber_kit 0.6.2 → 0.7.1
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/.github/workflows/rspec.yml +1 -1
- data/.gitignore +2 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +9 -0
- data/kuber_kit.gemspec +14 -3
- data/lib/kuber_kit/actions/configuration_loader.rb +2 -2
- data/lib/kuber_kit/artifacts_sync/artifact_updater.rb +0 -14
- data/lib/kuber_kit/core/context_helper/context_vars.rb +39 -18
- data/lib/kuber_kit/defaults.rb +32 -0
- data/lib/kuber_kit/env_file_reader/reader.rb +1 -21
- data/lib/kuber_kit/service_deployer/deployer.rb +2 -2
- data/lib/kuber_kit/template_reader/reader.rb +0 -18
- data/lib/kuber_kit/ui/simple.rb +1 -0
- data/lib/kuber_kit/version.rb +1 -1
- data/lib/kuber_kit.rb +3 -0
- metadata +27 -13
- data/Gemfile.lock +0 -84
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5384a7795eb49fdf9beeb9481fc03e871fb001cda72d365a646f2ca3885309e9
|
4
|
+
data.tar.gz: 229512248e019960f5f178cdd4a5c7ca99ca808d70e7286884fc152570366e73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ab657438fc9c8463528fed4938518365abda3b944416600ad3032deff7deb8afbd2c90cca99b1fea97f9d148d2b8df77759b11a10c441fa7d7c1f672897641e
|
7
|
+
data.tar.gz: 70824969dae53951c1ac194922dc76d3773d6f65e8c51ff3589c46de9ec702d027a55ad9516e9846b81cde969c2ebab7cdb84be5f5617b216854929fd56c6bdb
|
data/.github/workflows/rspec.yml
CHANGED
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
**0.7.0**
|
2
|
+
- Added Ruby 3.0 support
|
3
|
+
|
4
|
+
**0.6.4**
|
5
|
+
- Improve context vars, allow checking if variable is defined
|
6
|
+
|
7
|
+
**0.6.3**
|
8
|
+
- Fix updating artifacts when there is only local artifacts
|
9
|
+
|
1
10
|
**0.6.2**
|
2
11
|
- Added an ability to return build vars as a hash value.
|
3
12
|
- Skip local artifacts while updating configuration, it sometimes produce an error
|
data/kuber_kit.gemspec
CHANGED
@@ -23,15 +23,26 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
|
26
|
-
|
27
|
-
|
26
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
|
27
|
+
spec.add_dependency "contracts", '0.17.0'
|
28
|
+
else
|
29
|
+
spec.add_dependency "contracts", '0.16.0'
|
30
|
+
end
|
31
|
+
|
32
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6.0')
|
33
|
+
spec.add_dependency "dry-auto_inject", "~> 0.8.0"
|
34
|
+
else
|
35
|
+
spec.add_dependency "dry-auto_inject", "~> 0.7.0"
|
36
|
+
end
|
37
|
+
|
28
38
|
spec.add_dependency "thor"
|
29
39
|
spec.add_dependency "cli-ui"
|
30
40
|
spec.add_dependency "net-ssh"
|
31
41
|
spec.add_dependency "tty-prompt"
|
32
42
|
spec.add_dependency "dry-container", "~> 0.7.2"
|
43
|
+
spec.add_dependency "dry-configurable", "~> 0.12.1"
|
33
44
|
|
34
|
-
spec.add_development_dependency "bundler", "~>
|
45
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
35
46
|
spec.add_development_dependency "rake", "~> 10.0"
|
36
47
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
48
|
spec.add_development_dependency "pry"
|
@@ -99,12 +99,12 @@ class KuberKit::Actions::ConfigurationLoader
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def update_artifacts(artifacts)
|
102
|
-
return unless artifacts.any?
|
103
|
-
|
104
102
|
# Skip local artifacts, they sometimes produce error in CLI::UI::SpinGroup task,
|
105
103
|
# because the task is executed too quickly
|
106
104
|
not_local_artifacts = artifacts.reject{ |a| a.is_a?(KuberKit::Core::Artifacts::Local) }
|
107
105
|
|
106
|
+
return unless not_local_artifacts.any?
|
107
|
+
|
108
108
|
artifact_task_group = ui.create_task_group
|
109
109
|
not_local_artifacts.each do |artifact|
|
110
110
|
artifact_task_group.add("Updating #{artifact.name.to_s.yellow}") do |task|
|
@@ -2,9 +2,6 @@ class KuberKit::ArtifactsSync::ArtifactUpdater
|
|
2
2
|
ResolverNotFoundError = Class.new(KuberKit::NotFoundError)
|
3
3
|
|
4
4
|
include KuberKit::Import[
|
5
|
-
"artifacts_sync.git_artifact_resolver",
|
6
|
-
"artifacts_sync.null_artifact_resolver",
|
7
|
-
|
8
5
|
"ui"
|
9
6
|
]
|
10
7
|
|
@@ -19,8 +16,6 @@ class KuberKit::ArtifactsSync::ArtifactUpdater
|
|
19
16
|
end
|
20
17
|
|
21
18
|
def update(shell, artifact)
|
22
|
-
add_default_resolvers
|
23
|
-
|
24
19
|
resolver = @@resolvers[artifact.class]
|
25
20
|
|
26
21
|
ui.print_debug "ArtifactUpdater", "Updating artifact #{artifact.name.to_s.green}"
|
@@ -29,13 +24,4 @@ class KuberKit::ArtifactsSync::ArtifactUpdater
|
|
29
24
|
|
30
25
|
resolver.resolve(shell, artifact)
|
31
26
|
end
|
32
|
-
|
33
|
-
def add_default_resolvers
|
34
|
-
use_resolver(git_artifact_resolver, artifact_class: KuberKit::Core::Artifacts::Git)
|
35
|
-
use_resolver(null_artifact_resolver, artifact_class: KuberKit::Core::Artifacts::Local)
|
36
|
-
end
|
37
|
-
|
38
|
-
def reset!
|
39
|
-
@@resolvers = {}
|
40
|
-
end
|
41
27
|
end
|
@@ -1,26 +1,35 @@
|
|
1
1
|
class KuberKit::Core::ContextHelper::ContextVars
|
2
2
|
attr_reader :parent, :parent_name
|
3
3
|
|
4
|
+
BuildArgUndefined = Class.new(KuberKit::Error)
|
5
|
+
|
4
6
|
def initialize(context_vars, parent_name = nil, parent = nil)
|
5
7
|
@context_vars = context_vars
|
6
8
|
@parent_name = parent_name
|
7
9
|
@parent = parent
|
8
10
|
end
|
9
11
|
|
10
|
-
def
|
11
|
-
|
12
|
-
|
12
|
+
def read(*variable_names)
|
13
|
+
result = self
|
14
|
+
variable_names.each do |var|
|
15
|
+
result = result.get_variable_value(var)
|
13
16
|
end
|
17
|
+
result
|
18
|
+
end
|
14
19
|
|
15
|
-
|
16
|
-
|
17
|
-
|
20
|
+
def variable_defined?(*variable_names)
|
21
|
+
read(*variable_names)
|
22
|
+
return true
|
23
|
+
rescue BuildArgUndefined
|
24
|
+
return false
|
25
|
+
end
|
18
26
|
|
19
|
-
|
20
|
-
|
27
|
+
def method_missing(name, *args)
|
28
|
+
if args.size > 0
|
29
|
+
raise ArgumentError.new("context args does not accept any arguments")
|
21
30
|
end
|
22
31
|
|
23
|
-
|
32
|
+
read(name)
|
24
33
|
end
|
25
34
|
|
26
35
|
def to_h
|
@@ -31,17 +40,29 @@ class KuberKit::Core::ContextHelper::ContextVars
|
|
31
40
|
end
|
32
41
|
end
|
33
42
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
parent = @parent
|
43
|
+
def get_variable_value(variable_name)
|
44
|
+
value = @context_vars.fetch(variable_name) do
|
45
|
+
raise(BuildArgUndefined, "build arg '#{format_arg(variable_name)}' is not defined, available args: #{@context_vars.inspect}")
|
46
|
+
end
|
39
47
|
|
40
|
-
|
41
|
-
|
42
|
-
parent = parent.parent
|
48
|
+
if value.is_a?(Hash)
|
49
|
+
return self.class.new(value, variable_name, self)
|
43
50
|
end
|
44
51
|
|
45
|
-
|
52
|
+
value
|
46
53
|
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def format_arg(name)
|
58
|
+
string = [@parent_name, name].compact.join(".")
|
59
|
+
parent = @parent
|
60
|
+
|
61
|
+
while parent do
|
62
|
+
string = [parent.parent_name, string].compact.join(".")
|
63
|
+
parent = parent.parent
|
64
|
+
end
|
65
|
+
|
66
|
+
string
|
67
|
+
end
|
47
68
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class KuberKit::Defaults
|
2
|
+
class << self
|
3
|
+
def init
|
4
|
+
return if @_initialized
|
5
|
+
@_initialized = true
|
6
|
+
init!
|
7
|
+
end
|
8
|
+
|
9
|
+
def init!
|
10
|
+
KuberKit::Container["artifacts_sync.artifact_updater"].use_resolver(
|
11
|
+
KuberKit::Container["artifacts_sync.git_artifact_resolver"],
|
12
|
+
artifact_class: KuberKit::Core::Artifacts::Git
|
13
|
+
)
|
14
|
+
KuberKit::Container["artifacts_sync.artifact_updater"].use_resolver(
|
15
|
+
KuberKit::Container["artifacts_sync.null_artifact_resolver"],
|
16
|
+
artifact_class: KuberKit::Core::Artifacts::Local
|
17
|
+
)
|
18
|
+
KuberKit::Container["env_file_reader.reader"].use_reader(
|
19
|
+
KuberKit::Container["env_file_reader.strategies.artifact_file"],
|
20
|
+
env_file_class: KuberKit::Core::EnvFiles::ArtifactFile
|
21
|
+
)
|
22
|
+
KuberKit::Container["env_file_reader.reader"].use_reader(
|
23
|
+
KuberKit::Container["env_file_reader.strategies.env_group"],
|
24
|
+
env_file_class: KuberKit::Core::EnvFiles::EnvGroup
|
25
|
+
)
|
26
|
+
KuberKit::Container["template_reader.reader"].use_reader(
|
27
|
+
KuberKit::Container["template_reader.strategies.artifact_file"],
|
28
|
+
template_class: KuberKit::Core::Templates::ArtifactFile
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,16 +1,6 @@
|
|
1
1
|
class KuberKit::EnvFileReader::Reader
|
2
2
|
ReaderNotFoundError = Class.new(KuberKit::NotFoundError)
|
3
|
-
|
4
|
-
include KuberKit::Import[
|
5
|
-
"env_file_reader.strategies.artifact_file",
|
6
|
-
"env_file_reader.strategies.env_group",
|
7
|
-
]
|
8
|
-
|
9
|
-
def initialize(**injected_deps)
|
10
|
-
super(injected_deps)
|
11
|
-
add_default_strategies
|
12
|
-
end
|
13
|
-
|
3
|
+
|
14
4
|
def use_reader(env_file_reader, env_file_class:)
|
15
5
|
@@readers ||= {}
|
16
6
|
|
@@ -28,14 +18,4 @@ class KuberKit::EnvFileReader::Reader
|
|
28
18
|
|
29
19
|
reader.read(shell, env_file)
|
30
20
|
end
|
31
|
-
|
32
|
-
def reset!
|
33
|
-
@@readers = {}
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
def add_default_strategies
|
38
|
-
use_reader(artifact_file, env_file_class: KuberKit::Core::EnvFiles::ArtifactFile)
|
39
|
-
use_reader(env_group, env_file_class: KuberKit::Core::EnvFiles::EnvGroup)
|
40
|
-
end
|
41
21
|
end
|
@@ -1,15 +1,6 @@
|
|
1
1
|
class KuberKit::TemplateReader::Reader
|
2
2
|
ReaderNotFoundError = Class.new(KuberKit::NotFoundError)
|
3
3
|
|
4
|
-
include KuberKit::Import[
|
5
|
-
"template_reader.strategies.artifact_file",
|
6
|
-
]
|
7
|
-
|
8
|
-
def initialize(**injected_deps)
|
9
|
-
super(injected_deps)
|
10
|
-
add_default_strategies
|
11
|
-
end
|
12
|
-
|
13
4
|
def use_reader(template_reader, template_class:)
|
14
5
|
@@readers ||= {}
|
15
6
|
|
@@ -27,13 +18,4 @@ class KuberKit::TemplateReader::Reader
|
|
27
18
|
|
28
19
|
reader.read(shell, template)
|
29
20
|
end
|
30
|
-
|
31
|
-
def reset!
|
32
|
-
@@readers = {}
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
def add_default_strategies
|
37
|
-
use_reader(artifact_file, template_class: KuberKit::Core::Templates::ArtifactFile)
|
38
|
-
end
|
39
21
|
end
|
data/lib/kuber_kit/ui/simple.rb
CHANGED
data/lib/kuber_kit/version.rb
CHANGED
data/lib/kuber_kit.rb
CHANGED
@@ -208,6 +208,7 @@ module KuberKit
|
|
208
208
|
autoload :CLI, 'cli'
|
209
209
|
autoload :Container, 'container'
|
210
210
|
autoload :Configs, 'configs'
|
211
|
+
autoload :Defaults, 'defaults'
|
211
212
|
|
212
213
|
Import = Dry::AutoInject(Container)
|
213
214
|
|
@@ -297,4 +298,6 @@ module KuberKit
|
|
297
298
|
end
|
298
299
|
end
|
299
300
|
|
301
|
+
KuberKit::Defaults.init
|
302
|
+
|
300
303
|
require 'kuber_kit/extensions/indocker_compat'
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kuber_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iskander Khaziev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: contracts
|
14
|
+
name: contracts
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.16.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.16.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dry-auto_inject
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.8.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.8.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,20 +108,34 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.7.2
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: dry-configurable
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.12.1
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.12.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: bundler
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
131
|
+
version: '2.2'
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
138
|
+
version: '2.2'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rake
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -181,7 +195,6 @@ files:
|
|
181
195
|
- ".travis.yml"
|
182
196
|
- CHANGELOG.md
|
183
197
|
- Gemfile
|
184
|
-
- Gemfile.lock
|
185
198
|
- LICENSE.txt
|
186
199
|
- README.md
|
187
200
|
- Rakefile
|
@@ -281,6 +294,7 @@ files:
|
|
281
294
|
- lib/kuber_kit/core/templates/abstract_template.rb
|
282
295
|
- lib/kuber_kit/core/templates/artifact_file.rb
|
283
296
|
- lib/kuber_kit/core/templates/template_store.rb
|
297
|
+
- lib/kuber_kit/defaults.rb
|
284
298
|
- lib/kuber_kit/env_file_reader/action_handler.rb
|
285
299
|
- lib/kuber_kit/env_file_reader/env_file_parser.rb
|
286
300
|
- lib/kuber_kit/env_file_reader/env_file_tempfile_creator.rb
|
@@ -362,7 +376,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
362
376
|
- !ruby/object:Gem::Version
|
363
377
|
version: '0'
|
364
378
|
requirements: []
|
365
|
-
rubygems_version: 3.0.
|
379
|
+
rubygems_version: 3.0.3.1
|
366
380
|
signing_key:
|
367
381
|
specification_version: 4
|
368
382
|
summary: Docker Containers Build & Deployment
|
data/Gemfile.lock
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
kuber_kit (0.6.2)
|
5
|
-
cli-ui
|
6
|
-
contracts-lite
|
7
|
-
dry-auto_inject (~> 0.7.0)
|
8
|
-
dry-container (~> 0.7.2)
|
9
|
-
net-ssh
|
10
|
-
thor
|
11
|
-
tty-prompt
|
12
|
-
|
13
|
-
GEM
|
14
|
-
remote: https://rubygems.org/
|
15
|
-
specs:
|
16
|
-
cli-ui (1.5.1)
|
17
|
-
coderay (1.1.3)
|
18
|
-
concurrent-ruby (1.1.9)
|
19
|
-
contracts-lite (0.15.0)
|
20
|
-
diff-lcs (1.4.4)
|
21
|
-
docile (1.3.2)
|
22
|
-
dry-auto_inject (0.7.0)
|
23
|
-
dry-container (>= 0.3.4)
|
24
|
-
dry-configurable (0.12.1)
|
25
|
-
concurrent-ruby (~> 1.0)
|
26
|
-
dry-core (~> 0.5, >= 0.5.0)
|
27
|
-
dry-container (0.7.2)
|
28
|
-
concurrent-ruby (~> 1.0)
|
29
|
-
dry-configurable (~> 0.1, >= 0.1.3)
|
30
|
-
dry-core (0.6.0)
|
31
|
-
concurrent-ruby (~> 1.0)
|
32
|
-
method_source (1.0.0)
|
33
|
-
net-ssh (6.1.0)
|
34
|
-
pastel (0.8.0)
|
35
|
-
tty-color (~> 0.5)
|
36
|
-
pry (0.13.1)
|
37
|
-
coderay (~> 1.1)
|
38
|
-
method_source (~> 1.0)
|
39
|
-
rake (10.5.0)
|
40
|
-
rspec (3.10.0)
|
41
|
-
rspec-core (~> 3.10.0)
|
42
|
-
rspec-expectations (~> 3.10.0)
|
43
|
-
rspec-mocks (~> 3.10.0)
|
44
|
-
rspec-core (3.10.0)
|
45
|
-
rspec-support (~> 3.10.0)
|
46
|
-
rspec-expectations (3.10.0)
|
47
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
48
|
-
rspec-support (~> 3.10.0)
|
49
|
-
rspec-mocks (3.10.0)
|
50
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
51
|
-
rspec-support (~> 3.10.0)
|
52
|
-
rspec-support (3.10.0)
|
53
|
-
simplecov (0.20.0)
|
54
|
-
docile (~> 1.1)
|
55
|
-
simplecov-html (~> 0.11)
|
56
|
-
simplecov_json_formatter (~> 0.1)
|
57
|
-
simplecov-html (0.12.3)
|
58
|
-
simplecov_json_formatter (0.1.2)
|
59
|
-
thor (1.1.0)
|
60
|
-
tty-color (0.6.0)
|
61
|
-
tty-cursor (0.7.1)
|
62
|
-
tty-prompt (0.23.1)
|
63
|
-
pastel (~> 0.8)
|
64
|
-
tty-reader (~> 0.8)
|
65
|
-
tty-reader (0.9.0)
|
66
|
-
tty-cursor (~> 0.7)
|
67
|
-
tty-screen (~> 0.8)
|
68
|
-
wisper (~> 2.0)
|
69
|
-
tty-screen (0.8.1)
|
70
|
-
wisper (2.0.1)
|
71
|
-
|
72
|
-
PLATFORMS
|
73
|
-
ruby
|
74
|
-
|
75
|
-
DEPENDENCIES
|
76
|
-
bundler (~> 1.17)
|
77
|
-
kuber_kit!
|
78
|
-
pry
|
79
|
-
rake (~> 10.0)
|
80
|
-
rspec (~> 3.0)
|
81
|
-
simplecov
|
82
|
-
|
83
|
-
BUNDLED WITH
|
84
|
-
1.17.3
|