gemika 0.3.1 → 0.4.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 +5 -5
- data/.gitignore +1 -1
- data/.travis.yml +45 -37
- data/CHANGELOG.md +75 -0
- data/{gemfiles/Gemfile.2.3.mysql2 → Gemfile.2.3.mysql2} +2 -1
- data/{gemfiles/Gemfile.2.3.mysql2.lock → Gemfile.2.3.mysql2.lock} +11 -3
- data/{gemfiles/Gemfile.3.2.mysql2 → Gemfile.3.2.mysql2} +2 -1
- data/{gemfiles/Gemfile.3.2.mysql2.lock → Gemfile.3.2.mysql2.lock} +11 -3
- data/{gemfiles/Gemfile.4.2.mysql2 → Gemfile.4.2.mysql2} +2 -1
- data/{gemfiles/Gemfile.4.2.mysql2.lock → Gemfile.4.2.mysql2.lock} +9 -2
- data/{gemfiles/Gemfile.4.2.pg → Gemfile.4.2.pg} +2 -1
- data/{gemfiles/Gemfile.4.2.pg.lock → Gemfile.4.2.pg.lock} +9 -3
- data/{gemfiles/Gemfile.5.0.mysql2 → Gemfile.5.2.mysql2} +3 -2
- data/{gemfiles/Gemfile.5.0.mysql2.lock → Gemfile.5.2.mysql2.lock} +26 -18
- data/{gemfiles/Gemfile.5.0.pg → Gemfile.5.2.pg} +3 -2
- data/{gemfiles/Gemfile.5.0.pg.lock → Gemfile.5.2.pg.lock} +26 -18
- data/Gemfile.5.2.sqlite3 +17 -0
- data/Gemfile.5.2.sqlite3.lock +67 -0
- data/Gemfile.6.0.pg +17 -0
- data/Gemfile.6.0.pg.lock +67 -0
- data/README.md +71 -67
- data/gemika.gemspec +2 -2
- data/lib/gemika/database.rb +13 -3
- data/lib/gemika/env.rb +6 -0
- data/lib/gemika/matrix.rb +6 -2
- data/lib/gemika/tasks/matrix.rb +0 -1
- data/lib/gemika/version.rb +1 -1
- data/spec/fixtures/travis_yml/includes.yml +12 -0
- data/spec/gemika/matrix_spec.rb +16 -0
- data/spec/spec_helper.rb +1 -0
- metadata +21 -17
- data/spec/support/database.yml +0 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: fedb3aee63ae355ed896b97cf22727672fb183d6e2b9b65c763218b70d6e870d
|
|
4
|
+
data.tar.gz: 3255a3af654ad5e6b1da0f72de06df6ec329fb245b115171d2c0d616f682e8b7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a48af295157b11a8db5d0732852fd1d22e0d11e75e3fd86abb74eca8ed15ef5c75cf17ef402c292fab258c4dc9f5b9080e2307905b0340fdb810f380aebdb920
|
|
7
|
+
data.tar.gz: 1426cb831889286355ab5e297f794dfa0f9b75ec387aed8d8dc68d3e7fc443e7074486a29f8ec1898a22748a26e77b5509a283d54a9ddc9c8c51e3240c3b78be
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
|
@@ -1,47 +1,56 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
- 2.3.1
|
|
8
|
-
|
|
9
|
-
gemfile:
|
|
10
|
-
- gemfiles/Gemfile.2.3.mysql2
|
|
11
|
-
- gemfiles/Gemfile.3.2.mysql2
|
|
12
|
-
- gemfiles/Gemfile.4.2.mysql2
|
|
13
|
-
- gemfiles/Gemfile.4.2.pg
|
|
14
|
-
- gemfiles/Gemfile.5.0.mysql2
|
|
15
|
-
- gemfiles/Gemfile.5.0.pg
|
|
3
|
+
dist: trusty
|
|
4
|
+
|
|
5
|
+
services:
|
|
6
|
+
- postgresql
|
|
16
7
|
|
|
17
8
|
matrix:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- gemfile: gemfiles/Gemfile.2.3.mysql2
|
|
22
|
-
rvm: 2.2.4
|
|
23
|
-
- gemfile: gemfiles/Gemfile.2.3.mysql2
|
|
24
|
-
rvm: 2.3.1
|
|
25
|
-
- gemfile: gemfiles/Gemfile.3.2.mysql2
|
|
26
|
-
rvm: 2.3.1
|
|
27
|
-
- gemfile: gemfiles/Gemfile.4.2.mysql2
|
|
9
|
+
include:
|
|
10
|
+
# Rails 2.3
|
|
11
|
+
- gemfile: Gemfile.2.3.mysql2
|
|
28
12
|
rvm: 1.8.7
|
|
29
|
-
|
|
13
|
+
# Rails 3.2
|
|
14
|
+
- gemfile: Gemfile.3.2.mysql2
|
|
30
15
|
rvm: 1.8.7
|
|
31
|
-
- gemfile:
|
|
32
|
-
rvm: 1.8.7
|
|
33
|
-
- gemfile: gemfiles/Gemfile.5.0.pg
|
|
34
|
-
rvm: 1.8.7
|
|
35
|
-
- gemfile: gemfiles/Gemfile.5.0.mysql2
|
|
16
|
+
- gemfile: Gemfile.3.2.mysql2
|
|
36
17
|
rvm: 2.1.8
|
|
37
|
-
- gemfile:
|
|
18
|
+
- gemfile: Gemfile.3.2.mysql2
|
|
19
|
+
rvm: 2.2.4
|
|
20
|
+
# Rails 4.2
|
|
21
|
+
- gemfile: Gemfile.4.2.mysql2
|
|
38
22
|
rvm: 2.1.8
|
|
23
|
+
- gemfile: Gemfile.4.2.pg
|
|
24
|
+
rvm: 2.1.8
|
|
25
|
+
- gemfile: Gemfile.4.2.mysql2
|
|
26
|
+
rvm: 2.2.4
|
|
27
|
+
- gemfile: Gemfile.4.2.pg
|
|
28
|
+
rvm: 2.2.4
|
|
29
|
+
- gemfile: Gemfile.4.2.mysql2
|
|
30
|
+
rvm: 2.3.1
|
|
31
|
+
- gemfile: Gemfile.4.2.pg
|
|
32
|
+
rvm: 2.3.1
|
|
33
|
+
# Rails 5.2
|
|
34
|
+
- gemfile: Gemfile.5.2.mysql2
|
|
35
|
+
rvm: 2.2.4
|
|
36
|
+
- gemfile: Gemfile.5.2.pg
|
|
37
|
+
rvm: 2.2.4
|
|
38
|
+
- gemfile: Gemfile.5.2.sqlite3
|
|
39
|
+
rvm: 2.2.4
|
|
40
|
+
- gemfile: Gemfile.5.2.mysql2
|
|
41
|
+
rvm: 2.3.1
|
|
42
|
+
- gemfile: Gemfile.5.2.pg
|
|
43
|
+
rvm: 2.3.1
|
|
44
|
+
- gemfile: Gemfile.5.2.sqlite3
|
|
45
|
+
rvm: 2.3.1
|
|
46
|
+
# Rails 6.0
|
|
47
|
+
- gemfile: Gemfile.6.0.pg
|
|
48
|
+
rvm: 2.6.4
|
|
39
49
|
|
|
40
50
|
install:
|
|
41
|
-
#
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- bundle install --jobs=3 --retry=3 --deployment --path=${BUNDLE_PATH:-vendor/bundle}
|
|
51
|
+
# Replace default Travis CI bundler script with a version that doesn't
|
|
52
|
+
# explode when lockfile doesn't match recently bumped version
|
|
53
|
+
- bundle install --no-deployment --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
|
|
45
54
|
|
|
46
55
|
before_script:
|
|
47
56
|
- psql -c 'create database gemika_test;' -U postgres
|
|
@@ -53,6 +62,5 @@ sudo: false
|
|
|
53
62
|
|
|
54
63
|
cache: bundler
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- fail@makandra.de
|
|
65
|
+
addons:
|
|
66
|
+
postgresql: 9.3
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
All notable changes to this project will be documented in this file.
|
|
2
|
+
|
|
3
|
+
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Unreleased
|
|
7
|
+
|
|
8
|
+
### Breaking changes
|
|
9
|
+
|
|
10
|
+
-
|
|
11
|
+
|
|
12
|
+
### Compatible changes
|
|
13
|
+
|
|
14
|
+
-
|
|
15
|
+
|
|
16
|
+
## 0.4.0 - 2019-08-07
|
|
17
|
+
|
|
18
|
+
### Breaking changes
|
|
19
|
+
|
|
20
|
+
-
|
|
21
|
+
|
|
22
|
+
### Compatible changes
|
|
23
|
+
|
|
24
|
+
- Move gemfiles to project root
|
|
25
|
+
- Added support to read the `include` option from the `travis.yml` file. All combinations defined in the include option
|
|
26
|
+
are added to the existing matrix. If no matrix exist, these are the only ones that are run.
|
|
27
|
+
|
|
28
|
+
Example:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
rvm:
|
|
32
|
+
- 2.1.8
|
|
33
|
+
- 2.3.1
|
|
34
|
+
|
|
35
|
+
gemfile:
|
|
36
|
+
- gemfiles/Gemfile1
|
|
37
|
+
- gemfiles/Gemfile2
|
|
38
|
+
|
|
39
|
+
matrix:
|
|
40
|
+
include:
|
|
41
|
+
- rvm: 2.6.3
|
|
42
|
+
gemfile: gemfiles/Gemfile3
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 0.3.4 - 2018-08-29
|
|
46
|
+
|
|
47
|
+
### Compatible changes
|
|
48
|
+
|
|
49
|
+
- Print a warning instead of crashing when `database.yml` is missing.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## 0.3.3 - 2018-08-01
|
|
53
|
+
|
|
54
|
+
### Compatible changes
|
|
55
|
+
|
|
56
|
+
- Add support for sqlite3.
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## 0.3.2 - 2016-09-28
|
|
60
|
+
|
|
61
|
+
### Compatible changes
|
|
62
|
+
|
|
63
|
+
- Remove some debug output.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## 0.3.1 - 2016-09-28
|
|
67
|
+
|
|
68
|
+
### Compatible changes
|
|
69
|
+
|
|
70
|
+
- `rake current_rspec` no longer does a second unnecessary `bundle exec` call
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## Older releases
|
|
74
|
+
|
|
75
|
+
Please check commits.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
|
-
remote:
|
|
2
|
+
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gemika (0.
|
|
4
|
+
gemika (0.4.1)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
@@ -9,11 +9,18 @@ GEM
|
|
|
9
9
|
activerecord (2.3.18)
|
|
10
10
|
activesupport (= 2.3.18)
|
|
11
11
|
activesupport (2.3.18)
|
|
12
|
+
coderay (1.1.2)
|
|
12
13
|
database_cleaner (1.0.1)
|
|
13
14
|
i18n (0.6.11)
|
|
15
|
+
method_source (0.9.2)
|
|
14
16
|
mysql2 (0.2.20)
|
|
17
|
+
pry (0.9.12.6)
|
|
18
|
+
coderay (~> 1.0)
|
|
19
|
+
method_source (~> 0.8)
|
|
20
|
+
slop (~> 3.4)
|
|
15
21
|
rake (10.0.4)
|
|
16
22
|
rspec (1.3.2)
|
|
23
|
+
slop (3.6.0)
|
|
17
24
|
|
|
18
25
|
PLATFORMS
|
|
19
26
|
ruby
|
|
@@ -24,6 +31,7 @@ DEPENDENCIES
|
|
|
24
31
|
gemika!
|
|
25
32
|
i18n (= 0.6.11)
|
|
26
33
|
mysql2 (= 0.2.20)
|
|
34
|
+
pry
|
|
27
35
|
rake (= 10.0.4)
|
|
28
36
|
rspec (~> 1.3.0)
|
|
29
37
|
|
|
@@ -31,4 +39,4 @@ RUBY VERSION
|
|
|
31
39
|
ruby 1.8.7p375
|
|
32
40
|
|
|
33
41
|
BUNDLED WITH
|
|
34
|
-
1.
|
|
42
|
+
1.17.3
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
|
-
remote:
|
|
2
|
+
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gemika (0.
|
|
4
|
+
gemika (0.4.1)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
@@ -19,11 +19,17 @@ GEM
|
|
|
19
19
|
multi_json (~> 1.0)
|
|
20
20
|
arel (3.0.3)
|
|
21
21
|
builder (3.0.4)
|
|
22
|
+
coderay (1.1.2)
|
|
22
23
|
database_cleaner (1.0.1)
|
|
23
24
|
diff-lcs (1.2.5)
|
|
24
25
|
i18n (0.6.11)
|
|
26
|
+
method_source (0.9.2)
|
|
25
27
|
multi_json (1.12.1)
|
|
26
28
|
mysql2 (0.3.17)
|
|
29
|
+
pry (0.9.12.6)
|
|
30
|
+
coderay (~> 1.0)
|
|
31
|
+
method_source (~> 0.8)
|
|
32
|
+
slop (~> 3.4)
|
|
27
33
|
rake (10.0.4)
|
|
28
34
|
rspec (3.5.0)
|
|
29
35
|
rspec-core (~> 3.5.0)
|
|
@@ -38,6 +44,7 @@ GEM
|
|
|
38
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
39
45
|
rspec-support (~> 3.5.0)
|
|
40
46
|
rspec-support (3.5.0)
|
|
47
|
+
slop (3.6.0)
|
|
41
48
|
tzinfo (0.3.51)
|
|
42
49
|
|
|
43
50
|
PLATFORMS
|
|
@@ -49,6 +56,7 @@ DEPENDENCIES
|
|
|
49
56
|
gemika!
|
|
50
57
|
i18n (= 0.6.11)
|
|
51
58
|
mysql2 (= 0.3.17)
|
|
59
|
+
pry
|
|
52
60
|
rake (= 10.0.4)
|
|
53
61
|
rspec (~> 3.4)
|
|
54
62
|
|
|
@@ -56,4 +64,4 @@ RUBY VERSION
|
|
|
56
64
|
ruby 1.8.7p375
|
|
57
65
|
|
|
58
66
|
BUNDLED WITH
|
|
59
|
-
1.
|
|
67
|
+
1.17.3
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
|
-
remote:
|
|
2
|
+
remote: .
|
|
3
3
|
specs:
|
|
4
|
+
gemika (0.4.1)
|
|
4
5
|
|
|
5
6
|
GEM
|
|
6
7
|
remote: https://rubygems.org/
|
|
@@ -20,12 +21,17 @@ GEM
|
|
|
20
21
|
tzinfo (~> 1.1)
|
|
21
22
|
arel (6.0.3)
|
|
22
23
|
builder (3.2.2)
|
|
24
|
+
coderay (1.1.2)
|
|
23
25
|
database_cleaner (1.5.3)
|
|
24
26
|
diff-lcs (1.2.5)
|
|
25
27
|
i18n (0.7.0)
|
|
26
28
|
json (1.8.3)
|
|
29
|
+
method_source (0.9.2)
|
|
27
30
|
minitest (5.9.0)
|
|
28
31
|
mysql2 (0.3.21)
|
|
32
|
+
pry (0.12.2)
|
|
33
|
+
coderay (~> 1.1.0)
|
|
34
|
+
method_source (~> 0.9.0)
|
|
29
35
|
rake (11.3.0)
|
|
30
36
|
rspec (3.5.0)
|
|
31
37
|
rspec-core (~> 3.5.0)
|
|
@@ -52,6 +58,7 @@ DEPENDENCIES
|
|
|
52
58
|
database_cleaner
|
|
53
59
|
gemika!
|
|
54
60
|
mysql2 (~> 0.3.17)
|
|
61
|
+
pry
|
|
55
62
|
rake
|
|
56
63
|
rspec (~> 3.4)
|
|
57
64
|
|
|
@@ -59,4 +66,4 @@ RUBY VERSION
|
|
|
59
66
|
ruby 2.2.4p230
|
|
60
67
|
|
|
61
68
|
BUNDLED WITH
|
|
62
|
-
1.
|
|
69
|
+
1.17.3
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
|
-
remote:
|
|
2
|
+
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gemika (0.
|
|
4
|
+
gemika (0.4.1)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
@@ -21,12 +21,17 @@ GEM
|
|
|
21
21
|
tzinfo (~> 1.1)
|
|
22
22
|
arel (6.0.3)
|
|
23
23
|
builder (3.2.2)
|
|
24
|
+
coderay (1.1.2)
|
|
24
25
|
database_cleaner (1.5.3)
|
|
25
26
|
diff-lcs (1.2.5)
|
|
26
27
|
i18n (0.7.0)
|
|
27
28
|
json (1.8.3)
|
|
29
|
+
method_source (0.9.2)
|
|
28
30
|
minitest (5.9.0)
|
|
29
31
|
pg (0.19.0)
|
|
32
|
+
pry (0.12.2)
|
|
33
|
+
coderay (~> 1.1.0)
|
|
34
|
+
method_source (~> 0.9.0)
|
|
30
35
|
rake (11.3.0)
|
|
31
36
|
rspec (3.5.0)
|
|
32
37
|
rspec-core (~> 3.5.0)
|
|
@@ -53,6 +58,7 @@ DEPENDENCIES
|
|
|
53
58
|
database_cleaner
|
|
54
59
|
gemika!
|
|
55
60
|
pg
|
|
61
|
+
pry
|
|
56
62
|
rake
|
|
57
63
|
rspec (~> 3.4)
|
|
58
64
|
|
|
@@ -60,4 +66,4 @@ RUBY VERSION
|
|
|
60
66
|
ruby 2.3.1p112
|
|
61
67
|
|
|
62
68
|
BUNDLED WITH
|
|
63
|
-
1.
|
|
69
|
+
1.17.3
|
|
@@ -4,13 +4,14 @@ source 'https://rubygems.org'
|
|
|
4
4
|
ruby '>= 2.2'
|
|
5
5
|
|
|
6
6
|
# Runtime dependencies
|
|
7
|
-
gem 'activerecord', '~>5.
|
|
7
|
+
gem 'activerecord', '~>5.2.0'
|
|
8
8
|
gem 'rspec', '~>3.5'
|
|
9
9
|
gem 'mysql2', '~>0.4.4'
|
|
10
10
|
|
|
11
11
|
# Development dependencies
|
|
12
12
|
gem 'rake'
|
|
13
13
|
gem 'database_cleaner'
|
|
14
|
+
gem 'pry'
|
|
14
15
|
|
|
15
16
|
# Gem under test
|
|
16
|
-
gem 'gemika', :path => '
|
|
17
|
+
gem 'gemika', :path => '.'
|
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
PATH
|
|
2
|
-
remote:
|
|
2
|
+
remote: .
|
|
3
3
|
specs:
|
|
4
|
+
gemika (0.4.1)
|
|
4
5
|
|
|
5
6
|
GEM
|
|
6
7
|
remote: https://rubygems.org/
|
|
7
8
|
specs:
|
|
8
|
-
activemodel (5.
|
|
9
|
-
activesupport (= 5.
|
|
10
|
-
activerecord (5.
|
|
11
|
-
activemodel (= 5.
|
|
12
|
-
activesupport (= 5.
|
|
13
|
-
arel (
|
|
14
|
-
activesupport (5.
|
|
9
|
+
activemodel (5.2.3)
|
|
10
|
+
activesupport (= 5.2.3)
|
|
11
|
+
activerecord (5.2.3)
|
|
12
|
+
activemodel (= 5.2.3)
|
|
13
|
+
activesupport (= 5.2.3)
|
|
14
|
+
arel (>= 9.0)
|
|
15
|
+
activesupport (5.2.3)
|
|
15
16
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
16
|
-
i18n (
|
|
17
|
+
i18n (>= 0.7, < 2)
|
|
17
18
|
minitest (~> 5.1)
|
|
18
19
|
tzinfo (~> 1.1)
|
|
19
|
-
arel (
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
arel (9.0.0)
|
|
21
|
+
coderay (1.1.2)
|
|
22
|
+
concurrent-ruby (1.1.5)
|
|
23
|
+
database_cleaner (1.7.0)
|
|
22
24
|
diff-lcs (1.2.5)
|
|
23
|
-
i18n (
|
|
24
|
-
|
|
25
|
+
i18n (1.5.1)
|
|
26
|
+
concurrent-ruby (~> 1.0)
|
|
27
|
+
method_source (0.9.2)
|
|
28
|
+
minitest (5.11.3)
|
|
25
29
|
mysql2 (0.4.4)
|
|
30
|
+
pry (0.12.2)
|
|
31
|
+
coderay (~> 1.1.0)
|
|
32
|
+
method_source (~> 0.9.0)
|
|
26
33
|
rake (11.3.0)
|
|
27
34
|
rspec (3.5.0)
|
|
28
35
|
rspec-core (~> 3.5.0)
|
|
@@ -37,18 +44,19 @@ GEM
|
|
|
37
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
38
45
|
rspec-support (~> 3.5.0)
|
|
39
46
|
rspec-support (3.5.0)
|
|
40
|
-
thread_safe (0.3.
|
|
41
|
-
tzinfo (1.2.
|
|
47
|
+
thread_safe (0.3.6)
|
|
48
|
+
tzinfo (1.2.5)
|
|
42
49
|
thread_safe (~> 0.1)
|
|
43
50
|
|
|
44
51
|
PLATFORMS
|
|
45
52
|
ruby
|
|
46
53
|
|
|
47
54
|
DEPENDENCIES
|
|
48
|
-
activerecord (~> 5.
|
|
55
|
+
activerecord (~> 5.2.0)
|
|
49
56
|
database_cleaner
|
|
50
57
|
gemika!
|
|
51
58
|
mysql2 (~> 0.4.4)
|
|
59
|
+
pry
|
|
52
60
|
rake
|
|
53
61
|
rspec (~> 3.5)
|
|
54
62
|
|
|
@@ -56,4 +64,4 @@ RUBY VERSION
|
|
|
56
64
|
ruby 2.2.4p230
|
|
57
65
|
|
|
58
66
|
BUNDLED WITH
|
|
59
|
-
1.
|
|
67
|
+
1.17.3
|
|
@@ -4,13 +4,14 @@ source 'https://rubygems.org'
|
|
|
4
4
|
ruby '>= 2.2'
|
|
5
5
|
|
|
6
6
|
# Runtime dependencies
|
|
7
|
-
gem 'activerecord', '~>5.
|
|
7
|
+
gem 'activerecord', '~>5.2.0'
|
|
8
8
|
gem 'rspec', '~>3.5'
|
|
9
9
|
gem 'pg', '~>0.18.4'
|
|
10
10
|
|
|
11
11
|
# Development dependencies
|
|
12
12
|
gem 'rake'
|
|
13
13
|
gem 'database_cleaner'
|
|
14
|
+
gem 'pry'
|
|
14
15
|
|
|
15
16
|
# Gem under test
|
|
16
|
-
gem 'gemika', :path => '
|
|
17
|
+
gem 'gemika', :path => '.'
|
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
PATH
|
|
2
|
-
remote:
|
|
2
|
+
remote: .
|
|
3
3
|
specs:
|
|
4
|
+
gemika (0.4.1)
|
|
4
5
|
|
|
5
6
|
GEM
|
|
6
7
|
remote: https://rubygems.org/
|
|
7
8
|
specs:
|
|
8
|
-
activemodel (5.
|
|
9
|
-
activesupport (= 5.
|
|
10
|
-
activerecord (5.
|
|
11
|
-
activemodel (= 5.
|
|
12
|
-
activesupport (= 5.
|
|
13
|
-
arel (
|
|
14
|
-
activesupport (5.
|
|
9
|
+
activemodel (5.2.3)
|
|
10
|
+
activesupport (= 5.2.3)
|
|
11
|
+
activerecord (5.2.3)
|
|
12
|
+
activemodel (= 5.2.3)
|
|
13
|
+
activesupport (= 5.2.3)
|
|
14
|
+
arel (>= 9.0)
|
|
15
|
+
activesupport (5.2.3)
|
|
15
16
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
16
|
-
i18n (
|
|
17
|
+
i18n (>= 0.7, < 2)
|
|
17
18
|
minitest (~> 5.1)
|
|
18
19
|
tzinfo (~> 1.1)
|
|
19
|
-
arel (
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
arel (9.0.0)
|
|
21
|
+
coderay (1.1.2)
|
|
22
|
+
concurrent-ruby (1.1.5)
|
|
23
|
+
database_cleaner (1.7.0)
|
|
22
24
|
diff-lcs (1.2.5)
|
|
23
|
-
i18n (
|
|
24
|
-
|
|
25
|
+
i18n (1.5.1)
|
|
26
|
+
concurrent-ruby (~> 1.0)
|
|
27
|
+
method_source (0.9.2)
|
|
28
|
+
minitest (5.11.3)
|
|
25
29
|
pg (0.18.4)
|
|
30
|
+
pry (0.12.2)
|
|
31
|
+
coderay (~> 1.1.0)
|
|
32
|
+
method_source (~> 0.9.0)
|
|
26
33
|
rake (11.3.0)
|
|
27
34
|
rspec (3.5.0)
|
|
28
35
|
rspec-core (~> 3.5.0)
|
|
@@ -37,18 +44,19 @@ GEM
|
|
|
37
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
38
45
|
rspec-support (~> 3.5.0)
|
|
39
46
|
rspec-support (3.5.0)
|
|
40
|
-
thread_safe (0.3.
|
|
41
|
-
tzinfo (1.2.
|
|
47
|
+
thread_safe (0.3.6)
|
|
48
|
+
tzinfo (1.2.5)
|
|
42
49
|
thread_safe (~> 0.1)
|
|
43
50
|
|
|
44
51
|
PLATFORMS
|
|
45
52
|
ruby
|
|
46
53
|
|
|
47
54
|
DEPENDENCIES
|
|
48
|
-
activerecord (~> 5.
|
|
55
|
+
activerecord (~> 5.2.0)
|
|
49
56
|
database_cleaner
|
|
50
57
|
gemika!
|
|
51
58
|
pg (~> 0.18.4)
|
|
59
|
+
pry
|
|
52
60
|
rake
|
|
53
61
|
rspec (~> 3.5)
|
|
54
62
|
|
|
@@ -56,4 +64,4 @@ RUBY VERSION
|
|
|
56
64
|
ruby 2.2.4p230
|
|
57
65
|
|
|
58
66
|
BUNDLED WITH
|
|
59
|
-
1.
|
|
67
|
+
1.17.3
|
data/Gemfile.5.2.sqlite3
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Ruby
|
|
4
|
+
ruby '>= 2.2'
|
|
5
|
+
|
|
6
|
+
# Runtime dependencies
|
|
7
|
+
gem 'activerecord', '~>5.2.0'
|
|
8
|
+
gem 'rspec', '~>3.5'
|
|
9
|
+
gem 'sqlite3'
|
|
10
|
+
|
|
11
|
+
# Development dependencies
|
|
12
|
+
gem 'rake'
|
|
13
|
+
gem 'database_cleaner'
|
|
14
|
+
gem 'pry'
|
|
15
|
+
|
|
16
|
+
# Gem under test
|
|
17
|
+
gem 'gemika', :path => '.'
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
gemika (0.4.1)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
activemodel (5.2.3)
|
|
10
|
+
activesupport (= 5.2.3)
|
|
11
|
+
activerecord (5.2.3)
|
|
12
|
+
activemodel (= 5.2.3)
|
|
13
|
+
activesupport (= 5.2.3)
|
|
14
|
+
arel (>= 9.0)
|
|
15
|
+
activesupport (5.2.3)
|
|
16
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
17
|
+
i18n (>= 0.7, < 2)
|
|
18
|
+
minitest (~> 5.1)
|
|
19
|
+
tzinfo (~> 1.1)
|
|
20
|
+
arel (9.0.0)
|
|
21
|
+
coderay (1.1.2)
|
|
22
|
+
concurrent-ruby (1.1.5)
|
|
23
|
+
database_cleaner (1.7.0)
|
|
24
|
+
diff-lcs (1.3)
|
|
25
|
+
i18n (1.5.1)
|
|
26
|
+
concurrent-ruby (~> 1.0)
|
|
27
|
+
method_source (0.9.2)
|
|
28
|
+
minitest (5.11.3)
|
|
29
|
+
pry (0.12.2)
|
|
30
|
+
coderay (~> 1.1.0)
|
|
31
|
+
method_source (~> 0.9.0)
|
|
32
|
+
rake (12.3.1)
|
|
33
|
+
rspec (3.7.0)
|
|
34
|
+
rspec-core (~> 3.7.0)
|
|
35
|
+
rspec-expectations (~> 3.7.0)
|
|
36
|
+
rspec-mocks (~> 3.7.0)
|
|
37
|
+
rspec-core (3.7.1)
|
|
38
|
+
rspec-support (~> 3.7.0)
|
|
39
|
+
rspec-expectations (3.7.0)
|
|
40
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
41
|
+
rspec-support (~> 3.7.0)
|
|
42
|
+
rspec-mocks (3.7.0)
|
|
43
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
44
|
+
rspec-support (~> 3.7.0)
|
|
45
|
+
rspec-support (3.7.1)
|
|
46
|
+
sqlite3 (1.3.13)
|
|
47
|
+
thread_safe (0.3.6)
|
|
48
|
+
tzinfo (1.2.5)
|
|
49
|
+
thread_safe (~> 0.1)
|
|
50
|
+
|
|
51
|
+
PLATFORMS
|
|
52
|
+
ruby
|
|
53
|
+
|
|
54
|
+
DEPENDENCIES
|
|
55
|
+
activerecord (~> 5.2.0)
|
|
56
|
+
database_cleaner
|
|
57
|
+
gemika!
|
|
58
|
+
pry
|
|
59
|
+
rake
|
|
60
|
+
rspec (~> 3.5)
|
|
61
|
+
sqlite3
|
|
62
|
+
|
|
63
|
+
RUBY VERSION
|
|
64
|
+
ruby 2.2.4p230
|
|
65
|
+
|
|
66
|
+
BUNDLED WITH
|
|
67
|
+
1.17.3
|
data/Gemfile.6.0.pg
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Ruby
|
|
4
|
+
ruby '>= 2.2'
|
|
5
|
+
|
|
6
|
+
# Runtime dependencies
|
|
7
|
+
gem 'activerecord', '~>6.0.0'
|
|
8
|
+
gem 'rspec', '~>3.5'
|
|
9
|
+
gem 'pg', '~>0.18.4'
|
|
10
|
+
|
|
11
|
+
# Development dependencies
|
|
12
|
+
gem 'rake'
|
|
13
|
+
gem 'database_cleaner'
|
|
14
|
+
gem 'pry'
|
|
15
|
+
|
|
16
|
+
# Gem under test
|
|
17
|
+
gem 'gemika', :path => '.'
|
data/Gemfile.6.0.pg.lock
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
gemika (0.4.1)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
activemodel (6.0.0)
|
|
10
|
+
activesupport (= 6.0.0)
|
|
11
|
+
activerecord (6.0.0)
|
|
12
|
+
activemodel (= 6.0.0)
|
|
13
|
+
activesupport (= 6.0.0)
|
|
14
|
+
activesupport (6.0.0)
|
|
15
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
16
|
+
i18n (>= 0.7, < 2)
|
|
17
|
+
minitest (~> 5.1)
|
|
18
|
+
tzinfo (~> 1.1)
|
|
19
|
+
zeitwerk (~> 2.1, >= 2.1.8)
|
|
20
|
+
coderay (1.1.2)
|
|
21
|
+
concurrent-ruby (1.1.5)
|
|
22
|
+
database_cleaner (1.7.0)
|
|
23
|
+
diff-lcs (1.3)
|
|
24
|
+
i18n (1.6.0)
|
|
25
|
+
concurrent-ruby (~> 1.0)
|
|
26
|
+
method_source (0.9.2)
|
|
27
|
+
minitest (5.11.3)
|
|
28
|
+
pg (0.18.4)
|
|
29
|
+
pry (0.12.2)
|
|
30
|
+
coderay (~> 1.1.0)
|
|
31
|
+
method_source (~> 0.9.0)
|
|
32
|
+
rake (12.3.3)
|
|
33
|
+
rspec (3.8.0)
|
|
34
|
+
rspec-core (~> 3.8.0)
|
|
35
|
+
rspec-expectations (~> 3.8.0)
|
|
36
|
+
rspec-mocks (~> 3.8.0)
|
|
37
|
+
rspec-core (3.8.2)
|
|
38
|
+
rspec-support (~> 3.8.0)
|
|
39
|
+
rspec-expectations (3.8.4)
|
|
40
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
41
|
+
rspec-support (~> 3.8.0)
|
|
42
|
+
rspec-mocks (3.8.1)
|
|
43
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
44
|
+
rspec-support (~> 3.8.0)
|
|
45
|
+
rspec-support (3.8.2)
|
|
46
|
+
thread_safe (0.3.6)
|
|
47
|
+
tzinfo (1.2.5)
|
|
48
|
+
thread_safe (~> 0.1)
|
|
49
|
+
zeitwerk (2.1.10)
|
|
50
|
+
|
|
51
|
+
PLATFORMS
|
|
52
|
+
ruby
|
|
53
|
+
|
|
54
|
+
DEPENDENCIES
|
|
55
|
+
activerecord (~> 6.0.0)
|
|
56
|
+
database_cleaner
|
|
57
|
+
gemika!
|
|
58
|
+
pg (~> 0.18.4)
|
|
59
|
+
pry
|
|
60
|
+
rake
|
|
61
|
+
rspec (~> 3.5)
|
|
62
|
+
|
|
63
|
+
RUBY VERSION
|
|
64
|
+
ruby 2.2.4p230
|
|
65
|
+
|
|
66
|
+
BUNDLED WITH
|
|
67
|
+
1.17.2
|
data/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Here's what Gemika can give your test's development setup (all features are opt-
|
|
|
12
12
|
|
|
13
13
|
- Test one codebase against multiple sets of runtime gem dependency sets (e.g. Rails 2.3, Rails 5.0).
|
|
14
14
|
- Test one codebase against multiple Ruby versions (e.g. Ruby 1.8.7, Ruby 2.3.10).
|
|
15
|
-
- Test one codebase against multiple database types (currently MySQL or
|
|
15
|
+
- Test one codebase against multiple database types (currently MySQL, PostgreSQL, or sqlite3).
|
|
16
16
|
- Compute a matrix of all possible dependency permutations (Ruby, runtime gems, database type). Manually exclude incompatible dependency permutations (e.g. Rails 5.0 does not work with Ruby 2.1).
|
|
17
17
|
- Let developers enter their local credentials for MySQL and PostgreSQL in a `database.yml` file.
|
|
18
18
|
- Define default Ruby version, gem dependencies and database for developers who don't care about every possible permutation for everyday work.
|
|
@@ -30,7 +30,7 @@ Gemika currently supports the following dependency versions:
|
|
|
30
30
|
- Ruby: 1.8.7, 2.1, 2.2, 2.3
|
|
31
31
|
- RSpec: Versions 1, 2, 3
|
|
32
32
|
- ActiveRecord: Versions 2.3, 3.2, 4.2, 5.0
|
|
33
|
-
- Databases: PostgreSQL (with `pg` gem), MySQL or MariaDB (with `mysql2` gem)
|
|
33
|
+
- Databases: PostgreSQL (with `pg` gem), MySQL or MariaDB (with `mysql2` gem), or sqlite3 (with `sqlite3` gem)
|
|
34
34
|
|
|
35
35
|
Gemika also makes some assumption about your Gem:
|
|
36
36
|
|
|
@@ -43,14 +43,14 @@ Gemika also makes some assumption about your Gem:
|
|
|
43
43
|
Below you can see the directory of a gem with a completed Gemika testing setup. The next section describes how to get there:
|
|
44
44
|
|
|
45
45
|
```shell
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
Gemfile ->
|
|
53
|
-
Gemfile.lock ->
|
|
46
|
+
Gemfile.set1 # First dependency set. Should include development dependencies and gemika.
|
|
47
|
+
Gemfile.set1.lock # Generated by `rake matrix:install`
|
|
48
|
+
Gemfile.set2 # Second dependency set. Should include development dependencies and gemika.
|
|
49
|
+
Gemfile.set2.lock # Generated by `rake matrix:install`
|
|
50
|
+
Gemfile.set3 # Third dependency set. Should include development dependencies and gemika.
|
|
51
|
+
Gemfile.set3.lock # Generated by `rake matrix:install`
|
|
52
|
+
Gemfile -> Gemfile.set2 # Symlink to default Gemfile for development
|
|
53
|
+
Gemfile.lock -> Gemfile.set2.lock # Symlink to default Gemfile.lock for development
|
|
54
54
|
.ruby-version # Default Ruby version for development
|
|
55
55
|
.gitignore # Should ignore spec/support/database.yml
|
|
56
56
|
.travis.yml # Configures all tested Ruby / gemfile combinations, for both local development and Travis CI
|
|
@@ -79,9 +79,10 @@ For a live example of this setup, check the [makandra/minidusen](https://github.
|
|
|
79
79
|
Gemika expects a standard gem directory that looks roughly like this:
|
|
80
80
|
|
|
81
81
|
```shell
|
|
82
|
-
my_gem.gemspec
|
|
83
|
-
Rakefile
|
|
84
|
-
lib/my_gem.rb
|
|
82
|
+
my_gem.gemspec # Specification for your gem
|
|
83
|
+
Rakefile # Rake tasks for your gem
|
|
84
|
+
lib/my_gem.rb # Main file to require for your gem
|
|
85
|
+
spec/my_gem_spec.rb # Tests for your gem
|
|
85
86
|
```
|
|
86
87
|
|
|
87
88
|
If you don't have a directory yet, you can [ask Bundler to create it for you](http://bundler.io/rubygems.html):
|
|
@@ -135,86 +136,66 @@ task :default => 'matrix:spec'
|
|
|
135
136
|
### Define multiple dependency sets
|
|
136
137
|
|
|
137
138
|
We are now creating one `Gemfile` for each set of gems and database type you'd like to test again.
|
|
139
|
+
Your gemfiles should be placed directly in your project's root directory.
|
|
138
140
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
```shell
|
|
142
|
-
mkdir gemfiles
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
For each dependency set, create a `Gemfile` in the `gemfiles` directory that contains:
|
|
141
|
+
For each dependency set, create a `Gemfile` in the project root directory that contains:
|
|
146
142
|
|
|
147
143
|
1. The runtime dependencies you'd like to test against (e.g. Rails 5)
|
|
148
|
-
2. The development dependencies for that set (e.g. `rspec`) in a version that is compatible with these runtime
|
|
144
|
+
2. The development dependencies for that set (e.g. `rspec`) in a version that is compatible with these runtime dependencies.
|
|
149
145
|
3. The `gemika` gem
|
|
150
|
-
4. Your own gem from path
|
|
151
|
-
|
|
152
|
-
For instance, if one dependency set is Rails 3.2 with a MySQL database, we would create
|
|
146
|
+
4. Your own gem from path `.`
|
|
147
|
+
|
|
148
|
+
For instance, if one dependency set is Rails 3.2 with a MySQL database, we would create `./Gemfile.4.2.mysql2` with these contents:
|
|
153
149
|
|
|
154
150
|
```ruby
|
|
151
|
+
source 'https://rubygems.org'
|
|
152
|
+
|
|
155
153
|
# Runtime dependencies
|
|
156
154
|
gem 'rails', '~>3.2.22'
|
|
157
155
|
gem 'mysql2', '= 0.3.17'
|
|
158
|
-
gem 'rspec', '~> 3.4'
|
|
159
156
|
|
|
160
157
|
# Development dependencies
|
|
158
|
+
gem 'rspec', '~> 3.4'
|
|
161
159
|
gem 'rake'
|
|
162
160
|
gem 'byebug'
|
|
163
161
|
gem 'gemika'
|
|
164
162
|
|
|
165
163
|
# Gem under test
|
|
166
|
-
gem 'my_gem', :path => '
|
|
164
|
+
gem 'my_gem', :path => '.'
|
|
167
165
|
```
|
|
168
166
|
|
|
169
|
-
If a second dependency is Rails 5.0 with a PostgreSQL database, we would create
|
|
167
|
+
If a second dependency is Rails 5.0 with a PostgreSQL database, we would create `./Gemfile.5.0.pg` with these contents:
|
|
170
168
|
|
|
171
169
|
```ruby
|
|
170
|
+
source 'https://rubygems.org'
|
|
171
|
+
|
|
172
172
|
# Runtime dependencies
|
|
173
173
|
gem 'rails', '~>5.0.0'
|
|
174
174
|
gem 'pg', '~>0.18.4'
|
|
175
|
-
gem 'rspec', '~>3.5'
|
|
176
175
|
|
|
177
176
|
# Development dependencies
|
|
177
|
+
gem 'rspec', '~>3.5'
|
|
178
178
|
gem 'rake'
|
|
179
179
|
gem 'byebug'
|
|
180
180
|
gem 'gemika'
|
|
181
181
|
|
|
182
182
|
# Gem under test
|
|
183
|
-
gem 'my_gem', :path => '
|
|
183
|
+
gem 'my_gem', :path => '.'
|
|
184
184
|
```
|
|
185
185
|
|
|
186
|
-
In this example, your
|
|
186
|
+
In this example, your project directory should now also contain:
|
|
187
187
|
|
|
188
188
|
```
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
Create lockfiles for each bundle by running:
|
|
194
|
-
|
|
195
|
-
```shell
|
|
196
|
-
rake matrix:install
|
|
189
|
+
Gemfile.4.2.mysql2
|
|
190
|
+
Gemfile.5.0.pg
|
|
197
191
|
```
|
|
198
192
|
|
|
199
|
-
In this example, your `gemfiles` directory should now contain a lockfile for each gemfile:
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
gemfiles/Gemfile.4.2.mysql2
|
|
203
|
-
gemfiles/Gemfile.4.2.mysql2.lock
|
|
204
|
-
gemfiles/Gemfile.5.0.pg
|
|
205
|
-
gemfiles/Gemfile.5.0.pg.lock
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
Gemfiles and lockfiles should be committed to your repo.
|
|
209
|
-
|
|
210
|
-
Make sure to re-run `rake matrix:install` after each change to your gemfiles, and commit the generated changes.
|
|
211
|
-
|
|
212
193
|
|
|
213
194
|
### Define combinations of gemfiles and Ruby versions
|
|
214
195
|
|
|
215
196
|
We will now define a test matrix that contains all permutations of gemfiles and tested Ruby versions.
|
|
216
197
|
|
|
217
|
-
We store the matrix in a `.travis.yml` file, **even if the project is not using Travis CI**. This allows us to configure the matrix once and us it for both local
|
|
198
|
+
We store the matrix in a `.travis.yml` file, **even if the project is not using Travis CI**. This allows us to configure the matrix once and us it for both local development and Travis CI builds.
|
|
218
199
|
|
|
219
200
|
Create a `.travis.yml` that lists all gemfiles and Ruby versions you'd like to test against:
|
|
220
201
|
|
|
@@ -225,11 +206,11 @@ rvm:
|
|
|
225
206
|
- 2.3.1
|
|
226
207
|
|
|
227
208
|
gemfile:
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
231
|
-
-
|
|
232
|
-
-
|
|
209
|
+
- Gemfile.3.2.mysql2
|
|
210
|
+
- Gemfile.4.2.mysql2
|
|
211
|
+
- Gemfile.4.2.pg
|
|
212
|
+
- Gemfile.5.0.mysql2
|
|
213
|
+
- Gemfile.5.0.pg
|
|
233
214
|
```
|
|
234
215
|
|
|
235
216
|
Don't mind the `rvm` key if you're using a different version manager locally (like rbenv). Things will still work.
|
|
@@ -242,12 +223,33 @@ There might be incompatible combinations of gemfiles and Rubies, e.g. Rails 5.0
|
|
|
242
223
|
```yaml
|
|
243
224
|
matrix:
|
|
244
225
|
exclude:
|
|
245
|
-
- gemfile:
|
|
226
|
+
- gemfile: Gemfile.5.0.mysql2
|
|
246
227
|
rvm: 2.1.8
|
|
247
|
-
- gemfile:
|
|
228
|
+
- gemfile: Gemfile.5.0.pg
|
|
248
229
|
rvm: 2.1.8
|
|
249
230
|
```
|
|
250
231
|
|
|
232
|
+
### Generate lockfiles
|
|
233
|
+
|
|
234
|
+
Generate lockfiles for each bundle by running:
|
|
235
|
+
|
|
236
|
+
```shell
|
|
237
|
+
rake matrix:install
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
In this example, your project directory should now contain a lockfile for each gemfile:
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
Gemfile.4.2.mysql2
|
|
244
|
+
Gemfile.4.2.mysql2.lock
|
|
245
|
+
Gemfile.5.0.pg
|
|
246
|
+
Gemfile.5.0.pg.lock
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Gemfiles and lockfiles should be committed to your repo.
|
|
250
|
+
|
|
251
|
+
Make sure to re-run `rake matrix:install` after each change to your gemfiles, and commit the generated changes.
|
|
252
|
+
|
|
251
253
|
|
|
252
254
|
### Default Ruby and default gemfile
|
|
253
255
|
|
|
@@ -262,8 +264,8 @@ Create a `.ruby-version` file with the default Ruby version:
|
|
|
262
264
|
Choose a default dependency set and symlink both gemfile and lockfile to your project root:
|
|
263
265
|
|
|
264
266
|
```
|
|
265
|
-
ln -s
|
|
266
|
-
ln -s
|
|
267
|
+
ln -s Gemfile.4.2.mysql2 Gemfile
|
|
268
|
+
ln -s Gemfile.4.2.mysql2.lock Gemfile.lock
|
|
267
269
|
```
|
|
268
270
|
|
|
269
271
|
Commit both `.ruby-version` and symlinks to your repo.
|
|
@@ -288,6 +290,9 @@ postgresql:
|
|
|
288
290
|
database: minidusen_test
|
|
289
291
|
user:
|
|
290
292
|
password:
|
|
293
|
+
|
|
294
|
+
sqlite:
|
|
295
|
+
database: ":memory:"
|
|
291
296
|
```
|
|
292
297
|
|
|
293
298
|
We don't want to commit our local credentials, so add a line to your `.gitignore`:
|
|
@@ -424,8 +429,8 @@ rake matrix:spec
|
|
|
424
429
|
Note that if your current Ruby version is *very* far away from your [default Ruby](#default-ruby-and-default-gemfile) in `.ruby-version`, you might need to run `rake` with a gemfile that has compatible dependencies:
|
|
425
430
|
|
|
426
431
|
```shell
|
|
427
|
-
BUNDLE_GEMFILE=
|
|
428
|
-
BUNDLE_GEMFILE=
|
|
432
|
+
BUNDLE_GEMFILE=Gemfile.2.3 bundle exec rake matrix:install
|
|
433
|
+
BUNDLE_GEMFILE=Gemfile.2.3 bundle exec rake matrix:spec
|
|
429
434
|
```
|
|
430
435
|
|
|
431
436
|
We recommend to setup Travis CI to check the entire test matrix after each push, including all Rubies. This way developers can stay on the [default Ruby and gemfile](#default-ruby-and-default-gemfile) most of the time while Travis CI checks make sure that nothing broken gets merged.
|
|
@@ -471,10 +476,9 @@ notifications:
|
|
|
471
476
|
- notifications@test.com
|
|
472
477
|
|
|
473
478
|
install:
|
|
474
|
-
#
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
- bundle install --jobs=3 --retry=3 --deployment --path=${BUNDLE_PATH:-vendor/bundle}
|
|
479
|
+
# Replace default Travis CI bundler script with a version that doesn't
|
|
480
|
+
# explode when lockfile doesn't match recently bumped version
|
|
481
|
+
- bundle install --no-deployment --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
|
|
478
482
|
|
|
479
483
|
script: bundle exec rake current_rspec
|
|
480
484
|
```
|
data/gemika.gemspec
CHANGED
|
@@ -11,8 +11,8 @@ Gem::Specification.new do |s|
|
|
|
11
11
|
s.description = s.summary
|
|
12
12
|
s.license = 'MIT'
|
|
13
13
|
|
|
14
|
-
s.files = `git ls-files`.split("\n").reject { |path| File.lstat(path).symlink? }
|
|
15
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").reject { |path| File.lstat(path).symlink? }
|
|
14
|
+
s.files = `git ls-files`.split("\n").reject { |path| !File.exists?(path) || File.lstat(path).symlink? }
|
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").reject { |path| !File.exists?(path) || File.lstat(path).symlink? }
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
17
17
|
s.require_paths = ["lib"]
|
|
18
18
|
end
|
data/lib/gemika/database.rb
CHANGED
|
@@ -14,13 +14,19 @@ module Gemika
|
|
|
14
14
|
|
|
15
15
|
def initialize(options = {})
|
|
16
16
|
yaml_config_folder = options.fetch(:config_folder, 'spec/support')
|
|
17
|
-
yaml_config_filename = Env.travis?
|
|
17
|
+
yaml_config_filename = if Env.travis?
|
|
18
|
+
'database.travis.yml'
|
|
19
|
+
elsif Env.github?
|
|
20
|
+
'database.github.yml'
|
|
21
|
+
else
|
|
22
|
+
'database.yml'
|
|
23
|
+
end
|
|
18
24
|
yaml_config_path = File.join(yaml_config_folder, yaml_config_filename)
|
|
19
25
|
if File.exists?(yaml_config_path)
|
|
20
26
|
@yaml_config = YAML.load_file(yaml_config_path)
|
|
21
27
|
else
|
|
22
|
-
warn "No database configuration in #{yaml_config_path}, using defaults: #{adapter_config.inspect}"
|
|
23
28
|
@yaml_config = {}
|
|
29
|
+
warn "No database configuration in #{yaml_config_path}, using defaults: #{adapter_config.inspect}"
|
|
24
30
|
end
|
|
25
31
|
@connected = false
|
|
26
32
|
end
|
|
@@ -95,8 +101,12 @@ module Gemika
|
|
|
95
101
|
default_config['username'] = 'travis' if Env.travis?
|
|
96
102
|
default_config['encoding'] = 'utf8'
|
|
97
103
|
user_config = (@yaml_config['mysql'] || @yaml_config['mysql2']) || {}
|
|
104
|
+
elsif Env.gem?('sqlite3')
|
|
105
|
+
default_config['adapter'] = 'sqlite3'
|
|
106
|
+
default_config['database'] = ':memory:'
|
|
107
|
+
user_config = (@yaml_config['sqlite'] || @yaml_config['sqlite3']) || {}
|
|
98
108
|
else
|
|
99
|
-
raise UnknownAdapter, "Unknown database type. Either 'pg' or '
|
|
109
|
+
raise UnknownAdapter, "Unknown database type. Either 'pg', 'mysql2', or 'sqlite3' gem should be in your current bundle."
|
|
100
110
|
end
|
|
101
111
|
default_config.merge(user_config)
|
|
102
112
|
end
|
data/lib/gemika/env.rb
CHANGED
|
@@ -87,6 +87,12 @@ module Gemika
|
|
|
87
87
|
!!ENV['TRAVIS']
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
+
##
|
|
91
|
+
# Return whether this process is running within a Github Actions build.
|
|
92
|
+
def github?
|
|
93
|
+
ENV.key?('GITHUB_WORKFLOW')
|
|
94
|
+
end
|
|
95
|
+
|
|
90
96
|
##
|
|
91
97
|
# Creates an hash that enumerates entries in order of insertion.
|
|
92
98
|
#
|
data/lib/gemika/matrix.rb
CHANGED
|
@@ -16,10 +16,12 @@ module Gemika
|
|
|
16
16
|
def load_rows(options)
|
|
17
17
|
path = options.fetch(:path, '.travis.yml')
|
|
18
18
|
travis_yml = YAML.load_file(path)
|
|
19
|
-
rubies = travis_yml.fetch('rvm')
|
|
20
|
-
gemfiles = travis_yml.fetch('gemfile')
|
|
19
|
+
rubies = travis_yml.fetch('rvm', [])
|
|
20
|
+
gemfiles = travis_yml.fetch('gemfile', [])
|
|
21
21
|
matrix_options = travis_yml.fetch('matrix', {})
|
|
22
|
+
includes = matrix_options.fetch('include', [])
|
|
22
23
|
excludes = matrix_options.fetch('exclude', [])
|
|
24
|
+
|
|
23
25
|
rows = []
|
|
24
26
|
rubies.each do |ruby|
|
|
25
27
|
gemfiles.each do |gemfile|
|
|
@@ -27,6 +29,8 @@ module Gemika
|
|
|
27
29
|
rows << row unless excludes.include?(row)
|
|
28
30
|
end
|
|
29
31
|
end
|
|
32
|
+
|
|
33
|
+
rows = rows + includes
|
|
30
34
|
rows = rows.map { |row| convert_row(row) }
|
|
31
35
|
rows
|
|
32
36
|
end
|
data/lib/gemika/tasks/matrix.rb
CHANGED
data/lib/gemika/version.rb
CHANGED
data/spec/gemika/matrix_spec.rb
CHANGED
|
@@ -131,6 +131,22 @@ EOF
|
|
|
131
131
|
matrix.rows[2].gemfile.should == 'gemfiles/Gemfile2'
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
+
it 'allows to include rows to the matrix' do
|
|
135
|
+
path = 'spec/fixtures/travis_yml/includes.yml'
|
|
136
|
+
matrix = Gemika::Matrix.from_travis_yml(:path => path, :validate => false)
|
|
137
|
+
matrix.rows.size.should == 5
|
|
138
|
+
matrix.rows[0].ruby.should == '2.1.8'
|
|
139
|
+
matrix.rows[0].gemfile.should == 'gemfiles/Gemfile1'
|
|
140
|
+
matrix.rows[1].ruby.should == '2.1.8'
|
|
141
|
+
matrix.rows[1].gemfile.should == 'gemfiles/Gemfile2'
|
|
142
|
+
matrix.rows[2].ruby.should == '2.3.1'
|
|
143
|
+
matrix.rows[2].gemfile.should == 'gemfiles/Gemfile1'
|
|
144
|
+
matrix.rows[3].ruby.should == '2.3.1'
|
|
145
|
+
matrix.rows[3].gemfile.should == 'gemfiles/Gemfile2'
|
|
146
|
+
matrix.rows[4].ruby.should == '2.6.3'
|
|
147
|
+
matrix.rows[4].gemfile.should == 'gemfiles/Gemfile3'
|
|
148
|
+
end
|
|
149
|
+
|
|
134
150
|
it 'raises an error if a Gemfile does not exist' do
|
|
135
151
|
path = 'spec/fixtures/travis_yml/missing_gemfile.yml'
|
|
136
152
|
expect { Gemika::Matrix.from_travis_yml(:path => path) }.to raise_error(Gemika::MissingGemfile, /gemfile not found/i)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gemika
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Henning Koch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-09-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Helpers for testing Ruby gems
|
|
14
14
|
email: henning.koch@makandra.de
|
|
@@ -21,22 +21,27 @@ files:
|
|
|
21
21
|
- ".ruby-version"
|
|
22
22
|
- ".travis.yml"
|
|
23
23
|
- ".yardopts"
|
|
24
|
+
- CHANGELOG.md
|
|
25
|
+
- Gemfile.2.3.mysql2
|
|
26
|
+
- Gemfile.2.3.mysql2.lock
|
|
27
|
+
- Gemfile.3.2.mysql2
|
|
28
|
+
- Gemfile.3.2.mysql2.lock
|
|
29
|
+
- Gemfile.4.2.mysql2
|
|
30
|
+
- Gemfile.4.2.mysql2.lock
|
|
31
|
+
- Gemfile.4.2.pg
|
|
32
|
+
- Gemfile.4.2.pg.lock
|
|
33
|
+
- Gemfile.5.2.mysql2
|
|
34
|
+
- Gemfile.5.2.mysql2.lock
|
|
35
|
+
- Gemfile.5.2.pg
|
|
36
|
+
- Gemfile.5.2.pg.lock
|
|
37
|
+
- Gemfile.5.2.sqlite3
|
|
38
|
+
- Gemfile.5.2.sqlite3.lock
|
|
39
|
+
- Gemfile.6.0.pg
|
|
40
|
+
- Gemfile.6.0.pg.lock
|
|
24
41
|
- LICENSE
|
|
25
42
|
- README.md
|
|
26
43
|
- Rakefile
|
|
27
44
|
- doc/minidusen_test.png
|
|
28
|
-
- gemfiles/Gemfile.2.3.mysql2
|
|
29
|
-
- gemfiles/Gemfile.2.3.mysql2.lock
|
|
30
|
-
- gemfiles/Gemfile.3.2.mysql2
|
|
31
|
-
- gemfiles/Gemfile.3.2.mysql2.lock
|
|
32
|
-
- gemfiles/Gemfile.4.2.mysql2
|
|
33
|
-
- gemfiles/Gemfile.4.2.mysql2.lock
|
|
34
|
-
- gemfiles/Gemfile.4.2.pg
|
|
35
|
-
- gemfiles/Gemfile.4.2.pg.lock
|
|
36
|
-
- gemfiles/Gemfile.5.0.mysql2
|
|
37
|
-
- gemfiles/Gemfile.5.0.mysql2.lock
|
|
38
|
-
- gemfiles/Gemfile.5.0.pg
|
|
39
|
-
- gemfiles/Gemfile.5.0.pg.lock
|
|
40
45
|
- gemika.gemspec
|
|
41
46
|
- lib/gemika.rb
|
|
42
47
|
- lib/gemika/database.rb
|
|
@@ -53,6 +58,7 @@ files:
|
|
|
53
58
|
- spec/fixtures/travis_yml/Gemfile_without_gemika
|
|
54
59
|
- spec/fixtures/travis_yml/excludes.yml
|
|
55
60
|
- spec/fixtures/travis_yml/gemfile_without_gemika.yml
|
|
61
|
+
- spec/fixtures/travis_yml/includes.yml
|
|
56
62
|
- spec/fixtures/travis_yml/missing_gemfile.yml
|
|
57
63
|
- spec/fixtures/travis_yml/two_by_two.yml
|
|
58
64
|
- spec/gemika/database_spec.rb
|
|
@@ -63,7 +69,6 @@ files:
|
|
|
63
69
|
- spec/support/database.rb
|
|
64
70
|
- spec/support/database.sample.yml
|
|
65
71
|
- spec/support/database.travis.yml
|
|
66
|
-
- spec/support/database.yml
|
|
67
72
|
- spec/support/models.rb
|
|
68
73
|
homepage: https://github.com/makandra/gemika
|
|
69
74
|
licenses:
|
|
@@ -84,8 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
84
89
|
- !ruby/object:Gem::Version
|
|
85
90
|
version: '0'
|
|
86
91
|
requirements: []
|
|
87
|
-
|
|
88
|
-
rubygems_version: 2.4.5.1
|
|
92
|
+
rubygems_version: 3.1.4
|
|
89
93
|
signing_key:
|
|
90
94
|
specification_version: 4
|
|
91
95
|
summary: Helpers for testing Ruby gems
|