tapioca 0.3.1 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
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