u-case 4.1.0 → 4.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e43c3e14dcb10002feb94f83f7d9289b49164e5908f3e8b58fa64e62d69796db
4
- data.tar.gz: 9f3a37d02e5e1c1369f74e8cdf14cc3038fad55df5db08bd1a330dd7004e5ba1
3
+ metadata.gz: feb30aaeb689640c0e2690c14e9f951896ced470bb3a9d31262c6441a37e3e57
4
+ data.tar.gz: 7fceb73bac6e4f6bc82558636679ad646c7c454e8ff516bb920632fb2e1c29a6
5
5
  SHA512:
6
- metadata.gz: 744d7c78a228a3ae9197762f9e259dd72ab2f1b8c20af968fca4cbe46931c703abd9aa051c4aa0669b61f51b14d42a990834dc4fc34dc2f60a9f20d68867fbab
7
- data.tar.gz: 7da45bc3752296dd000bf016ef35ff7c993d0ea5c2218e43e6f1d492ec7d41f457e7048cf8b281d0ecb6f40efe05df19d07809d69db3a7a41df02f10028a7e68
6
+ metadata.gz: 27d50ac0ce1cb8129f752d181a5707bfe3ac8c2e2228448945d5d80b4b4cb7d6481b4b9a860bb9c686e34306c6aed0acb2a65fb507a807882f2de128bee7cfbd
7
+ data.tar.gz: 0fca08fe550b5519f3a754b529e2e636b04a9433be093219526fab694596d431950f308c5a4f322b0a7810ec63a448ce8feec230dab60d405465c57c19e5c8ea
data/README.md CHANGED
@@ -39,7 +39,7 @@ The main project goals are:
39
39
  Version | Documentation
40
40
  --------- | -------------
41
41
  unreleased| https://github.com/serradura/u-case/blob/main/README.md
42
- 4.1.0 | https://github.com/serradura/u-case/blob/v4.x/README.md
42
+ 4.1.1 | https://github.com/serradura/u-case/blob/v4.x/README.md
43
43
  3.1.0 | https://github.com/serradura/u-case/blob/v3.x/README.md
44
44
  2.6.0 | https://github.com/serradura/u-case/blob/v2.x/README.md
45
45
  1.1.0 | https://github.com/serradura/u-case/blob/v1.x/README.md
@@ -102,7 +102,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
102
102
  | u-case | branch | ruby | activemodel | u-attributes |
103
103
  | -------------- | ------- | -------- | ------------- | ------------ |
104
104
  | unreleased | main | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
105
- | 4.1.0 | v4.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
105
+ | 4.1.1 | v4.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
106
106
  | 3.1.0 | v3.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
107
107
  | 2.6.0 | v2.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
108
108
  | 1.1.0 | v1.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
@@ -1200,42 +1200,44 @@ end
1200
1200
 
1201
1201
  | Gem / Abstraction | Iterations per second | Comparison |
1202
1202
  | ----------------- | --------------------: | ----------------: |
1203
- | Dry::Monads | 281515.4 | _**The Fastest**_ |
1204
- | **Micro::Case** | 151711.3 | 1.86x slower |
1205
- | Interactor | 53016.2 | 5.31x slower |
1206
- | Trailblazer::Operation | 38314.2 | 7.35x slower |
1207
- | Dry::Transaction | 10440.7 | 26.96x slower |
1203
+ | Dry::Monads | 315635.1 | _**The Fastest**_ |
1204
+ | **Micro::Case** | 75837.7 | 4.16x slower |
1205
+ | Interactor | 59745.5 | 5.28x slower |
1206
+ | Trailblazer::Operation | 28423.9 | 11.10x slower |
1207
+ | Dry::Transaction | 10130.9 | 31.16x slower |
1208
1208
 
1209
1209
  <details>
1210
1210
  <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
1211
1211
 
1212
1212
  ```ruby
1213
1213
  # Warming up --------------------------------------
1214
- # Interactor 5.151k i/100ms
1215
- # Trailblazer::Operation 3.805k i/100ms
1216
- # Dry::Monads 28.153k i/100ms
1217
- # Dry::Transaction 1.063k i/100ms
1218
- # Micro::Case 15.159k i/100ms
1219
- # Micro::Case::Safe 15.172k i/100ms
1220
- # Micro::Case::Strict 12.557k i/100ms
1214
+ # Interactor 5.711k i/100ms
1215
+ # Trailblazer::Operation
1216
+ # 2.283k i/100ms
1217
+ # Dry::Monads 31.130k i/100ms
1218
+ # Dry::Transaction 994.000 i/100ms
1219
+ # Micro::Case 7.911k i/100ms
1220
+ # Micro::Case::Safe 7.911k i/100ms
1221
+ # Micro::Case::Strict 6.248k i/100ms
1221
1222
 
1222
1223
  # Calculating -------------------------------------
1223
- # Interactor 53.016k 1.8%) i/s - 267.852k in 5.053967s
1224
- # Trailblazer::Operation 38.314k (± 1.7%) i/s - 194.055k in 5.066374s
1225
- # Dry::Monads 281.515k 2.4%) i/s - 1.408M in 5.003266s
1226
- # Dry::Transaction 10.441k2.1%) i/s - 53.150k in 5.092957s
1227
- # Micro::Case 151.711k1.7%) i/s - 773.109k in 5.097555s
1228
- # Micro::Case::Safe 145.801k6.7%) i/s - 728.256k in 5.022666s
1229
- # Micro::Case::Strict 115.636k 8.4%) i/s - 577.622k in 5.042079s
1224
+ # Interactor 59.746k29.9%) i/s - 274.128k in 5.049901s
1225
+ # Trailblazer::Operation
1226
+ # 28.424k15.8%) i/s - 141.546k in 5.087882s
1227
+ # Dry::Monads 315.635k6.1%) i/s - 1.588M in 5.048914s
1228
+ # Dry::Transaction 10.131k6.4%) i/s - 50.694k in 5.025150s
1229
+ # Micro::Case 75.838k9.7%) i/s - 379.728k in 5.052573s
1230
+ # Micro::Case::Safe 75.461k10.1%) i/s - 379.728k in 5.079238s
1231
+ # Micro::Case::Strict 64.235k (± 9.0%) i/s - 324.896k in 5.097028s
1230
1232
 
1231
1233
  # Comparison:
1232
- # Dry::Monads: 281515.4 i/s
1233
- # Micro::Case: 151711.3 i/s - 1.86x (± 0.00) slower
1234
- # Micro::Case::Safe: 145800.8 i/s - 1.93x (± 0.00) slower
1235
- # Micro::Case::Strict: 115635.8 i/s - 2.43x (± 0.00) slower
1236
- # Interactor: 53016.2 i/s - 5.31x (± 0.00) slower
1237
- # Trailblazer::Operation: 38314.2 i/s - 7.35x (± 0.00) slower
1238
- # Dry::Transaction: 10440.7 i/s - 26.96x (± 0.00) slower
1234
+ # Dry::Monads: 315635.1 i/s
1235
+ # Micro::Case: 75837.7 i/s - 4.16x (± 0.00) slower
1236
+ # Micro::Case::Safe: 75461.3 i/s - 4.18x (± 0.00) slower
1237
+ # Micro::Case::Strict: 64234.9 i/s - 4.91x (± 0.00) slower
1238
+ # Interactor: 59745.5 i/s - 5.28x (± 0.00) slower
1239
+ # Trailblazer::Operation: 28423.9 i/s - 11.10x (± 0.00) slower
1240
+ # Dry::Transaction: 10130.9 i/s - 31.16x (± 0.00) slower
1239
1241
  ```
1240
1242
  </details>
1241
1243
 
@@ -1245,42 +1247,42 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/suc
1245
1247
 
1246
1248
  | Gem / Abstraction | Iterations per second | Comparison |
1247
1249
  | ----------------- | --------------------: | ----------------: |
1248
- | **Micro::Case** | 140794.0 | _**The Fastest**_ |
1249
- | Dry::Monads | 133865.5 | 0x slower |
1250
- | Trailblazer::Operation | 39829.9 | 3.53x slower |
1251
- | Interactor | 23856.0 | 5.90x slower |
1252
- | Dry::Transaction | 7975.0 | 17.65x slower |
1250
+ | Dry::Monads | 135386.9 | _**The Fastest**_ |
1251
+ | **Micro::Case** | 73489.3 | 1.85x slower |
1252
+ | Trailblazer::Operation | 29016.4 | 4.67x slower |
1253
+ | Interactor | 27037.0 | 5.01x slower |
1254
+ | Dry::Transaction | 8988.6 | 15.06x slower |
1253
1255
 
1254
1256
  <details>
1255
1257
  <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
1256
1258
 
1257
1259
  ```ruby
1258
1260
  # Warming up --------------------------------------
1259
- # Interactor 2.351k i/100ms
1260
- # Trailblazer::Operation 3.941k i/100ms
1261
- # Dry::Monads 13.567k i/100ms
1262
- # Dry::Transaction 927.000 i/100ms
1263
- # Micro::Case 14.959k i/100ms
1264
- # Micro::Case::Safe 14.904k i/100ms
1265
- # Micro::Case::Strict 12.007k i/100ms
1261
+ # Interactor 2.626k i/100ms
1262
+ # Trailblazer::Operation 2.343k i/100ms
1263
+ # Dry::Monads 13.386k i/100ms
1264
+ # Dry::Transaction 868.000 i/100ms
1265
+ # Micro::Case 7.603k i/100ms
1266
+ # Micro::Case::Safe 7.598k i/100ms
1267
+ # Micro::Case::Strict 6.178k i/100ms
1266
1268
 
1267
1269
  # Calculating -------------------------------------
1268
- # Interactor 23.856k 1.7%) i/s - 119.901k in 5.027585s
1269
- # Trailblazer::Operation 39.830k 1.2%) i/s - 200.991k in 5.047032s
1270
- # Dry::Monads 133.866k 2.5%) i/s - 678.350k in 5.070899s
1271
- # Dry::Transaction 7.975k8.6%) i/s - 39.861k in 5.036260s
1272
- # Micro::Case 130.534k24.4%) i/s - 583.401k in 5.040907s
1273
- # Micro::Case::Safe 140.794k8.1%) i/s - 700.488k in 5.020935s
1274
- # Micro::Case::Strict 102.641k21.3%) i/s - 480.280k in 5.020354s
1270
+ # Interactor 27.037k24.9%) i/s - 128.674k in 5.102133s
1271
+ # Trailblazer::Operation 29.016k12.4%) i/s - 145.266k in 5.074991s
1272
+ # Dry::Monads 135.387k15.1%) i/s - 669.300k in 5.055356s
1273
+ # Dry::Transaction 8.989k9.2%) i/s - 45.136k in 5.084820s
1274
+ # Micro::Case 73.247k 9.9%) i/s - 364.944k in 5.030449s
1275
+ # Micro::Case::Safe 73.489k9.6%) i/s - 364.704k in 5.007282s
1276
+ # Micro::Case::Strict 61.980k 8.0%) i/s - 308.900k in 5.014821s
1275
1277
 
1276
1278
  # Comparison:
1277
- # Micro::Case::Safe: 140794.0 i/s
1278
- # Dry::Monads: 133865.5 i/s - same-ish: difference falls within error
1279
- # Micro::Case: 130534.0 i/s - same-ish: difference falls within error
1280
- # Micro::Case::Strict: 102640.7 i/s - 1.37x (± 0.00) slower
1281
- # Trailblazer::Operation: 39829.9 i/s - 3.53x (± 0.00) slower
1282
- # Interactor: 23856.0 i/s - 5.90x (± 0.00) slower
1283
- # Dry::Transaction: 7975.0 i/s - 17.65x (± 0.00) slower
1279
+ # Dry::Monads: 135386.9 i/s
1280
+ # Micro::Case::Safe: 73489.3 i/s - 1.84x (± 0.00) slower
1281
+ # Micro::Case: 73246.6 i/s - 1.85x (± 0.00) slower
1282
+ # Micro::Case::Strict: 61979.7 i/s - 2.18x (± 0.00) slower
1283
+ # Trailblazer::Operation: 29016.4 i/s - 4.67x (± 0.00) slower
1284
+ # Interactor: 27037.0 i/s - 5.01x (± 0.00) slower
1285
+ # Dry::Transaction: 8988.6 i/s - 15.06x (± 0.00) slower
1284
1286
  ```
1285
1287
  </details>
1286
1288
 
@@ -1292,12 +1294,12 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1292
1294
 
1293
1295
  | Gems / Abstraction | [Success results](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/success_results.rb) | [Failure results](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/failure_results.rb) |
1294
1296
  | ------------------------------------------- | ----------------: | ----------------: |
1295
- | Micro::Case::Result `pipe` method | 172734.4 i/s | 153745.6 i/s |
1296
- | Micro::Case::Result `then` method | 1.24x slower | 1.21x slower |
1297
- | Micro::Cases.flow | 1.30x slower | 1.30x slower |
1298
- | Micro::Case class with an inner flow | 2.05x slower | 1.98x slower |
1299
- | Micro::Case class including itself as a step| 2.14x slower | 2.09x slower |
1300
- | Interactor::Organizer | 7.69x slower | 7.03x slower |
1297
+ | Micro::Case::Result `pipe` method | 80936.2 i/s | 78280.4 i/s |
1298
+ | Micro::Case::Result `then` method | 0x slower | 0x slower |
1299
+ | Micro::Cases.flow | 0x slower | 0x slower |
1300
+ | Micro::Case class with an inner flow | 1.72x slower | 1.68x slower |
1301
+ | Micro::Case class including itself as a step| 1.93x slower | 1.87x slower |
1302
+ | Interactor::Organizer | 3.33x slower | 3.22x slower |
1301
1303
 
1302
1304
  \* The `Dry::Monads`, `Dry::Transaction`, `Trailblazer::Operation` gems are out of this analysis because all of them doesn't have this kind of feature.
1303
1305
 
@@ -1306,28 +1308,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1306
1308
 
1307
1309
  ```ruby
1308
1310
  # Warming up --------------------------------------
1309
- # Interactor::Organizer 2.163k i/100ms
1310
- # Micro::Cases.flow([]) 13.158k i/100ms
1311
- # Micro::Case flow in a class 8.400k i/100ms
1312
- # Micro::Case including the class 8.008k i/100ms
1313
- # Micro::Case::Result#| 17.151k i/100ms
1314
- # Micro::Case::Result#then 14.121k i/100ms
1311
+ # Interactor::Organizer 1.809k i/100ms
1312
+ # Micro::Cases.flow([]) 7.808k i/100ms
1313
+ # Micro::Case flow in a class 4.816k i/100ms
1314
+ # Micro::Case including the class 4.094k i/100ms
1315
+ # Micro::Case::Result#| 7.656k i/100ms
1316
+ # Micro::Case::Result#then 7.138k i/100ms
1315
1317
 
1316
1318
  # Calculating -------------------------------------
1317
- # Interactor::Organizer 22.467k 1.8%) i/s - 112.476k in 5.007787s
1318
- # Micro::Cases.flow([]) 133.183k 1.5%) i/s - 671.058k in 5.039815s
1319
- # Micro::Case flow in a class 84.083k1.8%) i/s - 428.400k in 5.096623s
1320
- # Micro::Case including the class 80.574k1.6%) i/s - 408.408k in 5.070029s
1321
- # Micro::Case::Result#| 172.734k 1.1%) i/s - 874.701k in 5.064429s
1322
- # Micro::Case::Result#then 139.799k1.7%) i/s - 706.050k in 5.052035s
1319
+ # Interactor::Organizer 24.290k24.0%) i/s - 113.967k in 5.032825s
1320
+ # Micro::Cases.flow([]) 74.790k11.1%) i/s - 374.784k in 5.071740s
1321
+ # Micro::Case flow in a class 47.043k8.0%) i/s - 235.984k in 5.047477s
1322
+ # Micro::Case including the class 42.030k8.5%) i/s - 208.794k in 5.002138s
1323
+ # Micro::Case::Result#| 80.936k15.9%) i/s - 398.112k in 5.052531s
1324
+ # Micro::Case::Result#then 71.459k8.8%) i/s - 356.900k in 5.030526s
1323
1325
 
1324
1326
  # Comparison:
1325
- # Micro::Case::Result#|: 172734.4 i/s
1326
- # Micro::Case::Result#then: 139799.0 i/s - 1.24x (± 0.00) slower
1327
- # Micro::Cases.flow([]): 133182.9 i/s - 1.30x (± 0.00) slower
1328
- # Micro::Case flow in a class: 84082.6 i/s - 2.05x (± 0.00) slower
1329
- # Micro::Case including the class: 80574.3 i/s - 2.14x (± 0.00) slower
1330
- # Interactor::Organizer: 22467.4 i/s - 7.69x (± 0.00) slower
1327
+ # Micro::Case::Result#|: 80936.2 i/s
1328
+ # Micro::Cases.flow([]): 74790.1 i/s - same-ish: difference falls within error
1329
+ # Micro::Case::Result#then: 71459.5 i/s - same-ish: difference falls within error
1330
+ # Micro::Case flow in a class: 47042.6 i/s - 1.72x (± 0.00) slower
1331
+ # Micro::Case including the class: 42030.2 i/s - 1.93x (± 0.00) slower
1332
+ # Interactor::Organizer: 24290.3 i/s - 3.33x (± 0.00) slower
1331
1333
  ```
1332
1334
  </details>
1333
1335
 
@@ -1336,28 +1338,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1336
1338
 
1337
1339
  ```ruby
1338
1340
  # Warming up --------------------------------------
1339
- # Interactor::Organizer 2.167k i/100ms
1340
- # Micro::Cases.flow([]) 11.797k i/100ms
1341
- # Micro::Case flow in a class 7.783k i/100ms
1342
- # Micro::Case including the class 7.097k i/100ms
1343
- # Micro::Case::Result#| 14.398k i/100ms
1344
- # Micro::Case::Result#then 12.719k i/100ms
1341
+ # Interactor::Organizer 1.734k i/100ms
1342
+ # Micro::Cases.flow([]) 7.515k i/100ms
1343
+ # Micro::Case flow in a class 4.636k i/100ms
1344
+ # Micro::Case including the class 4.114k i/100ms
1345
+ # Micro::Case::Result#| 7.588k i/100ms
1346
+ # Micro::Case::Result#then 6.681k i/100ms
1345
1347
 
1346
1348
  # Calculating -------------------------------------
1347
- # Interactor::Organizer 21.863k 2.5%) i/s - 110.517k in 5.058420s
1348
- # Micro::Cases.flow([]) 118.124k1.8%) i/s - 601.647k in 5.095102s
1349
- # Micro::Case flow in a class 77.801k1.5%) i/s - 389.150k in 5.003002s
1350
- # Micro::Case including the class 73.533k2.1%) i/s - 369.044k in 5.021076s
1351
- # Micro::Case::Result#| 153.746k 1.5%) i/s - 777.492k in 5.058177s
1352
- # Micro::Case::Result#then 126.897k1.7%) i/s - 635.950k in 5.013059s
1349
+ # Interactor::Organizer 24.280k24.5%) i/s - 112.710k in 5.013334s
1350
+ # Micro::Cases.flow([]) 74.999k9.8%) i/s - 375.750k in 5.055777s
1351
+ # Micro::Case flow in a class 46.681k9.3%) i/s - 236.436k in 5.105105s
1352
+ # Micro::Case including the class 41.921k8.9%) i/s - 209.814k in 5.043622s
1353
+ # Micro::Case::Result#| 78.280k12.6%) i/s - 386.988k in 5.022146s
1354
+ # Micro::Case::Result#then 68.898k8.8%) i/s - 347.412k in 5.080116s
1353
1355
 
1354
1356
  # Comparison:
1355
- # Micro::Case::Result#|: 153745.6 i/s
1356
- # Micro::Case::Result#then: 126896.6 i/s - 1.21x (± 0.00) slower
1357
- # Micro::Cases.flow([]): 118123.9 i/s - 1.30x (± 0.00) slower
1358
- # Micro::Case flow in a class: 77800.7 i/s - 1.98x (± 0.00) slower
1359
- # Micro::Case including the class: 73532.9 i/s - 2.09x (± 0.00) slower
1360
- # Interactor::Organizer: 21862.9 i/s - 7.03x (± 0.00) slower
1357
+ # Micro::Case::Result#|: 78280.4 i/s
1358
+ # Micro::Cases.flow([]): 74999.4 i/s - same-ish: difference falls within error
1359
+ # Micro::Case::Result#then: 68898.4 i/s - same-ish: difference falls within error
1360
+ # Micro::Case flow in a class: 46681.0 i/s - 1.68x (± 0.00) slower
1361
+ # Micro::Case including the class: 41920.8 i/s - 1.87x (± 0.00) slower
1362
+ # Interactor::Organizer: 24280.0 i/s - 3.22x (± 0.00) slower
1361
1363
  ```
1362
1364
  </details>
1363
1365
 
@@ -39,7 +39,7 @@ Principais objetivos deste projeto:
39
39
  Versão | Documentação
40
40
  --------- | -------------
41
41
  unreleased| https://github.com/serradura/u-case/blob/main/README.md
42
- 4.1.0 | https://github.com/serradura/u-case/blob/v4.x/README.md
42
+ 4.1.1 | https://github.com/serradura/u-case/blob/v4.x/README.md
43
43
  3.1.0 | https://github.com/serradura/u-case/blob/v3.x/README.md
44
44
  2.6.0 | https://github.com/serradura/u-case/blob/v2.x/README.md
45
45
  1.1.0 | https://github.com/serradura/u-case/blob/v1.x/README.md
@@ -100,7 +100,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
100
100
 
101
101
  | u-case | branch | ruby | activemodel | u-attributes |
102
102
  | -------------- | ------- | -------- | ------------- | ------------ |
103
- | 4.1.0 | main | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
103
+ | 4.1.1 | main | >= 2.2.0 | >= 3.2, < 6.1 | ~> 2.0 |
104
104
  | 3.1.0 | v3.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
105
105
  | 2.6.0 | v2.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
106
106
  | 1.1.0 | v1.x | >= 2.2.0 | >= 3.2, < 6.1 | ~> 1.1 |
@@ -1201,44 +1201,46 @@ end
1201
1201
 
1202
1202
  #### Success results
1203
1203
 
1204
- | Gem / Abstração | Iterações por segundo | Comparação |
1205
- | ----------------- | --------------------: | ----------------: |
1206
- | Dry::Monads | 281515.4 | _**O mais rápido**_ |
1207
- | **Micro::Case** | 151711.3 | 1.86x mais lento |
1208
- | Interactor | 53016.2 | 5.31x mais lento |
1209
- | Trailblazer::Operation | 38314.2 | 7.35x mais lento |
1210
- | Dry::Transaction | 10440.7 | 26.96x mais lento |
1204
+ | Gem / Abstração | Iterações por segundo | Comparação |
1205
+ | ----------------- | --------------------: | -------------------: |
1206
+ | Dry::Monads | 315635.1 | _**O mais rápido**_ |
1207
+ | **Micro::Case** | 75837.7 | 4.16x mais lento |
1208
+ | Interactor | 59745.5 | 5.28x mais lento |
1209
+ | Trailblazer::Operation | 28423.9 | 11.10x mais lento |
1210
+ | Dry::Transaction | 10130.9 | 31.16x mais lento |
1211
1211
 
1212
1212
  <details>
1213
1213
  <summary>Show the full <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a> results.</summary>
1214
1214
 
1215
1215
  ```ruby
1216
1216
  # Warming up --------------------------------------
1217
- # Interactor 5.151k i/100ms
1218
- # Trailblazer::Operation 3.805k i/100ms
1219
- # Dry::Monads 28.153k i/100ms
1220
- # Dry::Transaction 1.063k i/100ms
1221
- # Micro::Case 15.159k i/100ms
1222
- # Micro::Case::Safe 15.172k i/100ms
1223
- # Micro::Case::Strict 12.557k i/100ms
1217
+ # Interactor 5.711k i/100ms
1218
+ # Trailblazer::Operation
1219
+ # 2.283k i/100ms
1220
+ # Dry::Monads 31.130k i/100ms
1221
+ # Dry::Transaction 994.000 i/100ms
1222
+ # Micro::Case 7.911k i/100ms
1223
+ # Micro::Case::Safe 7.911k i/100ms
1224
+ # Micro::Case::Strict 6.248k i/100ms
1224
1225
 
1225
1226
  # Calculating -------------------------------------
1226
- # Interactor 53.016k 1.8%) i/s - 267.852k in 5.053967s
1227
- # Trailblazer::Operation 38.314k (± 1.7%) i/s - 194.055k in 5.066374s
1228
- # Dry::Monads 281.515k 2.4%) i/s - 1.408M in 5.003266s
1229
- # Dry::Transaction 10.441k2.1%) i/s - 53.150k in 5.092957s
1230
- # Micro::Case 151.711k1.7%) i/s - 773.109k in 5.097555s
1231
- # Micro::Case::Safe 145.801k6.7%) i/s - 728.256k in 5.022666s
1232
- # Micro::Case::Strict 115.636k 8.4%) i/s - 577.622k in 5.042079s
1227
+ # Interactor 59.746k29.9%) i/s - 274.128k in 5.049901s
1228
+ # Trailblazer::Operation
1229
+ # 28.424k15.8%) i/s - 141.546k in 5.087882s
1230
+ # Dry::Monads 315.635k6.1%) i/s - 1.588M in 5.048914s
1231
+ # Dry::Transaction 10.131k6.4%) i/s - 50.694k in 5.025150s
1232
+ # Micro::Case 75.838k9.7%) i/s - 379.728k in 5.052573s
1233
+ # Micro::Case::Safe 75.461k10.1%) i/s - 379.728k in 5.079238s
1234
+ # Micro::Case::Strict 64.235k (± 9.0%) i/s - 324.896k in 5.097028s
1233
1235
 
1234
1236
  # Comparison:
1235
- # Dry::Monads: 281515.4 i/s
1236
- # Micro::Case: 151711.3 i/s - 1.86x (± 0.00) slower
1237
- # Micro::Case::Safe: 145800.8 i/s - 1.93x (± 0.00) slower
1238
- # Micro::Case::Strict: 115635.8 i/s - 2.43x (± 0.00) slower
1239
- # Interactor: 53016.2 i/s - 5.31x (± 0.00) slower
1240
- # Trailblazer::Operation: 38314.2 i/s - 7.35x (± 0.00) slower
1241
- # Dry::Transaction: 10440.7 i/s - 26.96x (± 0.00) slower
1237
+ # Dry::Monads: 315635.1 i/s
1238
+ # Micro::Case: 75837.7 i/s - 4.16x (± 0.00) slower
1239
+ # Micro::Case::Safe: 75461.3 i/s - 4.18x (± 0.00) slower
1240
+ # Micro::Case::Strict: 64234.9 i/s - 4.91x (± 0.00) slower
1241
+ # Interactor: 59745.5 i/s - 5.28x (± 0.00) slower
1242
+ # Trailblazer::Operation: 28423.9 i/s - 11.10x (± 0.00) slower
1243
+ # Dry::Transaction: 10130.9 i/s - 31.16x (± 0.00) slower
1242
1244
  ```
1243
1245
  </details>
1244
1246
 
@@ -1246,44 +1248,44 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/suc
1246
1248
 
1247
1249
  #### Failure results
1248
1250
 
1249
- | Gem / Abstração | Iterações por segundo | Comparação |
1250
- | ----------------- | --------------------: | ----------------: |
1251
- | **Micro::Case** | 140794.0 | _**O mais rápido**_ |
1252
- | Dry::Monads | 133865.5 | 0x mais devagar |
1253
- | Trailblazer::Operation | 39829.9 | 3.53x mais devagar |
1254
- | Interactor | 23856.0 | 5.90x mais devagar |
1255
- | Dry::Transaction | 7975.0 | 17.65x mais devagar |
1251
+ | Gem / Abstração | Iterações por segundo | Comparação |
1252
+ | ----------------- | --------------------: | -------------------: |
1253
+ | Dry::Monads | 135386.9 | _**O mais rápido**_ |
1254
+ | **Micro::Case** | 73489.3 | 1.85x mais lento |
1255
+ | Trailblazer::Operation | 29016.4 | 4.67x mais lento |
1256
+ | Interactor | 27037.0 | 5.01x mais lento |
1257
+ | Dry::Transaction | 8988.6 | 15.06x mais lento |
1256
1258
 
1257
1259
  <details>
1258
1260
  <summary>Mostrar o resultado completo do <a href="https://github.com/evanphx/benchmark-ips">benchmark/ips</a>.</summary>
1259
1261
 
1260
1262
  ```ruby
1261
1263
  # Warming up --------------------------------------
1262
- # Interactor 2.351k i/100ms
1263
- # Trailblazer::Operation 3.941k i/100ms
1264
- # Dry::Monads 13.567k i/100ms
1265
- # Dry::Transaction 927.000 i/100ms
1266
- # Micro::Case 14.959k i/100ms
1267
- # Micro::Case::Safe 14.904k i/100ms
1268
- # Micro::Case::Strict 12.007k i/100ms
1264
+ # Interactor 2.626k i/100ms
1265
+ # Trailblazer::Operation 2.343k i/100ms
1266
+ # Dry::Monads 13.386k i/100ms
1267
+ # Dry::Transaction 868.000 i/100ms
1268
+ # Micro::Case 7.603k i/100ms
1269
+ # Micro::Case::Safe 7.598k i/100ms
1270
+ # Micro::Case::Strict 6.178k i/100ms
1269
1271
 
1270
1272
  # Calculating -------------------------------------
1271
- # Interactor 23.856k 1.7%) i/s - 119.901k in 5.027585s
1272
- # Trailblazer::Operation 39.830k 1.2%) i/s - 200.991k in 5.047032s
1273
- # Dry::Monads 133.866k 2.5%) i/s - 678.350k in 5.070899s
1274
- # Dry::Transaction 7.975k8.6%) i/s - 39.861k in 5.036260s
1275
- # Micro::Case 130.534k24.4%) i/s - 583.401k in 5.040907s
1276
- # Micro::Case::Safe 140.794k8.1%) i/s - 700.488k in 5.020935s
1277
- # Micro::Case::Strict 102.641k21.3%) i/s - 480.280k in 5.020354s
1273
+ # Interactor 27.037k24.9%) i/s - 128.674k in 5.102133s
1274
+ # Trailblazer::Operation 29.016k12.4%) i/s - 145.266k in 5.074991s
1275
+ # Dry::Monads 135.387k15.1%) i/s - 669.300k in 5.055356s
1276
+ # Dry::Transaction 8.989k9.2%) i/s - 45.136k in 5.084820s
1277
+ # Micro::Case 73.247k 9.9%) i/s - 364.944k in 5.030449s
1278
+ # Micro::Case::Safe 73.489k9.6%) i/s - 364.704k in 5.007282s
1279
+ # Micro::Case::Strict 61.980k 8.0%) i/s - 308.900k in 5.014821s
1278
1280
 
1279
1281
  # Comparison:
1280
- # Micro::Case::Safe: 140794.0 i/s
1281
- # Dry::Monads: 133865.5 i/s - same-ish: difference falls within error
1282
- # Micro::Case: 130534.0 i/s - same-ish: difference falls within error
1283
- # Micro::Case::Strict: 102640.7 i/s - 1.37x (± 0.00) slower
1284
- # Trailblazer::Operation: 39829.9 i/s - 3.53x (± 0.00) slower
1285
- # Interactor: 23856.0 i/s - 5.90x (± 0.00) slower
1286
- # Dry::Transaction: 7975.0 i/s - 17.65x (± 0.00) slower
1282
+ # Dry::Monads: 135386.9 i/s
1283
+ # Micro::Case::Safe: 73489.3 i/s - 1.84x (± 0.00) slower
1284
+ # Micro::Case: 73246.6 i/s - 1.85x (± 0.00) slower
1285
+ # Micro::Case::Strict: 61979.7 i/s - 2.18x (± 0.00) slower
1286
+ # Trailblazer::Operation: 29016.4 i/s - 4.67x (± 0.00) slower
1287
+ # Interactor: 27037.0 i/s - 5.01x (± 0.00) slower
1288
+ # Dry::Transaction: 8988.6 i/s - 15.06x (± 0.00) slower
1287
1289
  ```
1288
1290
  </details>
1289
1291
 
@@ -1295,12 +1297,12 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1295
1297
 
1296
1298
  | Gem / Abstração | [Resultados de sucesso](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/success_results.rb) | [Resultados de falha](https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/flow/failure_results.rb) |
1297
1299
  | ------------------------------------------- | ----------------: | ----------------: |
1298
- | Micro::Case::Result `pipe` method | 172734.4 i/s | 153745.6 i/s |
1299
- | Micro::Case::Result `then` method | 1.24x mais devagar | 1.21x mais devagar |
1300
- | Micro::Cases.flow | 1.30x mais devagar | 1.30x mais devagar |
1301
- | Micro::Case class with an inner flow | 2.05x mais devagar | 1.98x mais devagar |
1302
- | Micro::Case class including itself as a step| 2.14x mais devagar | 2.09x mais devagar |
1303
- | Interactor::Organizer | 7.69x mais devagar | 7.03x mais devagar |
1300
+ | Micro::Case::Result `pipe` method | 80936.2 i/s | 78280.4 i/s |
1301
+ | Micro::Case::Result `then` method | 0x mais lento | 0x mais lento |
1302
+ | Micro::Cases.flow | 0x mais lento | 0x mais lento |
1303
+ | Micro::Case class with an inner flow | 1.72x mais lento | 1.68x mais lento |
1304
+ | Micro::Case class including itself as a step| 1.93x mais lento | 1.87x mais lento |
1305
+ | Interactor::Organizer | 3.33x mais lento | 3.22x mais lento |
1304
1306
 
1305
1307
  \* As gems `Dry::Monads`, `Dry::Transaction`, `Trailblazer::Operation` estão fora desta análise por não terem esse tipo de funcionalidade.
1306
1308
 
@@ -1309,28 +1311,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1309
1311
 
1310
1312
  ```ruby
1311
1313
  # Warming up --------------------------------------
1312
- # Interactor::Organizer 2.163k i/100ms
1313
- # Micro::Cases.flow([]) 13.158k i/100ms
1314
- # Micro::Case flow in a class 8.400k i/100ms
1315
- # Micro::Case including the class 8.008k i/100ms
1316
- # Micro::Case::Result#| 17.151k i/100ms
1317
- # Micro::Case::Result#then 14.121k i/100ms
1314
+ # Interactor::Organizer 1.809k i/100ms
1315
+ # Micro::Cases.flow([]) 7.808k i/100ms
1316
+ # Micro::Case flow in a class 4.816k i/100ms
1317
+ # Micro::Case including the class 4.094k i/100ms
1318
+ # Micro::Case::Result#| 7.656k i/100ms
1319
+ # Micro::Case::Result#then 7.138k i/100ms
1318
1320
 
1319
1321
  # Calculating -------------------------------------
1320
- # Interactor::Organizer 22.467k 1.8%) i/s - 112.476k in 5.007787s
1321
- # Micro::Cases.flow([]) 133.183k 1.5%) i/s - 671.058k in 5.039815s
1322
- # Micro::Case flow in a class 84.083k1.8%) i/s - 428.400k in 5.096623s
1323
- # Micro::Case including the class 80.574k1.6%) i/s - 408.408k in 5.070029s
1324
- # Micro::Case::Result#| 172.734k 1.1%) i/s - 874.701k in 5.064429s
1325
- # Micro::Case::Result#then 139.799k1.7%) i/s - 706.050k in 5.052035s
1322
+ # Interactor::Organizer 24.290k24.0%) i/s - 113.967k in 5.032825s
1323
+ # Micro::Cases.flow([]) 74.790k11.1%) i/s - 374.784k in 5.071740s
1324
+ # Micro::Case flow in a class 47.043k8.0%) i/s - 235.984k in 5.047477s
1325
+ # Micro::Case including the class 42.030k8.5%) i/s - 208.794k in 5.002138s
1326
+ # Micro::Case::Result#| 80.936k15.9%) i/s - 398.112k in 5.052531s
1327
+ # Micro::Case::Result#then 71.459k8.8%) i/s - 356.900k in 5.030526s
1326
1328
 
1327
1329
  # Comparison:
1328
- # Micro::Case::Result#|: 172734.4 i/s
1329
- # Micro::Case::Result#then: 139799.0 i/s - 1.24x (± 0.00) slower
1330
- # Micro::Cases.flow([]): 133182.9 i/s - 1.30x (± 0.00) slower
1331
- # Micro::Case flow in a class: 84082.6 i/s - 2.05x (± 0.00) slower
1332
- # Micro::Case including the class: 80574.3 i/s - 2.14x (± 0.00) slower
1333
- # Interactor::Organizer: 22467.4 i/s - 7.69x (± 0.00) slower
1330
+ # Micro::Case::Result#|: 80936.2 i/s
1331
+ # Micro::Cases.flow([]): 74790.1 i/s - same-ish: difference falls within error
1332
+ # Micro::Case::Result#then: 71459.5 i/s - same-ish: difference falls within error
1333
+ # Micro::Case flow in a class: 47042.6 i/s - 1.72x (± 0.00) slower
1334
+ # Micro::Case including the class: 42030.2 i/s - 1.93x (± 0.00) slower
1335
+ # Interactor::Organizer: 24290.3 i/s - 3.33x (± 0.00) slower
1334
1336
  ```
1335
1337
  </details>
1336
1338
 
@@ -1339,28 +1341,28 @@ https://github.com/serradura/u-case/blob/main/benchmarks/perfomance/use_case/fai
1339
1341
 
1340
1342
  ```ruby
1341
1343
  # Warming up --------------------------------------
1342
- # Interactor::Organizer 2.167k i/100ms
1343
- # Micro::Cases.flow([]) 11.797k i/100ms
1344
- # Micro::Case flow in a class 7.783k i/100ms
1345
- # Micro::Case including the class 7.097k i/100ms
1346
- # Micro::Case::Result#| 14.398k i/100ms
1347
- # Micro::Case::Result#then 12.719k i/100ms
1344
+ # Interactor::Organizer 1.734k i/100ms
1345
+ # Micro::Cases.flow([]) 7.515k i/100ms
1346
+ # Micro::Case flow in a class 4.636k i/100ms
1347
+ # Micro::Case including the class 4.114k i/100ms
1348
+ # Micro::Case::Result#| 7.588k i/100ms
1349
+ # Micro::Case::Result#then 6.681k i/100ms
1348
1350
 
1349
1351
  # Calculating -------------------------------------
1350
- # Interactor::Organizer 21.863k 2.5%) i/s - 110.517k in 5.058420s
1351
- # Micro::Cases.flow([]) 118.124k1.8%) i/s - 601.647k in 5.095102s
1352
- # Micro::Case flow in a class 77.801k1.5%) i/s - 389.150k in 5.003002s
1353
- # Micro::Case including the class 73.533k2.1%) i/s - 369.044k in 5.021076s
1354
- # Micro::Case::Result#| 153.746k 1.5%) i/s - 777.492k in 5.058177s
1355
- # Micro::Case::Result#then 126.897k1.7%) i/s - 635.950k in 5.013059s
1352
+ # Interactor::Organizer 24.280k24.5%) i/s - 112.710k in 5.013334s
1353
+ # Micro::Cases.flow([]) 74.999k9.8%) i/s - 375.750k in 5.055777s
1354
+ # Micro::Case flow in a class 46.681k9.3%) i/s - 236.436k in 5.105105s
1355
+ # Micro::Case including the class 41.921k8.9%) i/s - 209.814k in 5.043622s
1356
+ # Micro::Case::Result#| 78.280k12.6%) i/s - 386.988k in 5.022146s
1357
+ # Micro::Case::Result#then 68.898k8.8%) i/s - 347.412k in 5.080116s
1356
1358
 
1357
1359
  # Comparison:
1358
- # Micro::Case::Result#|: 153745.6 i/s
1359
- # Micro::Case::Result#then: 126896.6 i/s - 1.21x (± 0.00) slower
1360
- # Micro::Cases.flow([]): 118123.9 i/s - 1.30x (± 0.00) slower
1361
- # Micro::Case flow in a class: 77800.7 i/s - 1.98x (± 0.00) slower
1362
- # Micro::Case including the class: 73532.9 i/s - 2.09x (± 0.00) slower
1363
- # Interactor::Organizer: 21862.9 i/s - 7.03x (± 0.00) slower
1360
+ # Micro::Case::Result#|: 78280.4 i/s
1361
+ # Micro::Cases.flow([]): 74999.4 i/s - same-ish: difference falls within error
1362
+ # Micro::Case::Result#then: 68898.4 i/s - same-ish: difference falls within error
1363
+ # Micro::Case flow in a class: 46681.0 i/s - 1.68x (± 0.00) slower
1364
+ # Micro::Case including the class: 41920.8 i/s - 1.87x (± 0.00) slower
1365
+ # Interactor::Organizer: 24280.0 i/s - 3.22x (± 0.00) slower
1364
1366
  ```
1365
1367
  </details>
1366
1368
 
@@ -129,11 +129,25 @@ module Micro
129
129
  __flow_set(__flow_use_cases_get) if !__flow_get__ && __flow_use_cases
130
130
  end
131
131
 
132
+ InspectKey = :__inspect_key__ # :nodoc:
133
+
132
134
  def self.inspect
133
- if __flow_use_cases
134
- '<%s (%s) use_cases=%s>' % [self, __flow_builder__, @__flow_use_cases]
135
- else
136
- '<%s (%s) attributes=%s>' % [self, self.superclass, attributes]
135
+ ids = (Thread.current[InspectKey] ||= [])
136
+
137
+ if ids.include?(object_id)
138
+ return sprintf('#<%s: {...}>', self)
139
+ end
140
+
141
+ begin
142
+ ids << object_id
143
+
144
+ if __flow_use_cases
145
+ return '<%s (%s) use_cases=%s>' % [self, __flow_builder__, @__flow_use_cases]
146
+ else
147
+ return '<%s (%s) attributes=%s>' % [self, self.superclass, attributes]
148
+ end
149
+ ensure
150
+ ids.pop
137
151
  end
138
152
  end
139
153
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Micro
4
4
  class Case
5
- VERSION = '4.1.0'.freeze
5
+ VERSION = '4.1.1'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: u-case
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Serradura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-14 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kind