attio-rails 0.1.1 → 0.2.0
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/{release.yml → build-and-publish.yml} +3 -13
- data/.github/workflows/ci.yml +1 -1
- data/.github/workflows/docs.yml +2 -2
- data/.rubocop.yml +381 -35
- data/.rubocop_todo.yml +2 -0
- data/CHANGELOG.md +40 -1
- data/CONCEPTS.md +448 -0
- data/Gemfile +14 -8
- data/Rakefile +8 -6
- data/attio-rails.gemspec +7 -18
- data/lib/attio/rails/concerns/syncable.rb +27 -16
- data/lib/attio/rails/configuration.rb +10 -3
- data/lib/attio/rails/railtie.rb +7 -3
- data/lib/attio/rails/rspec/helpers.rb +209 -0
- data/lib/attio/rails/rspec/matchers.rb +145 -0
- data/lib/attio/rails/rspec.rb +9 -0
- data/lib/attio/rails/version.rb +3 -1
- data/lib/attio/rails.rb +3 -0
- data/lib/generators/attio/install/install_generator.rb +25 -23
- data/lib/generators/attio/install/templates/attio.rb +5 -3
- data/lib/generators/attio/install/templates/attio_sync_job.rb +11 -11
- data/lib/generators/attio/install/templates/{migration.rb → migration.rb.erb} +1 -1
- data/test_basic.rb +15 -14
- metadata +15 -175
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a8102663f11e79d1701d5535c84d290bbe469eecff5dc9dc184cd32d3cbb6f1
|
4
|
+
data.tar.gz: 9c44c1dfec3c6ac14507073dadafad96d2c8778f7243476324244757a13da768
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b36523aa233614f1d9ce43ad20b18080c7459f6bda2e2da67114b926a2dfa10a60cf569e9866ca86a644032daf8c27b6050bd7e99e57366202b5ef8e74255e9
|
7
|
+
data.tar.gz: db16d544bcdd62cd6f9f7434c203d252b15eeafb2541a84d57b1196901f3c0ea6a3ac8682b2fc903a38cd8b978e6458208a3380b262374417bc252e2dbf7faf0
|
@@ -1,4 +1,4 @@
|
|
1
|
-
name:
|
1
|
+
name: Build and Publish
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
@@ -6,7 +6,7 @@ on:
|
|
6
6
|
- 'v*.*.*'
|
7
7
|
|
8
8
|
jobs:
|
9
|
-
|
9
|
+
build-and-publish:
|
10
10
|
runs-on: ubuntu-latest
|
11
11
|
|
12
12
|
permissions:
|
@@ -30,7 +30,7 @@ jobs:
|
|
30
30
|
mkdir -p ~/.gem
|
31
31
|
cat > ~/.gem/credentials << EOF
|
32
32
|
---
|
33
|
-
:rubygems_api_key: ${{ secrets.
|
33
|
+
:rubygems_api_key: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
|
34
34
|
EOF
|
35
35
|
chmod 0600 ~/.gem/credentials
|
36
36
|
|
@@ -58,13 +58,3 @@ jobs:
|
|
58
58
|
env:
|
59
59
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
60
60
|
|
61
|
-
- name: Update GitHub Pages with documentation
|
62
|
-
run: |
|
63
|
-
git config --local user.email "action@github.com"
|
64
|
-
git config --local user.name "GitHub Action"
|
65
|
-
git checkout --orphan gh-pages
|
66
|
-
git rm -rf .
|
67
|
-
cp -r docs/* .
|
68
|
-
git add -A
|
69
|
-
git commit -m "Update documentation for ${{ github.ref_name }}"
|
70
|
-
git push origin gh-pages --force
|
data/.github/workflows/ci.yml
CHANGED
@@ -48,7 +48,7 @@ jobs:
|
|
48
48
|
|
49
49
|
- name: Upload coverage to Codecov
|
50
50
|
if: matrix.ruby-version == '3.4' && matrix.rails-version == '8.0'
|
51
|
-
uses: codecov/codecov-action@
|
51
|
+
uses: codecov/codecov-action@v5
|
52
52
|
with:
|
53
53
|
files: ./coverage/coverage.xml,./coverage/.resultset.json
|
54
54
|
flags: unittests
|
data/.github/workflows/docs.yml
CHANGED
@@ -2,7 +2,7 @@ name: Documentation
|
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
5
|
-
branches: [
|
5
|
+
branches: [ master ]
|
6
6
|
workflow_dispatch:
|
7
7
|
|
8
8
|
permissions:
|
@@ -28,7 +28,7 @@ jobs:
|
|
28
28
|
bundler-cache: true
|
29
29
|
|
30
30
|
- name: Setup Pages
|
31
|
-
uses: actions/configure-pages@
|
31
|
+
uses: actions/configure-pages@v5
|
32
32
|
|
33
33
|
- name: Generate documentation
|
34
34
|
run: |
|
data/.rubocop.yml
CHANGED
@@ -1,65 +1,411 @@
|
|
1
|
-
|
2
|
-
- rubocop-rspec
|
3
|
-
- rubocop-rails
|
1
|
+
inherit_from: .rubocop_todo.yml
|
4
2
|
|
5
3
|
AllCops:
|
4
|
+
DisplayCopNames: true
|
6
5
|
TargetRubyVersion: 3.0
|
7
6
|
NewCops: enable
|
8
7
|
Exclude:
|
9
|
-
- 'bin/**/*'
|
10
|
-
- 'db/**/*'
|
11
8
|
- 'vendor/**/*'
|
12
|
-
- '
|
13
|
-
- 'node_modules/**/*'
|
9
|
+
- 'bin/**/*'
|
14
10
|
- 'tmp/**/*'
|
15
|
-
- '.
|
11
|
+
- 'spec/support/webmock_stubs.rb'
|
16
12
|
|
17
|
-
# Style
|
18
13
|
Style/Documentation:
|
19
14
|
Enabled: false
|
20
15
|
|
21
|
-
|
22
|
-
EnforcedStyle:
|
16
|
+
Layout/CaseIndentation:
|
17
|
+
EnforcedStyle: end
|
23
18
|
|
24
|
-
|
25
|
-
|
19
|
+
Layout/FirstArrayElementIndentation:
|
20
|
+
EnforcedStyle: consistent
|
21
|
+
|
22
|
+
Layout/FirstHashElementIndentation:
|
23
|
+
EnforcedStyle: consistent
|
26
24
|
|
27
|
-
# Layout
|
28
25
|
Layout/LineLength:
|
29
26
|
Max: 120
|
30
27
|
Exclude:
|
31
|
-
-
|
28
|
+
- "lib/stripe/object_types.rb"
|
29
|
+
- "lib/stripe/stripe_client.rb"
|
30
|
+
- "lib/stripe/resources/**/*.rb"
|
31
|
+
- "lib/stripe/services/**/*.rb"
|
32
|
+
- "test/**/*.rb"
|
33
|
+
- "*.gemspec"
|
34
|
+
|
35
|
+
Lint/MissingSuper:
|
36
|
+
Exclude:
|
37
|
+
- "lib/stripe/resources/**/*.rb"
|
38
|
+
- "lib/stripe/services/**/*.rb"
|
39
|
+
- "test/stripe/request_params_test.rb"
|
40
|
+
|
41
|
+
Metrics/AbcSize:
|
42
|
+
Enabled: false
|
32
43
|
|
33
|
-
# Metrics
|
34
44
|
Metrics/BlockLength:
|
45
|
+
Max: 40
|
46
|
+
Exclude:
|
47
|
+
# `context` in tests are blocks and get quite large, so exclude the test
|
48
|
+
# directory from having to adhere to this rule.
|
49
|
+
- "test/**/*.rb"
|
50
|
+
- "spec/**/*.rb"
|
51
|
+
- "*.gemspec"
|
52
|
+
|
53
|
+
Metrics/ClassLength:
|
54
|
+
Enabled: false
|
55
|
+
|
56
|
+
# There are several methods with many branches in api_requestor due to
|
57
|
+
# request logic.
|
58
|
+
Metrics/CyclomaticComplexity:
|
35
59
|
Exclude:
|
36
|
-
-
|
37
|
-
-
|
38
|
-
|
60
|
+
- "lib/stripe/api_requestor.rb"
|
61
|
+
- "lib/stripe/util.rb"
|
62
|
+
|
63
|
+
Metrics/PerceivedComplexity:
|
64
|
+
Exclude:
|
65
|
+
- "lib/stripe/api_requestor.rb"
|
66
|
+
- "lib/stripe/stripe_object.rb"
|
67
|
+
- "lib/stripe/util.rb"
|
39
68
|
|
40
69
|
Metrics/MethodLength:
|
41
|
-
|
70
|
+
# There's one long method in `NestedResource`. If we want to truncate it a little,
|
71
|
+
# we could move this to be closer to ~30 (but the default of 10 is probably too short).
|
72
|
+
Max: 55
|
73
|
+
Exclude:
|
74
|
+
- "lib/stripe/services/v1_services.rb"
|
75
|
+
- "lib/stripe/event_types.rb"
|
76
|
+
- "lib/stripe/api_requestor.rb"
|
77
|
+
AllowedMethods:
|
78
|
+
- initialize
|
42
79
|
|
43
|
-
|
44
|
-
|
80
|
+
# TODO(xavdid): remove this once the first `basil` release is out
|
81
|
+
Naming/MethodName:
|
82
|
+
# these endpoints are removed soon so we pulled their overrides, meaning their names are wrong
|
83
|
+
# that won't make it out to users, but it's breaking linting/formatting in the meantime
|
84
|
+
Exclude:
|
85
|
+
- "lib/stripe/services/invoice_service.rb"
|
86
|
+
- "lib/stripe/resources/invoice.rb"
|
45
87
|
|
46
|
-
Metrics/
|
47
|
-
|
88
|
+
Metrics/ModuleLength:
|
89
|
+
Enabled: false
|
90
|
+
|
91
|
+
Metrics/ParameterLists:
|
92
|
+
# There's 2 methods in `StripeClient` that have long parameter lists.
|
93
|
+
Max: 8
|
94
|
+
# Optional parameters should be consistent across libraries, we need not be
|
95
|
+
# concerned about this. Was introduced with adding `base_address`
|
96
|
+
Exclude:
|
97
|
+
- "lib/stripe/api_operations/request.rb"
|
98
|
+
- "lib/stripe/stripe_object.rb"
|
99
|
+
- "lib/stripe/stripe_client.rb"
|
100
|
+
- "lib/stripe/resources/**/*.rb"
|
101
|
+
- "lib/stripe/services/**/*.rb"
|
102
|
+
|
103
|
+
Naming/MethodParameterName:
|
104
|
+
# We have many parameters that are less than 3 characters for tax codes
|
105
|
+
Exclude:
|
106
|
+
- "lib/stripe/resources/**/*.rb"
|
107
|
+
- "lib/stripe/services/**/*.rb"
|
48
108
|
|
49
|
-
|
50
|
-
|
109
|
+
Naming/VariableNumber:
|
110
|
+
# We use a variety of variable number syntaxes
|
51
111
|
Exclude:
|
52
|
-
-
|
112
|
+
- "lib/stripe/resources/**/*.rb"
|
113
|
+
- "lib/stripe/services/**/*.rb"
|
114
|
+
|
115
|
+
Style/AccessModifierDeclarations:
|
116
|
+
EnforcedStyle: inline
|
117
|
+
|
118
|
+
Style/AsciiComments:
|
119
|
+
Enabled: false
|
120
|
+
|
121
|
+
Style/FrozenStringLiteralComment:
|
122
|
+
EnforcedStyle: always
|
53
123
|
|
54
|
-
|
124
|
+
Style/HashEachMethods:
|
125
|
+
Enabled: true
|
126
|
+
|
127
|
+
Style/HashTransformKeys:
|
128
|
+
Enabled: true
|
129
|
+
|
130
|
+
Style/HashTransformValues:
|
131
|
+
Enabled: true
|
132
|
+
|
133
|
+
Style/NumericPredicate:
|
55
134
|
Enabled: false
|
56
135
|
|
57
|
-
|
58
|
-
|
59
|
-
|
136
|
+
Style/StringLiterals:
|
137
|
+
EnforcedStyle: double_quotes
|
138
|
+
|
139
|
+
Style/TrailingCommaInArrayLiteral:
|
140
|
+
EnforcedStyleForMultiline: consistent_comma
|
60
141
|
|
61
|
-
|
62
|
-
|
142
|
+
Style/TrailingCommaInHashLiteral:
|
143
|
+
EnforcedStyleForMultiline: consistent_comma
|
63
144
|
|
64
|
-
|
65
|
-
|
145
|
+
Gemspec/DeprecatedAttributeAssignment: # new in 1.30
|
146
|
+
Enabled: true
|
147
|
+
Gemspec/DevelopmentDependencies: # new in 1.44
|
148
|
+
Enabled: true
|
149
|
+
Gemspec/RequireMFA: # new in 1.23
|
150
|
+
Enabled: false
|
151
|
+
Layout/LineContinuationLeadingSpace: # new in 1.31
|
152
|
+
Enabled: true
|
153
|
+
Layout/LineContinuationSpacing: # new in 1.31
|
154
|
+
Enabled: true
|
155
|
+
Layout/LineEndStringConcatenationIndentation: # new in 1.18
|
156
|
+
Enabled: true
|
157
|
+
Layout/SpaceBeforeBrackets: # new in 1.7
|
158
|
+
Enabled: true
|
159
|
+
Lint/AmbiguousAssignment: # new in 1.7
|
160
|
+
Enabled: true
|
161
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
162
|
+
Enabled: true
|
163
|
+
Lint/AmbiguousRange: # new in 1.19
|
164
|
+
Enabled: true
|
165
|
+
Lint/ConstantOverwrittenInRescue: # new in 1.31
|
166
|
+
Enabled: true
|
167
|
+
Lint/DeprecatedConstants: # new in 1.8
|
168
|
+
Enabled: true
|
169
|
+
Lint/DuplicateBranch: # new in 1.3
|
170
|
+
Enabled: true
|
171
|
+
Lint/DuplicateMagicComment: # new in 1.37
|
172
|
+
Enabled: true
|
173
|
+
Lint/DuplicateMatchPattern: # new in 1.50
|
174
|
+
Enabled: true
|
175
|
+
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
|
176
|
+
Enabled: true
|
177
|
+
Lint/EmptyBlock: # new in 1.1
|
178
|
+
Enabled: true
|
179
|
+
Lint/EmptyClass: # new in 1.3
|
180
|
+
Enabled: true
|
181
|
+
Lint/EmptyInPattern: # new in 1.16
|
182
|
+
Enabled: true
|
183
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
184
|
+
Enabled: true
|
185
|
+
Lint/LambdaWithoutLiteralBlock: # new in 1.8
|
186
|
+
Enabled: true
|
187
|
+
Lint/MixedCaseRange: # new in 1.53
|
188
|
+
Enabled: true
|
189
|
+
Lint/NoReturnInBeginEndBlocks: # new in 1.2
|
190
|
+
Enabled: true
|
191
|
+
Lint/NonAtomicFileOperation: # new in 1.31
|
192
|
+
Enabled: true
|
193
|
+
Lint/NumberedParameterAssignment: # new in 1.9
|
194
|
+
Enabled: true
|
195
|
+
Lint/OrAssignmentToConstant: # new in 1.9
|
196
|
+
Enabled: true
|
197
|
+
Lint/RedundantDirGlobSort: # new in 1.8
|
198
|
+
Enabled: true
|
199
|
+
Lint/RedundantRegexpQuantifiers: # new in 1.53
|
200
|
+
Enabled: true
|
201
|
+
Lint/RefinementImportMethods: # new in 1.27
|
202
|
+
Enabled: true
|
203
|
+
Lint/RequireRangeParentheses: # new in 1.32
|
204
|
+
Enabled: true
|
205
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
206
|
+
Enabled: true
|
207
|
+
Lint/SymbolConversion: # new in 1.9
|
208
|
+
Enabled: true
|
209
|
+
Lint/ToEnumArguments: # new in 1.1
|
210
|
+
Enabled: true
|
211
|
+
Lint/TripleQuotes: # new in 1.9
|
212
|
+
Enabled: true
|
213
|
+
Lint/UnexpectedBlockArity: # new in 1.5
|
214
|
+
Enabled: true
|
215
|
+
Lint/UnmodifiedReduceAccumulator: # new in 1.1
|
216
|
+
Enabled: true
|
217
|
+
Lint/UselessAssignment:
|
218
|
+
Exclude:
|
219
|
+
- "test/stripe/generated_examples_test.rb"
|
220
|
+
Lint/UselessRescue: # new in 1.43
|
221
|
+
Enabled: true
|
222
|
+
Lint/UselessRuby2Keywords: # new in 1.23
|
223
|
+
Enabled: true
|
224
|
+
Metrics/CollectionLiteralLength: # new in 1.47
|
225
|
+
Enabled: true
|
226
|
+
Naming/BlockForwarding: # new in 1.24
|
227
|
+
Enabled: true
|
228
|
+
Security/CompoundHash: # new in 1.28
|
229
|
+
Enabled: true
|
230
|
+
Security/IoMethods: # new in 1.22
|
231
|
+
Enabled: true
|
232
|
+
Style/ArgumentsForwarding: # new in 1.1
|
233
|
+
Enabled: true
|
234
|
+
Style/ArrayIntersect: # new in 1.40
|
235
|
+
Enabled: true
|
236
|
+
Style/CollectionCompact: # new in 1.2
|
237
|
+
Enabled: true
|
238
|
+
Style/ComparableClamp: # new in 1.44
|
239
|
+
Enabled: true
|
240
|
+
Style/ConcatArrayLiterals: # new in 1.41
|
241
|
+
Enabled: true
|
242
|
+
Style/DataInheritance: # new in 1.49
|
243
|
+
Enabled: true
|
244
|
+
Style/DirEmpty: # new in 1.48
|
245
|
+
Enabled: true
|
246
|
+
Style/DocumentDynamicEvalDefinition: # new in 1.1
|
247
|
+
Enabled: true
|
248
|
+
Style/EmptyHeredoc: # new in 1.32
|
249
|
+
Enabled: true
|
250
|
+
Style/EndlessMethod: # new in 1.8
|
251
|
+
Enabled: true
|
252
|
+
Style/EnvHome: # new in 1.29
|
253
|
+
Enabled: true
|
254
|
+
Style/ExactRegexpMatch: # new in 1.51
|
255
|
+
Enabled: true
|
256
|
+
Style/FetchEnvVar: # new in 1.28
|
257
|
+
Enabled: true
|
258
|
+
Style/FileEmpty: # new in 1.48
|
259
|
+
Enabled: true
|
260
|
+
Style/FileRead: # new in 1.24
|
261
|
+
Enabled: true
|
262
|
+
Style/FileWrite: # new in 1.24
|
263
|
+
Enabled: true
|
264
|
+
Style/HashConversion: # new in 1.10
|
265
|
+
Enabled: true
|
266
|
+
Style/HashExcept: # new in 1.7
|
267
|
+
Enabled: true
|
268
|
+
Style/IfWithBooleanLiteralBranches: # new in 1.9
|
269
|
+
Enabled: true
|
270
|
+
Style/InPatternThen: # new in 1.16
|
271
|
+
Enabled: true
|
272
|
+
Style/MagicCommentFormat: # new in 1.35
|
273
|
+
Enabled: true
|
274
|
+
Style/MapCompactWithConditionalBlock: # new in 1.30
|
275
|
+
Enabled: true
|
276
|
+
Style/MapToHash: # new in 1.24
|
277
|
+
Enabled: true
|
278
|
+
Style/MapToSet: # new in 1.42
|
279
|
+
Enabled: true
|
280
|
+
Style/MinMaxComparison: # new in 1.42
|
281
|
+
Enabled: true
|
282
|
+
Style/MultilineInPatternThen: # new in 1.16
|
283
|
+
Enabled: true
|
284
|
+
Style/NegatedIfElseCondition: # new in 1.2
|
285
|
+
Enabled: true
|
286
|
+
Style/NestedFileDirname: # new in 1.26
|
287
|
+
Enabled: true
|
288
|
+
Style/NilLambda: # new in 1.3
|
289
|
+
Enabled: true
|
290
|
+
Style/NumberedParameters: # new in 1.22
|
291
|
+
Enabled: true
|
292
|
+
Style/NumberedParametersLimit: # new in 1.22
|
293
|
+
Enabled: true
|
294
|
+
Style/ObjectThen: # new in 1.28
|
295
|
+
Enabled: true
|
296
|
+
Style/OpenStructUse: # new in 1.23
|
297
|
+
Enabled: true
|
298
|
+
Style/OperatorMethodCall: # new in 1.37
|
299
|
+
Enabled: true
|
300
|
+
Style/QuotedSymbols: # new in 1.16
|
301
|
+
Enabled: true
|
302
|
+
Style/RedundantArgument: # new in 1.4
|
303
|
+
Enabled: true
|
304
|
+
Style/RedundantArrayConstructor: # new in 1.52
|
305
|
+
Enabled: true
|
306
|
+
Style/RedundantConstantBase: # new in 1.40
|
307
|
+
Enabled: true
|
308
|
+
Style/RedundantCurrentDirectoryInPath: # new in 1.53
|
309
|
+
Enabled: true
|
310
|
+
Style/RedundantDoubleSplatHashBraces: # new in 1.41
|
311
|
+
Enabled: true
|
312
|
+
Style/RedundantEach: # new in 1.38
|
313
|
+
Enabled: true
|
314
|
+
Style/RedundantFilterChain: # new in 1.52
|
315
|
+
Enabled: true
|
316
|
+
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
|
317
|
+
Enabled: true
|
318
|
+
Style/RedundantInitialize: # new in 1.27
|
319
|
+
Enabled: true
|
320
|
+
Style/RedundantLineContinuation: # new in 1.49
|
321
|
+
Enabled: true
|
322
|
+
Style/RedundantRegexpArgument: # new in 1.53
|
323
|
+
Enabled: true
|
324
|
+
Style/RedundantRegexpConstructor: # new in 1.52
|
325
|
+
Enabled: true
|
326
|
+
Style/RedundantSelfAssignmentBranch: # new in 1.19
|
327
|
+
Enabled: true
|
328
|
+
Style/RedundantStringEscape: # new in 1.37
|
329
|
+
Enabled: true
|
330
|
+
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
|
331
|
+
Enabled: true
|
332
|
+
Style/SelectByRegexp: # new in 1.22
|
333
|
+
Enabled: true
|
334
|
+
Style/SingleLineDoEndBlock: # new in 1.57
|
335
|
+
Enabled: true
|
336
|
+
Style/StringChars: # new in 1.12
|
337
|
+
Enabled: true
|
338
|
+
Style/SwapValues: # new in 1.1
|
339
|
+
Enabled: true
|
340
|
+
Style/YAMLFileRead: # new in 1.53
|
341
|
+
Enabled: true
|
342
|
+
Gemspec/AddRuntimeDependency: # new in 1.65
|
343
|
+
Enabled: true
|
344
|
+
Lint/ArrayLiteralInRegexp: # new in 1.71
|
345
|
+
Enabled: true
|
346
|
+
Lint/ConstantReassignment: # new in 1.70
|
347
|
+
Enabled: true
|
348
|
+
Lint/CopDirectiveSyntax: # new in 1.72
|
349
|
+
Enabled: true
|
350
|
+
Lint/DuplicateSetElement: # new in 1.67
|
351
|
+
Enabled: true
|
352
|
+
Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
|
353
|
+
Enabled: true
|
354
|
+
Lint/ItWithoutArgumentsInBlock: # new in 1.59
|
355
|
+
Enabled: true
|
356
|
+
Lint/LiteralAssignmentInCondition: # new in 1.58
|
357
|
+
Enabled: true
|
358
|
+
Lint/NumericOperationWithConstantResult: # new in 1.69
|
359
|
+
Enabled: true
|
360
|
+
Lint/RedundantTypeConversion: # new in 1.72
|
361
|
+
Enabled: true
|
362
|
+
Lint/SharedMutableDefault: # new in 1.70
|
363
|
+
Enabled: true
|
364
|
+
Lint/SuppressedExceptionInNumberConversion: # new in 1.72
|
365
|
+
Enabled: true
|
366
|
+
Lint/UnescapedBracketInRegexp: # new in 1.68
|
367
|
+
Enabled: true
|
368
|
+
Lint/UselessConstantScoping: # new in 1.72
|
369
|
+
Enabled: true
|
370
|
+
Lint/UselessDefined: # new in 1.69
|
371
|
+
Enabled: true
|
372
|
+
Lint/UselessNumericOperation: # new in 1.66
|
373
|
+
Enabled: true
|
374
|
+
Style/AmbiguousEndlessMethodDefinition: # new in 1.68
|
375
|
+
Enabled: true
|
376
|
+
Style/BitwisePredicate: # new in 1.68
|
377
|
+
Enabled: true
|
378
|
+
Style/CombinableDefined: # new in 1.68
|
379
|
+
Enabled: true
|
380
|
+
Style/ComparableBetween: # new in 1.74
|
381
|
+
Enabled: true
|
382
|
+
Style/DigChain: # new in 1.69
|
383
|
+
Enabled: true
|
384
|
+
Style/FileNull: # new in 1.69
|
385
|
+
Enabled: true
|
386
|
+
Style/FileTouch: # new in 1.69
|
387
|
+
Enabled: true
|
388
|
+
Style/HashFetchChain: # new in 1.75
|
389
|
+
Enabled: true
|
390
|
+
Style/HashSlice: # new in 1.71
|
391
|
+
Enabled: true
|
392
|
+
Style/ItAssignment: # new in 1.70
|
393
|
+
Enabled: true
|
394
|
+
Style/ItBlockParameter: # new in 1.75
|
395
|
+
Enabled: true
|
396
|
+
Style/KeywordArgumentsMerging: # new in 1.68
|
397
|
+
Enabled: true
|
398
|
+
Style/MapIntoArray: # new in 1.63
|
399
|
+
Enabled: true
|
400
|
+
Style/RedundantFormat: # new in 1.72
|
401
|
+
Enabled: true
|
402
|
+
Style/RedundantInterpolationUnfreeze: # new in 1.66
|
403
|
+
Enabled: true
|
404
|
+
Style/SafeNavigationChainLength: # new in 1.68
|
405
|
+
Enabled: true
|
406
|
+
Style/SendWithLiteralMethodName: # new in 1.64
|
407
|
+
Enabled: true
|
408
|
+
Style/SuperArguments: # new in 1.64
|
409
|
+
Enabled: true
|
410
|
+
Style/SuperWithArgsParentheses: # new in 1.58
|
411
|
+
Enabled: true
|
data/.rubocop_todo.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [0.2.0] - 2025-01-11
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- **BatchSync** class for efficient bulk synchronization operations
|
14
|
+
- **ActiveJob integration** with dedicated `AttioSyncJob` for background processing
|
15
|
+
- **Callbacks support** - `before_attio_sync` and `after_attio_sync` hooks
|
16
|
+
- **Transform support** - Custom attribute transformation before syncing
|
17
|
+
- **Error handlers** - Configurable error handling with `:on_error` option
|
18
|
+
- **RSpec test helpers** - Comprehensive testing utilities for Attio operations
|
19
|
+
- **Concepts documentation** - Detailed architecture guide with Mermaid diagrams
|
20
|
+
- **Configuration enhancements**:
|
21
|
+
- `queue` option for ActiveJob queue configuration
|
22
|
+
- `raise_on_missing_record` option for missing record behavior
|
23
|
+
- **100% test coverage** with comprehensive test suite
|
24
|
+
|
25
|
+
### Changed
|
26
|
+
- Enhanced `Syncable` concern with callbacks and transforms
|
27
|
+
- Improved error handling with environment-specific behavior
|
28
|
+
- Renamed GitHub Actions workflow from `release.yml` to `build-and-publish.yml`
|
29
|
+
- Updated README with comprehensive examples and usage patterns
|
30
|
+
|
31
|
+
### Fixed
|
32
|
+
- RuboCop linting issues for better code quality
|
33
|
+
- Test coverage gaps - achieved 100% coverage
|
34
|
+
|
35
|
+
## [0.1.2] - 2025-01-11
|
36
|
+
|
37
|
+
### Changed
|
38
|
+
- Updated attio dependency to 0.1.3
|
39
|
+
- Applied Stripe's RuboCop configuration
|
40
|
+
- Achieved 100% test coverage
|
41
|
+
|
42
|
+
### Fixed
|
43
|
+
- All RuboCop offenses auto-corrected
|
44
|
+
- Test failures resolved
|
45
|
+
|
10
46
|
## [0.1.1] - 2025-01-11
|
11
47
|
|
12
48
|
### Added
|
@@ -44,5 +80,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
44
80
|
- Batch operations support
|
45
81
|
- Custom field transformations
|
46
82
|
|
47
|
-
[Unreleased]: https://github.com/idl3/attio-rails/compare/v0.
|
83
|
+
[Unreleased]: https://github.com/idl3/attio-rails/compare/v0.2.0...HEAD
|
84
|
+
[0.2.0]: https://github.com/idl3/attio-rails/compare/v0.1.2...v0.2.0
|
85
|
+
[0.1.2]: https://github.com/idl3/attio-rails/compare/v0.1.1...v0.1.2
|
86
|
+
[0.1.1]: https://github.com/idl3/attio-rails/compare/v0.1.0...v0.1.1
|
48
87
|
[0.1.0]: https://github.com/idl3/attio-rails/releases/tag/v0.1.0
|