command_line 1.1.0 → 2.0.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/.github/workflows/linux.yml +22 -0
- data/.github/workflows/macos.yml +22 -0
- data/.github/workflows/windows.yml +22 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +3 -3
- data/.yardopts +6 -0
- data/CHANGELOG.md +17 -1
- data/CONTRIBUTING.md +24 -0
- data/README.md +6 -13
- data/command_line.gemspec +4 -5
- data/lib/command_line.rb +19 -19
- data/lib/command_line/global.rb +8 -8
- data/lib/command_line/result.rb +3 -3
- data/lib/command_line/version.rb +1 -1
- metadata +26 -9
- data/.travis.yml +0 -23
- data/appveyor.yml +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2be62115c457c82067cee8e0a5239f98e38a66de71e3e8041abdcc3438fa9370
|
4
|
+
data.tar.gz: a406fab9a99fe399f84ff5bfa8eda39a579fe939404adef3c37666bc99fa6969
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18073bff45489bc86735085782f4f76ab19397e91f421f6bdd68db1c700c74d74919474479366bf5bd660a526288a8167fce1d7e9080a735f12e795e53db950f
|
7
|
+
data.tar.gz: 8f0f6075cc00e1f9adabf826441be43e597ab97debd0b3db458e4d8e2bd6e64c0438e98b7c43758e04ae67138934664924ca8528aa112e386dc2e91da7dfde90
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Linux
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby: [2.7, 2.6, 2.5]
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
14
|
+
uses: actions/setup-ruby@v1
|
15
|
+
with:
|
16
|
+
ruby-version: ${{ matrix.ruby }}
|
17
|
+
- name: Build
|
18
|
+
run: |
|
19
|
+
gem install bundler
|
20
|
+
bundle install --jobs 4 --retry 3
|
21
|
+
- name: Test
|
22
|
+
run: bundle exec rake
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: MacOS
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
runs-on: macos-latest
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby: [2.7, 2.6, 2.5]
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
14
|
+
uses: actions/setup-ruby@v1
|
15
|
+
with:
|
16
|
+
ruby-version: ${{ matrix.ruby }}
|
17
|
+
- name: Build
|
18
|
+
run: |
|
19
|
+
gem install bundler
|
20
|
+
bundle install --jobs 4 --retry 3
|
21
|
+
- name: Test
|
22
|
+
run: bundle exec rake
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Windows
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
runs-on: windows-latest
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby: [2.7, 2.6, 2.5]
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
14
|
+
uses: actions/setup-ruby@v1
|
15
|
+
with:
|
16
|
+
ruby-version: ${{ matrix.ruby }}
|
17
|
+
- name: Build
|
18
|
+
run: |
|
19
|
+
gem install bundler
|
20
|
+
bundle install --jobs 4 --retry 3
|
21
|
+
- name: Test
|
22
|
+
run: bundle exec rake
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
AllCops:
|
2
|
-
TargetRubyVersion: 2.
|
2
|
+
TargetRubyVersion: 2.5
|
3
3
|
Exclude:
|
4
4
|
- '*.gemspec'
|
5
5
|
- Gemfile
|
6
6
|
- Rakefile
|
7
7
|
- spec/fixtures/**/*
|
8
8
|
- bin/**/*
|
9
|
-
Layout/
|
9
|
+
Layout/ArgumentAlignment:
|
10
10
|
EnforcedStyle: with_fixed_indentation
|
11
|
-
Layout/
|
11
|
+
Layout/FirstHashElementIndentation:
|
12
12
|
EnforcedStyle: consistent
|
13
13
|
Metrics/BlockLength:
|
14
14
|
Exclude:
|
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,19 @@
|
|
1
|
-
# [
|
1
|
+
# [2.0.0] (2020-04-13)
|
2
|
+
|
3
|
+
## Changed
|
4
|
+
|
5
|
+
- Arguments are now always sent as a single command to `Open3.popen3`. Sending as multiple arguments can cause it to not use the shell. Passing as a single argument ensures the shell is always used.
|
6
|
+
- Drop support for Ruby 2.4.
|
7
|
+
|
8
|
+
## Added
|
9
|
+
|
10
|
+
- The `:env` flag now accepts non-string keys and will convert them to strings.
|
11
|
+
|
12
|
+
## Fixed
|
13
|
+
|
14
|
+
- Deprecation warning about keyword arguments.
|
15
|
+
|
16
|
+
# [1.1.0] (2019-10-23)
|
2
17
|
|
3
18
|
## Added
|
4
19
|
|
@@ -16,5 +31,6 @@
|
|
16
31
|
|
17
32
|
Initial release.
|
18
33
|
|
34
|
+
[2.0.0]: https://github.com/DragonRuby/command_line/compare/v1.1.0...v2.0.0
|
19
35
|
[1.1.0]: https://github.com/DragonRuby/command_line/compare/v1.0.1...v1.1.0
|
20
36
|
[1.0.1]: https://github.com/DragonRuby/command_line/compare/v1.0.0...v1.0.1
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Steps
|
2
|
+
|
3
|
+
1. [Fork][] the repo.
|
4
|
+
2. Add a breaking test for your change.
|
5
|
+
3. Make the tests pass.
|
6
|
+
4. Push your fork.
|
7
|
+
5. Submit a pull request.
|
8
|
+
|
9
|
+
## Code Style
|
10
|
+
|
11
|
+
This project uses [EditorConfig] to tell editors what formatting to use.
|
12
|
+
It's built into many editors and there are plugins for nearly every other editor that will automatically enforce the formatting.
|
13
|
+
If you want to handle it manually you can look at the [.editorconfig] file to see the rules to follow.
|
14
|
+
|
15
|
+
# Testing
|
16
|
+
|
17
|
+
Running the tests using `rake` (with no args) will also check for style issues in the code.
|
18
|
+
Ideally all submissions would pass these checks.
|
19
|
+
If the code style is causing issues we can work with you to correct it.
|
20
|
+
Don't let it stop you from contributing.
|
21
|
+
|
22
|
+
[fork]: https://github.com/DragonRuby/command_line
|
23
|
+
[EditorConfig]: https://editorconfig.org/
|
24
|
+
[.editorconfig]: .editorconfig
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# CommandLine
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/command_line)
|
4
|
-
[](https://github.com/DragonRuby/command_line/actions?query=workflow%3ALinux)
|
5
|
+
[](https://github.com/DragonRuby/command_line/actions?query=workflow%3AMacOS)
|
6
|
+
[](https://github.com/DragonRuby/command_line/actions?query=workflow%3AWindows)
|
6
7
|
|
7
8
|
CommandLine provides an easier way to run command-line applications.
|
8
9
|
It captures all outputs, can handle applications that require stdin, and can pass environment variables.
|
@@ -17,13 +18,13 @@ This project uses [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
17
18
|
Add this line to your application's Gemfile:
|
18
19
|
|
19
20
|
```ruby
|
20
|
-
gem 'command_line', '~>
|
21
|
+
gem 'command_line', '~> 2.0'
|
21
22
|
```
|
22
23
|
|
23
24
|
If you want `command_line` available globally you can add this line to your application's Gemfile:
|
24
25
|
|
25
26
|
```ruby
|
26
|
-
gem 'command_line', '~>
|
27
|
+
gem 'command_line', '~> 2.0', require: 'command_line/global'
|
27
28
|
```
|
28
29
|
|
29
30
|
Or manually install it yourself with:
|
@@ -74,7 +75,7 @@ end
|
|
74
75
|
Environment variables can be passed after the command and arguments are passed.
|
75
76
|
|
76
77
|
```ruby
|
77
|
-
command_line('some_webserver', env: {
|
78
|
+
command_line('some_webserver', env: { PORT: '80' })
|
78
79
|
```
|
79
80
|
|
80
81
|
If you're concerned about the command running too long you can set a `:timeout`.
|
@@ -106,11 +107,3 @@ end
|
|
106
107
|
```
|
107
108
|
|
108
109
|
This will make `command_line` available in your test suite.
|
109
|
-
|
110
|
-
## Contributing
|
111
|
-
|
112
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/DragonRuby/command_line.
|
113
|
-
|
114
|
-
## License
|
115
|
-
|
116
|
-
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/command_line.gemspec
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require 'command_line/version'
|
1
|
+
require_relative 'lib/command_line/version'
|
4
2
|
|
5
3
|
Gem::Specification.new do |spec|
|
6
4
|
spec.name = 'command_line'
|
@@ -29,8 +27,9 @@ Gem::Specification.new do |spec|
|
|
29
27
|
spec.require_paths = ['lib']
|
30
28
|
|
31
29
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
32
|
-
spec.add_development_dependency 'rake', '~>
|
30
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
33
31
|
spec.add_development_dependency 'rspec', '~> 3.9'
|
34
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.81.0'
|
35
33
|
spec.add_development_dependency 'yard', '~> 0.9.20'
|
34
|
+
spec.add_development_dependency 'redcarpet', '~> 3.5.0'
|
36
35
|
end
|
data/lib/command_line.rb
CHANGED
@@ -27,9 +27,9 @@ module CommandLine
|
|
27
27
|
# @param command [String] The command to run.
|
28
28
|
# @param args [Array] Any arguments passed to the command. All arguments will
|
29
29
|
# be converted to strings using `to_s`.
|
30
|
-
# @param [Hash] env: Pass environment variables to use. The key
|
31
|
-
#
|
32
|
-
#
|
30
|
+
# @param [Hash] env: Pass environment variables to use. The key is the name
|
31
|
+
# of the environment variable. The value is the value you want that variable
|
32
|
+
# to have.
|
33
33
|
# @param [Integer, Float, nil] Number of seconds to wait for the block to
|
34
34
|
# terminate. Floats can be used to specify fractional seconds. A value of 0
|
35
35
|
# or nil will execute the block without any timeout.
|
@@ -47,7 +47,7 @@ module CommandLine
|
|
47
47
|
# end
|
48
48
|
#
|
49
49
|
# @example
|
50
|
-
# command_line('some_webserver', env: {
|
50
|
+
# command_line('some_webserver', env: { PORT: '80' })
|
51
51
|
#
|
52
52
|
# @return [Result]
|
53
53
|
def command_line(command, *args, env: {}, timeout: nil)
|
@@ -55,29 +55,29 @@ module CommandLine
|
|
55
55
|
stderr = ''
|
56
56
|
status = nil
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
full_command = [command, *args].map(&:to_s).join(' ')
|
59
|
+
environment = env.transform_keys(&:to_s)
|
60
|
+
Open3.popen3(environment, full_command) do |i, o, e, wait_thr|
|
61
|
+
threads = []
|
61
62
|
|
62
|
-
|
63
|
-
|
63
|
+
Timeout.timeout(timeout, TimeoutError) do
|
64
|
+
yield i if block_given?
|
64
65
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
70
|
-
rescue TimeoutError => e
|
71
|
-
threads.map(&:kill)
|
72
|
-
|
73
|
-
raise e
|
66
|
+
threads << Thread.new { stdout = o.read }
|
67
|
+
threads << Thread.new { stderr = e.read }
|
68
|
+
threads.each(&:join)
|
69
|
+
status = wait_thr.value
|
74
70
|
end
|
71
|
+
rescue TimeoutError => e
|
72
|
+
threads.map(&:kill)
|
73
|
+
|
74
|
+
raise e
|
75
75
|
end
|
76
76
|
|
77
77
|
Result.new(stdout, stderr, status)
|
78
78
|
end
|
79
79
|
|
80
|
-
# Same as CommandLine.command_line except that a failure on exit raises an
|
80
|
+
# Same as {CommandLine.command_line} except that a failure on exit raises an
|
81
81
|
# error.
|
82
82
|
#
|
83
83
|
# @see CommandLine.command_line
|
data/lib/command_line/global.rb
CHANGED
@@ -9,9 +9,9 @@ require 'command_line'
|
|
9
9
|
# @param command [String] The command to run.
|
10
10
|
# @param args [Array] Any arguments passed to the command. All arguments will
|
11
11
|
# be converted to strings using `to_s`.
|
12
|
-
# @param [Hash] env: Pass environment variables to use. The key
|
13
|
-
#
|
14
|
-
#
|
12
|
+
# @param [Hash] env: Pass environment variables to use. The key is the name
|
13
|
+
# of the environment variable. The value is the value you want that variable
|
14
|
+
# to have.
|
15
15
|
# @param [Integer, Float, nil] Number of seconds to wait for the block to
|
16
16
|
# terminate. Floats can be used to specify fractional seconds. A value of 0
|
17
17
|
# or nil will execute the block without any timeout.
|
@@ -29,11 +29,11 @@ require 'command_line'
|
|
29
29
|
# end
|
30
30
|
#
|
31
31
|
# @example
|
32
|
-
# command_line('some_webserver', env: {
|
32
|
+
# command_line('some_webserver', env: { PORT: '80' })
|
33
33
|
#
|
34
34
|
# @return [Result]
|
35
|
-
def command_line(*args, &block)
|
36
|
-
CommandLine.command_line(*args, &block)
|
35
|
+
def command_line(*args, **kwargs, &block)
|
36
|
+
CommandLine.command_line(*args, **kwargs, &block)
|
37
37
|
end
|
38
38
|
|
39
39
|
# Same as CommandLine.command_line except that a failure on exit raises an
|
@@ -51,6 +51,6 @@ end
|
|
51
51
|
# @return [Result]
|
52
52
|
# @raise [CommandLine::ExitFailureError] If the application exits with an
|
53
53
|
# error status. The message will be the contents of Result#stderr.
|
54
|
-
def command_line!(*args, &block)
|
55
|
-
CommandLine.command_line!(*args, &block)
|
54
|
+
def command_line!(*args, **kwargs, &block)
|
55
|
+
CommandLine.command_line!(*args, **kwargs, &block)
|
56
56
|
end
|
data/lib/command_line/result.rb
CHANGED
@@ -27,7 +27,7 @@ module CommandLine
|
|
27
27
|
# @return [String]
|
28
28
|
attr_reader :stderr
|
29
29
|
|
30
|
-
# Returns true if the application exited normally.
|
30
|
+
# Returns `true` if the application exited normally.
|
31
31
|
#
|
32
32
|
# @example
|
33
33
|
# command_line('grep').exited?
|
@@ -50,7 +50,7 @@ module CommandLine
|
|
50
50
|
@status.exitstatus
|
51
51
|
end
|
52
52
|
|
53
|
-
# Returns true if the command exited normally with a success status.
|
53
|
+
# Returns `true` if the command exited normally with a success status.
|
54
54
|
#
|
55
55
|
# @example
|
56
56
|
# command_line('echo', 'hi').success?
|
@@ -61,7 +61,7 @@ module CommandLine
|
|
61
61
|
!@status.nil? && @status.success?
|
62
62
|
end
|
63
63
|
|
64
|
-
# Returns true if the command failed to exit normally or exited with a
|
64
|
+
# Returns `true` if the command failed to exit normally or exited with a
|
65
65
|
# failing status.
|
66
66
|
#
|
67
67
|
# @example
|
data/lib/command_line/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: command_line
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Lasseigne
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
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: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.81.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.81.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.9.20
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: redcarpet
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.5.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.5.0
|
83
97
|
description: An easier way execute command line applications and get all of the output.
|
84
98
|
email:
|
85
99
|
- aaron.lasseigne@dragonruby.org
|
@@ -88,16 +102,19 @@ extensions: []
|
|
88
102
|
extra_rdoc_files: []
|
89
103
|
files:
|
90
104
|
- ".editorconfig"
|
105
|
+
- ".github/workflows/linux.yml"
|
106
|
+
- ".github/workflows/macos.yml"
|
107
|
+
- ".github/workflows/windows.yml"
|
91
108
|
- ".gitignore"
|
92
109
|
- ".rspec"
|
93
110
|
- ".rubocop.yml"
|
94
|
-
- ".
|
111
|
+
- ".yardopts"
|
95
112
|
- CHANGELOG.md
|
113
|
+
- CONTRIBUTING.md
|
96
114
|
- Gemfile
|
97
115
|
- LICENSE.txt
|
98
116
|
- README.md
|
99
117
|
- Rakefile
|
100
|
-
- appveyor.yml
|
101
118
|
- bin/console
|
102
119
|
- bin/setup
|
103
120
|
- command_line.gemspec
|
@@ -127,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
144
|
- !ruby/object:Gem::Version
|
128
145
|
version: '0'
|
129
146
|
requirements: []
|
130
|
-
rubygems_version: 3.
|
147
|
+
rubygems_version: 3.1.2
|
131
148
|
signing_key:
|
132
149
|
specification_version: 4
|
133
150
|
summary: An easier way execute command line applications and get all of the output.
|
data/.travis.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
before_install: # for bundler 2.0+
|
3
|
-
- gem install bundler
|
4
|
-
script: bundle exec rake $RAKE_TASK
|
5
|
-
matrix:
|
6
|
-
include:
|
7
|
-
# Linux - Tests and Linting
|
8
|
-
- os: linux
|
9
|
-
rvm: 2.6
|
10
|
-
- os: linux
|
11
|
-
rvm: 2.5
|
12
|
-
- os: linux
|
13
|
-
rvm: 2.4
|
14
|
-
# OS X - Tests
|
15
|
-
- os: osx
|
16
|
-
rvm: 2.6
|
17
|
-
env: RAKE_TASK=spec
|
18
|
-
- os: osx
|
19
|
-
rvm: 2.5
|
20
|
-
env: RAKE_TASK=spec
|
21
|
-
- os: osx
|
22
|
-
rvm: 2.4
|
23
|
-
env: RAKE_TASK=spec
|
data/appveyor.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
environment:
|
2
|
-
matrix:
|
3
|
-
- RUBY_VERSION: 26
|
4
|
-
- RUBY_VERSION: 25
|
5
|
-
- RUBY_VERSION: 24
|
6
|
-
|
7
|
-
install:
|
8
|
-
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
9
|
-
- bundle install
|
10
|
-
|
11
|
-
build: off
|
12
|
-
|
13
|
-
before_test:
|
14
|
-
- ruby -v
|
15
|
-
- gem -v
|
16
|
-
- bundle -v
|
17
|
-
|
18
|
-
test_script:
|
19
|
-
- bundle exec rake spec
|