super_tools 3.0.1 → 4.0.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/test.yml +23 -1
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Appraisals +29 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +82 -55
- data/MULTI_RUBY_TESTING.md +170 -0
- data/bin/test_all +35 -0
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/ruby_2.7_rails_6.gemfile +8 -0
- data/gemfiles/ruby_2.7_rails_7.gemfile +8 -0
- data/gemfiles/ruby_3.0_rails_6.gemfile +8 -0
- data/gemfiles/ruby_3.0_rails_7.gemfile +8 -0
- data/gemfiles/ruby_3.1_rails_6.gemfile +8 -0
- data/gemfiles/ruby_3.1_rails_7.gemfile +8 -0
- data/lib/super_tools/version.rb +1 -1
- data/super_tools.gemspec +4 -2
- metadata +38 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1d1e0b59e703770a0f9814a9c2cdf430c8c59ad2c829f051c225efc391371d62
|
|
4
|
+
data.tar.gz: 6ed2cd40f528a32dac21da1a8e989e23aa3934b8738202081bc06c46692d86c9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 65b7559d21d89aee15e0cc5e4c524cd75337da56653a3ddcf8b1bc9bf686a2cad32b31c3c9683daa89fb64368d58e5db20c05a5cc775f8d66327fc2d203f0059
|
|
7
|
+
data.tar.gz: 6cdf1ddf5bf91ed407a3881bddfd041df0ad68e7e73e554461ac2d741c45aa4c478d3e974d0df493bdc953ccb0f650867a2b5ac756bdd62821dac77bb4d1ddfb
|
data/.github/workflows/test.yml
CHANGED
|
@@ -6,16 +6,38 @@ on:
|
|
|
6
6
|
- 'feat-**'
|
|
7
7
|
- develop
|
|
8
8
|
- master
|
|
9
|
+
pull_request:
|
|
9
10
|
|
|
10
11
|
jobs:
|
|
11
12
|
test:
|
|
12
13
|
runs-on: ubuntu-latest
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
include:
|
|
18
|
+
# Ruby 2.7.6
|
|
19
|
+
- ruby: '2.7.6'
|
|
20
|
+
gemfile: gemfiles/ruby_2.7_rails_6.gemfile
|
|
21
|
+
- ruby: '2.7.6'
|
|
22
|
+
gemfile: gemfiles/ruby_2.7_rails_7.gemfile
|
|
23
|
+
# Ruby 3.0.7
|
|
24
|
+
- ruby: '3.0.7'
|
|
25
|
+
gemfile: gemfiles/ruby_3.0_rails_6.gemfile
|
|
26
|
+
- ruby: '3.0.7'
|
|
27
|
+
gemfile: gemfiles/ruby_3.0_rails_7.gemfile
|
|
28
|
+
# Ruby 3.1.7
|
|
29
|
+
- ruby: '3.1.7'
|
|
30
|
+
gemfile: gemfiles/ruby_3.1_rails_6.gemfile
|
|
31
|
+
- ruby: '3.1.7'
|
|
32
|
+
gemfile: gemfiles/ruby_3.1_rails_7.gemfile
|
|
33
|
+
env:
|
|
34
|
+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
|
13
35
|
steps:
|
|
14
36
|
- uses: actions/checkout@v3
|
|
15
37
|
with:
|
|
16
38
|
fetch-depth: 1
|
|
17
39
|
- uses: ruby/setup-ruby@v1
|
|
18
40
|
with:
|
|
41
|
+
ruby-version: ${{ matrix.ruby }}
|
|
19
42
|
bundler-cache: true
|
|
20
|
-
- run: bundle
|
|
21
43
|
- run: bundle exec rake t
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2.7.6
|
data/Appraisals
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Ruby 2.7.6 with Rails 6
|
|
2
|
+
appraise "ruby-2.7-rails-6" do
|
|
3
|
+
gem "rails", "~> 6.1.0"
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
# Ruby 2.7.6 with Rails 7
|
|
7
|
+
appraise "ruby-2.7-rails-7" do
|
|
8
|
+
gem "rails", "~> 7.0.0"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Ruby 3.0.7 with Rails 6
|
|
12
|
+
appraise "ruby-3.0-rails-6" do
|
|
13
|
+
gem "rails", "~> 6.1.0"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Ruby 3.0.7 with Rails 7
|
|
17
|
+
appraise "ruby-3.0-rails-7" do
|
|
18
|
+
gem "rails", "~> 7.0.0"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Ruby 3.1.7 with Rails 6
|
|
22
|
+
appraise "ruby-3.1-rails-6" do
|
|
23
|
+
gem "rails", "~> 6.1.0"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Ruby 3.1.7 with Rails 7
|
|
27
|
+
appraise "ruby-3.1-rails-7" do
|
|
28
|
+
gem "rails", "~> 7.0.0"
|
|
29
|
+
end
|
data/Gemfile
CHANGED
|
@@ -5,4 +5,4 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
|
5
5
|
# Specify your gem's dependencies in super_tools.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
gem "reform-rails", github: "superlanding/reform-rails",
|
|
8
|
+
gem "reform-rails", github: "superlanding/reform-rails", tag: "v0.2.6.f"
|
data/Gemfile.lock
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
GIT
|
|
2
2
|
remote: https://github.com/superlanding/reform-rails
|
|
3
|
-
revision:
|
|
4
|
-
|
|
3
|
+
revision: 9309677a20293133167fe992e9795f367732b08f
|
|
4
|
+
tag: v0.2.6.f
|
|
5
5
|
specs:
|
|
6
|
-
reform-rails (0.2.
|
|
6
|
+
reform-rails (0.2.6)
|
|
7
7
|
activemodel (>= 5.0)
|
|
8
8
|
reform (>= 2.3.1, < 3.0.0)
|
|
9
9
|
|
|
10
10
|
PATH
|
|
11
11
|
remote: .
|
|
12
12
|
specs:
|
|
13
|
-
super_tools (
|
|
13
|
+
super_tools (4.0.0)
|
|
14
14
|
dry-logic (= 1.2.0)
|
|
15
15
|
dry-types (= 1.5.1)
|
|
16
16
|
fast_excel
|
|
17
17
|
forwardable
|
|
18
18
|
nokogiri (>= 1.6)
|
|
19
|
-
rails (
|
|
19
|
+
rails (>= 6.1, < 8)
|
|
20
20
|
reform (= 2.6.2)
|
|
21
21
|
reform-rails
|
|
22
22
|
roo
|
|
@@ -24,7 +24,7 @@ PATH
|
|
|
24
24
|
searchkick
|
|
25
25
|
spreadsheet
|
|
26
26
|
virtus (~> 1.0.5)
|
|
27
|
-
warehouse_items (
|
|
27
|
+
warehouse_items (>= 0.3.0)
|
|
28
28
|
|
|
29
29
|
GEM
|
|
30
30
|
remote: https://rubygems.org/
|
|
@@ -88,30 +88,34 @@ GEM
|
|
|
88
88
|
minitest (>= 5.1)
|
|
89
89
|
tzinfo (~> 2.0)
|
|
90
90
|
zeitwerk (~> 2.3)
|
|
91
|
+
appraisal (2.5.0)
|
|
92
|
+
bundler
|
|
93
|
+
rake
|
|
94
|
+
thor (>= 0.14.0)
|
|
91
95
|
axiom-types (0.1.1)
|
|
92
96
|
descendants_tracker (~> 0.0.4)
|
|
93
97
|
ice_nine (~> 0.11.0)
|
|
94
98
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
95
|
-
|
|
99
|
+
base64 (0.3.0)
|
|
100
|
+
bigdecimal (4.0.1)
|
|
101
|
+
builder (3.3.0)
|
|
96
102
|
coercible (1.0.0)
|
|
97
103
|
descendants_tracker (~> 0.0.1)
|
|
98
|
-
concurrent-ruby (1.
|
|
104
|
+
concurrent-ruby (1.3.6)
|
|
99
105
|
crass (1.0.6)
|
|
106
|
+
date (3.5.1)
|
|
100
107
|
declarative (0.0.20)
|
|
101
108
|
descendants_tracker (0.0.4)
|
|
102
109
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
103
110
|
disposable (0.6.3)
|
|
104
111
|
declarative (>= 0.0.9, < 1.0.0)
|
|
105
112
|
representable (>= 3.1.1, < 4)
|
|
106
|
-
dry-
|
|
113
|
+
dry-container (0.11.0)
|
|
107
114
|
concurrent-ruby (~> 1.0)
|
|
108
|
-
|
|
109
|
-
dry-container (0.9.0)
|
|
115
|
+
dry-core (0.9.1)
|
|
110
116
|
concurrent-ruby (~> 1.0)
|
|
111
|
-
|
|
112
|
-
dry-
|
|
113
|
-
concurrent-ruby (~> 1.0)
|
|
114
|
-
dry-inflector (0.2.1)
|
|
117
|
+
zeitwerk (~> 2.6)
|
|
118
|
+
dry-inflector (0.3.0)
|
|
115
119
|
dry-logic (1.2.0)
|
|
116
120
|
concurrent-ruby (~> 1.0)
|
|
117
121
|
dry-core (~> 0.5, >= 0.5)
|
|
@@ -122,34 +126,49 @@ GEM
|
|
|
122
126
|
dry-inflector (~> 0.1, >= 0.1.2)
|
|
123
127
|
dry-logic (~> 1.0, >= 1.0.2)
|
|
124
128
|
equalizer (0.0.11)
|
|
125
|
-
erubi (1.
|
|
126
|
-
fast_excel (0.
|
|
129
|
+
erubi (1.13.1)
|
|
130
|
+
fast_excel (0.5.0)
|
|
127
131
|
ffi (> 1.9, < 2)
|
|
128
|
-
ffi (1.
|
|
129
|
-
forwardable (1.
|
|
130
|
-
globalid (1.
|
|
131
|
-
activesupport (>=
|
|
132
|
-
hashie (5.
|
|
133
|
-
|
|
132
|
+
ffi (1.17.3)
|
|
133
|
+
forwardable (1.4.0)
|
|
134
|
+
globalid (1.3.0)
|
|
135
|
+
activesupport (>= 6.1)
|
|
136
|
+
hashie (5.1.0)
|
|
137
|
+
logger
|
|
138
|
+
i18n (1.14.8)
|
|
134
139
|
concurrent-ruby (~> 1.0)
|
|
135
140
|
ice_nine (0.11.2)
|
|
136
|
-
|
|
141
|
+
logger (1.7.0)
|
|
142
|
+
loofah (2.25.0)
|
|
137
143
|
crass (~> 1.0.2)
|
|
138
|
-
nokogiri (>= 1.
|
|
139
|
-
mail (2.
|
|
144
|
+
nokogiri (>= 1.12.0)
|
|
145
|
+
mail (2.9.0)
|
|
146
|
+
logger
|
|
140
147
|
mini_mime (>= 0.1.1)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
net-imap
|
|
149
|
+
net-pop
|
|
150
|
+
net-smtp
|
|
151
|
+
marcel (1.1.0)
|
|
152
|
+
method_source (1.1.0)
|
|
153
|
+
mini_mime (1.1.5)
|
|
154
|
+
minitest (5.26.1)
|
|
155
|
+
net-imap (0.4.23)
|
|
156
|
+
date
|
|
157
|
+
net-protocol
|
|
158
|
+
net-pop (0.1.2)
|
|
159
|
+
net-protocol
|
|
160
|
+
net-protocol (0.2.2)
|
|
161
|
+
timeout
|
|
162
|
+
net-smtp (0.5.1)
|
|
163
|
+
net-protocol
|
|
164
|
+
nio4r (2.7.5)
|
|
165
|
+
nokogiri (1.15.7-arm64-darwin)
|
|
147
166
|
racc (~> 1.4)
|
|
148
|
-
nokogiri (1.
|
|
167
|
+
nokogiri (1.15.7-x86_64-linux)
|
|
149
168
|
racc (~> 1.4)
|
|
150
|
-
racc (1.
|
|
151
|
-
rack (2.2.
|
|
152
|
-
rack-test (2.0
|
|
169
|
+
racc (1.8.1)
|
|
170
|
+
rack (2.2.21)
|
|
171
|
+
rack-test (2.2.0)
|
|
153
172
|
rack (>= 1.3)
|
|
154
173
|
rails (6.1.6)
|
|
155
174
|
actioncable (= 6.1.6)
|
|
@@ -166,11 +185,13 @@ GEM
|
|
|
166
185
|
bundler (>= 1.15.0)
|
|
167
186
|
railties (= 6.1.6)
|
|
168
187
|
sprockets-rails (>= 2.0.0)
|
|
169
|
-
rails-dom-testing (2.0
|
|
170
|
-
activesupport (>=
|
|
188
|
+
rails-dom-testing (2.3.0)
|
|
189
|
+
activesupport (>= 5.0.0)
|
|
190
|
+
minitest
|
|
171
191
|
nokogiri (>= 1.6)
|
|
172
|
-
rails-html-sanitizer (1.
|
|
173
|
-
loofah (~> 2.
|
|
192
|
+
rails-html-sanitizer (1.6.2)
|
|
193
|
+
loofah (~> 2.21)
|
|
194
|
+
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
|
174
195
|
railties (6.1.6)
|
|
175
196
|
actionpack (= 6.1.6)
|
|
176
197
|
activesupport (= 6.1.6)
|
|
@@ -186,33 +207,37 @@ GEM
|
|
|
186
207
|
declarative (< 0.1.0)
|
|
187
208
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
|
188
209
|
uber (< 0.2.0)
|
|
189
|
-
roo (2.
|
|
210
|
+
roo (2.10.1)
|
|
190
211
|
nokogiri (~> 1)
|
|
191
212
|
rubyzip (>= 1.3.0, < 3.0.0)
|
|
192
213
|
roo-xls (1.2.0)
|
|
193
214
|
nokogiri
|
|
194
215
|
roo (>= 2.0.0, < 3)
|
|
195
216
|
spreadsheet (> 0.9.0)
|
|
196
|
-
ruby-ole (1.2.
|
|
197
|
-
rubyzip (2.
|
|
198
|
-
searchkick (5.
|
|
217
|
+
ruby-ole (1.2.13.1)
|
|
218
|
+
rubyzip (2.4.1)
|
|
219
|
+
searchkick (5.2.4)
|
|
199
220
|
activemodel (>= 5.2)
|
|
200
221
|
hashie
|
|
201
222
|
shoulda-context (2.0.0)
|
|
202
|
-
spreadsheet (1.3.
|
|
223
|
+
spreadsheet (1.3.4)
|
|
224
|
+
bigdecimal
|
|
225
|
+
logger
|
|
203
226
|
ruby-ole
|
|
204
|
-
sprockets (4.
|
|
227
|
+
sprockets (4.2.2)
|
|
205
228
|
concurrent-ruby (~> 1.0)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
229
|
+
logger
|
|
230
|
+
rack (>= 2.2.4, < 4)
|
|
231
|
+
sprockets-rails (3.5.2)
|
|
232
|
+
actionpack (>= 6.1)
|
|
233
|
+
activesupport (>= 6.1)
|
|
210
234
|
sprockets (>= 3.0.0)
|
|
211
235
|
sqlite3 (1.4.4)
|
|
212
236
|
thor (1.2.1)
|
|
213
237
|
thread_safe (0.3.6)
|
|
238
|
+
timeout (0.6.0)
|
|
214
239
|
trailblazer-option (0.1.2)
|
|
215
|
-
tzinfo (2.0.
|
|
240
|
+
tzinfo (2.0.6)
|
|
216
241
|
concurrent-ruby (~> 1.0)
|
|
217
242
|
uber (0.1.0)
|
|
218
243
|
virtus (1.0.5)
|
|
@@ -220,19 +245,21 @@ GEM
|
|
|
220
245
|
coercible (~> 1.0)
|
|
221
246
|
descendants_tracker (~> 0.0, >= 0.0.3)
|
|
222
247
|
equalizer (~> 0.0, >= 0.0.9)
|
|
223
|
-
warehouse_items (0.
|
|
248
|
+
warehouse_items (1.0.0)
|
|
224
249
|
activesupport
|
|
225
250
|
warning (1.2.1)
|
|
226
|
-
websocket-driver (0.
|
|
251
|
+
websocket-driver (0.8.0)
|
|
252
|
+
base64
|
|
227
253
|
websocket-extensions (>= 0.1.0)
|
|
228
254
|
websocket-extensions (0.1.5)
|
|
229
|
-
zeitwerk (2.6.
|
|
255
|
+
zeitwerk (2.6.18)
|
|
230
256
|
|
|
231
257
|
PLATFORMS
|
|
232
258
|
arm64-darwin-21
|
|
233
259
|
x86_64-linux
|
|
234
260
|
|
|
235
261
|
DEPENDENCIES
|
|
262
|
+
appraisal
|
|
236
263
|
bundler (>= 2, < 3)
|
|
237
264
|
minitest (~> 5.0)
|
|
238
265
|
rake (>= 12.2)
|
|
@@ -243,4 +270,4 @@ DEPENDENCIES
|
|
|
243
270
|
warning
|
|
244
271
|
|
|
245
272
|
BUNDLED WITH
|
|
246
|
-
2.3.
|
|
273
|
+
2.3.14
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Multi-Ruby Version Testing Guide
|
|
2
|
+
|
|
3
|
+
本專案已設定支援多個 Ruby 版本(2.7.6, 3.0.7, 3.1.7)與 Rails 版本(6.x, 7.x)的測試環境。
|
|
4
|
+
|
|
5
|
+
## 支援的版本組合
|
|
6
|
+
|
|
7
|
+
### Ruby 版本
|
|
8
|
+
- **Ruby 2.7.6**
|
|
9
|
+
- **Ruby 3.0.7**
|
|
10
|
+
- **Ruby 3.1.7**
|
|
11
|
+
|
|
12
|
+
### Rails 版本
|
|
13
|
+
- **Rails 6.1.x**
|
|
14
|
+
- **Rails 7.0.x**
|
|
15
|
+
|
|
16
|
+
### 測試矩陣(共 6 個組合)
|
|
17
|
+
1. Ruby 2.7.6 + Rails 6.1
|
|
18
|
+
2. Ruby 2.7.6 + Rails 7.0
|
|
19
|
+
3. Ruby 3.0.7 + Rails 6.1
|
|
20
|
+
4. Ruby 3.0.7 + Rails 7.0
|
|
21
|
+
5. Ruby 3.1.7 + Rails 6.1
|
|
22
|
+
6. Ruby 3.1.7 + Rails 7.0
|
|
23
|
+
|
|
24
|
+
## 專案結構
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
.
|
|
28
|
+
├── Appraisals # Appraisal 設定檔
|
|
29
|
+
├── gemfiles/ # 各版本組合的 Gemfile
|
|
30
|
+
│ ├── ruby_2.7_rails_6.gemfile
|
|
31
|
+
│ ├── ruby_2.7_rails_7.gemfile
|
|
32
|
+
│ ├── ruby_3.0_rails_6.gemfile
|
|
33
|
+
│ ├── ruby_3.0_rails_7.gemfile
|
|
34
|
+
│ ├── ruby_3.1_rails_6.gemfile
|
|
35
|
+
│ └── ruby_3.1_rails_7.gemfile
|
|
36
|
+
├── bin/test_all # 本地測試所有版本的腳本
|
|
37
|
+
└── .github/workflows/test.yml # GitHub Actions 設定
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 本地測試
|
|
41
|
+
|
|
42
|
+
### 測試所有組合
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
bin/test_all
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
此腳本會依序測試所有 6 個 Ruby + Rails 版本組合。
|
|
49
|
+
|
|
50
|
+
### 測試特定組合
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Ruby 2.7.6 + Rails 6
|
|
54
|
+
bundle exec appraisal ruby-2.7-rails-6 rake t
|
|
55
|
+
|
|
56
|
+
# Ruby 2.7.6 + Rails 7
|
|
57
|
+
bundle exec appraisal ruby-2.7-rails-7 rake t
|
|
58
|
+
|
|
59
|
+
# Ruby 3.0.7 + Rails 6
|
|
60
|
+
bundle exec appraisal ruby-3.0-rails-6 rake t
|
|
61
|
+
|
|
62
|
+
# Ruby 3.0.7 + Rails 7
|
|
63
|
+
bundle exec appraisal ruby-3.0-rails-7 rake t
|
|
64
|
+
|
|
65
|
+
# Ruby 3.1.7 + Rails 6
|
|
66
|
+
bundle exec appraisal ruby-3.1-rails-6 rake t
|
|
67
|
+
|
|
68
|
+
# Ruby 3.1.7 + Rails 7
|
|
69
|
+
bundle exec appraisal ruby-3.1-rails-7 rake t
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 安裝所有版本的依賴
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
bundle install
|
|
76
|
+
bundle exec appraisal install
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## GitHub Actions
|
|
80
|
+
|
|
81
|
+
當你推送程式碼到以下分支時,GitHub Actions 會自動測試所有版本組合:
|
|
82
|
+
- `fix-**`
|
|
83
|
+
- `feat-**`
|
|
84
|
+
- `develop`
|
|
85
|
+
- `master`
|
|
86
|
+
- Pull Requests
|
|
87
|
+
|
|
88
|
+
測試矩陣會執行所有 6 個 Ruby + Rails 版本組合測試。
|
|
89
|
+
|
|
90
|
+
### CI 配置
|
|
91
|
+
|
|
92
|
+
GitHub Actions 使用明確的版本號:
|
|
93
|
+
- Ruby: `2.7.6`, `3.0.7`, `3.1.7`
|
|
94
|
+
- Rails: `~> 6.1.0`, `~> 7.0.0`
|
|
95
|
+
|
|
96
|
+
## 依賴套件相容性
|
|
97
|
+
|
|
98
|
+
所有主要依賴套件都支援 Ruby 2.7+ 和 Rails 6/7:
|
|
99
|
+
|
|
100
|
+
### 核心依賴
|
|
101
|
+
- **Rails** - 支援 6.1.x 和 7.0.x
|
|
102
|
+
- **nokogiri** >= 1.6 - 支援 Ruby 2.7+
|
|
103
|
+
- **fast_excel** - 支援 Ruby 2.5+
|
|
104
|
+
- **roo** - 支援 Ruby 2.5+
|
|
105
|
+
- **dry-types** 1.5.1 - 支援 Ruby 2.7+
|
|
106
|
+
- **dry-logic** 1.2.0 - 支援 Ruby 2.7+
|
|
107
|
+
- **reform** 2.6.2 - 支援 Ruby 2.5+
|
|
108
|
+
- **reform-rails** - 支援 Rails 6/7
|
|
109
|
+
- **searchkick** - 支援 Ruby 2.6+
|
|
110
|
+
- **virtus** ~> 1.0.5 - 支援 Ruby 2.7+
|
|
111
|
+
|
|
112
|
+
### Rails 7 特定依賴
|
|
113
|
+
Rails 7 會自動引入以下額外依賴:
|
|
114
|
+
- `benchmark`
|
|
115
|
+
- `drb`
|
|
116
|
+
- `mutex_m`
|
|
117
|
+
- `securerandom`
|
|
118
|
+
|
|
119
|
+
## 更新依賴
|
|
120
|
+
|
|
121
|
+
當你需要更新 gemfiles 時:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# 編輯 Appraisals 檔案
|
|
125
|
+
# 然後重新生成 gemfiles
|
|
126
|
+
bundle exec appraisal install
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
如需更新某個特定組合的依賴:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
bundle exec appraisal ruby-3.1-rails-7 bundle update
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## 開發建議
|
|
136
|
+
|
|
137
|
+
1. **本地開發環境**:建議使用 Ruby 2.7.6 作為預設開發版本(見 `.ruby-version`)
|
|
138
|
+
|
|
139
|
+
2. **提交前測試**:在提交 PR 前,建議至少測試以下組合:
|
|
140
|
+
- 最低版本:Ruby 2.7.6 + Rails 6.1
|
|
141
|
+
- 最高版本:Ruby 3.1.7 + Rails 7.0
|
|
142
|
+
|
|
143
|
+
3. **新增依賴**:確保新增的依賴套件都支援:
|
|
144
|
+
- Ruby >= 2.7.0
|
|
145
|
+
- Rails >= 6.1, < 8
|
|
146
|
+
|
|
147
|
+
## 注意事項
|
|
148
|
+
|
|
149
|
+
- `gemfiles/*.lock` 檔案已加入 `.gitignore`,不會被 commit
|
|
150
|
+
- `gemfiles/*.gemfile` 檔案會被 commit,確保 CI/CD 環境一致性
|
|
151
|
+
- gemspec 中 Rails 版本範圍設定為 `">= 6.1", "< 8"`,支援 Rails 6 和 7
|
|
152
|
+
- 確保新增的依賴套件都支援 Ruby 2.7+ 和 Rails 6/7
|
|
153
|
+
|
|
154
|
+
## 疑難排解
|
|
155
|
+
|
|
156
|
+
### 問題:bundle install 失敗
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# 清理並重新安裝
|
|
160
|
+
rm -rf gemfiles/.bundle
|
|
161
|
+
bundle exec appraisal install
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 問題:某個組合測試失敗
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# 重新安裝該組合的依賴
|
|
168
|
+
bundle exec appraisal ruby-3.1-rails-7 bundle install
|
|
169
|
+
bundle exec appraisal ruby-3.1-rails-7 rake t
|
|
170
|
+
```
|
data/bin/test_all
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
echo "=== Testing all Ruby versions with Rails 6 & 7 ==="
|
|
6
|
+
echo ""
|
|
7
|
+
|
|
8
|
+
# Check if appraisal is installed
|
|
9
|
+
if ! bundle exec appraisal -h > /dev/null 2>&1; then
|
|
10
|
+
echo "Error: appraisal gem not found. Please run 'bundle install' first."
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Test each combination
|
|
15
|
+
combinations=(
|
|
16
|
+
"ruby-2.7-rails-6:Ruby 2.7.6 + Rails 6"
|
|
17
|
+
"ruby-2.7-rails-7:Ruby 2.7.6 + Rails 7"
|
|
18
|
+
"ruby-3.0-rails-6:Ruby 3.0.7 + Rails 6"
|
|
19
|
+
"ruby-3.0-rails-7:Ruby 3.0.7 + Rails 7"
|
|
20
|
+
"ruby-3.1-rails-6:Ruby 3.1.7 + Rails 6"
|
|
21
|
+
"ruby-3.1-rails-7:Ruby 3.1.7 + Rails 7"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
for combo in "${combinations[@]}"; do
|
|
25
|
+
IFS=':' read -r appraisal_name display_name <<< "$combo"
|
|
26
|
+
echo "===================================="
|
|
27
|
+
echo "Testing: $display_name"
|
|
28
|
+
echo "===================================="
|
|
29
|
+
bundle exec appraisal $appraisal_name rake t
|
|
30
|
+
echo ""
|
|
31
|
+
done
|
|
32
|
+
|
|
33
|
+
echo "===================================="
|
|
34
|
+
echo "All tests completed!"
|
|
35
|
+
echo "===================================="
|
data/lib/super_tools/version.rb
CHANGED
data/super_tools.gemspec
CHANGED
|
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.description = %q{Rails 開發環境常用工具 Forms/Process/Spreadsheet}
|
|
13
13
|
spec.homepage = "https://github.com/superlanding/super_tools"
|
|
14
14
|
spec.license = "MIT"
|
|
15
|
+
spec.required_ruby_version = ">= 2.7.0"
|
|
15
16
|
|
|
16
17
|
# Specify which files should be added to the gem when it is released.
|
|
17
18
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
@@ -28,8 +29,9 @@ Gem::Specification.new do |spec|
|
|
|
28
29
|
spec.add_development_dependency "shoulda-context"
|
|
29
30
|
spec.add_development_dependency "warning"
|
|
30
31
|
spec.add_development_dependency "sqlite3", "1.4.4"
|
|
32
|
+
spec.add_development_dependency "appraisal"
|
|
31
33
|
|
|
32
|
-
spec.add_dependency "rails", "
|
|
34
|
+
spec.add_dependency "rails", ">= 6.1", "< 8"
|
|
33
35
|
spec.add_dependency "nokogiri", ">= 1.6"
|
|
34
36
|
spec.add_dependency "fast_excel"
|
|
35
37
|
spec.add_dependency "roo"
|
|
@@ -37,7 +39,7 @@ Gem::Specification.new do |spec|
|
|
|
37
39
|
spec.add_dependency "spreadsheet"
|
|
38
40
|
spec.add_dependency "virtus", "~> 1.0.5"
|
|
39
41
|
spec.add_dependency "forwardable"
|
|
40
|
-
spec.add_dependency "warehouse_items", "
|
|
42
|
+
spec.add_dependency "warehouse_items", ">= 0.3.0"
|
|
41
43
|
spec.add_dependency "searchkick"
|
|
42
44
|
|
|
43
45
|
spec.add_dependency "reform", "2.6.2"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: super_tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- eddie
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -100,26 +100,40 @@ dependencies:
|
|
|
100
100
|
- - '='
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
102
|
version: 1.4.4
|
|
103
|
+
- !ruby/object:Gem::Dependency
|
|
104
|
+
name: appraisal
|
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - ">="
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
type: :development
|
|
111
|
+
prerelease: false
|
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - ">="
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: '0'
|
|
103
117
|
- !ruby/object:Gem::Dependency
|
|
104
118
|
name: rails
|
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
|
106
120
|
requirements:
|
|
107
|
-
- - "
|
|
121
|
+
- - ">="
|
|
108
122
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '6'
|
|
123
|
+
version: '6.1'
|
|
110
124
|
- - "<"
|
|
111
125
|
- !ruby/object:Gem::Version
|
|
112
|
-
version: '
|
|
126
|
+
version: '8'
|
|
113
127
|
type: :runtime
|
|
114
128
|
prerelease: false
|
|
115
129
|
version_requirements: !ruby/object:Gem::Requirement
|
|
116
130
|
requirements:
|
|
117
|
-
- - "
|
|
131
|
+
- - ">="
|
|
118
132
|
- !ruby/object:Gem::Version
|
|
119
|
-
version: '6'
|
|
133
|
+
version: '6.1'
|
|
120
134
|
- - "<"
|
|
121
135
|
- !ruby/object:Gem::Version
|
|
122
|
-
version: '
|
|
136
|
+
version: '8'
|
|
123
137
|
- !ruby/object:Gem::Dependency
|
|
124
138
|
name: nokogiri
|
|
125
139
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -222,16 +236,16 @@ dependencies:
|
|
|
222
236
|
name: warehouse_items
|
|
223
237
|
requirement: !ruby/object:Gem::Requirement
|
|
224
238
|
requirements:
|
|
225
|
-
- - "
|
|
239
|
+
- - ">="
|
|
226
240
|
- !ruby/object:Gem::Version
|
|
227
|
-
version:
|
|
241
|
+
version: 0.3.0
|
|
228
242
|
type: :runtime
|
|
229
243
|
prerelease: false
|
|
230
244
|
version_requirements: !ruby/object:Gem::Requirement
|
|
231
245
|
requirements:
|
|
232
|
-
- - "
|
|
246
|
+
- - ">="
|
|
233
247
|
- !ruby/object:Gem::Version
|
|
234
|
-
version:
|
|
248
|
+
version: 0.3.0
|
|
235
249
|
- !ruby/object:Gem::Dependency
|
|
236
250
|
name: searchkick
|
|
237
251
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -313,14 +327,24 @@ files:
|
|
|
313
327
|
- ".gitignore"
|
|
314
328
|
- ".ruby-version"
|
|
315
329
|
- ".travis.yml"
|
|
330
|
+
- Appraisals
|
|
316
331
|
- Gemfile
|
|
317
332
|
- Gemfile.lock
|
|
318
333
|
- LICENSE.txt
|
|
334
|
+
- MULTI_RUBY_TESTING.md
|
|
319
335
|
- README.md
|
|
320
336
|
- Rakefile
|
|
321
337
|
- bin/console
|
|
322
338
|
- bin/setup
|
|
339
|
+
- bin/test_all
|
|
323
340
|
- dependabot.yml
|
|
341
|
+
- gemfiles/.bundle/config
|
|
342
|
+
- gemfiles/ruby_2.7_rails_6.gemfile
|
|
343
|
+
- gemfiles/ruby_2.7_rails_7.gemfile
|
|
344
|
+
- gemfiles/ruby_3.0_rails_6.gemfile
|
|
345
|
+
- gemfiles/ruby_3.0_rails_7.gemfile
|
|
346
|
+
- gemfiles/ruby_3.1_rails_6.gemfile
|
|
347
|
+
- gemfiles/ruby_3.1_rails_7.gemfile
|
|
324
348
|
- lib/super_form/basic.rb
|
|
325
349
|
- lib/super_form/concerns/atomic_save.rb
|
|
326
350
|
- lib/super_form/reform.rb
|
|
@@ -374,14 +398,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
374
398
|
requirements:
|
|
375
399
|
- - ">="
|
|
376
400
|
- !ruby/object:Gem::Version
|
|
377
|
-
version:
|
|
401
|
+
version: 2.7.0
|
|
378
402
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
379
403
|
requirements:
|
|
380
404
|
- - ">="
|
|
381
405
|
- !ruby/object:Gem::Version
|
|
382
406
|
version: '0'
|
|
383
407
|
requirements: []
|
|
384
|
-
rubygems_version: 3.
|
|
408
|
+
rubygems_version: 3.1.6
|
|
385
409
|
signing_key:
|
|
386
410
|
specification_version: 4
|
|
387
411
|
summary: Rails 開發環境常用工具 Forms/Process/Spreadsheet
|