tapioca 0.3.1 → 0.4.4

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -1
  3. data/README.md +23 -2
  4. data/Rakefile +15 -4
  5. data/lib/tapioca.rb +8 -2
  6. data/lib/tapioca/cli.rb +32 -3
  7. data/lib/tapioca/compilers/dsl/action_controller_helpers.rb +129 -0
  8. data/lib/tapioca/compilers/dsl/action_mailer.rb +65 -0
  9. data/lib/tapioca/compilers/dsl/active_record_associations.rb +267 -0
  10. data/lib/tapioca/compilers/dsl/active_record_columns.rb +393 -0
  11. data/lib/tapioca/compilers/dsl/active_record_enum.rb +112 -0
  12. data/lib/tapioca/compilers/dsl/active_record_identity_cache.rb +213 -0
  13. data/lib/tapioca/compilers/dsl/active_record_scope.rb +100 -0
  14. data/lib/tapioca/compilers/dsl/active_record_typed_store.rb +170 -0
  15. data/lib/tapioca/compilers/dsl/active_resource.rb +140 -0
  16. data/lib/tapioca/compilers/dsl/active_support_current_attributes.rb +126 -0
  17. data/lib/tapioca/compilers/dsl/base.rb +165 -0
  18. data/lib/tapioca/compilers/dsl/frozen_record.rb +96 -0
  19. data/lib/tapioca/compilers/dsl/protobuf.rb +144 -0
  20. data/lib/tapioca/compilers/dsl/smart_properties.rb +173 -0
  21. data/lib/tapioca/compilers/dsl/state_machines.rb +378 -0
  22. data/lib/tapioca/compilers/dsl/url_helpers.rb +92 -0
  23. data/lib/tapioca/compilers/dsl_compiler.rb +121 -0
  24. data/lib/tapioca/compilers/requires_compiler.rb +67 -0
  25. data/lib/tapioca/compilers/sorbet.rb +34 -0
  26. data/lib/tapioca/compilers/symbol_table/symbol_generator.rb +171 -26
  27. data/lib/tapioca/compilers/symbol_table/symbol_loader.rb +1 -20
  28. data/lib/tapioca/compilers/todos_compiler.rb +32 -0
  29. data/lib/tapioca/config.rb +14 -6
  30. data/lib/tapioca/config_builder.rb +22 -9
  31. data/lib/tapioca/constant_locator.rb +1 -0
  32. data/lib/tapioca/core_ext/class.rb +23 -0
  33. data/lib/tapioca/gemfile.rb +32 -9
  34. data/lib/tapioca/generator.rb +231 -23
  35. data/lib/tapioca/loader.rb +30 -9
  36. data/lib/tapioca/version.rb +1 -1
  37. metadata +32 -39
@@ -24,6 +24,24 @@ module Tapioca
24
24
  load_rails_engines
25
25
  end
26
26
 
27
+ sig { params(environment_load: T::Boolean, eager_load: T::Boolean).void }
28
+ def load_rails(environment_load: false, eager_load: false)
29
+ return unless File.exist?("config/application.rb")
30
+
31
+ safe_require("rails")
32
+
33
+ silence_deprecations
34
+
35
+ safe_require("rails/generators/test_case")
36
+ if environment_load
37
+ safe_require("./config/environment")
38
+ else
39
+ safe_require("./config/application")
40
+ end
41
+
42
+ eager_load_rails_app if eager_load
43
+ end
44
+
27
45
  private
28
46
 
29
47
  sig { returns(Tapioca::Gemfile) }
@@ -80,15 +98,18 @@ module Tapioca
80
98
  end
81
99
 
82
100
  sig { void }
83
- def load_rails
84
- return unless File.exist?("config/application.rb")
85
-
86
- safe_require("rails")
87
-
88
- silence_deprecations
89
-
90
- safe_require("rails/generators/test_case")
91
- safe_require("./config/application")
101
+ def eager_load_rails_app
102
+ if Object.const_defined?("ActiveSupport")
103
+ Object.const_get("ActiveSupport").run_load_hooks(
104
+ :before_eager_load,
105
+ Object.const_get("Rails").application
106
+ )
107
+ end
108
+ if Object.const_defined?("Zeitwerk::Loader")
109
+ zeitwerk_loader = Object.const_get("Zeitwerk::Loader")
110
+ zeitwerk_loader.eager_load_all
111
+ end
112
+ Object.const_get("Rails").autoloaders.each(&:eager_load)
92
113
  end
93
114
 
94
115
  sig { void }
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Tapioca
5
- VERSION = "0.3.1"
5
+ VERSION = "0.4.4"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapioca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ufuk Kayserilioglu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2020-04-29 00:00:00.000000000 Z
14
+ date: 2020-08-26 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: pry
@@ -56,55 +56,27 @@ dependencies:
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  - !ruby/object:Gem::Dependency
59
- name: thor
59
+ name: parlour
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 0.19.2
64
+ version: 2.1.0
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - ">="
70
70
  - !ruby/object:Gem::Version
71
- version: 0.19.2
72
- - !ruby/object:Gem::Dependency
73
- name: bundler
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - "~>"
77
- - !ruby/object:Gem::Version
78
- version: '1.17'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: '1.17'
86
- - !ruby/object:Gem::Dependency
87
- name: pry-byebug
88
- requirement: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- version: '0'
93
- type: :development
94
- prerelease: false
95
- version_requirements: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: '0'
71
+ version: 2.1.0
100
72
  - !ruby/object:Gem::Dependency
101
- name: rspec
73
+ name: spoom
102
74
  requirement: !ruby/object:Gem::Requirement
103
75
  requirements:
104
76
  - - ">="
105
77
  - !ruby/object:Gem::Version
106
78
  version: '0'
107
- type: :development
79
+ type: :runtime
108
80
  prerelease: false
109
81
  version_requirements: !ruby/object:Gem::Requirement
110
82
  requirements:
@@ -112,19 +84,19 @@ dependencies:
112
84
  - !ruby/object:Gem::Version
113
85
  version: '0'
114
86
  - !ruby/object:Gem::Dependency
115
- name: sorbet
87
+ name: thor
116
88
  requirement: !ruby/object:Gem::Requirement
117
89
  requirements:
118
90
  - - ">="
119
91
  - !ruby/object:Gem::Version
120
- version: '0'
121
- type: :development
92
+ version: 0.19.2
93
+ type: :runtime
122
94
  prerelease: false
123
95
  version_requirements: !ruby/object:Gem::Requirement
124
96
  requirements:
125
97
  - - ">="
126
98
  - !ruby/object:Gem::Version
127
- version: '0'
99
+ version: 0.19.2
128
100
  description:
129
101
  email:
130
102
  - ruby@shopify.com
@@ -139,12 +111,33 @@ files:
139
111
  - exe/tapioca
140
112
  - lib/tapioca.rb
141
113
  - lib/tapioca/cli.rb
114
+ - lib/tapioca/compilers/dsl/action_controller_helpers.rb
115
+ - lib/tapioca/compilers/dsl/action_mailer.rb
116
+ - lib/tapioca/compilers/dsl/active_record_associations.rb
117
+ - lib/tapioca/compilers/dsl/active_record_columns.rb
118
+ - lib/tapioca/compilers/dsl/active_record_enum.rb
119
+ - lib/tapioca/compilers/dsl/active_record_identity_cache.rb
120
+ - lib/tapioca/compilers/dsl/active_record_scope.rb
121
+ - lib/tapioca/compilers/dsl/active_record_typed_store.rb
122
+ - lib/tapioca/compilers/dsl/active_resource.rb
123
+ - lib/tapioca/compilers/dsl/active_support_current_attributes.rb
124
+ - lib/tapioca/compilers/dsl/base.rb
125
+ - lib/tapioca/compilers/dsl/frozen_record.rb
126
+ - lib/tapioca/compilers/dsl/protobuf.rb
127
+ - lib/tapioca/compilers/dsl/smart_properties.rb
128
+ - lib/tapioca/compilers/dsl/state_machines.rb
129
+ - lib/tapioca/compilers/dsl/url_helpers.rb
130
+ - lib/tapioca/compilers/dsl_compiler.rb
131
+ - lib/tapioca/compilers/requires_compiler.rb
132
+ - lib/tapioca/compilers/sorbet.rb
142
133
  - lib/tapioca/compilers/symbol_table/symbol_generator.rb
143
134
  - lib/tapioca/compilers/symbol_table/symbol_loader.rb
144
135
  - lib/tapioca/compilers/symbol_table_compiler.rb
136
+ - lib/tapioca/compilers/todos_compiler.rb
145
137
  - lib/tapioca/config.rb
146
138
  - lib/tapioca/config_builder.rb
147
139
  - lib/tapioca/constant_locator.rb
140
+ - lib/tapioca/core_ext/class.rb
148
141
  - lib/tapioca/gemfile.rb
149
142
  - lib/tapioca/generator.rb
150
143
  - lib/tapioca/loader.rb