gizzard 0.6.0 → 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/main.yml +87 -0
- data/.github/workflows/release.yml +33 -0
- data/.gitignore +2 -0
- data/Appraisals +17 -0
- data/README.md +11 -0
- data/docker-compose.yml +25 -0
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/activerecord5.2.gemfile +7 -0
- data/gemfiles/activerecord6.0.gemfile +7 -0
- data/gemfiles/activerecord6.1.gemfile +7 -0
- data/gemfiles/activerecord7.0.gemfile +7 -0
- data/gizzard.gemspec +6 -0
- data/lib/gizzard/base.rb +8 -0
- data/lib/gizzard/mysql.rb +1 -1
- data/lib/gizzard/version.rb +1 -1
- data/scripts/setup.sh +25 -0
- metadata +97 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3362e107fdc7cd0736d4379fb494c997227ab1a8c5e17185cc24b68aee792a5d
|
4
|
+
data.tar.gz: eb69873cc6a1904f038f7706c14a11182082fa40f01b711b10ade03fdab2f437
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec1938dabee7507a844f4e9bba151a638858d9ef16759c6be37159621be97770109ae2ea4881c0bbeeaf44dab36d4dfd6ac5cb1af4b79a17ec19d1cd80744056
|
7
|
+
data.tar.gz: 73cb4bba7160084998dcea8492ffd4c56d44efde5cce81c80cac9324d84cd3f3d1e6cb10086ac41748c49a379369934a03ef72c85665f204ec5e7e3f6d09a33b
|
@@ -0,0 +1,87 @@
|
|
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
|
+
activerecord:
|
29
|
+
- '5.2'
|
30
|
+
- '6.0'
|
31
|
+
- '6.1'
|
32
|
+
- '7.0'
|
33
|
+
exclude: # https://github.com/sue445/activerecord-compatible_legacy_migration/blob/master/.github/workflows/test.yml
|
34
|
+
- ruby: '2.6'
|
35
|
+
activerecord: '7.0'
|
36
|
+
- ruby: '3.0'
|
37
|
+
activerecord: '5.2'
|
38
|
+
- ruby: '3.1'
|
39
|
+
activerecord: '5.2'
|
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
|
+
env:
|
55
|
+
BUNDLE_GEMFILE: gemfiles/activerecord${{ matrix.activerecord }}.gemfile
|
56
|
+
DB_HOST: 127.0.0.1
|
57
|
+
|
58
|
+
steps:
|
59
|
+
- uses: actions/checkout@v2
|
60
|
+
|
61
|
+
- name: Set up Ruby
|
62
|
+
uses: ruby/setup-ruby@v1
|
63
|
+
with:
|
64
|
+
ruby-version: ${{ matrix.ruby }}
|
65
|
+
bundler-cache: true
|
66
|
+
|
67
|
+
- name: set MySQL sql_mode
|
68
|
+
run: |
|
69
|
+
mysql --ssl-mode=DISABLE --protocol=tcp --host 127.0.0.1 --user=root --password=${{ env.DB_PASSWORD }} mysql <<SQL
|
70
|
+
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
|
71
|
+
SET GLOBAL character_set_server = 'utf8mb4';
|
72
|
+
SET GLOBAL innodb_file_per_table = 1;
|
73
|
+
SET GLOBAL innodb_large_prefix = ON;
|
74
|
+
SQL
|
75
|
+
|
76
|
+
- name: set ENV
|
77
|
+
run: |
|
78
|
+
echo "DB_PORT=${{ job.services.mysql.ports[3306] }}" >> $GITHUB_ENV
|
79
|
+
|
80
|
+
- name: Setup DB
|
81
|
+
run: |
|
82
|
+
./scripts/setup.sh
|
83
|
+
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
84
|
+
|
85
|
+
- name: Run tests
|
86
|
+
run: bundle exec rspec
|
87
|
+
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
name: Release gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
inputs:
|
6
|
+
rubygems-otp-code:
|
7
|
+
description: RubyGems OTP code
|
8
|
+
required: true
|
9
|
+
|
10
|
+
permissions:
|
11
|
+
contents: write
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
release-gem:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
env:
|
17
|
+
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
18
|
+
GEM_HOST_OTP_CODE: ${{ github.event.inputs.rubygems-otp-code }}
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
with:
|
22
|
+
fetch-depth: 0 # bundle exec rake release で git tag を見るため、tagをfetchするようにしている
|
23
|
+
- uses: ruby/setup-ruby@v1
|
24
|
+
with:
|
25
|
+
ruby-version: 3.1.1
|
26
|
+
- name: Bundle install
|
27
|
+
run: bundle install
|
28
|
+
- name: Setup git config # bundle exec rake release でgit tagが打たれていない場合、タグを打ってpushしてくれるため用意している
|
29
|
+
run: |
|
30
|
+
git config --global user.email "taka0125@gmail.com"
|
31
|
+
git config --global user.name "Takahiro Ooishi"
|
32
|
+
- name: Release gem
|
33
|
+
run: bundle exec rake release
|
data/.gitignore
CHANGED
data/Appraisals
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
appraise 'activerecord5.2' do
|
2
|
+
gem 'activerecord', '~> 5.2'
|
3
|
+
end
|
4
|
+
|
5
|
+
appraise 'activerecord6.0' do
|
6
|
+
gem 'activerecord', '~> 6.0'
|
7
|
+
end
|
8
|
+
|
9
|
+
appraise 'activerecord6.1' do
|
10
|
+
gem 'activerecord', '~> 6.1'
|
11
|
+
end
|
12
|
+
|
13
|
+
if RUBY_VERSION >= '2.7.0'
|
14
|
+
appraise 'activerecord7.0' do
|
15
|
+
gem 'activerecord', '~> 7.0'
|
16
|
+
end
|
17
|
+
end
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Gizzard
|
2
2
|
|
3
|
+
[](https://github.com/taka0125/gizzard/actions)
|
4
|
+
|
3
5
|
Often use snippet for ActiveRecord.
|
4
6
|
|
5
7
|
## Installation
|
@@ -31,6 +33,15 @@ class ApplicationRecord < ActiveRecord::Base
|
|
31
33
|
end
|
32
34
|
```
|
33
35
|
|
36
|
+
## Run Test
|
37
|
+
|
38
|
+
```
|
39
|
+
$ bundle install
|
40
|
+
$ docker-compose up -d
|
41
|
+
$ ./scripts/setup.sh
|
42
|
+
$ bundle exec rspec
|
43
|
+
```
|
44
|
+
|
34
45
|
## Development
|
35
46
|
|
36
47
|
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,6 +25,12 @@ 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
35
|
spec.add_development_dependency "rake", ">= 12.3.3"
|
30
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
data/lib/gizzard/base.rb
CHANGED
@@ -3,6 +3,14 @@ module Gizzard
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
class_methods do
|
6
|
+
def preload_associations(records:, associations:, scope: nil)
|
7
|
+
if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new(7)
|
8
|
+
ActiveRecord::Associations::Preloader.new(records: records, associations: associations, scope: scope).call
|
9
|
+
else
|
10
|
+
ActiveRecord::Associations::Preloader.new.preload(records, associations, scope)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
6
14
|
def delete_all_by_id(batch_size: 1000)
|
7
15
|
ids = pluck(:id)
|
8
16
|
ids.sort!
|
data/lib/gizzard/mysql.rb
CHANGED
@@ -78,7 +78,7 @@ module Gizzard
|
|
78
78
|
|
79
79
|
c = connection
|
80
80
|
joins <<-SQL
|
81
|
-
#{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)}
|
82
82
|
SQL
|
83
83
|
end
|
84
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.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takahiro Ooishi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -38,6 +38,90 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ridgepole
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
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
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::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'
|
41
125
|
- !ruby/object:Gem::Dependency
|
42
126
|
name: bundler
|
43
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,20 +171,30 @@ executables: []
|
|
87
171
|
extensions: []
|
88
172
|
extra_rdoc_files: []
|
89
173
|
files:
|
174
|
+
- ".github/workflows/main.yml"
|
175
|
+
- ".github/workflows/release.yml"
|
90
176
|
- ".gitignore"
|
91
177
|
- ".rspec"
|
92
178
|
- ".travis.yml"
|
179
|
+
- Appraisals
|
93
180
|
- Gemfile
|
94
181
|
- LICENSE
|
95
182
|
- README.md
|
96
183
|
- Rakefile
|
97
184
|
- bin/console
|
98
185
|
- bin/setup
|
186
|
+
- docker-compose.yml
|
187
|
+
- gemfiles/.bundle/config
|
188
|
+
- gemfiles/activerecord5.2.gemfile
|
189
|
+
- gemfiles/activerecord6.0.gemfile
|
190
|
+
- gemfiles/activerecord6.1.gemfile
|
191
|
+
- gemfiles/activerecord7.0.gemfile
|
99
192
|
- gizzard.gemspec
|
100
193
|
- lib/gizzard.rb
|
101
194
|
- lib/gizzard/base.rb
|
102
195
|
- lib/gizzard/mysql.rb
|
103
196
|
- lib/gizzard/version.rb
|
197
|
+
- scripts/setup.sh
|
104
198
|
homepage: https://github.com/taka0125/gizzard
|
105
199
|
licenses: []
|
106
200
|
metadata: {}
|
@@ -119,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
213
|
- !ruby/object:Gem::Version
|
120
214
|
version: '0'
|
121
215
|
requirements: []
|
122
|
-
rubygems_version: 3.
|
216
|
+
rubygems_version: 3.3.7
|
123
217
|
signing_key:
|
124
218
|
specification_version: 4
|
125
219
|
summary: Often use snippet for ActiveRecord.
|