attio 0.1.1 → 0.1.3

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.
data/.rubocop.yml CHANGED
@@ -1,133 +1,405 @@
1
- require:
2
- - rubocop-rspec
3
-
4
1
  AllCops:
2
+ DisplayCopNames: true
5
3
  TargetRubyVersion: 3.0
6
4
  NewCops: enable
7
5
  Exclude:
8
6
  - 'vendor/**/*'
9
7
  - 'bin/**/*'
10
- - 'coverage/**/*'
11
- - 'docs/**/*'
12
8
  - 'tmp/**/*'
13
- - '*.gemspec'
14
- - 'Gemfile'
15
- - 'Rakefile'
9
+ - 'spec/**/*'
16
10
 
17
- # Layout and formatting
18
- Layout/LineLength:
19
- Max: 120
20
- AllowedPatterns: ['\A\s*#']
11
+ Style/Documentation:
12
+ Enabled: false
21
13
 
22
- Layout/MultilineMethodCallIndentation:
23
- EnforcedStyle: indented
14
+ Layout/CaseIndentation:
15
+ EnforcedStyle: end
24
16
 
25
- # Metrics
26
- Metrics/BlockLength:
27
- Exclude:
28
- - 'spec/**/*'
29
- - 'Rakefile'
17
+ Layout/FirstArrayElementIndentation:
18
+ EnforcedStyle: consistent
30
19
 
31
- Metrics/MethodLength:
32
- Max: 20
33
- CountAsOne: ['array', 'hash', 'heredoc']
20
+ Layout/FirstHashElementIndentation:
21
+ EnforcedStyle: consistent
34
22
 
35
- Metrics/ClassLength:
36
- Max: 150
23
+ Layout/LineLength:
24
+ Exclude:
25
+ - "lib/stripe/object_types.rb"
26
+ - "lib/stripe/stripe_client.rb"
27
+ - "lib/stripe/resources/**/*.rb"
28
+ - "lib/stripe/services/**/*.rb"
29
+ - "test/**/*.rb"
37
30
 
38
- Metrics/ModuleLength:
39
- Max: 150
31
+ Lint/MissingSuper:
32
+ Exclude:
33
+ - "lib/stripe/resources/**/*.rb"
34
+ - "lib/stripe/services/**/*.rb"
35
+ - "test/stripe/request_params_test.rb"
40
36
 
41
37
  Metrics/AbcSize:
42
- Max: 20
38
+ Enabled: false
39
+
40
+ Metrics/BlockLength:
41
+ Max: 40
42
+ Exclude:
43
+ # `context` in tests are blocks and get quite large, so exclude the test
44
+ # directory from having to adhere to this rule.
45
+ - "test/**/*.rb"
43
46
 
47
+ Metrics/ClassLength:
48
+ Enabled: false
49
+
50
+ # There are several methods with many branches in api_requestor due to
51
+ # request logic.
44
52
  Metrics/CyclomaticComplexity:
45
- Max: 8
53
+ Exclude:
54
+ - "lib/stripe/api_requestor.rb"
55
+ - "lib/stripe/util.rb"
46
56
 
47
57
  Metrics/PerceivedComplexity:
48
- Max: 8
58
+ Exclude:
59
+ - "lib/stripe/api_requestor.rb"
60
+ - "lib/stripe/stripe_object.rb"
61
+ - "lib/stripe/util.rb"
49
62
 
50
- # Style
51
- Style/Documentation:
52
- Enabled: false
63
+ Metrics/MethodLength:
64
+ # There's one long method in `NestedResource`. If we want to truncate it a little,
65
+ # we could move this to be closer to ~30 (but the default of 10 is probably too short).
66
+ Max: 55
67
+ Exclude:
68
+ - "lib/stripe/services/v1_services.rb"
69
+ - "lib/stripe/event_types.rb"
70
+ - "lib/stripe/api_requestor.rb"
71
+ AllowedMethods:
72
+ - initialize
73
+
74
+ # TODO(xavdid): remove this once the first `basil` release is out
75
+ Naming/MethodName:
76
+ # these endpoints are removed soon so we pulled their overrides, meaning their names are wrong
77
+ # that won't make it out to users, but it's breaking linting/formatting in the meantime
78
+ Exclude:
79
+ - "lib/stripe/services/invoice_service.rb"
80
+ - "lib/stripe/resources/invoice.rb"
53
81
 
54
- Style/StringLiterals:
55
- EnforcedStyle: double_quotes
82
+ Metrics/ModuleLength:
83
+ Enabled: false
56
84
 
57
- Style/StringLiteralsInInterpolation:
58
- EnforcedStyle: double_quotes
85
+ Metrics/ParameterLists:
86
+ # There's 2 methods in `StripeClient` that have long parameter lists.
87
+ Max: 8
88
+ # Optional parameters should be consistent across libraries, we need not be
89
+ # concerned about this. Was introduced with adding `base_address`
90
+ Exclude:
91
+ - "lib/stripe/api_operations/request.rb"
92
+ - "lib/stripe/stripe_object.rb"
93
+ - "lib/stripe/stripe_client.rb"
94
+ - "lib/stripe/resources/**/*.rb"
95
+ - "lib/stripe/services/**/*.rb"
96
+
97
+ Naming/MethodParameterName:
98
+ # We have many parameters that are less than 3 characters for tax codes
99
+ Exclude:
100
+ - "lib/stripe/resources/**/*.rb"
101
+ - "lib/stripe/services/**/*.rb"
59
102
 
60
- Style/FrozenStringLiteralComment:
61
- Enabled: true
103
+ Naming/VariableNumber:
104
+ # We use a variety of variable number syntaxes
105
+ Exclude:
106
+ - "lib/stripe/resources/**/*.rb"
107
+ - "lib/stripe/services/**/*.rb"
62
108
 
63
- Style/TrailingCommaInArrayLiteral:
64
- EnforcedStyleForMultiline: comma
109
+ Style/AccessModifierDeclarations:
110
+ EnforcedStyle: inline
65
111
 
66
- Style/TrailingCommaInHashLiteral:
67
- EnforcedStyleForMultiline: comma
112
+ Style/AsciiComments:
113
+ Enabled: false
68
114
 
69
- Style/TrailingCommaInArguments:
70
- EnforcedStyleForMultiline: no_comma
115
+ Style/FrozenStringLiteralComment:
116
+ EnforcedStyle: always
71
117
 
72
- Style/ClassAndModuleChildren:
73
- EnforcedStyle: compact
118
+ Style/HashEachMethods:
119
+ Enabled: true
74
120
 
75
- Style/EmptyMethod:
76
- EnforcedStyle: expanded
121
+ Style/HashTransformKeys:
122
+ Enabled: true
77
123
 
78
- # Naming
79
- Naming/PredicateName:
80
- ForbiddenPrefixes:
81
- - is_
124
+ Style/HashTransformValues:
125
+ Enabled: true
82
126
 
83
- Naming/AccessorMethodName:
127
+ Style/NumericPredicate:
84
128
  Enabled: false
85
129
 
86
- # RSpec specific cops
87
- RSpec/ExampleLength:
88
- Max: 15
130
+ Style/StringLiterals:
131
+ EnforcedStyle: double_quotes
89
132
 
90
- RSpec/MultipleExpectations:
91
- Max: 5
133
+ Style/TrailingCommaInArrayLiteral:
134
+ EnforcedStyleForMultiline: consistent_comma
92
135
 
93
- RSpec/NestedGroups:
94
- Max: 4
136
+ Style/TrailingCommaInHashLiteral:
137
+ EnforcedStyleForMultiline: consistent_comma
95
138
 
96
- RSpec/DescribeClass:
139
+ Gemspec/DeprecatedAttributeAssignment: # new in 1.30
97
140
  Enabled: true
98
-
99
- RSpec/FilePath:
141
+ Gemspec/DevelopmentDependencies: # new in 1.44
100
142
  Enabled: true
101
-
102
- RSpec/ContextWording:
103
- Prefixes:
104
- - when
105
- - with
106
- - without
107
- - if
108
- - unless
109
- - for
110
-
111
- RSpec/DescribedClass:
143
+ Gemspec/RequireMFA: # new in 1.23
144
+ Enabled: false
145
+ Layout/LineContinuationLeadingSpace: # new in 1.31
112
146
  Enabled: true
113
-
114
- # Security
115
- Security/Eval:
147
+ Layout/LineContinuationSpacing: # new in 1.31
116
148
  Enabled: true
117
-
118
- Security/Open:
149
+ Layout/LineEndStringConcatenationIndentation: # new in 1.18
119
150
  Enabled: true
120
-
121
- Security/YAMLLoad:
151
+ Layout/SpaceBeforeBrackets: # new in 1.7
122
152
  Enabled: true
123
-
124
- # Bundler
125
- Bundler/OrderedGems:
153
+ Lint/AmbiguousAssignment: # new in 1.7
126
154
  Enabled: true
127
-
128
- # Gemspec
129
- Gemspec/OrderedDependencies:
155
+ Lint/AmbiguousOperatorPrecedence: # new in 1.21
156
+ Enabled: true
157
+ Lint/AmbiguousRange: # new in 1.19
158
+ Enabled: true
159
+ Lint/ConstantOverwrittenInRescue: # new in 1.31
160
+ Enabled: true
161
+ Lint/DeprecatedConstants: # new in 1.8
162
+ Enabled: true
163
+ Lint/DuplicateBranch: # new in 1.3
164
+ Enabled: true
165
+ Lint/DuplicateMagicComment: # new in 1.37
166
+ Enabled: true
167
+ Lint/DuplicateMatchPattern: # new in 1.50
168
+ Enabled: true
169
+ Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
170
+ Enabled: true
171
+ Lint/EmptyBlock: # new in 1.1
172
+ Enabled: true
173
+ Lint/EmptyClass: # new in 1.3
174
+ Enabled: true
175
+ Lint/EmptyInPattern: # new in 1.16
176
+ Enabled: true
177
+ Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
178
+ Enabled: true
179
+ Lint/LambdaWithoutLiteralBlock: # new in 1.8
180
+ Enabled: true
181
+ Lint/MixedCaseRange: # new in 1.53
182
+ Enabled: true
183
+ Lint/NoReturnInBeginEndBlocks: # new in 1.2
184
+ Enabled: true
185
+ Lint/NonAtomicFileOperation: # new in 1.31
186
+ Enabled: true
187
+ Lint/NumberedParameterAssignment: # new in 1.9
188
+ Enabled: true
189
+ Lint/OrAssignmentToConstant: # new in 1.9
190
+ Enabled: true
191
+ Lint/RedundantDirGlobSort: # new in 1.8
192
+ Enabled: true
193
+ Lint/RedundantRegexpQuantifiers: # new in 1.53
194
+ Enabled: true
195
+ Lint/RefinementImportMethods: # new in 1.27
196
+ Enabled: true
197
+ Lint/RequireRangeParentheses: # new in 1.32
198
+ Enabled: true
199
+ Lint/RequireRelativeSelfPath: # new in 1.22
200
+ Enabled: true
201
+ Lint/SymbolConversion: # new in 1.9
202
+ Enabled: true
203
+ Lint/ToEnumArguments: # new in 1.1
204
+ Enabled: true
205
+ Lint/TripleQuotes: # new in 1.9
206
+ Enabled: true
207
+ Lint/UnexpectedBlockArity: # new in 1.5
208
+ Enabled: true
209
+ Lint/UnmodifiedReduceAccumulator: # new in 1.1
210
+ Enabled: true
211
+ Lint/UselessAssignment:
212
+ Exclude:
213
+ - "test/stripe/generated_examples_test.rb"
214
+ Lint/UselessRescue: # new in 1.43
215
+ Enabled: true
216
+ Lint/UselessRuby2Keywords: # new in 1.23
217
+ Enabled: true
218
+ Metrics/CollectionLiteralLength: # new in 1.47
219
+ Enabled: true
220
+ Naming/BlockForwarding: # new in 1.24
221
+ Enabled: true
222
+ Security/CompoundHash: # new in 1.28
223
+ Enabled: true
224
+ Security/IoMethods: # new in 1.22
225
+ Enabled: true
226
+ Style/ArgumentsForwarding: # new in 1.1
227
+ Enabled: true
228
+ Style/ArrayIntersect: # new in 1.40
229
+ Enabled: true
230
+ Style/CollectionCompact: # new in 1.2
231
+ Enabled: true
232
+ Style/ComparableClamp: # new in 1.44
233
+ Enabled: true
234
+ Style/ConcatArrayLiterals: # new in 1.41
235
+ Enabled: true
236
+ Style/DataInheritance: # new in 1.49
237
+ Enabled: true
238
+ Style/DirEmpty: # new in 1.48
239
+ Enabled: true
240
+ Style/DocumentDynamicEvalDefinition: # new in 1.1
241
+ Enabled: true
242
+ Style/EmptyHeredoc: # new in 1.32
243
+ Enabled: true
244
+ Style/EndlessMethod: # new in 1.8
245
+ Enabled: true
246
+ Style/EnvHome: # new in 1.29
247
+ Enabled: true
248
+ Style/ExactRegexpMatch: # new in 1.51
249
+ Enabled: true
250
+ Style/FetchEnvVar: # new in 1.28
251
+ Enabled: true
252
+ Style/FileEmpty: # new in 1.48
253
+ Enabled: true
254
+ Style/FileRead: # new in 1.24
255
+ Enabled: true
256
+ Style/FileWrite: # new in 1.24
257
+ Enabled: true
258
+ Style/HashConversion: # new in 1.10
259
+ Enabled: true
260
+ Style/HashExcept: # new in 1.7
261
+ Enabled: true
262
+ Style/IfWithBooleanLiteralBranches: # new in 1.9
263
+ Enabled: true
264
+ Style/InPatternThen: # new in 1.16
265
+ Enabled: true
266
+ Style/MagicCommentFormat: # new in 1.35
267
+ Enabled: true
268
+ Style/MapCompactWithConditionalBlock: # new in 1.30
269
+ Enabled: true
270
+ Style/MapToHash: # new in 1.24
271
+ Enabled: true
272
+ Style/MapToSet: # new in 1.42
273
+ Enabled: true
274
+ Style/MinMaxComparison: # new in 1.42
275
+ Enabled: true
276
+ Style/MultilineInPatternThen: # new in 1.16
277
+ Enabled: true
278
+ Style/NegatedIfElseCondition: # new in 1.2
279
+ Enabled: true
280
+ Style/NestedFileDirname: # new in 1.26
281
+ Enabled: true
282
+ Style/NilLambda: # new in 1.3
283
+ Enabled: true
284
+ Style/NumberedParameters: # new in 1.22
285
+ Enabled: true
286
+ Style/NumberedParametersLimit: # new in 1.22
287
+ Enabled: true
288
+ Style/ObjectThen: # new in 1.28
289
+ Enabled: true
290
+ Style/OpenStructUse: # new in 1.23
291
+ Enabled: true
292
+ Style/OperatorMethodCall: # new in 1.37
293
+ Enabled: true
294
+ Style/QuotedSymbols: # new in 1.16
295
+ Enabled: true
296
+ Style/RedundantArgument: # new in 1.4
297
+ Enabled: true
298
+ Style/RedundantArrayConstructor: # new in 1.52
299
+ Enabled: true
300
+ Style/RedundantConstantBase: # new in 1.40
301
+ Enabled: true
302
+ Style/RedundantCurrentDirectoryInPath: # new in 1.53
303
+ Enabled: true
304
+ Style/RedundantDoubleSplatHashBraces: # new in 1.41
305
+ Enabled: true
306
+ Style/RedundantEach: # new in 1.38
307
+ Enabled: true
308
+ Style/RedundantFilterChain: # new in 1.52
309
+ Enabled: true
310
+ Style/RedundantHeredocDelimiterQuotes: # new in 1.45
311
+ Enabled: true
312
+ Style/RedundantInitialize: # new in 1.27
313
+ Enabled: true
314
+ Style/RedundantLineContinuation: # new in 1.49
315
+ Enabled: true
316
+ Style/RedundantRegexpArgument: # new in 1.53
317
+ Enabled: true
318
+ Style/RedundantRegexpConstructor: # new in 1.52
319
+ Enabled: true
320
+ Style/RedundantSelfAssignmentBranch: # new in 1.19
321
+ Enabled: true
322
+ Style/RedundantStringEscape: # new in 1.37
323
+ Enabled: true
324
+ Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
325
+ Enabled: true
326
+ Style/SelectByRegexp: # new in 1.22
327
+ Enabled: true
328
+ Style/SingleLineDoEndBlock: # new in 1.57
329
+ Enabled: true
330
+ Style/StringChars: # new in 1.12
331
+ Enabled: true
332
+ Style/SwapValues: # new in 1.1
333
+ Enabled: true
334
+ Style/YAMLFileRead: # new in 1.53
335
+ Enabled: true
336
+ Gemspec/AddRuntimeDependency: # new in 1.65
337
+ Enabled: true
338
+ Lint/ArrayLiteralInRegexp: # new in 1.71
339
+ Enabled: true
340
+ Lint/ConstantReassignment: # new in 1.70
341
+ Enabled: true
342
+ Lint/CopDirectiveSyntax: # new in 1.72
343
+ Enabled: true
344
+ Lint/DuplicateSetElement: # new in 1.67
345
+ Enabled: true
346
+ Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
347
+ Enabled: true
348
+ Lint/ItWithoutArgumentsInBlock: # new in 1.59
349
+ Enabled: true
350
+ Lint/LiteralAssignmentInCondition: # new in 1.58
351
+ Enabled: true
352
+ Lint/NumericOperationWithConstantResult: # new in 1.69
353
+ Enabled: true
354
+ Lint/RedundantTypeConversion: # new in 1.72
355
+ Enabled: true
356
+ Lint/SharedMutableDefault: # new in 1.70
357
+ Enabled: true
358
+ Lint/SuppressedExceptionInNumberConversion: # new in 1.72
359
+ Enabled: true
360
+ Lint/UnescapedBracketInRegexp: # new in 1.68
361
+ Enabled: true
362
+ Lint/UselessConstantScoping: # new in 1.72
363
+ Enabled: true
364
+ Lint/UselessDefined: # new in 1.69
365
+ Enabled: true
366
+ Lint/UselessNumericOperation: # new in 1.66
367
+ Enabled: true
368
+ Style/AmbiguousEndlessMethodDefinition: # new in 1.68
369
+ Enabled: true
370
+ Style/BitwisePredicate: # new in 1.68
371
+ Enabled: true
372
+ Style/CombinableDefined: # new in 1.68
373
+ Enabled: true
374
+ Style/ComparableBetween: # new in 1.74
375
+ Enabled: true
376
+ Style/DigChain: # new in 1.69
377
+ Enabled: true
378
+ Style/FileNull: # new in 1.69
379
+ Enabled: true
380
+ Style/FileTouch: # new in 1.69
381
+ Enabled: true
382
+ Style/HashFetchChain: # new in 1.75
383
+ Enabled: true
384
+ Style/HashSlice: # new in 1.71
385
+ Enabled: true
386
+ Style/ItAssignment: # new in 1.70
387
+ Enabled: true
388
+ Style/ItBlockParameter: # new in 1.75
389
+ Enabled: true
390
+ Style/KeywordArgumentsMerging: # new in 1.68
391
+ Enabled: true
392
+ Style/MapIntoArray: # new in 1.63
393
+ Enabled: true
394
+ Style/RedundantFormat: # new in 1.72
395
+ Enabled: true
396
+ Style/RedundantInterpolationUnfreeze: # new in 1.66
397
+ Enabled: true
398
+ Style/SafeNavigationChainLength: # new in 1.68
399
+ Enabled: true
400
+ Style/SendWithLiteralMethodName: # new in 1.64
401
+ Enabled: true
402
+ Style/SuperArguments: # new in 1.64
403
+ Enabled: true
404
+ Style/SuperWithArgsParentheses: # new in 1.58
130
405
  Enabled: true
131
-
132
- Gemspec/RequiredRubyVersion:
133
- Enabled: true
data/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.3] - 2025-08-11
11
+
12
+ ### Fixed
13
+ - Ruby 3.0 and 3.1 compatibility by using bundler 2.4.22
14
+ - All CI workflows now explicitly specify compatible bundler version
15
+
16
+ ## [0.1.2] - 2025-08-11 (yanked)
17
+
18
+ ### Added
19
+ - Ruby 3.4 support in CI/CD pipelines
20
+ - GitHub Actions badges for tests and coverage
21
+ - Comprehensive documentation for all classes
22
+
23
+ ### Improved
24
+ - Applied RuboCop with Stripe's best practices configuration
25
+ - Refactored HttpClient#handle_response to reduce cyclomatic complexity
26
+ - Fixed all code style violations (284 auto-corrected)
27
+ - Enhanced CI/CD workflows with proper bundler configuration
28
+
29
+ ### Removed
30
+ - Unnecessary test files (test_basic.rb, test_typhoeus.rb, run_tests.rb)
31
+ - .rubocop_todo.yml (all violations fixed)
32
+
10
33
  ## [0.1.1] - 2025-08-11
11
34
 
12
35
  ### Changed
data/CONTRIBUTING.md CHANGED
@@ -19,17 +19,17 @@ Thank you for your interest in contributing to the Attio Ruby client! This guide
19
19
  1. Fork the repository on GitHub
20
20
  2. Clone your fork locally:
21
21
  ```bash
22
- git clone https://github.com/YOUR_USERNAME/attio-ruby.git
23
- cd attio-ruby
22
+ git clone https://github.com/YOUR_USERNAME/attio.git
23
+ cd attio
24
24
  ```
25
25
  3. Add the upstream remote:
26
26
  ```bash
27
- git remote add upstream https://github.com/idl3/attio-ruby.git
27
+ git remote add upstream https://github.com/idl3/attio.git
28
28
  ```
29
29
 
30
30
  ## Development Setup
31
31
 
32
- 1. Install Ruby 3.0 or higher
32
+ 1. Install Ruby 3.0 or higher (tested with Ruby 3.0 - 3.4)
33
33
  2. Install dependencies:
34
34
  ```bash
35
35
  bundle install
data/Gemfile CHANGED
@@ -1,17 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in attio.gemspec
4
6
  gemspec
5
7
 
6
- gem "rake", "~> 13.0"
7
8
  gem "logger" # Required for Ruby 3.5.0+ compatibility
9
+ gem "rake", "~> 13.0"
8
10
 
9
11
  group :development, :test do
12
+ gem "pry", "~> 0.14"
10
13
  gem "rspec", "~> 3.12"
11
- gem "webmock", "~> 3.18"
12
- gem "simplecov", "~> 0.22"
13
- gem "simplecov-console", "~> 0.9"
14
14
  gem "rubocop", "~> 1.50"
15
15
  gem "rubocop-rspec", "~> 2.19"
16
- gem "pry", "~> 0.14"
16
+ gem "simplecov", "~> 0.22"
17
+ gem "simplecov-console", "~> 0.9"
18
+ gem "webmock", "~> 3.18"
19
+ gem "yard", "~> 0.9"
17
20
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- attio (0.1.0)
4
+ attio (0.1.2)
5
5
  typhoeus (~> 1.4)
6
6
 
7
7
  GEM
@@ -20,7 +20,6 @@ GEM
20
20
  docile (1.4.1)
21
21
  ethon (0.16.0)
22
22
  ffi (>= 1.15.0)
23
- ffi (1.17.2)
24
23
  ffi (1.17.2-arm64-darwin)
25
24
  hashdiff (1.2.0)
26
25
  json (2.13.2)
@@ -108,7 +107,6 @@ GEM
108
107
 
109
108
  PLATFORMS
110
109
  arm64-darwin-24
111
- ruby
112
110
 
113
111
  DEPENDENCIES
114
112
  attio!
@@ -124,4 +122,4 @@ DEPENDENCIES
124
122
  yard (~> 0.9)
125
123
 
126
124
  BUNDLED WITH
127
- 2.7.1
125
+ 2.4.22
data/README.md CHANGED
@@ -1,10 +1,18 @@
1
1
  # Attio Ruby Client
2
2
 
3
+ [![Tests](https://github.com/idl3/attio/actions/workflows/tests.yml/badge.svg)](https://github.com/idl3/attio/actions/workflows/tests.yml)
4
+ [![Test Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)](https://github.com/idl3/attio/tree/master/spec)
3
5
  [![Documentation](https://img.shields.io/badge/docs-yard-blue.svg)](https://idl3.github.io/attio)
4
6
  [![Gem Version](https://badge.fury.io/rb/attio.svg)](https://badge.fury.io/rb/attio)
7
+ [![RSpec](https://img.shields.io/badge/RSpec-147_tests-green.svg)](https://github.com/idl3/attio/tree/master/spec)
5
8
 
6
9
  Ruby client for the [Attio CRM API](https://developers.attio.com/). This library provides easy access to the Attio API, allowing you to manage records, objects, lists, and more.
7
10
 
11
+ ## Requirements
12
+
13
+ - Ruby 3.0 or higher (tested with Ruby 3.0, 3.1, 3.2, 3.3, and 3.4)
14
+ - Bundler
15
+
8
16
  ## Installation
9
17
 
10
18
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
4
6
  begin
5
7
  require "yard"
6
8
  require "yard/rake/yardoc_task"
7
-
9
+
8
10
  YARD::Rake::YardocTask.new do |t|
9
- t.files = ['lib/**/*.rb']
10
- t.options = ['--output-dir', 'docs']
11
+ t.files = ["lib/**/*.rb"]
12
+ t.options = ["--output-dir", "docs"]
11
13
  end
12
14
  rescue LoadError
13
15
  # YARD is not available
@@ -20,7 +22,7 @@ task default: :spec
20
22
  namespace :coverage do
21
23
  desc "Run tests with coverage report"
22
24
  task :report do
23
- ENV['COVERAGE'] = 'true'
25
+ ENV["COVERAGE"] = "true"
24
26
  Rake::Task["spec"].execute
25
27
  end
26
28
  end
@@ -36,7 +38,7 @@ namespace :docs do
36
38
  end
37
39
 
38
40
  desc "Generate and open documentation"
39
- task :open => :generate do
41
+ task open: :generate do
40
42
  if File.exist?("docs/index.html")
41
43
  system("open docs/index.html")
42
44
  else
@@ -46,7 +48,7 @@ namespace :docs do
46
48
 
47
49
  desc "Clean generated documentation"
48
50
  task :clean do
49
- FileUtils.rm_rf("docs") if File.exist?("docs")
51
+ FileUtils.rm_rf("docs")
50
52
  puts "Documentation cleaned."
51
53
  end
52
54