activerecord-ejection_seat 0.1.0 → 0.3.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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +12 -8
  3. data/.ruby-version +1 -0
  4. data/.tool-versions +1 -0
  5. data/Gemfile +12 -4
  6. data/Gemfile.lock +92 -41
  7. data/README.md +20 -6
  8. data/Rakefile +15 -3
  9. data/activerecord-ejection_seat.gemspec +3 -2
  10. data/lib/activerecord-ejection_seat/attributes_builder.rb +42 -0
  11. data/lib/activerecord-ejection_seat/ejectable.rb +8 -10
  12. data/lib/activerecord-ejection_seat/props_builder.rb +56 -0
  13. data/lib/activerecord-ejection_seat/version.rb +2 -1
  14. data/lib/activerecord-ejection_seat.rb +8 -3
  15. data/sorbet/config +3 -0
  16. data/sorbet/rbi/annotations/activerecord.rbi +18 -0
  17. data/sorbet/rbi/annotations/activesupport.rbi +52 -0
  18. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  19. data/sorbet/rbi/gems/activemodel@7.0.4.1.rbi +6022 -0
  20. data/sorbet/rbi/gems/activerecord@7.0.4.1.rbi +37791 -0
  21. data/sorbet/rbi/gems/activesupport@7.0.4.1.rbi +18127 -0
  22. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  23. data/sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi +11632 -0
  24. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1064 -0
  25. data/sorbet/rbi/gems/i18n@1.12.0.rbi +8 -0
  26. data/sorbet/rbi/gems/io-console@0.6.0.rbi +8 -0
  27. data/sorbet/rbi/gems/irb@1.6.2.rbi +342 -0
  28. data/sorbet/rbi/gems/json@2.6.3.rbi +1541 -0
  29. data/sorbet/rbi/gems/language_server-protocol@3.17.0.2.rbi +8 -0
  30. data/sorbet/rbi/gems/minitest@5.17.0.rbi +2319 -0
  31. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  32. data/sorbet/rbi/gems/parallel@1.22.1.rbi +277 -0
  33. data/sorbet/rbi/gems/parser@3.2.0.0.rbi +6964 -0
  34. data/sorbet/rbi/gems/prettier_print@1.2.0.rbi +8 -0
  35. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +397 -0
  36. data/sorbet/rbi/gems/rake@13.0.6.rbi +2946 -0
  37. data/sorbet/rbi/gems/rbi@0.0.16.rbi +3008 -0
  38. data/sorbet/rbi/gems/regexp_parser@2.6.1.rbi +3126 -0
  39. data/sorbet/rbi/gems/reline@0.3.2.rbi +8 -0
  40. data/sorbet/rbi/gems/rexml@3.2.5.rbi +4660 -0
  41. data/sorbet/rbi/gems/rubocop-ast@1.24.1.rbi +7034 -0
  42. data/sorbet/rbi/gems/rubocop-minitest@0.26.1.rbi +2320 -0
  43. data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +354 -0
  44. data/sorbet/rbi/gems/rubocop-sorbet@0.6.11.rbi +1014 -0
  45. data/sorbet/rbi/gems/rubocop@1.43.0.rbi +54266 -0
  46. data/sorbet/rbi/gems/ruby-lsp@0.3.8.rbi +14 -0
  47. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +1212 -0
  48. data/sorbet/rbi/gems/sorbet-struct-comparable@1.3.0.rbi +16 -0
  49. data/sorbet/rbi/gems/spoom@1.1.15.rbi +2383 -0
  50. data/sorbet/rbi/gems/sqlite3@1.6.0.rbi +1673 -0
  51. data/sorbet/rbi/gems/syntax_tree@5.2.0.rbi +8 -0
  52. data/sorbet/rbi/gems/tapioca@0.10.5.rbi +3215 -0
  53. data/sorbet/rbi/gems/thor@1.2.1.rbi +3950 -0
  54. data/sorbet/rbi/gems/tzinfo@2.0.5.rbi +8 -0
  55. data/sorbet/rbi/gems/unicode-display_width@2.4.2.rbi +65 -0
  56. data/sorbet/rbi/gems/unparser@0.6.7.rbi +4524 -0
  57. data/sorbet/rbi/gems/webrick@1.7.0.rbi +2498 -0
  58. data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +441 -0
  59. data/sorbet/rbi/gems/yard@0.9.28.rbi +17033 -0
  60. data/sorbet/rbi/shims/location.rbi +13 -0
  61. data/sorbet/rbi/shims/post.rbi +16 -0
  62. data/sorbet/rbi/shims/user.rbi +19 -0
  63. data/sorbet/rbi/todo.rbi +5 -0
  64. data/sorbet/tapioca/config.yml +2 -0
  65. data/sorbet/tapioca/require.rb +18 -0
  66. metadata +75 -6
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class Location < ActiveRecord::Base
5
+ sig { params(struct: T::Struct).returns(Location) }
6
+ def self.buckle(struct); end
7
+
8
+ sig { params(struct: T::Struct).returns(Location) }
9
+ def self.from_struct(struct); end
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ def name; end
13
+ end
@@ -0,0 +1,16 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class Post < ActiveRecord::Base
5
+ sig { params(struct: T::Struct).returns(Post) }
6
+ def self.buckle(struct); end
7
+
8
+ sig { params(struct: T::Struct).returns(Post) }
9
+ def self.from_struct(struct); end
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ def title; end
13
+
14
+ sig { returns(T.nilable(String)) }
15
+ def status; end
16
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class User < ActiveRecord::Base
5
+ sig { params(struct: T::Struct).returns(User) }
6
+ def self.buckle(struct); end
7
+
8
+ sig { params(struct: T::Struct).returns(User) }
9
+ def self.from_struct(struct); end
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ def name; end
13
+
14
+ sig { returns(T.nilable(Integer)) }
15
+ def age; end
16
+
17
+ sig { returns(T.nilable(Location)) }
18
+ def location; end
19
+ end
@@ -0,0 +1,5 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for unresolved constants.
3
+ # Please instead update this file by running `bin/tapioca todo`.
4
+
5
+ # typed: false
@@ -0,0 +1,2 @@
1
+ gem:
2
+ workers: 5
@@ -0,0 +1,18 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "active_support/lazy_load_hooks"
5
+ require "active_support/dependencies/autoload"
6
+ require "activerecord-ejection_seat/ejectable"
7
+ require "active_record/base"
8
+ require "active_model"
9
+ require "bundler"
10
+ require "debug"
11
+ require "minitest"
12
+ require "minitest/test_task"
13
+ require "minitest/autorun"
14
+ require "pathname"
15
+ require "sorbet-runtime"
16
+ require "sorbet-struct-comparable"
17
+ require "rubocop/rake_task"
18
+ require "concurrent"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-ejection_seat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max VelDink
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-22 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.2'
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sorbet-runtime
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: When working with ActiveRecord models, sometimes you want to eject to
28
42
  a simpler, safer object. Enter Sorbet's T::Struct. This gem
29
43
  makes it much easier to target a Sorbet T::Struct and eject
@@ -37,6 +51,8 @@ extra_rdoc_files: []
37
51
  files:
38
52
  - ".rspec"
39
53
  - ".rubocop.yml"
54
+ - ".ruby-version"
55
+ - ".tool-versions"
40
56
  - CHANGELOG.md
41
57
  - CODE_OF_CONDUCT.md
42
58
  - Gemfile
@@ -46,8 +62,61 @@ files:
46
62
  - Rakefile
47
63
  - activerecord-ejection_seat.gemspec
48
64
  - lib/activerecord-ejection_seat.rb
65
+ - lib/activerecord-ejection_seat/attributes_builder.rb
49
66
  - lib/activerecord-ejection_seat/ejectable.rb
67
+ - lib/activerecord-ejection_seat/props_builder.rb
50
68
  - lib/activerecord-ejection_seat/version.rb
69
+ - sorbet/config
70
+ - sorbet/rbi/annotations/activerecord.rbi
71
+ - sorbet/rbi/annotations/activesupport.rbi
72
+ - sorbet/rbi/annotations/rainbow.rbi
73
+ - sorbet/rbi/gems/activemodel@7.0.4.1.rbi
74
+ - sorbet/rbi/gems/activerecord@7.0.4.1.rbi
75
+ - sorbet/rbi/gems/activesupport@7.0.4.1.rbi
76
+ - sorbet/rbi/gems/ast@2.4.2.rbi
77
+ - sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi
78
+ - sorbet/rbi/gems/diff-lcs@1.5.0.rbi
79
+ - sorbet/rbi/gems/i18n@1.12.0.rbi
80
+ - sorbet/rbi/gems/io-console@0.6.0.rbi
81
+ - sorbet/rbi/gems/irb@1.6.2.rbi
82
+ - sorbet/rbi/gems/json@2.6.3.rbi
83
+ - sorbet/rbi/gems/language_server-protocol@3.17.0.2.rbi
84
+ - sorbet/rbi/gems/minitest@5.17.0.rbi
85
+ - sorbet/rbi/gems/netrc@0.11.0.rbi
86
+ - sorbet/rbi/gems/parallel@1.22.1.rbi
87
+ - sorbet/rbi/gems/parser@3.2.0.0.rbi
88
+ - sorbet/rbi/gems/prettier_print@1.2.0.rbi
89
+ - sorbet/rbi/gems/rainbow@3.1.1.rbi
90
+ - sorbet/rbi/gems/rake@13.0.6.rbi
91
+ - sorbet/rbi/gems/rbi@0.0.16.rbi
92
+ - sorbet/rbi/gems/regexp_parser@2.6.1.rbi
93
+ - sorbet/rbi/gems/reline@0.3.2.rbi
94
+ - sorbet/rbi/gems/rexml@3.2.5.rbi
95
+ - sorbet/rbi/gems/rubocop-ast@1.24.1.rbi
96
+ - sorbet/rbi/gems/rubocop-minitest@0.26.1.rbi
97
+ - sorbet/rbi/gems/rubocop-rake@0.6.0.rbi
98
+ - sorbet/rbi/gems/rubocop-sorbet@0.6.11.rbi
99
+ - sorbet/rbi/gems/rubocop@1.43.0.rbi
100
+ - sorbet/rbi/gems/ruby-lsp@0.3.8.rbi
101
+ - sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi
102
+ - sorbet/rbi/gems/sorbet-struct-comparable@1.3.0.rbi
103
+ - sorbet/rbi/gems/spoom@1.1.15.rbi
104
+ - sorbet/rbi/gems/sqlite3@1.6.0.rbi
105
+ - sorbet/rbi/gems/syntax_tree@5.2.0.rbi
106
+ - sorbet/rbi/gems/tapioca@0.10.5.rbi
107
+ - sorbet/rbi/gems/thor@1.2.1.rbi
108
+ - sorbet/rbi/gems/tzinfo@2.0.5.rbi
109
+ - sorbet/rbi/gems/unicode-display_width@2.4.2.rbi
110
+ - sorbet/rbi/gems/unparser@0.6.7.rbi
111
+ - sorbet/rbi/gems/webrick@1.7.0.rbi
112
+ - sorbet/rbi/gems/yard-sorbet@0.8.0.rbi
113
+ - sorbet/rbi/gems/yard@0.9.28.rbi
114
+ - sorbet/rbi/shims/location.rbi
115
+ - sorbet/rbi/shims/post.rbi
116
+ - sorbet/rbi/shims/user.rbi
117
+ - sorbet/rbi/todo.rbi
118
+ - sorbet/tapioca/config.yml
119
+ - sorbet/tapioca/require.rb
51
120
  homepage: https://github.com/AudaciousAardvark/activerecord-ejection_seat
52
121
  licenses:
53
122
  - MIT
@@ -65,14 +134,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
134
  requirements:
66
135
  - - ">="
67
136
  - !ruby/object:Gem::Version
68
- version: 2.7.0
137
+ version: 3.0.0
69
138
  required_rubygems_version: !ruby/object:Gem::Requirement
70
139
  requirements:
71
140
  - - ">="
72
141
  - !ruby/object:Gem::Version
73
142
  version: '0'
74
143
  requirements: []
75
- rubygems_version: 3.3.14
144
+ rubygems_version: 3.4.4
76
145
  signing_key:
77
146
  specification_version: 4
78
147
  summary: Eject from an ActiveRecord model to a Sorbet T::Struct, or buckle back in.