zonesync 0.12.1 → 0.13.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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +0 -12
  3. data/lib/zonesync/cli.rb +1 -7
  4. data/lib/zonesync/cloudflare/proxied_support.rb +61 -0
  5. data/lib/zonesync/cloudflare.rb +48 -35
  6. data/lib/zonesync/diff.rb +1 -9
  7. data/lib/zonesync/errors.rb +5 -39
  8. data/lib/zonesync/generate.rb +1 -5
  9. data/lib/zonesync/http.rb +10 -21
  10. data/lib/zonesync/logger.rb +2 -7
  11. data/lib/zonesync/manifest.rb +7 -24
  12. data/lib/zonesync/parser.rb +3 -5
  13. data/lib/zonesync/provider.rb +19 -51
  14. data/lib/zonesync/record.rb +6 -18
  15. data/lib/zonesync/record_hash.rb +3 -6
  16. data/lib/zonesync/route53.rb +9 -24
  17. data/lib/zonesync/sync.rb +2 -6
  18. data/lib/zonesync/validator.rb +4 -17
  19. data/lib/zonesync/version.rb +1 -1
  20. data/lib/zonesync/zonefile.rb +2 -10
  21. data/lib/zonesync.rb +7 -17
  22. data/zonesync.gemspec +0 -3
  23. metadata +6 -100
  24. data/sorbet/config +0 -4
  25. data/sorbet/rbi/annotations/.gitattributes +0 -1
  26. data/sorbet/rbi/annotations/activesupport.rbi +0 -457
  27. data/sorbet/rbi/annotations/minitest.rbi +0 -119
  28. data/sorbet/rbi/annotations/webmock.rbi +0 -9
  29. data/sorbet/rbi/gems/.gitattributes +0 -1
  30. data/sorbet/rbi/gems/activesupport@8.0.1.rbi +0 -18474
  31. data/sorbet/rbi/gems/addressable@2.8.7.rbi +0 -1994
  32. data/sorbet/rbi/gems/base64@0.2.0.rbi +0 -507
  33. data/sorbet/rbi/gems/benchmark@0.4.0.rbi +0 -618
  34. data/sorbet/rbi/gems/bigdecimal@3.1.9.rbi +0 -9
  35. data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +0 -11645
  36. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +0 -9
  37. data/sorbet/rbi/gems/crack@1.0.0.rbi +0 -145
  38. data/sorbet/rbi/gems/date@3.4.1.rbi +0 -75
  39. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +0 -1131
  40. data/sorbet/rbi/gems/drb@2.2.1.rbi +0 -1347
  41. data/sorbet/rbi/gems/erubi@1.13.1.rbi +0 -155
  42. data/sorbet/rbi/gems/hashdiff@1.1.2.rbi +0 -353
  43. data/sorbet/rbi/gems/i18n@1.14.6.rbi +0 -2275
  44. data/sorbet/rbi/gems/io-console@0.8.0.rbi +0 -9
  45. data/sorbet/rbi/gems/logger@1.6.4.rbi +0 -940
  46. data/sorbet/rbi/gems/minitest@5.25.4.rbi +0 -1547
  47. data/sorbet/rbi/gems/netrc@0.11.0.rbi +0 -159
  48. data/sorbet/rbi/gems/parallel@1.26.3.rbi +0 -291
  49. data/sorbet/rbi/gems/polyglot@0.3.5.rbi +0 -42
  50. data/sorbet/rbi/gems/prism@1.3.0.rbi +0 -40040
  51. data/sorbet/rbi/gems/psych@5.2.2.rbi +0 -1785
  52. data/sorbet/rbi/gems/public_suffix@6.0.1.rbi +0 -936
  53. data/sorbet/rbi/gems/rake@13.2.1.rbi +0 -3028
  54. data/sorbet/rbi/gems/rbi@0.2.2.rbi +0 -4527
  55. data/sorbet/rbi/gems/rdoc@6.10.0.rbi +0 -12766
  56. data/sorbet/rbi/gems/reline@0.6.0.rbi +0 -9
  57. data/sorbet/rbi/gems/rexml@3.4.0.rbi +0 -4974
  58. data/sorbet/rbi/gems/rspec-core@3.13.2.rbi +0 -10896
  59. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +0 -8183
  60. data/sorbet/rbi/gems/rspec-mocks@3.13.2.rbi +0 -5341
  61. data/sorbet/rbi/gems/rspec-support@3.13.2.rbi +0 -1630
  62. data/sorbet/rbi/gems/rspec@3.13.0.rbi +0 -83
  63. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +0 -75
  64. data/sorbet/rbi/gems/spoom@1.5.0.rbi +0 -4932
  65. data/sorbet/rbi/gems/stringio@3.1.2.rbi +0 -9
  66. data/sorbet/rbi/gems/tapioca@0.16.6.rbi +0 -3611
  67. data/sorbet/rbi/gems/thor@1.3.2.rbi +0 -4378
  68. data/sorbet/rbi/gems/treetop@1.6.12.rbi +0 -1895
  69. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +0 -5918
  70. data/sorbet/rbi/gems/uri@1.0.2.rbi +0 -2340
  71. data/sorbet/rbi/gems/webmock@3.24.0.rbi +0 -1780
  72. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +0 -435
  73. data/sorbet/rbi/gems/yard@0.9.37.rbi +0 -18379
  74. data/sorbet/rbi/todo.rbi +0 -7
  75. data/sorbet/tapioca/config.yml +0 -13
  76. data/sorbet/tapioca/require.rb +0 -4
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zonesync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  - James Ottaway
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-10-20 00:00:00.000000000 Z
12
+ date: 2025-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -39,20 +39,6 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.6'
42
- - !ruby/object:Gem::Dependency
43
- name: sorbet-runtime
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: rake
58
44
  requirement: !ruby/object:Gem::Requirement
@@ -95,34 +81,6 @@ dependencies:
95
81
  - - ">="
96
82
  - !ruby/object:Gem::Version
97
83
  version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: sorbet
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: tapioca
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
84
  description: Sync your Zone file with your DNS host
127
85
  email:
128
86
  - micah@botandrose.com
@@ -143,6 +101,7 @@ files:
143
101
  - lib/zonesync.rb
144
102
  - lib/zonesync/cli.rb
145
103
  - lib/zonesync/cloudflare.rb
104
+ - lib/zonesync/cloudflare/proxied_support.rb
146
105
  - lib/zonesync/diff.rb
147
106
  - lib/zonesync/errors.rb
148
107
  - lib/zonesync/generate.rb
@@ -161,59 +120,6 @@ files:
161
120
  - lib/zonesync/zonefile.rb
162
121
  - lib/zonesync/zonefile.treetop
163
122
  - log/.keep
164
- - sorbet/config
165
- - sorbet/rbi/annotations/.gitattributes
166
- - sorbet/rbi/annotations/activesupport.rbi
167
- - sorbet/rbi/annotations/minitest.rbi
168
- - sorbet/rbi/annotations/webmock.rbi
169
- - sorbet/rbi/gems/.gitattributes
170
- - sorbet/rbi/gems/activesupport@8.0.1.rbi
171
- - sorbet/rbi/gems/addressable@2.8.7.rbi
172
- - sorbet/rbi/gems/base64@0.2.0.rbi
173
- - sorbet/rbi/gems/benchmark@0.4.0.rbi
174
- - sorbet/rbi/gems/bigdecimal@3.1.9.rbi
175
- - sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi
176
- - sorbet/rbi/gems/connection_pool@2.4.1.rbi
177
- - sorbet/rbi/gems/crack@1.0.0.rbi
178
- - sorbet/rbi/gems/date@3.4.1.rbi
179
- - sorbet/rbi/gems/diff-lcs@1.5.1.rbi
180
- - sorbet/rbi/gems/drb@2.2.1.rbi
181
- - sorbet/rbi/gems/erubi@1.13.1.rbi
182
- - sorbet/rbi/gems/hashdiff@1.1.2.rbi
183
- - sorbet/rbi/gems/i18n@1.14.6.rbi
184
- - sorbet/rbi/gems/io-console@0.8.0.rbi
185
- - sorbet/rbi/gems/logger@1.6.4.rbi
186
- - sorbet/rbi/gems/minitest@5.25.4.rbi
187
- - sorbet/rbi/gems/netrc@0.11.0.rbi
188
- - sorbet/rbi/gems/parallel@1.26.3.rbi
189
- - sorbet/rbi/gems/polyglot@0.3.5.rbi
190
- - sorbet/rbi/gems/prism@1.3.0.rbi
191
- - sorbet/rbi/gems/psych@5.2.2.rbi
192
- - sorbet/rbi/gems/public_suffix@6.0.1.rbi
193
- - sorbet/rbi/gems/rake@13.2.1.rbi
194
- - sorbet/rbi/gems/rbi@0.2.2.rbi
195
- - sorbet/rbi/gems/rdoc@6.10.0.rbi
196
- - sorbet/rbi/gems/reline@0.6.0.rbi
197
- - sorbet/rbi/gems/rexml@3.4.0.rbi
198
- - sorbet/rbi/gems/rspec-core@3.13.2.rbi
199
- - sorbet/rbi/gems/rspec-expectations@3.13.3.rbi
200
- - sorbet/rbi/gems/rspec-mocks@3.13.2.rbi
201
- - sorbet/rbi/gems/rspec-support@3.13.2.rbi
202
- - sorbet/rbi/gems/rspec@3.13.0.rbi
203
- - sorbet/rbi/gems/securerandom@0.4.1.rbi
204
- - sorbet/rbi/gems/spoom@1.5.0.rbi
205
- - sorbet/rbi/gems/stringio@3.1.2.rbi
206
- - sorbet/rbi/gems/tapioca@0.16.6.rbi
207
- - sorbet/rbi/gems/thor@1.3.2.rbi
208
- - sorbet/rbi/gems/treetop@1.6.12.rbi
209
- - sorbet/rbi/gems/tzinfo@2.0.6.rbi
210
- - sorbet/rbi/gems/uri@1.0.2.rbi
211
- - sorbet/rbi/gems/webmock@3.24.0.rbi
212
- - sorbet/rbi/gems/yard-sorbet@0.9.0.rbi
213
- - sorbet/rbi/gems/yard@0.9.37.rbi
214
- - sorbet/rbi/todo.rbi
215
- - sorbet/tapioca/config.yml
216
- - sorbet/tapioca/require.rb
217
123
  - zonesync.gemspec
218
124
  homepage: https://github.com/botandrose/zonesync
219
125
  licenses:
@@ -221,7 +127,7 @@ licenses:
221
127
  metadata:
222
128
  homepage_uri: https://github.com/botandrose/zonesync
223
129
  source_code_uri: https://github.com/botandrose/zonesync
224
- post_install_message:
130
+ post_install_message:
225
131
  rdoc_options: []
226
132
  require_paths:
227
133
  - lib
@@ -237,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
143
  version: '0'
238
144
  requirements: []
239
145
  rubygems_version: 3.5.11
240
- signing_key:
146
+ signing_key:
241
147
  specification_version: 4
242
148
  summary: Sync your Zone file with your DNS host
243
149
  test_files: []
data/sorbet/config DELETED
@@ -1,4 +0,0 @@
1
- --dir
2
- .
3
- --ignore=tmp/
4
- --ignore=vendor/
@@ -1 +0,0 @@
1
- **/*.rbi linguist-vendored=true
@@ -1,457 +0,0 @@
1
- # typed: true
2
-
3
- # DO NOT EDIT MANUALLY
4
- # This file was pulled from a central RBI files repository.
5
- # Please run `bin/tapioca annotations` to update it.
6
-
7
- module ActiveSupport::Testing::Declarative
8
- sig { params(name: String, block: T.proc.bind(T.untyped).void).void }
9
- def test(name, &block); end
10
- end
11
-
12
- class ActiveSupport::EnvironmentInquirer
13
- sig { returns(T::Boolean) }
14
- def development?; end
15
-
16
- sig { returns(T::Boolean) }
17
- def production?; end
18
-
19
- sig { returns(T::Boolean) }
20
- def test?; end
21
-
22
- # @method_missing: delegated to String through ActiveSupport::StringInquirer
23
- sig { returns(T::Boolean) }
24
- def staging?; end
25
- end
26
-
27
- module ActiveSupport::Testing::SetupAndTeardown::ClassMethods
28
- sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
29
- def setup(*args, &block); end
30
-
31
- sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
32
- def teardown(*args, &block); end
33
- end
34
-
35
- class ActiveSupport::TestCase
36
- sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
37
- def self.setup(*args, &block); end
38
-
39
- sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
40
- def self.teardown(*args, &block); end
41
-
42
- sig { params(name: String, block: T.proc.bind(T.attached_class).void).void }
43
- def self.test(name, &block); end
44
- end
45
-
46
- class ActiveSupport::TimeWithZone
47
- # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
48
- include ::DateAndTime::Zones
49
-
50
- # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
51
- include ::DateAndTime::Calculations
52
-
53
- sig { returns(FalseClass) }
54
- def blank?; end
55
-
56
- # @shim: since `present?` is always true, `presence` always returns `self`
57
- sig { returns(T.self_type) }
58
- def presence; end
59
-
60
- # @shim: since `blank?` is always false, `present?` always returns `true`
61
- sig { returns(TrueClass) }
62
- def present?; end
63
- end
64
-
65
- class Object
66
- sig { returns(T::Boolean) }
67
- def blank?; end
68
-
69
- sig { returns(FalseClass) }
70
- def html_safe?; end
71
-
72
- sig { returns(T.nilable(T.self_type)) }
73
- def presence; end
74
-
75
- sig { params(another_object: T.untyped).returns(T.nilable(T.self_type)) }
76
- def presence_in(another_object); end
77
-
78
- sig { returns(T::Boolean) }
79
- def present?; end
80
- end
81
-
82
- class Hash
83
- sig { returns(T::Boolean) }
84
- def blank?; end
85
-
86
- sig { returns(T::Boolean) }
87
- def present?; end
88
-
89
- sig { returns(T::Boolean) }
90
- def extractable_options?; end
91
- end
92
-
93
- class Array
94
- sig { returns(T::Boolean) }
95
- def blank?; end
96
-
97
- sig { returns(T::Boolean) }
98
- def present?; end
99
-
100
- sig { params(position: Integer).returns(T.self_type) }
101
- def from(position); end
102
-
103
- sig { params(position: Integer).returns(T.self_type) }
104
- def to(position); end
105
-
106
- sig { params(elements: T.untyped).returns(T::Array[T.untyped]) }
107
- def including(*elements); end
108
-
109
- sig { params(elements: T.untyped).returns(T.self_type) }
110
- def excluding(*elements); end
111
-
112
- sig { params(elements: T.untyped).returns(T.self_type) }
113
- def without(*elements); end
114
-
115
- sig { returns(T.nilable(Elem)) }
116
- def second; end
117
-
118
- sig { returns(T.nilable(Elem)) }
119
- def third; end
120
-
121
- sig { returns(T.nilable(Elem)) }
122
- def fourth; end
123
-
124
- sig { returns(T.nilable(Elem)) }
125
- def fifth; end
126
-
127
- sig { returns(T.nilable(Elem)) }
128
- def forty_two; end
129
-
130
- sig { returns(T.nilable(Elem)) }
131
- def third_to_last; end
132
-
133
- sig { returns(T.nilable(Elem)) }
134
- def second_to_last; end
135
-
136
- sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
137
- def to_sentence(options = {}); end
138
-
139
- sig { params(format: Symbol).returns(String) }
140
- def to_fs(format = :default); end
141
-
142
- sig { params(format: Symbol).returns(String) }
143
- def to_formatted_s(format = :default); end
144
-
145
- sig { returns(String) }
146
- def to_xml; end
147
-
148
- sig { returns(T::Hash[T.untyped, T.untyped]) }
149
- def extract_options!; end
150
-
151
- sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
152
- def in_groups(number, fill_with = T.unsafe(nil), &block); end
153
-
154
- sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
155
- def in_groups_of(number, fill_with = T.unsafe(nil), &block); end
156
-
157
- sig { params(value: T.untyped, block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T::Array[T::Array[Elem]]) }
158
- def split(value = nil, &block); end
159
-
160
- sig { params(block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T.any(T::Array[Elem], T::Enumerator[Elem])) }
161
- def extract!(&block); end
162
-
163
- sig { returns(ActiveSupport::ArrayInquirer) }
164
- def inquiry; end
165
-
166
- sig { params(object: T.untyped).returns(T::Array[T.untyped]) }
167
- def self.wrap(object); end
168
- end
169
-
170
- class Date
171
- sig { returns(FalseClass) }
172
- def blank?; end
173
-
174
- # @shim: since `present?` is always true, `presence` always returns `self`
175
- sig { returns(T.self_type) }
176
- def presence; end
177
-
178
- # @shim: since `blank?` is always false, `present?` always returns `true`
179
- sig { returns(TrueClass) }
180
- def present?; end
181
- end
182
-
183
- class DateTime
184
- sig { returns(FalseClass) }
185
- def blank?; end
186
-
187
- # @shim: since `present?` is always true, `presence` always returns `self`
188
- sig { returns(T.self_type) }
189
- def presence; end
190
-
191
- # @shim: since `blank?` is always false, `present?` always returns `true`
192
- sig { returns(TrueClass) }
193
- def present?; end
194
- end
195
-
196
- class NilClass
197
- sig { returns(TrueClass) }
198
- def blank?; end
199
-
200
- # @shim: since `present?` is always false, `presence` always returns `nil`
201
- sig { returns(NilClass) }
202
- def presence; end
203
-
204
- # @shim: since `blank?` is always true, `present?` always returns `false`
205
- sig { returns(FalseClass) }
206
- def present?; end
207
- end
208
-
209
- class FalseClass
210
- sig { returns(TrueClass) }
211
- def blank?; end
212
-
213
- # @shim: since `present?` is always false, `presence` always returns `nil`
214
- sig { returns(NilClass) }
215
- def presence; end
216
-
217
- # @shim: since `blank?` is always true, `present?` always returns `false`
218
- sig { returns(FalseClass) }
219
- def present?; end
220
- end
221
-
222
- class TrueClass
223
- sig { returns(FalseClass) }
224
- def blank?; end
225
-
226
- # @shim: since `present?` is always true, `presence` always returns `self`
227
- sig { returns(T.self_type) }
228
- def presence; end
229
-
230
- # @shim: since `blank?` is always false, `present?` always returns `true`
231
- sig { returns(TrueClass) }
232
- def present?; end
233
- end
234
-
235
- class Numeric
236
- sig { returns(FalseClass) }
237
- def blank?; end
238
-
239
- sig { returns(TrueClass) }
240
- def html_safe?; end
241
-
242
- # @shim: since `present?` is always true, `presence` always returns `self`
243
- sig { returns(T.self_type) }
244
- def presence; end
245
-
246
- # @shim: since `blank?` is always false, `present?` always returns `true`
247
- sig { returns(TrueClass) }
248
- def present?; end
249
- end
250
-
251
- class Time
252
- sig { returns(FalseClass) }
253
- def blank?; end
254
-
255
- # @shim: since `present?` is always true, `presence` always returns `self`
256
- sig { returns(T.self_type) }
257
- def presence; end
258
-
259
- # @shim: since `blank?` is always false, `present?` always returns `true`
260
- sig { returns(TrueClass) }
261
- def present?; end
262
-
263
- sig { returns(ActiveSupport::TimeZone) }
264
- def self.zone; end
265
-
266
- sig { returns(T.any(ActiveSupport::TimeWithZone, ::Time)) }
267
- def self.current; end
268
- end
269
-
270
- class Symbol
271
- sig { returns(T::Boolean) }
272
- def blank?; end
273
-
274
- sig { returns(T::Boolean) }
275
- def present?; end
276
-
277
- # alias for `#start_with?`
278
- sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
279
- def starts_with?(*string_or_regexp); end
280
-
281
- # alias for `#end_with?`
282
- sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
283
- def ends_with?(*string_or_regexp); end
284
- end
285
-
286
- class String
287
- sig { returns(TrueClass) }
288
- def acts_like_string?; end
289
-
290
- # This is the subset of `#[]` sigs that have just 1 parameter.
291
- # https://github.com/sorbet/sorbet/blob/40ad87b4dc7be23fa00c1369ac9f927053c68907/rbi/core/string.rbi#L270-L303
292
- sig { params(position: Integer).returns(T.nilable(String)) }
293
- sig { params(position: T.any(T::Range[Integer], Regexp)).returns(T.nilable(String)) }
294
- sig { params(position: String).returns(T.nilable(String)) }
295
- def at(position); end
296
-
297
- sig { returns(String) }
298
- def as_json; end
299
-
300
- sig { returns(T::Boolean) }
301
- def blank?; end
302
-
303
- sig { params(first_letter: Symbol).returns(String) }
304
- def camelcase(first_letter = :upper); end
305
-
306
- sig { params(first_letter: Symbol).returns(String) }
307
- def camelize(first_letter = :upper); end
308
-
309
- sig { returns(String) }
310
- def classify; end
311
-
312
- sig { returns(T.untyped) }
313
- def constantize; end
314
-
315
- sig { returns(String) }
316
- def dasherize; end
317
-
318
- sig { returns(String) }
319
- def deconstantize; end
320
-
321
- sig { returns(String) }
322
- def demodulize; end
323
-
324
- # alias for `#end_with?`
325
- sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
326
- def ends_with?(*string_or_regexp); end
327
-
328
- sig { returns(String) }
329
- def downcase_first; end
330
-
331
- sig { params(string: String).returns(T::Boolean) }
332
- def exclude?(string); end
333
-
334
- sig { params(limit: Integer).returns(String) }
335
- def first(limit = 1); end
336
-
337
- sig { params(separate_class_name_and_id_with_underscore: T::Boolean).returns(String) }
338
- def foreign_key(separate_class_name_and_id_with_underscore = true); end
339
-
340
- sig { params(position: Integer).returns(String) }
341
- def from(position); end
342
-
343
- sig { returns(ActiveSupport::SafeBuffer) }
344
- def html_safe; end
345
-
346
- sig { params(capitalize: T::Boolean, keep_id_suffix: T::Boolean).returns(String) }
347
- def humanize(capitalize: true, keep_id_suffix: false); end
348
-
349
- sig { params(zone: T.nilable(T.any(ActiveSupport::TimeZone, String))).returns(T.any(ActiveSupport::TimeWithZone, Time)) }
350
- def in_time_zone(zone = ::Time.zone); end
351
-
352
- sig { params(amount: Integer, indent_string: T.nilable(String), indent_empty_lines: T::Boolean).returns(String) }
353
- def indent(amount, indent_string = nil, indent_empty_lines = false); end
354
-
355
- sig { params(amount: Integer, indent_string: T.nilable(String), indent_empty_lines: T::Boolean).returns(T.nilable(String)) }
356
- def indent!(amount, indent_string = nil, indent_empty_lines = false); end
357
-
358
- sig { returns(ActiveSupport::StringInquirer) }
359
- def inquiry; end
360
-
361
- sig { returns(T::Boolean) }
362
- def is_utf8?; end
363
-
364
- sig { params(limit: Integer).returns(String) }
365
- def last(limit = 1); end
366
-
367
- sig { returns(ActiveSupport::Multibyte::Chars) }
368
- def mb_chars; end
369
-
370
- sig { params(separator: String, preserve_case: T::Boolean, locale: T.nilable(Symbol)).returns(String) }
371
- def parameterize(separator: "-", preserve_case: false, locale: nil); end
372
-
373
- sig { params(count: T.nilable(T.any(Integer, Symbol)), locale: T.nilable(Symbol)).returns(String) }
374
- def pluralize(count = nil, locale = :en); end
375
-
376
- sig { returns(T::Boolean) }
377
- def present?; end
378
-
379
- sig { params(patterns: T.any(String, Regexp)).returns(String) }
380
- def remove(*patterns); end
381
-
382
- sig { params(patterns: T.any(String, Regexp)).returns(String) }
383
- def remove!(*patterns); end
384
-
385
- sig { returns(T.untyped) }
386
- def safe_constantize; end
387
-
388
- sig { params(locale: Symbol).returns(String) }
389
- def singularize(locale = :en); end
390
-
391
- sig { returns(String) }
392
- def squish; end
393
-
394
- sig { returns(String) }
395
- def squish!; end
396
-
397
- # alias for `#start_with?`
398
- sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
399
- def starts_with?(*string_or_regexp); end
400
-
401
- sig { returns(String) }
402
- def strip_heredoc; end
403
-
404
- sig { returns(String) }
405
- def tableize; end
406
-
407
- sig { params(keep_id_suffix: T::Boolean).returns(String) }
408
- def titlecase(keep_id_suffix: false); end
409
-
410
- sig { params(keep_id_suffix: T::Boolean).returns(String) }
411
- def titleize(keep_id_suffix: false); end
412
-
413
- sig { params(position: Integer).returns(String) }
414
- def to(position); end
415
-
416
- sig { returns(::Date) }
417
- def to_date; end
418
-
419
- sig { returns(::DateTime) }
420
- def to_datetime; end
421
-
422
- sig { params(form: T.nilable(Symbol)).returns(T.nilable(Time)) }
423
- def to_time(form = :local); end
424
-
425
- sig { params(truncate_to: Integer, options: T::Hash[Symbol, T.anything]).returns(String) }
426
- def truncate(truncate_to, options = {}); end
427
-
428
- sig { params(truncate_to: Integer, omission: T.nilable(String)).returns(String) }
429
- def truncate_bytes(truncate_to, omission: "…"); end
430
-
431
- sig { params(words_count: Integer, options: T::Hash[Symbol, T.anything]).returns(String) }
432
- def truncate_words(words_count, options = {}); end
433
-
434
- sig { returns(String) }
435
- def underscore; end
436
-
437
- sig { returns(String) }
438
- def upcase_first; end
439
- end
440
-
441
- class ActiveSupport::ErrorReporter
442
- # @version >= 7.1.0.beta1
443
- sig { type_parameters(:Block, :Fallback).params(error_classes: T.class_of(Exception), severity: T.nilable(Symbol), context: T.nilable(T::Hash[Symbol, T.untyped]), fallback: T.nilable(T.proc.returns(T.type_parameter(:Fallback))), source: T.nilable(String), blk: T.proc.returns(T.type_parameter(:Block))).returns(T.any(T.type_parameter(:Block), T.type_parameter(:Fallback))) }
444
- def handle(*error_classes, severity: T.unsafe(nil), context: T.unsafe(nil), fallback: T.unsafe(nil), source: T.unsafe(nil), &blk); end
445
-
446
- # @version >= 7.1.0.beta1
447
- sig { type_parameters(:Block).params(error_classes: T.class_of(Exception), severity: T.nilable(Symbol), context: T.nilable(T::Hash[Symbol, T.untyped]), source: T.nilable(String), blk: T.proc.returns(T.type_parameter(:Block))).returns(T.type_parameter(:Block)) }
448
- def record(*error_classes, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil), &blk); end
449
-
450
- # @version >= 7.1.0.beta1
451
- sig { params(error: Exception, handled: T::Boolean, severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void }
452
- def report(error, handled: true, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end
453
-
454
- # @version >= 7.2.0.beta1
455
- sig { params(error: T.any(Exception, String), severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void }
456
- def unexpected(error, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end
457
- end