gizzard 0.4.0 → 0.6.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/main.yml +88 -0
- data/.gitignore +2 -0
- data/Appraisals +13 -0
- data/README.md +9 -0
- data/docker-compose.yml +25 -0
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/activerecord52.gemfile +7 -0
- data/gemfiles/activerecord61.gemfile +7 -0
- data/gemfiles/activerecord70.gemfile +7 -0
- data/gizzard.gemspec +7 -1
- data/lib/gizzard/base.rb +9 -0
- data/lib/gizzard/mysql.rb +3 -1
- data/lib/gizzard/version.rb +1 -1
- data/scripts/setup.sh +25 -0
- metadata +102 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81d147ac8288bce93fda46dada8bb6db91d2be7144cc7047699eb5ded19e2e0c
|
4
|
+
data.tar.gz: f5737b10b7bf1ad26771f6930fb3c133cf7017783680ffc6c9b78a2975dbdd9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d2baf44f2ace1f7d4634eeedc0e5ddf56b4aadc90446b155d03b2560329b6f43e3336a09eecf702215b551402e3c09a636399d7b16781d8c29e99ff8117a387
|
7
|
+
data.tar.gz: 5048e964a75f0402202319ce5bda883709429e616cf520dc59d458b34493c0eacc165cba92fe43b90a5ccc8dfb308e4763afd8d6ead996a20d78e994cc6ec0ac
|
@@ -0,0 +1,88 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
|
8
|
+
pull_request:
|
9
|
+
branches:
|
10
|
+
- main
|
11
|
+
|
12
|
+
env:
|
13
|
+
RAILS_ENV: test
|
14
|
+
DB_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
strategy:
|
20
|
+
fail-fast: false
|
21
|
+
|
22
|
+
matrix:
|
23
|
+
ruby:
|
24
|
+
- 2.6
|
25
|
+
- 2.7
|
26
|
+
- 3.0
|
27
|
+
- 3.1
|
28
|
+
gemfile:
|
29
|
+
- activerecord52
|
30
|
+
- activerecord61
|
31
|
+
- activerecord70
|
32
|
+
exclude: # https://github.com/sue445/activerecord-compatible_legacy_migration/blob/master/.github/workflows/test.yml
|
33
|
+
- ruby: 2.6
|
34
|
+
gemfile: activerecord70
|
35
|
+
- ruby: 3.0
|
36
|
+
gemfile: activerecord52
|
37
|
+
- ruby: 3.1
|
38
|
+
gemfile: activerecord52
|
39
|
+
|
40
|
+
services:
|
41
|
+
mysql:
|
42
|
+
image: mysql:5.7
|
43
|
+
ports:
|
44
|
+
- 3306:3306
|
45
|
+
env:
|
46
|
+
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}
|
47
|
+
MYSQL_DATABASE: ${{ env.DB_NAME }}
|
48
|
+
options: >-
|
49
|
+
--health-cmd "mysqladmin ping"
|
50
|
+
--health-interval 10s
|
51
|
+
--health-timeout 5s
|
52
|
+
--health-retries 5
|
53
|
+
|
54
|
+
|
55
|
+
env:
|
56
|
+
BUNDLE_GEMFILE: /home/runner/work/gizzard/gizzard/gemfiles/${{ matrix.gemfile }}.gemfile
|
57
|
+
DB_HOST: 127.0.0.1
|
58
|
+
|
59
|
+
steps:
|
60
|
+
- uses: actions/checkout@v2
|
61
|
+
|
62
|
+
- name: Set up Ruby
|
63
|
+
uses: ruby/setup-ruby@v1
|
64
|
+
with:
|
65
|
+
ruby-version: ${{ matrix.ruby }}
|
66
|
+
bundler-cache: true
|
67
|
+
|
68
|
+
- name: set MySQL sql_mode
|
69
|
+
run: |
|
70
|
+
mysql --ssl-mode=DISABLE --protocol=tcp --host 127.0.0.1 --user=root --password=${{ env.DB_PASSWORD }} mysql <<SQL
|
71
|
+
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
72
|
+
SET GLOBAL character_set_server = 'utf8mb4';
|
73
|
+
SET GLOBAL innodb_file_per_table = 1;
|
74
|
+
SET GLOBAL innodb_large_prefix = ON;
|
75
|
+
SQL
|
76
|
+
|
77
|
+
- name: set ENV
|
78
|
+
run: |
|
79
|
+
echo "DB_PORT=${{ job.services.mysql.ports[3306] }}" >> $GITHUB_ENV
|
80
|
+
|
81
|
+
- name: Setup DB
|
82
|
+
run: |
|
83
|
+
./scripts/setup.sh
|
84
|
+
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
85
|
+
|
86
|
+
- name: Run tests
|
87
|
+
run: bundle exec rspec
|
88
|
+
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
data/.gitignore
CHANGED
data/Appraisals
ADDED
data/README.md
CHANGED
@@ -31,6 +31,15 @@ class ApplicationRecord < ActiveRecord::Base
|
|
31
31
|
end
|
32
32
|
```
|
33
33
|
|
34
|
+
## Run Test
|
35
|
+
|
36
|
+
```
|
37
|
+
$ bundle install
|
38
|
+
$ docker-compose up -d
|
39
|
+
$ ./scripts/setup.sh
|
40
|
+
$ bundle exec rspec
|
41
|
+
```
|
42
|
+
|
34
43
|
## Development
|
35
44
|
|
36
45
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
version: '3.9'
|
2
|
+
|
3
|
+
x-mysql: &mysql
|
4
|
+
image: mysql:5.7
|
5
|
+
container_name: gizzard_mysql57
|
6
|
+
environment:
|
7
|
+
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-5y8m2jzTamDS6M85ateGrA6pihhyCm}
|
8
|
+
platform: linux/x86_64
|
9
|
+
ports:
|
10
|
+
- 127.0.0.1:${DB_PORT:-33306}:3306
|
11
|
+
volumes:
|
12
|
+
- mysql:/var/lib/mysql
|
13
|
+
command: >
|
14
|
+
mysqld
|
15
|
+
--sql-mode=NO_ENGINE_SUBSTITUTION
|
16
|
+
--character-set-server=utf8mb4
|
17
|
+
--innodb-file-per-table=1
|
18
|
+
--innodb-large-prefix
|
19
|
+
|
20
|
+
services:
|
21
|
+
mysql:
|
22
|
+
<<: *mysql
|
23
|
+
|
24
|
+
volumes:
|
25
|
+
mysql:
|
data/gizzard.gemspec
CHANGED
@@ -25,7 +25,13 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency "activerecord", ">= 5.2"
|
26
26
|
spec.add_dependency "activesupport", ">= 5.2"
|
27
27
|
|
28
|
+
spec.add_development_dependency "ridgepole"
|
29
|
+
spec.add_development_dependency "database_cleaner-active_record"
|
30
|
+
spec.add_development_dependency "mysql2"
|
31
|
+
spec.add_development_dependency "psych", "~> 3.1"
|
32
|
+
spec.add_development_dependency "standalone_activerecord_boot_loader"
|
33
|
+
spec.add_development_dependency "appraisal"
|
28
34
|
spec.add_development_dependency "bundler"
|
29
|
-
spec.add_development_dependency "rake", "
|
35
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
30
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
31
37
|
end
|
data/lib/gizzard/base.rb
CHANGED
@@ -3,6 +3,15 @@ module Gizzard
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
class_methods do
|
6
|
+
def delete_all_by_id(batch_size: 1000)
|
7
|
+
ids = pluck(:id)
|
8
|
+
ids.sort!
|
9
|
+
ids.each_slice(batch_size) do |chunked_ids|
|
10
|
+
# unscoped入れないと既に適用されているスコープが引き継がれる
|
11
|
+
unscoped.all.where(id: chunked_ids).delete_all
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
6
15
|
def less_than_id(id)
|
7
16
|
less_than(:id, id)
|
8
17
|
end
|
data/lib/gizzard/mysql.rb
CHANGED
@@ -3,6 +3,8 @@ module Gizzard
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
+
include Base
|
7
|
+
|
6
8
|
scope :filtered_by, -> (column, value) do
|
7
9
|
v = value.respond_to?(:strip) ? value.strip : value
|
8
10
|
v.present? ? where(column => value) : all
|
@@ -76,7 +78,7 @@ module Gizzard
|
|
76
78
|
|
77
79
|
c = connection
|
78
80
|
joins <<-SQL
|
79
|
-
#{join} #{c.quote_table_name(join_table_name)} #{index_hint}
|
81
|
+
#{join} #{c.quote_table_name(join_table_name)} #{index_hint}(#{Array(indexes).join(', ')}) ON #{c.quote_table_name(table_name)}.#{c.quote_column_name(relation.association_primary_key)} = #{c.quote_table_name(join_table_name)}.#{c.quote_column_name(relation.foreign_key)}
|
80
82
|
SQL
|
81
83
|
end
|
82
84
|
end
|
data/lib/gizzard/version.rb
CHANGED
data/scripts/setup.sh
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
CURRENT=$(cd $(dirname $0);pwd)
|
5
|
+
DOCKER_MYSQL_PORT=$(docker port gizzard_mysql57 3306 2>/dev/null | cut -f 2 -d ':')
|
6
|
+
DOCKER_MYSQL_PORT=${DOCKER_MYSQL_PORT:-3306}
|
7
|
+
|
8
|
+
export DB_HOST=${DB_HOST:-127.0.0.1}
|
9
|
+
export DB_PORT=${DB_PORT:-${DOCKER_MYSQL_PORT}}
|
10
|
+
export DB_NAME=${DB_NAME:-gizzard_test}
|
11
|
+
export DB_USER=${DB_USER:-root}
|
12
|
+
export DB_PASSWORD=${DB_PASSWORD:-5y8m2jzTamDS6M85ateGrA6pihhyCm}
|
13
|
+
|
14
|
+
mysql \
|
15
|
+
-u ${DB_USER} \
|
16
|
+
-h ${DB_HOST} \
|
17
|
+
-p${DB_PASSWORD} \
|
18
|
+
--port ${DB_PORT} \
|
19
|
+
-e "CREATE DATABASE IF NOT EXISTS ${DB_NAME}"
|
20
|
+
|
21
|
+
bundle exec ridgepole \
|
22
|
+
-c ${CURRENT}/../spec/dummy/config/database.yml \
|
23
|
+
--apply \
|
24
|
+
-f ${CURRENT}/../spec/dummy/db/Schemafile \
|
25
|
+
-E test
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gizzard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takahiro Ooishi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ridgepole
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,19 +53,103 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: database_cleaner-active_record
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mysql2
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: psych
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
87
|
- - "~>"
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
89
|
+
version: '3.1'
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
94
|
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
96
|
+
version: '3.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: standalone_activerecord_boot_loader
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: appraisal
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: bundler
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 12.3.3
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 12.3.3
|
69
153
|
- !ruby/object:Gem::Dependency
|
70
154
|
name: rspec
|
71
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,24 +171,32 @@ executables: []
|
|
87
171
|
extensions: []
|
88
172
|
extra_rdoc_files: []
|
89
173
|
files:
|
174
|
+
- ".github/workflows/main.yml"
|
90
175
|
- ".gitignore"
|
91
176
|
- ".rspec"
|
92
177
|
- ".travis.yml"
|
178
|
+
- Appraisals
|
93
179
|
- Gemfile
|
94
180
|
- LICENSE
|
95
181
|
- README.md
|
96
182
|
- Rakefile
|
97
183
|
- bin/console
|
98
184
|
- bin/setup
|
185
|
+
- docker-compose.yml
|
186
|
+
- gemfiles/.bundle/config
|
187
|
+
- gemfiles/activerecord52.gemfile
|
188
|
+
- gemfiles/activerecord61.gemfile
|
189
|
+
- gemfiles/activerecord70.gemfile
|
99
190
|
- gizzard.gemspec
|
100
191
|
- lib/gizzard.rb
|
101
192
|
- lib/gizzard/base.rb
|
102
193
|
- lib/gizzard/mysql.rb
|
103
194
|
- lib/gizzard/version.rb
|
195
|
+
- scripts/setup.sh
|
104
196
|
homepage: https://github.com/taka0125/gizzard
|
105
197
|
licenses: []
|
106
198
|
metadata: {}
|
107
|
-
post_install_message:
|
199
|
+
post_install_message:
|
108
200
|
rdoc_options: []
|
109
201
|
require_paths:
|
110
202
|
- lib
|
@@ -119,8 +211,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
211
|
- !ruby/object:Gem::Version
|
120
212
|
version: '0'
|
121
213
|
requirements: []
|
122
|
-
rubygems_version: 3.
|
123
|
-
signing_key:
|
214
|
+
rubygems_version: 3.2.22
|
215
|
+
signing_key:
|
124
216
|
specification_version: 4
|
125
217
|
summary: Often use snippet for ActiveRecord.
|
126
218
|
test_files: []
|