rbs_rails 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4647 @@
1
+ module Minitest
2
+ class SuppressedSummaryReporter < SummaryReporter
3
+ # Disable extra failure output after a run if output is inline.
4
+ def aggregated_results: () -> untyped
5
+ end
6
+
7
+ def self.plugin_rails_options: (untyped opts, untyped options) -> untyped
8
+
9
+ # Owes great inspiration to test runner trailblazers like RSpec,
10
+ # minitest-reporters, maxitest and others.
11
+ def self.plugin_rails_init: (untyped options) -> untyped
12
+ end
13
+
14
+ class RDoc::Generator::API < RDoc::Generator::SDoc
15
+ def generate_class_tree_level: (untyped classes, ?::Hash[untyped, untyped] visited) -> untyped
16
+
17
+ def build_core_ext_subtree: (untyped classes, untyped visited) -> untyped
18
+
19
+ def core_extension?: (untyped klass) -> untyped
20
+
21
+ def active_storage?: (untyped klass) -> untyped
22
+ end
23
+
24
+ module Rails
25
+ module API
26
+ class Task < RDoc::Task
27
+ RDOC_FILES: ::Hash[untyped, untyped]
28
+
29
+ def initialize: (untyped name) -> untyped
30
+
31
+ # Hack, ignore the desc calls performed by the original initializer.
32
+ def desc: (untyped description) -> nil
33
+
34
+ def configure_sdoc: () -> untyped
35
+
36
+ def configure_rdoc_files: () -> untyped
37
+
38
+ def setup_horo_variables: () -> untyped
39
+
40
+ def api_main: () -> untyped
41
+ end
42
+
43
+ class RepoTask < Task
44
+ def configure_sdoc: () -> untyped
45
+
46
+ def component_root_dir: (untyped component) -> untyped
47
+
48
+ def api_dir: () -> "doc/rdoc"
49
+ end
50
+
51
+ class EdgeTask < RepoTask
52
+ def rails_version: () -> ::String
53
+ end
54
+
55
+ class StableTask < RepoTask
56
+ def rails_version: () -> untyped
57
+ end
58
+ end
59
+ end
60
+
61
+ module Rails
62
+ class Application
63
+ module Bootstrap
64
+ include Initializable
65
+ end
66
+ end
67
+ end
68
+
69
+ module Rails
70
+ class Application
71
+ class Configuration < ::Rails::Engine::Configuration
72
+ attr_accessor allow_concurrency: untyped
73
+
74
+ attr_accessor asset_host: untyped
75
+
76
+ attr_accessor autoflush_log: untyped
77
+
78
+ attr_accessor cache_classes: untyped
79
+
80
+ attr_accessor cache_store: untyped
81
+
82
+ attr_accessor consider_all_requests_local: untyped
83
+
84
+ attr_accessor console: untyped
85
+
86
+ attr_accessor eager_load: untyped
87
+
88
+ attr_accessor exceptions_app: untyped
89
+
90
+ attr_accessor file_watcher: untyped
91
+
92
+ attr_accessor filter_parameters: untyped
93
+
94
+ attr_accessor force_ssl: untyped
95
+
96
+ attr_accessor helpers_paths: untyped
97
+
98
+ attr_accessor hosts: untyped
99
+
100
+ attr_accessor logger: untyped
101
+
102
+ attr_accessor log_formatter: untyped
103
+
104
+ attr_accessor log_tags: untyped
105
+
106
+ attr_accessor railties_order: untyped
107
+
108
+ attr_accessor relative_url_root: untyped
109
+
110
+ attr_accessor secret_key_base: untyped
111
+
112
+ attr_accessor ssl_options: untyped
113
+
114
+ attr_accessor public_file_server: untyped
115
+
116
+ attr_accessor session_options: untyped
117
+
118
+ attr_accessor time_zone: untyped
119
+
120
+ attr_accessor reload_classes_only_on_change: untyped
121
+
122
+ attr_accessor beginning_of_week: untyped
123
+
124
+ attr_accessor filter_redirect: untyped
125
+
126
+ attr_accessor x: untyped
127
+
128
+ attr_accessor enable_dependency_loading: untyped
129
+
130
+ attr_accessor read_encrypted_secrets: untyped
131
+
132
+ attr_accessor log_level: untyped
133
+
134
+ attr_accessor content_security_policy_report_only: untyped
135
+
136
+ attr_accessor content_security_policy_nonce_generator: untyped
137
+
138
+ attr_accessor content_security_policy_nonce_directives: untyped
139
+
140
+ attr_accessor require_master_key: untyped
141
+
142
+ attr_accessor credentials: untyped
143
+
144
+ attr_accessor disable_sandbox: untyped
145
+
146
+ attr_accessor add_autoload_paths_to_load_path: untyped
147
+
148
+ attr_reader encoding: untyped
149
+
150
+ attr_reader api_only: untyped
151
+
152
+ attr_reader loaded_config_version: untyped
153
+
154
+ attr_reader autoloader: untyped
155
+
156
+ def initialize: () -> untyped
157
+
158
+ # Loads default configurations. See {the result of the method for each version}[https://guides.rubyonrails.org/configuring.html#results-of-config-load-defaults].
159
+ def load_defaults: (untyped target_version) -> untyped
160
+
161
+ def encoding=: (untyped value) -> untyped
162
+
163
+ def api_only=: (untyped value) -> untyped
164
+
165
+ def debug_exception_response_format: () -> untyped
166
+
167
+ attr_writer debug_exception_response_format: untyped
168
+
169
+ def paths: () -> untyped
170
+
171
+ def load_database_yaml: () -> untyped
172
+
173
+ # Loads and returns the entire raw configuration of database from
174
+ # values stored in <tt>config/database.yml</tt>.
175
+ def database_configuration: () -> untyped
176
+
177
+ def colorize_logging: () -> untyped
178
+
179
+ def colorize_logging=: (untyped val) -> untyped
180
+
181
+ def session_store: (?untyped? new_session_store, **untyped options) -> untyped
182
+
183
+ def session_store?: () -> untyped
184
+
185
+ def annotations: () -> untyped
186
+
187
+ def content_security_policy: () { () -> untyped } -> untyped
188
+
189
+ def autoloader=: (untyped autoloader) -> untyped
190
+
191
+ def default_log_file: () -> untyped
192
+
193
+ class Custom
194
+ # nodoc:
195
+ def initialize: () -> untyped
196
+
197
+ def method_missing: (untyped method, *untyped args) -> untyped
198
+
199
+ def respond_to_missing?: (untyped symbol) -> ::TrueClass
200
+ end
201
+
202
+ def default_credentials_content_path: () -> untyped
203
+
204
+ def default_credentials_key_path: () -> untyped
205
+
206
+ def credentials_available_for_current_env?: () -> untyped
207
+ end
208
+ end
209
+ end
210
+
211
+ class Rails::ApplicationController < ActionController::Base
212
+ def require_local!: () -> untyped
213
+
214
+ def local_request?: () -> untyped
215
+
216
+ def disable_content_security_policy_nonce!: () -> untyped
217
+ end
218
+
219
+ module Rails
220
+ class Application
221
+ class DefaultMiddlewareStack
222
+ attr_reader config: untyped
223
+
224
+ attr_reader paths: untyped
225
+
226
+ attr_reader app: untyped
227
+
228
+ def initialize: (untyped app, untyped config, untyped paths) -> untyped
229
+
230
+ def build_stack: () -> untyped
231
+
232
+ def load_rack_cache: () -> (nil | untyped)
233
+
234
+ def show_exceptions_app: () -> untyped
235
+ end
236
+ end
237
+ end
238
+
239
+ class DummyERB < ERB
240
+ # These classes are used to strip out the ERB configuration
241
+ # values so we can evaluate the database.yml without evaluating
242
+ # the ERB values.
243
+ # :nodoc:
244
+ def make_compiler: (untyped trim_mode) -> DummyCompiler
245
+ end
246
+
247
+ class DummyCompiler < ERB::Compiler
248
+ # :nodoc:
249
+ def compile_content: (untyped stag, untyped `out`) -> untyped
250
+ end
251
+
252
+ module Rails
253
+ class Application
254
+ module Finisher
255
+ include Initializable
256
+
257
+ class MutexHook
258
+ def initialize: (?untyped mutex) -> untyped
259
+
260
+ def run: () -> untyped
261
+
262
+ def complete: (untyped _state) -> untyped
263
+ end
264
+
265
+ module InterlockHook
266
+ def self.run: () -> untyped
267
+
268
+ def self.complete: (untyped _state) -> untyped
269
+ end
270
+ end
271
+ end
272
+ end
273
+
274
+ module Rails
275
+ # An Engine with the responsibility of coordinating the whole boot process.
276
+ #
277
+ # == Initialization
278
+ #
279
+ # Rails::Application is responsible for executing all railties and engines
280
+ # initializers. It also executes some bootstrap initializers (check
281
+ # Rails::Application::Bootstrap) and finishing initializers, after all the others
282
+ # are executed (check Rails::Application::Finisher).
283
+ #
284
+ # == Configuration
285
+ #
286
+ # Besides providing the same configuration as Rails::Engine and Rails::Railtie,
287
+ # the application object has several specific configurations, for example
288
+ # "cache_classes", "consider_all_requests_local", "filter_parameters",
289
+ # "logger" and so forth.
290
+ #
291
+ # Check Rails::Application::Configuration to see them all.
292
+ #
293
+ # == Routes
294
+ #
295
+ # The application object is also responsible for holding the routes and reloading routes
296
+ # whenever the files change in development.
297
+ #
298
+ # == Middlewares
299
+ #
300
+ # The Application is also responsible for building the middleware stack.
301
+ #
302
+ # == Booting process
303
+ #
304
+ # The application is also responsible for setting up and executing the booting
305
+ # process. From the moment you require "config/application.rb" in your app,
306
+ # the booting process goes like this:
307
+ #
308
+ # 1) require "config/boot.rb" to setup load paths
309
+ # 2) require railties and engines
310
+ # 3) Define Rails.application as "class MyApp::Application < Rails::Application"
311
+ # 4) Run config.before_configuration callbacks
312
+ # 5) Load config/environments/ENV.rb
313
+ # 6) Run config.before_initialize callbacks
314
+ # 7) Run Railtie#initializer defined by railties, engines and application.
315
+ # One by one, each engine sets up its load paths, routes and runs its config/initializers/* files.
316
+ # 8) Custom Railtie#initializers added by railties, engines and applications are executed
317
+ # 9) Build the middleware stack and run to_prepare callbacks
318
+ # 10) Run config.before_eager_load and eager_load! if eager_load is true
319
+ # 11) Run config.after_initialize callbacks
320
+ #
321
+ # == Multiple Applications
322
+ #
323
+ # If you decide to define multiple applications, then the first application
324
+ # that is initialized will be set to +Rails.application+, unless you override
325
+ # it with a different application.
326
+ #
327
+ # To create a new application, you can instantiate a new instance of a class
328
+ # that has already been created:
329
+ #
330
+ # class Application < Rails::Application
331
+ # end
332
+ #
333
+ # first_application = Application.new
334
+ # second_application = Application.new(config: first_application.config)
335
+ #
336
+ # In the above example, the configuration from the first application was used
337
+ # to initialize the second application. You can also use the +initialize_copy+
338
+ # on one of the applications to create a copy of the application which shares
339
+ # the configuration.
340
+ #
341
+ # If you decide to define Rake tasks, runners, or initializers in an
342
+ # application other than +Rails.application+, then you must run them manually.
343
+ class Application < Engine
344
+ def self.inherited: (untyped base) -> untyped
345
+
346
+ def self.`instance`: () -> untyped
347
+
348
+ def self.create: (?::Hash[untyped, untyped] initial_variable_values) { () -> untyped } -> untyped
349
+
350
+ def self.find_root: (untyped from) -> untyped
351
+
352
+ attr_accessor assets: untyped
353
+
354
+ attr_accessor sandbox: untyped
355
+
356
+ attr_reader reloaders: untyped
357
+
358
+ attr_reader reloader: untyped
359
+
360
+ attr_reader executor: untyped
361
+
362
+ INITIAL_VARIABLES: ::Array[untyped]
363
+
364
+ def initialize: (?::Hash[untyped, untyped] initial_variable_values) { () -> untyped } -> untyped
365
+
366
+ # Returns true if the application is initialized.
367
+ def initialized?: () -> untyped
368
+
369
+ def run_load_hooks!: () -> untyped
370
+
371
+ # Reload application routes regardless if they changed or not.
372
+ def reload_routes!: () -> untyped
373
+
374
+ # Returns the application's KeyGenerator
375
+ def key_generator: () -> untyped
376
+
377
+ # Returns a message verifier object.
378
+ #
379
+ # This verifier can be used to generate and verify signed messages in the application.
380
+ #
381
+ # It is recommended not to use the same verifier for different things, so you can get different
382
+ # verifiers passing the +verifier_name+ argument.
383
+ #
384
+ # ==== Parameters
385
+ #
386
+ # * +verifier_name+ - the name of the message verifier.
387
+ #
388
+ # ==== Examples
389
+ #
390
+ # message = Rails.application.message_verifier('sensitive_data').generate('my sensible data')
391
+ # Rails.application.message_verifier('sensitive_data').verify(message)
392
+ # # => 'my sensible data'
393
+ #
394
+ # See the +ActiveSupport::MessageVerifier+ documentation for more information.
395
+ def message_verifier: (untyped verifier_name) -> untyped
396
+
397
+ # Convenience for loading config/foo.yml for the current Rails env.
398
+ #
399
+ # Example:
400
+ #
401
+ # # config/exception_notification.yml:
402
+ # production:
403
+ # url: http://127.0.0.1:8080
404
+ # namespace: my_app_production
405
+ # development:
406
+ # url: http://localhost:3001
407
+ # namespace: my_app_development
408
+ #
409
+ # # config/environments/production.rb
410
+ # Rails.application.configure do
411
+ # config.middleware.use ExceptionNotifier, config_for(:exception_notification)
412
+ # end
413
+ def config_for: (untyped name, ?env: untyped env) -> untyped
414
+
415
+ # Stores some of the Rails initial environment parameters which
416
+ # will be used by middlewares and engines to configure themselves.
417
+ def env_config: () -> untyped
418
+
419
+ # If you try to define a set of Rake tasks on the instance, these will get
420
+ # passed up to the Rake tasks defined on the application's class.
421
+ def rake_tasks: () { () -> untyped } -> untyped
422
+
423
+ # Sends the initializers to the +initializer+ method defined in the
424
+ # Rails::Initializable module. Each Rails::Application class has its own
425
+ # set of initializers, as defined by the Initializable module.
426
+ def initializer: (untyped name, ?::Hash[untyped, untyped] opts) { () -> untyped } -> untyped
427
+
428
+ # Sends any runner called in the instance of a new application up
429
+ # to the +runner+ method defined in Rails::Railtie.
430
+ def runner: () { () -> untyped } -> untyped
431
+
432
+ # Sends any console called in the instance of a new application up
433
+ # to the +console+ method defined in Rails::Railtie.
434
+ def console: () { () -> untyped } -> untyped
435
+
436
+ # Sends any generators called in the instance of a new application up
437
+ # to the +generators+ method defined in Rails::Railtie.
438
+ def generators: () { () -> untyped } -> untyped
439
+
440
+ # Sends the +isolate_namespace+ method up to the class method.
441
+ def isolate_namespace: (untyped mod) -> untyped
442
+
443
+ def self.add_lib_to_load_path!: (untyped root) -> untyped
444
+
445
+ def require_environment!: () -> untyped
446
+
447
+ def routes_reloader: () -> untyped
448
+
449
+ def watchable_args: () -> ::Array[untyped]
450
+
451
+ def initialize!: (?::Symbol group) -> untyped
452
+
453
+ def initializers: () -> untyped
454
+
455
+ def config: () -> untyped
456
+
457
+ attr_writer config: untyped
458
+
459
+ # Returns secrets added to config/secrets.yml.
460
+ #
461
+ # Example:
462
+ #
463
+ # development:
464
+ # secret_key_base: 836fa3665997a860728bcb9e9a1e704d427cfc920e79d847d79c8a9a907b9e965defa4154b2b86bdec6930adbe33f21364523a6f6ce363865724549fdfc08553
465
+ # test:
466
+ # secret_key_base: 5a37811464e7d378488b0f073e2193b093682e4e21f5d6f3ae0a4e1781e61a351fdc878a843424e81c73fb484a40d23f92c8dafac4870e74ede6e5e174423010
467
+ # production:
468
+ # secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
469
+ # namespace: my_app_production
470
+ #
471
+ # +Rails.application.secrets.namespace+ returns +my_app_production+ in the
472
+ # production environment.
473
+ def secrets: () -> untyped
474
+
475
+ attr_writer secrets: untyped
476
+
477
+ # The secret_key_base is used as the input secret to the application's key generator, which in turn
478
+ # is used to create all MessageVerifiers/MessageEncryptors, including the ones that sign and encrypt cookies.
479
+ #
480
+ # In development and test, this is randomly generated and stored in a
481
+ # temporary file in <tt>tmp/development_secret.txt</tt>.
482
+ #
483
+ # In all other environments, we look for it first in ENV["SECRET_KEY_BASE"],
484
+ # then credentials.secret_key_base, and finally secrets.secret_key_base. For most applications,
485
+ # the correct place to store it is in the encrypted credentials file.
486
+ def secret_key_base: () -> untyped
487
+
488
+ # Decrypts the credentials hash as kept in +config/credentials.yml.enc+. This file is encrypted with
489
+ # the Rails master key, which is either taken from <tt>ENV["RAILS_MASTER_KEY"]</tt> or from loading
490
+ # +config/master.key+.
491
+ # If specific credentials file exists for current environment, it takes precedence, thus for +production+
492
+ # environment look first for +config/credentials/production.yml.enc+ with master key taken
493
+ # from <tt>ENV["RAILS_MASTER_KEY"]</tt> or from loading +config/credentials/production.key+.
494
+ # Default behavior can be overwritten by setting +config.credentials.content_path+ and +config.credentials.key_path+.
495
+ def credentials: () -> untyped
496
+
497
+ # Shorthand to decrypt any encrypted configurations or files.
498
+ #
499
+ # For any file added with <tt>rails encrypted:edit</tt> call +read+ to decrypt
500
+ # the file with the master key.
501
+ # The master key is either stored in +config/master.key+ or <tt>ENV["RAILS_MASTER_KEY"]</tt>.
502
+ #
503
+ # Rails.application.encrypted("config/mystery_man.txt.enc").read
504
+ # # => "We've met before, haven't we?"
505
+ #
506
+ # It's also possible to interpret encrypted YAML files with +config+.
507
+ #
508
+ # Rails.application.encrypted("config/credentials.yml.enc").config
509
+ # # => { next_guys_line: "I don't think so. Where was it you think we met?" }
510
+ #
511
+ # Any top-level configs are also accessible directly on the return value:
512
+ #
513
+ # Rails.application.encrypted("config/credentials.yml.enc").next_guys_line
514
+ # # => "I don't think so. Where was it you think we met?"
515
+ #
516
+ # The files or configs can also be encrypted with a custom key. To decrypt with
517
+ # a key in the +ENV+, use:
518
+ #
519
+ # Rails.application.encrypted("config/special_tokens.yml.enc", env_key: "SPECIAL_TOKENS")
520
+ #
521
+ # Or to decrypt with a file, that should be version control ignored, relative to +Rails.root+:
522
+ #
523
+ # Rails.application.encrypted("config/special_tokens.yml.enc", key_path: "config/special_tokens.key")
524
+ def encrypted: (untyped path, ?key_path: ::String key_path, ?env_key: ::String env_key) -> ActiveSupport::EncryptedConfiguration
525
+
526
+ def to_app: () -> untyped
527
+
528
+ def helpers_paths: () -> untyped
529
+
530
+ def migration_railties: () -> untyped
531
+
532
+ # Eager loads the application code.
533
+ def eager_load!: () -> untyped
534
+
535
+ def run_tasks_blocks: (untyped app) -> untyped
536
+
537
+ def run_generators_blocks: (untyped app) -> untyped
538
+
539
+ def run_runner_blocks: (untyped app) -> untyped
540
+
541
+ def run_console_blocks: (untyped app) -> untyped
542
+
543
+ def ordered_railties: () -> untyped
544
+
545
+ def railties_initializers: (untyped current) -> untyped
546
+
547
+ def default_middleware_stack: () -> untyped
548
+
549
+ def validate_secret_key_base: (untyped secret_key_base) -> untyped
550
+
551
+ def generate_development_secret: () -> untyped
552
+
553
+ def build_request: (untyped env) -> untyped
554
+
555
+ def build_middleware: () -> untyped
556
+
557
+ class NonSymbolAccessDeprecatedHash[T, U] < HashWithIndifferentAccess[T, U]
558
+ # :nodoc:
559
+ def initialize: (?untyped? value) -> untyped
560
+
561
+ def []=: (untyped key, untyped value) -> untyped
562
+
563
+ def convert_key: (untyped key) -> untyped
564
+
565
+ def convert_value: (untyped value, ?::Hash[untyped, untyped] options) -> untyped
566
+ end
567
+ end
568
+ end
569
+
570
+ module Rails
571
+ class Application
572
+ class RoutesReloader
573
+ attr_reader route_sets: untyped
574
+
575
+ attr_reader paths: untyped
576
+
577
+ attr_accessor eager_load: untyped
578
+
579
+ def initialize: () -> untyped
580
+
581
+ def reload!: () -> untyped
582
+
583
+ def updater: () -> untyped
584
+
585
+ def clear!: () -> untyped
586
+
587
+ def load_paths: () -> untyped
588
+
589
+ def finalize!: () -> untyped
590
+
591
+ def revert: () -> untyped
592
+ end
593
+ end
594
+ end
595
+
596
+ module Rails
597
+ module AppLoader
598
+ RUBY: untyped
599
+
600
+ EXECUTABLES: ::Array[untyped]
601
+
602
+ BUNDLER_WARNING: ::String
603
+
604
+ def exec_app: () -> (nil | untyped)
605
+
606
+ def find_executable: () -> untyped
607
+ end
608
+ end
609
+
610
+ module Rails
611
+ class AppUpdater
612
+ def self.invoke_from_app_generator: (untyped method) -> untyped
613
+
614
+ def self.app_generator: () -> untyped
615
+
616
+ def self.generator_options: () -> untyped
617
+ end
618
+ end
619
+
620
+ module Rails
621
+ module Autoloaders
622
+ include Enumerable[untyped, untyped]
623
+
624
+ def self.main: () -> untyped
625
+
626
+ def self.once: () -> untyped
627
+
628
+ def self.each: () { (untyped) -> untyped } -> untyped
629
+
630
+ def self.logger=: (untyped logger) -> untyped
631
+
632
+ def self.log!: () -> untyped
633
+
634
+ def self.zeitwerk_enabled?: () -> untyped
635
+ end
636
+ end
637
+
638
+ module Rails
639
+ class BacktraceCleaner < ActiveSupport::BacktraceCleaner
640
+ APP_DIRS_PATTERN: untyped
641
+
642
+ RENDER_TEMPLATE_PATTERN: untyped
643
+
644
+ EMPTY_STRING: ::String
645
+
646
+ SLASH: ::String
647
+
648
+ DOT_SLASH: ::String
649
+
650
+ def initialize: () -> untyped
651
+ end
652
+ end
653
+
654
+ class CodeStatisticsCalculator
655
+ # nodoc:
656
+ attr_reader lines: untyped
657
+
658
+ # nodoc:
659
+ attr_reader code_lines: untyped
660
+
661
+ # nodoc:
662
+ attr_reader classes: untyped
663
+
664
+ # nodoc:
665
+ attr_reader methods: untyped
666
+
667
+ PATTERNS: ::Hash[untyped, untyped]
668
+
669
+ def initialize: (?::Integer lines, ?::Integer code_lines, ?::Integer classes, ?::Integer methods) -> untyped
670
+
671
+ def add: (untyped code_statistics_calculator) -> untyped
672
+
673
+ def add_by_file_path: (untyped file_path) -> untyped
674
+
675
+ def add_by_io: (untyped io, untyped file_type) -> untyped
676
+
677
+ def file_type: (untyped file_path) -> untyped
678
+ end
679
+
680
+ class CodeStatistics
681
+ # nodoc:
682
+ TEST_TYPES: ::Array[untyped]
683
+
684
+ HEADERS: ::Hash[untyped, untyped]
685
+
686
+ def initialize: (*untyped pairs) -> untyped
687
+
688
+ def to_s: () -> untyped
689
+
690
+ def calculate_statistics: () -> untyped
691
+
692
+ def calculate_directory_statistics: (untyped directory, ?untyped pattern) -> untyped
693
+
694
+ def calculate_total: () -> untyped
695
+
696
+ def calculate_code: () -> untyped
697
+
698
+ def calculate_tests: () -> untyped
699
+
700
+ def width_for: (untyped label) -> untyped
701
+
702
+ def print_header: () -> untyped
703
+
704
+ def print_splitter: () -> untyped
705
+
706
+ def print_line: (untyped name, untyped statistics) -> untyped
707
+
708
+ def print_code_test_stats: () -> untyped
709
+ end
710
+
711
+ module Rails
712
+ module Command
713
+ extend ::Rails::Command::Behavior::ClassMethods
714
+
715
+ module Actions
716
+ # Change to the application's path if there is no <tt>config.ru</tt> file in current directory.
717
+ # This allows us to run <tt>rails server</tt> from other directories, but still get
718
+ # the main <tt>config.ru</tt> and properly set the <tt>tmp</tt> directory.
719
+ def set_application_directory!: () -> untyped
720
+
721
+ def require_application_and_environment!: () -> untyped
722
+
723
+ def require_application!: () -> untyped
724
+
725
+ def require_environment!: () -> untyped
726
+
727
+ def load_tasks: () -> untyped
728
+
729
+ def load_generators: () -> untyped
730
+ end
731
+ end
732
+ end
733
+
734
+ module Rails
735
+ module Command
736
+ class Base < Thor
737
+ class Error < Thor::Error
738
+ end
739
+
740
+ include Actions
741
+
742
+ def self.exit_on_failure?: () -> ::FalseClass
743
+
744
+ # Returns true when the app is a Rails engine.
745
+ def self.engine?: () -> untyped
746
+
747
+ # Tries to get the description from a USAGE file one folder above the command
748
+ # root.
749
+ def self.desc: (?untyped? usage, ?untyped? description, ?::Hash[untyped, untyped] options) -> untyped
750
+
751
+ # Convenience method to get the namespace from the class name. It's the
752
+ # same as Thor default except that the Command at the end of the class
753
+ # is removed.
754
+ def self.namespace: (?untyped? name) -> untyped
755
+
756
+ # Convenience method to hide this command from the available ones when
757
+ # running rails command.
758
+ def self.hide_command!: () -> untyped
759
+
760
+ def self.inherited: (untyped base) -> untyped
761
+
762
+ def self.perform: (untyped command, untyped args, untyped config) -> untyped
763
+
764
+ def self.printing_commands: () -> untyped
765
+
766
+ def self.executable: () -> ::String
767
+
768
+ # Use Rails' default banner.
769
+ def self.banner: () -> untyped
770
+
771
+ # Sets the base_name taking into account the current class namespace.
772
+ #
773
+ # Rails::Command::TestCommand.base_name # => 'rails'
774
+ def self.base_name: () -> untyped
775
+
776
+ # Return command name without namespaces.
777
+ #
778
+ # Rails::Command::TestCommand.command_name # => 'test'
779
+ def self.command_name: () -> untyped
780
+
781
+ # Path to lookup a USAGE description in a file.
782
+ def self.usage_path: () -> untyped
783
+
784
+ # Default file root to place extra files a command might need, placed
785
+ # one folder above the command file.
786
+ #
787
+ # For a Rails::Command::TestCommand placed in <tt>rails/command/test_command.rb</tt>
788
+ # would return <tt>rails/test</tt>.
789
+ def self.default_command_root: () -> untyped
790
+
791
+ # Allow the command method to be called perform.
792
+ def self.create_command: (untyped meth) -> untyped
793
+
794
+ def self.command_root_namespace: () -> untyped
795
+
796
+ def self.relative_command_path: () -> untyped
797
+
798
+ def self.namespaced_commands: () -> untyped
799
+
800
+ def help: () -> untyped
801
+ end
802
+ end
803
+ end
804
+
805
+ module Rails
806
+ module Command
807
+ module Behavior
808
+ # nodoc:
809
+ extend ActiveSupport::Concern
810
+
811
+ module ClassMethods
812
+ # Remove the color from output.
813
+ def no_color!: () -> untyped
814
+
815
+ # Track all command subclasses.
816
+ def subclasses: () -> untyped
817
+
818
+ # Prints a list of generators.
819
+ def print_list: (untyped base, untyped namespaces) -> (nil | untyped)
820
+
821
+ # Receives namespaces in an array and tries to find matching generators
822
+ # in the load path.
823
+ def lookup: (untyped namespaces) -> (nil | untyped)
824
+
825
+ # This will try to load any command in the load path to show in help.
826
+ def lookup!: () -> untyped
827
+
828
+ # Convert namespaces to paths by replacing ":" for "/" and adding
829
+ # an extra lookup. For example, "rails:model" should be searched
830
+ # in both: "rails/model/model_generator" and "rails/model_generator".
831
+ def namespaces_to_paths: (untyped namespaces) -> untyped
832
+ end
833
+ end
834
+ end
835
+ end
836
+
837
+ module Rails
838
+ module Command
839
+ module EnvironmentArgument
840
+ # nodoc:
841
+ extend ActiveSupport::Concern
842
+
843
+ def extract_environment_option_from_argument: (?default_environment: untyped default_environment) -> untyped
844
+
845
+ def acceptable_environment: (?untyped? env) -> untyped
846
+
847
+ def available_environments: () -> untyped
848
+ end
849
+ end
850
+ end
851
+
852
+ module Rails
853
+ module Command
854
+ module Helpers
855
+ module Editor
856
+ def ensure_editor_available: (command: untyped command) -> untyped
857
+
858
+ def catch_editing_exceptions: () { () -> untyped } -> untyped
859
+ end
860
+ end
861
+ end
862
+ end
863
+
864
+ module Rails
865
+ module Command
866
+ extend ActiveSupport::Autoload
867
+
868
+ include Behavior
869
+
870
+ HELP_MAPPINGS: ::Array[untyped]
871
+
872
+ def self.hidden_commands: () -> untyped
873
+
874
+ def self.environment: () -> untyped
875
+
876
+ # Receives a namespace, arguments and the behavior to invoke the command.
877
+ def self.invoke: (untyped full_namespace, ?untyped args, **untyped config) -> untyped
878
+
879
+ def self.find_by_namespace: (untyped namespace, ?untyped? command_name) -> untyped
880
+
881
+ # Returns the root of the Rails engine or app running the command.
882
+ def self.root: () -> untyped
883
+
884
+ def self.print_commands: () -> untyped
885
+
886
+ COMMANDS_IN_USAGE: ::Array[untyped]
887
+
888
+ def self.commands: () -> untyped
889
+
890
+ def self.command_type: () -> untyped
891
+
892
+ def self.lookup_paths: () -> untyped
893
+
894
+ def self.file_lookup_paths: () -> untyped
895
+ end
896
+ end
897
+
898
+ module Rails
899
+ module Generators
900
+ extend ::Rails::Command::Behavior::ClassMethods
901
+
902
+ class AppGenerator
903
+ # :nodoc:
904
+ # We want to exit on failure to be kind to other libraries
905
+ # This is only when accessing via CLI
906
+ def self.exit_on_failure?: () -> ::TrueClass
907
+ end
908
+ end
909
+
910
+ module Command
911
+ class ApplicationCommand < Base
912
+ def help: () -> untyped
913
+
914
+ def perform: (*untyped args) -> untyped
915
+ end
916
+ end
917
+ end
918
+
919
+ module Rails
920
+ class Console
921
+ module BacktraceCleaner
922
+ def filter_backtrace: (untyped bt) -> untyped
923
+ end
924
+
925
+ def self.start: (*untyped args) -> untyped
926
+
927
+ attr_reader options: untyped
928
+
929
+ attr_reader app: untyped
930
+
931
+ attr_reader console: untyped
932
+
933
+ def initialize: (untyped app, ?::Hash[untyped, untyped] options) -> untyped
934
+
935
+ def sandbox?: () -> untyped
936
+
937
+ def environment: () -> untyped
938
+
939
+ def set_environment!: () -> untyped
940
+
941
+ def start: () -> untyped
942
+ end
943
+
944
+ module Command
945
+ class ConsoleCommand < Base
946
+ # :nodoc:
947
+ include EnvironmentArgument
948
+
949
+ def initialize: (?untyped args, ?::Hash[untyped, untyped] local_options, ?::Hash[untyped, untyped] config) -> untyped
950
+
951
+ def perform: () -> untyped
952
+ end
953
+ end
954
+ end
955
+
956
+ module Rails
957
+ module Command
958
+ class CredentialsCommand < Rails::Command::Base
959
+ # :nodoc:
960
+ include Helpers::Editor
961
+
962
+ include EnvironmentArgument
963
+
964
+ def help: () -> untyped
965
+
966
+ def edit: () -> untyped
967
+
968
+ def show: () -> untyped
969
+
970
+ def credentials: () -> untyped
971
+
972
+ def ensure_encryption_key_has_been_added: () -> untyped
973
+
974
+ def ensure_credentials_have_been_added: () -> untyped
975
+
976
+ def change_credentials_in_system_editor: () -> untyped
977
+
978
+ def missing_credentials_message: () -> untyped
979
+
980
+ def content_path: () -> untyped
981
+
982
+ def key_path: () -> untyped
983
+
984
+ def encryption_key_file_generator: () -> Rails::Generators::EncryptionKeyFileGenerator
985
+
986
+ def encrypted_file_generator: () -> Rails::Generators::EncryptedFileGenerator
987
+
988
+ def credentials_generator: () -> Rails::Generators::CredentialsGenerator
989
+ end
990
+ end
991
+ end
992
+
993
+ module Rails
994
+ class DBConsole
995
+ def self.start: (*untyped args) -> untyped
996
+
997
+ def initialize: (?::Hash[untyped, untyped] options) -> untyped
998
+
999
+ def start: () -> untyped
1000
+
1001
+ def config: () -> untyped
1002
+
1003
+ def environment: () -> untyped
1004
+
1005
+ def database: () -> untyped
1006
+
1007
+ def configurations: () -> untyped
1008
+
1009
+ def find_cmd_and_exec: (untyped commands, *untyped args) -> untyped
1010
+ end
1011
+
1012
+ module Command
1013
+ class DbconsoleCommand < Base
1014
+ # :nodoc:
1015
+ include EnvironmentArgument
1016
+
1017
+ def perform: () -> untyped
1018
+ end
1019
+ end
1020
+ end
1021
+
1022
+ module Rails
1023
+ module Command
1024
+ module Db
1025
+ module System
1026
+ class ChangeCommand < Base
1027
+ def perform: () -> untyped
1028
+ end
1029
+ end
1030
+ end
1031
+ end
1032
+ end
1033
+
1034
+ module Rails
1035
+ module Command
1036
+ class DestroyCommand < Base
1037
+ def help: () -> untyped
1038
+
1039
+ def perform: () -> untyped
1040
+ end
1041
+ end
1042
+ end
1043
+
1044
+ module Rails
1045
+ module Command
1046
+ class DevCommand < Base
1047
+ def help: () -> untyped
1048
+
1049
+ def cache: () -> untyped
1050
+ end
1051
+ end
1052
+ end
1053
+
1054
+ module Rails
1055
+ module Command
1056
+ class EncryptedCommand < Rails::Command::Base
1057
+ # :nodoc:
1058
+ include Helpers::Editor
1059
+
1060
+ def help: () -> untyped
1061
+
1062
+ def edit: (untyped file_path) -> untyped
1063
+
1064
+ def show: (untyped file_path) -> untyped
1065
+
1066
+ def ensure_encryption_key_has_been_added: (untyped key_path) -> untyped
1067
+
1068
+ def ensure_encrypted_file_has_been_added: (untyped file_path, untyped key_path) -> untyped
1069
+
1070
+ def change_encrypted_file_in_system_editor: (untyped file_path, untyped key_path) -> untyped
1071
+
1072
+ def encryption_key_file_generator: () -> Rails::Generators::EncryptionKeyFileGenerator
1073
+
1074
+ def encrypted_file_generator: () -> Rails::Generators::EncryptedFileGenerator
1075
+
1076
+ def missing_encrypted_message: (key: untyped key, key_path: untyped key_path, file_path: untyped file_path) -> untyped
1077
+ end
1078
+ end
1079
+ end
1080
+
1081
+ module Rails
1082
+ module Command
1083
+ class GenerateCommand < Base
1084
+ def help: () -> untyped
1085
+
1086
+ def perform: () -> untyped
1087
+ end
1088
+ end
1089
+ end
1090
+
1091
+ module Rails
1092
+ module Command
1093
+ class HelpCommand < Base
1094
+ def help: () -> untyped
1095
+ end
1096
+ end
1097
+ end
1098
+
1099
+ module Rails
1100
+ module Command
1101
+ class InitializersCommand < Base
1102
+ # :nodoc:
1103
+ include EnvironmentArgument
1104
+
1105
+ def perform: () -> untyped
1106
+ end
1107
+ end
1108
+ end
1109
+
1110
+ module Rails
1111
+ module Command
1112
+ class NewCommand < Base
1113
+ def help: () -> untyped
1114
+
1115
+ def perform: () -> untyped
1116
+ end
1117
+ end
1118
+ end
1119
+
1120
+ module Rails
1121
+ module Command
1122
+ class NotesCommand < Base
1123
+ def perform: () -> untyped
1124
+
1125
+ def display_annotations: () -> untyped
1126
+
1127
+ def directories: () -> untyped
1128
+
1129
+ def deprecation_warning: () -> (nil | untyped)
1130
+
1131
+ def source_annotation_directories: () -> untyped
1132
+ end
1133
+ end
1134
+ end
1135
+
1136
+ module Rails
1137
+ module Command
1138
+ module Spellchecker
1139
+ def self.suggest: (untyped word, from: untyped from) -> untyped
1140
+
1141
+ def self.levenshtein_distance: (untyped str1, untyped str2) -> untyped
1142
+ end
1143
+ end
1144
+ end
1145
+
1146
+ module Rails
1147
+ module Command
1148
+ class PluginCommand < Base
1149
+ def help: () -> untyped
1150
+
1151
+ def self.banner: () -> ::String
1152
+
1153
+ def perform: (?untyped? `type`, *untyped plugin_args) -> untyped
1154
+
1155
+ def run_plugin_generator: (untyped plugin_args) -> untyped
1156
+ end
1157
+ end
1158
+ end
1159
+
1160
+ module Rails
1161
+ module Command
1162
+ class RakeCommand < Base
1163
+ # :nodoc:
1164
+ extend Rails::Command::Actions
1165
+
1166
+ def self.printing_commands: () -> untyped
1167
+
1168
+ def self.perform: (untyped task) -> untyped
1169
+
1170
+ def self.rake_tasks: () -> untyped
1171
+
1172
+ def self.formatted_rake_tasks: () -> untyped
1173
+
1174
+ def self.require_rake: () -> untyped
1175
+ end
1176
+ end
1177
+ end
1178
+
1179
+ module Rails
1180
+ module Command
1181
+ class RoutesCommand < Base
1182
+ def perform: () -> untyped
1183
+
1184
+ def inspector: () -> ActionDispatch::Routing::RoutesInspector
1185
+
1186
+ def formatter: () -> untyped
1187
+
1188
+ def routes_filter: () -> untyped
1189
+ end
1190
+ end
1191
+ end
1192
+
1193
+ module Rails
1194
+ module Command
1195
+ class RunnerCommand < Base
1196
+ # :nodoc:
1197
+ include EnvironmentArgument
1198
+
1199
+ def help: () -> untyped
1200
+
1201
+ def self.banner: () -> ::String
1202
+
1203
+ def perform: (?untyped? code_or_file, *untyped command_argv) -> untyped
1204
+ end
1205
+ end
1206
+ end
1207
+
1208
+ module Rails
1209
+ module Command
1210
+ class SecretsCommand < Rails::Command::Base
1211
+ def help: () -> untyped
1212
+
1213
+ def setup: () -> untyped
1214
+
1215
+ def edit: () -> untyped
1216
+
1217
+ def show: () -> untyped
1218
+
1219
+ def deprecate_in_favor_of_credentials_and_exit: () -> untyped
1220
+ end
1221
+ end
1222
+ end
1223
+
1224
+ module Rails
1225
+ class Server < ::Rack::Server
1226
+ class Options
1227
+ def parse!: (untyped args) -> untyped
1228
+ end
1229
+
1230
+ def initialize: (?untyped? options) -> untyped
1231
+
1232
+ def opt_parser: () -> Options
1233
+
1234
+ def set_environment: () -> untyped
1235
+
1236
+ def start: (?untyped? after_stop_callback) -> untyped
1237
+
1238
+ def serveable?: () -> untyped
1239
+
1240
+ def middleware: () -> Hash[untyped, untyped]
1241
+
1242
+ def default_options: () -> untyped
1243
+
1244
+ def served_url: () -> untyped
1245
+
1246
+ def setup_dev_caching: () -> untyped
1247
+
1248
+ def create_tmp_directories: () -> untyped
1249
+
1250
+ def log_to_stdout: () -> untyped
1251
+
1252
+ def use_puma?: () -> untyped
1253
+ end
1254
+
1255
+ module Command
1256
+ class ServerCommand < Base
1257
+ # :nodoc:
1258
+ include EnvironmentArgument
1259
+
1260
+ # Hard-coding a bunch of handlers here as we don't have a public way of
1261
+ # querying them from the Rack::Handler registry.
1262
+ RACK_SERVERS: ::Array[untyped]
1263
+
1264
+ DEFAULT_PORT: ::Integer
1265
+
1266
+ DEFAULT_PID_PATH: ::String
1267
+
1268
+ def initialize: (untyped args, untyped local_options) -> untyped
1269
+
1270
+ def perform: () -> untyped
1271
+
1272
+ def server_options: () -> { user_supplied_options: untyped, server: untyped, :log_stdout => untyped, Port: untyped, Host: untyped, DoNotReverseLookup: ::TrueClass, config: untyped, environment: untyped, daemonize: untyped, pid: untyped, caching: untyped, restart_cmd: untyped, early_hints: untyped }
1273
+
1274
+ def user_supplied_options: () -> untyped
1275
+
1276
+ def port: () -> untyped
1277
+
1278
+ def host: () -> untyped
1279
+
1280
+ def environment: () -> untyped
1281
+
1282
+ def restart_command: () -> ::String
1283
+
1284
+ def early_hints: () -> untyped
1285
+
1286
+ def log_to_stdout?: () -> untyped
1287
+
1288
+ def pid: () -> untyped
1289
+
1290
+ def self.banner: () -> "rails server -u [thin/puma/webrick] [options]"
1291
+
1292
+ def prepare_restart: () -> untyped
1293
+
1294
+ def deprecate_positional_rack_server_and_rewrite_to_option: (untyped original_options) -> untyped
1295
+
1296
+ def rack_server_suggestion: (untyped server) -> untyped
1297
+
1298
+ def print_boot_information: (untyped server, untyped url) -> untyped
1299
+ end
1300
+ end
1301
+ end
1302
+
1303
+ module Rails
1304
+ module Command
1305
+ class TestCommand < Base
1306
+ def help: () -> untyped
1307
+
1308
+ def perform: () -> untyped
1309
+ end
1310
+ end
1311
+ end
1312
+
1313
+ module Rails
1314
+ module Command
1315
+ class VersionCommand < Base
1316
+ # :nodoc:
1317
+ def perform: () -> untyped
1318
+ end
1319
+ end
1320
+ end
1321
+
1322
+ module Rails
1323
+ module Configuration
1324
+ # MiddlewareStackProxy is a proxy for the Rails middleware stack that allows
1325
+ # you to configure middlewares in your application. It works basically as a
1326
+ # command recorder, saving each command to be applied after initialization
1327
+ # over the default middleware stack, so you can add, swap, or remove any
1328
+ # middleware in Rails.
1329
+ #
1330
+ # You can add your own middlewares by using the +config.middleware.use+ method:
1331
+ #
1332
+ # config.middleware.use Magical::Unicorns
1333
+ #
1334
+ # This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
1335
+ # You can use +insert_before+ if you wish to add a middleware before another:
1336
+ #
1337
+ # config.middleware.insert_before Rack::Head, Magical::Unicorns
1338
+ #
1339
+ # There's also +insert_after+ which will insert a middleware after another:
1340
+ #
1341
+ # config.middleware.insert_after Rack::Head, Magical::Unicorns
1342
+ #
1343
+ # Middlewares can also be completely swapped out and replaced with others:
1344
+ #
1345
+ # config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
1346
+ #
1347
+ # And finally they can also be removed from the stack completely:
1348
+ #
1349
+ # config.middleware.delete ActionDispatch::Flash
1350
+ #
1351
+ class MiddlewareStackProxy
1352
+ def initialize: (?untyped operations, ?untyped delete_operations) -> untyped
1353
+
1354
+ def insert_before: (*untyped args) { () -> untyped } -> untyped
1355
+
1356
+ def insert_after: (*untyped args) { () -> untyped } -> untyped
1357
+
1358
+ def swap: (*untyped args) { () -> untyped } -> untyped
1359
+
1360
+ def use: (*untyped args) { () -> untyped } -> untyped
1361
+
1362
+ def delete: (*untyped args) { () -> untyped } -> untyped
1363
+
1364
+ def unshift: (*untyped args) { () -> untyped } -> untyped
1365
+
1366
+ def merge_into: (untyped other) -> untyped
1367
+
1368
+ def +: (untyped other) -> MiddlewareStackProxy
1369
+
1370
+ attr_reader operations: untyped
1371
+
1372
+ attr_reader delete_operations: untyped
1373
+ end
1374
+
1375
+ class Generators
1376
+ # nodoc:
1377
+ attr_accessor aliases: untyped
1378
+
1379
+ # nodoc:
1380
+ attr_accessor options: untyped
1381
+
1382
+ # nodoc:
1383
+ attr_accessor templates: untyped
1384
+
1385
+ # nodoc:
1386
+ attr_accessor fallbacks: untyped
1387
+
1388
+ # nodoc:
1389
+ attr_accessor colorize_logging: untyped
1390
+
1391
+ # nodoc:
1392
+ attr_accessor api_only: untyped
1393
+
1394
+ attr_reader hidden_namespaces: untyped
1395
+
1396
+ def initialize: () -> untyped
1397
+
1398
+ def initialize_copy: (untyped source) -> untyped
1399
+
1400
+ def hide_namespace: (untyped namespace) -> untyped
1401
+
1402
+ def method_missing: (untyped method, *untyped args) -> untyped
1403
+ end
1404
+ end
1405
+ end
1406
+
1407
+ module Rails
1408
+ module ConsoleMethods
1409
+ # reference the global "app" instance, created on demand. To recreate the
1410
+ # instance, pass a non-false value as the parameter.
1411
+ def app: (?bool create) -> untyped
1412
+
1413
+ # create a new session. If a block is given, the new session will be yielded
1414
+ # to the block before being returned.
1415
+ def new_session: () { (untyped) -> untyped } -> untyped
1416
+
1417
+ # reloads the environment
1418
+ def reload!: (?bool print) -> ::TrueClass
1419
+ end
1420
+ end
1421
+
1422
+ module Rails
1423
+ module ConsoleMethods
1424
+ # Gets the helper methods available to the controller.
1425
+ #
1426
+ # This method assumes an +ApplicationController+ exists, and it extends +ActionController::Base+
1427
+ def helper: () -> untyped
1428
+
1429
+ # Gets a new instance of a controller object.
1430
+ #
1431
+ # This method assumes an +ApplicationController+ exists, and it extends +ActionController::Base+
1432
+ def controller: () -> untyped
1433
+ end
1434
+ end
1435
+
1436
+ module Rails
1437
+ module DevCaching
1438
+ FILE: ::String
1439
+
1440
+ def self.enable_by_file: () -> untyped
1441
+
1442
+ def self.enable_by_argument: (untyped caching) -> untyped
1443
+
1444
+ def self.create_cache_file: () -> untyped
1445
+
1446
+ def self.delete_cache_file: () -> untyped
1447
+ end
1448
+ end
1449
+
1450
+ APP_PATH: untyped
1451
+
1452
+ module Rails
1453
+ class Engine
1454
+ class Configuration < ::Rails::Railtie::Configuration
1455
+ attr_reader root: untyped
1456
+
1457
+ attr_accessor middleware: untyped
1458
+
1459
+ attr_accessor javascript_path: untyped
1460
+
1461
+ attr_writer eager_load_paths: untyped
1462
+
1463
+ attr_writer autoload_once_paths: untyped
1464
+
1465
+ attr_writer autoload_paths: untyped
1466
+
1467
+ def initialize: (?untyped? root) -> untyped
1468
+
1469
+ # Holds generators configuration:
1470
+ #
1471
+ # config.generators do |g|
1472
+ # g.orm :data_mapper, migration: true
1473
+ # g.template_engine :haml
1474
+ # g.test_framework :rspec
1475
+ # end
1476
+ #
1477
+ # If you want to disable color in console, do:
1478
+ #
1479
+ # config.generators.colorize_logging = false
1480
+ #
1481
+ def generators: () { (untyped) -> untyped } -> untyped
1482
+
1483
+ def paths: () -> untyped
1484
+
1485
+ def root=: (untyped value) -> untyped
1486
+
1487
+ def eager_load_paths: () -> untyped
1488
+
1489
+ def autoload_once_paths: () -> untyped
1490
+
1491
+ def autoload_paths: () -> untyped
1492
+ end
1493
+ end
1494
+ end
1495
+
1496
+ module Rails
1497
+ class Engine < Railtie
1498
+ class Railties
1499
+ include Enumerable[untyped, untyped]
1500
+
1501
+ attr_reader _all: untyped
1502
+
1503
+ def initialize: () -> untyped
1504
+
1505
+ def each: (*untyped args) { () -> untyped } -> untyped
1506
+
1507
+ def -: (untyped others) -> untyped
1508
+ end
1509
+ end
1510
+ end
1511
+
1512
+ module Rails
1513
+ # <tt>Rails::Engine</tt> allows you to wrap a specific Rails application or subset of
1514
+ # functionality and share it with other applications or within a larger packaged application.
1515
+ # Every <tt>Rails::Application</tt> is just an engine, which allows for simple
1516
+ # feature and application sharing.
1517
+ #
1518
+ # Any <tt>Rails::Engine</tt> is also a <tt>Rails::Railtie</tt>, so the same
1519
+ # methods (like <tt>rake_tasks</tt> and +generators+) and configuration
1520
+ # options that are available in railties can also be used in engines.
1521
+ #
1522
+ # == Creating an Engine
1523
+ #
1524
+ # If you want a gem to behave as an engine, you have to specify an +Engine+
1525
+ # for it somewhere inside your plugin's +lib+ folder (similar to how we
1526
+ # specify a +Railtie+):
1527
+ #
1528
+ # # lib/my_engine.rb
1529
+ # module MyEngine
1530
+ # class Engine < Rails::Engine
1531
+ # end
1532
+ # end
1533
+ #
1534
+ # Then ensure that this file is loaded at the top of your <tt>config/application.rb</tt>
1535
+ # (or in your +Gemfile+) and it will automatically load models, controllers and helpers
1536
+ # inside +app+, load routes at <tt>config/routes.rb</tt>, load locales at
1537
+ # <tt>config/locales/*</tt>, and load tasks at <tt>lib/tasks/*</tt>.
1538
+ #
1539
+ # == Configuration
1540
+ #
1541
+ # Besides the +Railtie+ configuration which is shared across the application, in a
1542
+ # <tt>Rails::Engine</tt> you can access <tt>autoload_paths</tt>, <tt>eager_load_paths</tt>
1543
+ # and <tt>autoload_once_paths</tt>, which, differently from a <tt>Railtie</tt>, are scoped to
1544
+ # the current engine.
1545
+ #
1546
+ # class MyEngine < Rails::Engine
1547
+ # # Add a load path for this specific Engine
1548
+ # config.autoload_paths << File.expand_path("lib/some/path", __dir__)
1549
+ #
1550
+ # initializer "my_engine.add_middleware" do |app|
1551
+ # app.middleware.use MyEngine::Middleware
1552
+ # end
1553
+ # end
1554
+ #
1555
+ # == Generators
1556
+ #
1557
+ # You can set up generators for engines with <tt>config.generators</tt> method:
1558
+ #
1559
+ # class MyEngine < Rails::Engine
1560
+ # config.generators do |g|
1561
+ # g.orm :active_record
1562
+ # g.template_engine :erb
1563
+ # g.test_framework :test_unit
1564
+ # end
1565
+ # end
1566
+ #
1567
+ # You can also set generators for an application by using <tt>config.app_generators</tt>:
1568
+ #
1569
+ # class MyEngine < Rails::Engine
1570
+ # # note that you can also pass block to app_generators in the same way you
1571
+ # # can pass it to generators method
1572
+ # config.app_generators.orm :datamapper
1573
+ # end
1574
+ #
1575
+ # == Paths
1576
+ #
1577
+ # Applications and engines have flexible path configuration, meaning that you
1578
+ # are not required to place your controllers at <tt>app/controllers</tt>, but
1579
+ # in any place which you find convenient.
1580
+ #
1581
+ # For example, let's suppose you want to place your controllers in <tt>lib/controllers</tt>.
1582
+ # You can set that as an option:
1583
+ #
1584
+ # class MyEngine < Rails::Engine
1585
+ # paths["app/controllers"] = "lib/controllers"
1586
+ # end
1587
+ #
1588
+ # You can also have your controllers loaded from both <tt>app/controllers</tt> and
1589
+ # <tt>lib/controllers</tt>:
1590
+ #
1591
+ # class MyEngine < Rails::Engine
1592
+ # paths["app/controllers"] << "lib/controllers"
1593
+ # end
1594
+ #
1595
+ # The available paths in an engine are:
1596
+ #
1597
+ # class MyEngine < Rails::Engine
1598
+ # paths["app"] # => ["app"]
1599
+ # paths["app/controllers"] # => ["app/controllers"]
1600
+ # paths["app/helpers"] # => ["app/helpers"]
1601
+ # paths["app/models"] # => ["app/models"]
1602
+ # paths["app/views"] # => ["app/views"]
1603
+ # paths["lib"] # => ["lib"]
1604
+ # paths["lib/tasks"] # => ["lib/tasks"]
1605
+ # paths["config"] # => ["config"]
1606
+ # paths["config/initializers"] # => ["config/initializers"]
1607
+ # paths["config/locales"] # => ["config/locales"]
1608
+ # paths["config/routes.rb"] # => ["config/routes.rb"]
1609
+ # end
1610
+ #
1611
+ # The <tt>Application</tt> class adds a couple more paths to this set. And as in your
1612
+ # <tt>Application</tt>, all folders under +app+ are automatically added to the load path.
1613
+ # If you have an <tt>app/services</tt> folder for example, it will be added by default.
1614
+ #
1615
+ # == Endpoint
1616
+ #
1617
+ # An engine can also be a Rack application. It can be useful if you have a Rack application that
1618
+ # you would like to wrap with +Engine+ and provide with some of the +Engine+'s features.
1619
+ #
1620
+ # To do that, use the +endpoint+ method:
1621
+ #
1622
+ # module MyEngine
1623
+ # class Engine < Rails::Engine
1624
+ # endpoint MyRackApplication
1625
+ # end
1626
+ # end
1627
+ #
1628
+ # Now you can mount your engine in application's routes just like that:
1629
+ #
1630
+ # Rails.application.routes.draw do
1631
+ # mount MyEngine::Engine => "/engine"
1632
+ # end
1633
+ #
1634
+ # == Middleware stack
1635
+ #
1636
+ # As an engine can now be a Rack endpoint, it can also have a middleware
1637
+ # stack. The usage is exactly the same as in <tt>Application</tt>:
1638
+ #
1639
+ # module MyEngine
1640
+ # class Engine < Rails::Engine
1641
+ # middleware.use SomeMiddleware
1642
+ # end
1643
+ # end
1644
+ #
1645
+ # == Routes
1646
+ #
1647
+ # If you don't specify an endpoint, routes will be used as the default
1648
+ # endpoint. You can use them just like you use an application's routes:
1649
+ #
1650
+ # # ENGINE/config/routes.rb
1651
+ # MyEngine::Engine.routes.draw do
1652
+ # get "/" => "posts#index"
1653
+ # end
1654
+ #
1655
+ # == Mount priority
1656
+ #
1657
+ # Note that now there can be more than one router in your application, and it's better to avoid
1658
+ # passing requests through many routers. Consider this situation:
1659
+ #
1660
+ # Rails.application.routes.draw do
1661
+ # mount MyEngine::Engine => "/blog"
1662
+ # get "/blog/omg" => "main#omg"
1663
+ # end
1664
+ #
1665
+ # +MyEngine+ is mounted at <tt>/blog</tt>, and <tt>/blog/omg</tt> points to application's
1666
+ # controller. In such a situation, requests to <tt>/blog/omg</tt> will go through +MyEngine+,
1667
+ # and if there is no such route in +Engine+'s routes, it will be dispatched to <tt>main#omg</tt>.
1668
+ # It's much better to swap that:
1669
+ #
1670
+ # Rails.application.routes.draw do
1671
+ # get "/blog/omg" => "main#omg"
1672
+ # mount MyEngine::Engine => "/blog"
1673
+ # end
1674
+ #
1675
+ # Now, +Engine+ will get only requests that were not handled by +Application+.
1676
+ #
1677
+ # == Engine name
1678
+ #
1679
+ # There are some places where an Engine's name is used:
1680
+ #
1681
+ # * routes: when you mount an Engine with <tt>mount(MyEngine::Engine => '/my_engine')</tt>,
1682
+ # it's used as default <tt>:as</tt> option
1683
+ # * rake task for installing migrations <tt>my_engine:install:migrations</tt>
1684
+ #
1685
+ # Engine name is set by default based on class name. For <tt>MyEngine::Engine</tt> it will be
1686
+ # <tt>my_engine_engine</tt>. You can change it manually using the <tt>engine_name</tt> method:
1687
+ #
1688
+ # module MyEngine
1689
+ # class Engine < Rails::Engine
1690
+ # engine_name "my_engine"
1691
+ # end
1692
+ # end
1693
+ #
1694
+ # == Isolated Engine
1695
+ #
1696
+ # Normally when you create controllers, helpers and models inside an engine, they are treated
1697
+ # as if they were created inside the application itself. This means that all helpers and
1698
+ # named routes from the application will be available to your engine's controllers as well.
1699
+ #
1700
+ # However, sometimes you want to isolate your engine from the application, especially if your engine
1701
+ # has its own router. To do that, you simply need to call +isolate_namespace+. This method requires
1702
+ # you to pass a module where all your controllers, helpers and models should be nested to:
1703
+ #
1704
+ # module MyEngine
1705
+ # class Engine < Rails::Engine
1706
+ # isolate_namespace MyEngine
1707
+ # end
1708
+ # end
1709
+ #
1710
+ # With such an engine, everything that is inside the +MyEngine+ module will be isolated from
1711
+ # the application.
1712
+ #
1713
+ # Consider this controller:
1714
+ #
1715
+ # module MyEngine
1716
+ # class FooController < ActionController::Base
1717
+ # end
1718
+ # end
1719
+ #
1720
+ # If the +MyEngine+ engine is marked as isolated, +FooController+ only has
1721
+ # access to helpers from +MyEngine+, and <tt>url_helpers</tt> from
1722
+ # <tt>MyEngine::Engine.routes</tt>.
1723
+ #
1724
+ # The next thing that changes in isolated engines is the behavior of routes.
1725
+ # Normally, when you namespace your controllers, you also need to namespace
1726
+ # the related routes. With an isolated engine, the engine's namespace is
1727
+ # automatically applied, so you don't need to specify it explicitly in your
1728
+ # routes:
1729
+ #
1730
+ # MyEngine::Engine.routes.draw do
1731
+ # resources :articles
1732
+ # end
1733
+ #
1734
+ # If +MyEngine+ is isolated, The routes above will point to
1735
+ # <tt>MyEngine::ArticlesController</tt>. You also don't need to use longer
1736
+ # URL helpers like +my_engine_articles_path+. Instead, you should simply use
1737
+ # +articles_path+, like you would do with your main application.
1738
+ #
1739
+ # To make this behavior consistent with other parts of the framework,
1740
+ # isolated engines also have an effect on <tt>ActiveModel::Naming</tt>. In a
1741
+ # normal Rails app, when you use a namespaced model such as
1742
+ # <tt>Namespace::Article</tt>, <tt>ActiveModel::Naming</tt> will generate
1743
+ # names with the prefix "namespace". In an isolated engine, the prefix will
1744
+ # be omitted in URL helpers and form fields, for convenience.
1745
+ #
1746
+ # polymorphic_url(MyEngine::Article.new)
1747
+ # # => "articles_path" # not "my_engine_articles_path"
1748
+ #
1749
+ # form_for(MyEngine::Article.new) do
1750
+ # text_field :title # => <input type="text" name="article[title]" id="article_title" />
1751
+ # end
1752
+ #
1753
+ # Additionally, an isolated engine will set its own name according to its
1754
+ # namespace, so <tt>MyEngine::Engine.engine_name</tt> will return
1755
+ # "my_engine". It will also set +MyEngine.table_name_prefix+ to "my_engine_",
1756
+ # meaning for example that <tt>MyEngine::Article</tt> will use the
1757
+ # +my_engine_articles+ database table by default.
1758
+ #
1759
+ # == Using Engine's routes outside Engine
1760
+ #
1761
+ # Since you can now mount an engine inside application's routes, you do not have direct access to +Engine+'s
1762
+ # <tt>url_helpers</tt> inside +Application+. When you mount an engine in an application's routes, a special helper is
1763
+ # created to allow you to do that. Consider such a scenario:
1764
+ #
1765
+ # # config/routes.rb
1766
+ # Rails.application.routes.draw do
1767
+ # mount MyEngine::Engine => "/my_engine", as: "my_engine"
1768
+ # get "/foo" => "foo#index"
1769
+ # end
1770
+ #
1771
+ # Now, you can use the <tt>my_engine</tt> helper inside your application:
1772
+ #
1773
+ # class FooController < ApplicationController
1774
+ # def index
1775
+ # my_engine.root_url # => /my_engine/
1776
+ # end
1777
+ # end
1778
+ #
1779
+ # There is also a <tt>main_app</tt> helper that gives you access to application's routes inside Engine:
1780
+ #
1781
+ # module MyEngine
1782
+ # class BarController
1783
+ # def index
1784
+ # main_app.foo_path # => /foo
1785
+ # end
1786
+ # end
1787
+ # end
1788
+ #
1789
+ # Note that the <tt>:as</tt> option given to mount takes the <tt>engine_name</tt> as default, so most of the time
1790
+ # you can simply omit it.
1791
+ #
1792
+ # Finally, if you want to generate a URL to an engine's route using
1793
+ # <tt>polymorphic_url</tt>, you also need to pass the engine helper. Let's
1794
+ # say that you want to create a form pointing to one of the engine's routes.
1795
+ # All you need to do is pass the helper as the first element in array with
1796
+ # attributes for URL:
1797
+ #
1798
+ # form_for([my_engine, @user])
1799
+ #
1800
+ # This code will use <tt>my_engine.user_path(@user)</tt> to generate the proper route.
1801
+ #
1802
+ # == Isolated engine's helpers
1803
+ #
1804
+ # Sometimes you may want to isolate engine, but use helpers that are defined for it.
1805
+ # If you want to share just a few specific helpers you can add them to application's
1806
+ # helpers in ApplicationController:
1807
+ #
1808
+ # class ApplicationController < ActionController::Base
1809
+ # helper MyEngine::SharedEngineHelper
1810
+ # end
1811
+ #
1812
+ # If you want to include all of the engine's helpers, you can use the #helper method on an engine's
1813
+ # instance:
1814
+ #
1815
+ # class ApplicationController < ActionController::Base
1816
+ # helper MyEngine::Engine.helpers
1817
+ # end
1818
+ #
1819
+ # It will include all of the helpers from engine's directory. Take into account that this does
1820
+ # not include helpers defined in controllers with helper_method or other similar solutions,
1821
+ # only helpers defined in the helpers directory will be included.
1822
+ #
1823
+ # == Migrations & seed data
1824
+ #
1825
+ # Engines can have their own migrations. The default path for migrations is exactly the same
1826
+ # as in application: <tt>db/migrate</tt>
1827
+ #
1828
+ # To use engine's migrations in application you can use the rake task below, which copies them to
1829
+ # application's dir:
1830
+ #
1831
+ # rake ENGINE_NAME:install:migrations
1832
+ #
1833
+ # Note that some of the migrations may be skipped if a migration with the same name already exists
1834
+ # in application. In such a situation you must decide whether to leave that migration or rename the
1835
+ # migration in the application and rerun copying migrations.
1836
+ #
1837
+ # If your engine has migrations, you may also want to prepare data for the database in
1838
+ # the <tt>db/seeds.rb</tt> file. You can load that data using the <tt>load_seed</tt> method, e.g.
1839
+ #
1840
+ # MyEngine::Engine.load_seed
1841
+ #
1842
+ # == Loading priority
1843
+ #
1844
+ # In order to change engine's priority you can use +config.railties_order+ in the main application.
1845
+ # It will affect the priority of loading views, helpers, assets, and all the other files
1846
+ # related to engine or application.
1847
+ #
1848
+ # # load Blog::Engine with highest priority, followed by application and other railties
1849
+ # config.railties_order = [Blog::Engine, :main_app, :all]
1850
+ class Engine < Railtie
1851
+ attr_accessor called_from: untyped
1852
+
1853
+ attr_accessor isolated: untyped
1854
+
1855
+ def self.inherited: (untyped base) -> untyped
1856
+
1857
+ def self.find_root: (untyped from) -> untyped
1858
+
1859
+ def self.endpoint: (?untyped? endpoint) -> untyped
1860
+
1861
+ def self.isolate_namespace: (untyped mod) -> untyped
1862
+
1863
+ # Finds engine with given path.
1864
+ def self.find: (untyped path) -> (untyped | nil)
1865
+
1866
+ def initialize: () -> untyped
1867
+
1868
+ # Load console and invoke the registered hooks.
1869
+ # Check <tt>Rails::Railtie.console</tt> for more info.
1870
+ def load_console: (?untyped app) -> untyped
1871
+
1872
+ # Load Rails runner and invoke the registered hooks.
1873
+ # Check <tt>Rails::Railtie.runner</tt> for more info.
1874
+ def load_runner: (?untyped app) -> untyped
1875
+
1876
+ # Load Rake, railties tasks and invoke the registered hooks.
1877
+ # Check <tt>Rails::Railtie.rake_tasks</tt> for more info.
1878
+ def load_tasks: (?untyped app) -> untyped
1879
+
1880
+ # Load Rails generators and invoke the registered hooks.
1881
+ # Check <tt>Rails::Railtie.generators</tt> for more info.
1882
+ def load_generators: (?untyped app) -> untyped
1883
+
1884
+ def eager_load!: () -> (nil | untyped)
1885
+
1886
+ def railties: () -> untyped
1887
+
1888
+ # Returns a module with all the helpers defined for the engine.
1889
+ def helpers: () -> untyped
1890
+
1891
+ # Returns all registered helpers paths.
1892
+ def helpers_paths: () -> untyped
1893
+
1894
+ # Returns the underlying Rack application for this engine.
1895
+ def app: () -> untyped
1896
+
1897
+ # Returns the endpoint for this engine. If none is registered,
1898
+ # defaults to an ActionDispatch::Routing::RouteSet.
1899
+ def endpoint: () -> untyped
1900
+
1901
+ # Define the Rack API for this engine.
1902
+ def call: (untyped env) -> untyped
1903
+
1904
+ # Defines additional Rack env configuration that is added on each call.
1905
+ def env_config: () -> untyped
1906
+
1907
+ # Defines the routes for this engine. If a block is given to
1908
+ # routes, it is appended to the engine.
1909
+ def routes: () { () -> untyped } -> untyped
1910
+
1911
+ # Define the configuration object for the engine.
1912
+ def config: () -> untyped
1913
+
1914
+ # Load data from db/seeds.rb file. It can be used in to load engines'
1915
+ # seeds, e.g.:
1916
+ #
1917
+ # Blog::Engine.load_seed
1918
+ def load_seed: () -> (nil | untyped)
1919
+
1920
+ def routes?: () -> untyped
1921
+
1922
+ def run_tasks_blocks: () -> untyped
1923
+
1924
+ def load_config_initializer: (untyped initializer) -> untyped
1925
+
1926
+ def with_inline_jobs: () { () -> untyped } -> untyped
1927
+
1928
+ def has_migrations?: () -> untyped
1929
+
1930
+ def self.find_root_with_flag: (untyped flag, untyped root_path, ?untyped? default) -> Pathname
1931
+
1932
+ def default_middleware_stack: () -> ActionDispatch::MiddlewareStack
1933
+
1934
+ def _all_autoload_once_paths: () -> untyped
1935
+
1936
+ def _all_autoload_paths: () -> untyped
1937
+
1938
+ def _all_load_paths: (untyped add_autoload_paths_to_load_path) -> untyped
1939
+
1940
+ def build_request: (untyped env) -> untyped
1941
+
1942
+ def build_middleware: () -> untyped
1943
+ end
1944
+ end
1945
+
1946
+ module Rails
1947
+ class Engine
1948
+ class Updater
1949
+ def self.generator: () -> untyped
1950
+
1951
+ def self.run: (untyped action) -> untyped
1952
+ end
1953
+ end
1954
+ end
1955
+
1956
+ module Rails
1957
+ # Returns the version of the currently loaded Rails as a <tt>Gem::Version</tt>
1958
+ def self.gem_version: () -> Gem::Version
1959
+
1960
+ module VERSION
1961
+ MAJOR: ::Integer
1962
+
1963
+ MINOR: ::Integer
1964
+
1965
+ TINY: ::Integer
1966
+
1967
+ PRE: ::String
1968
+
1969
+ STRING: untyped
1970
+ end
1971
+ end
1972
+
1973
+ module Rails
1974
+ module Generators
1975
+ module Actions
1976
+ class CreateMigration < Thor::Actions::CreateFile
1977
+ # nodoc:
1978
+ def migration_dir: () -> untyped
1979
+
1980
+ def migration_file_name: () -> untyped
1981
+
1982
+ def identical?: () -> untyped
1983
+
1984
+ def revoke!: () -> (nil | untyped)
1985
+
1986
+ def relative_existing_migration: () -> untyped
1987
+
1988
+ def existing_migration: () -> untyped
1989
+
1990
+ def on_conflict_behavior: () { () -> untyped } -> untyped
1991
+
1992
+ def say_status: (untyped status, untyped color, ?untyped message) -> untyped
1993
+ end
1994
+ end
1995
+ end
1996
+ end
1997
+
1998
+ module Rails
1999
+ module Generators
2000
+ module Actions
2001
+ def initialize: () -> untyped
2002
+
2003
+ # Adds an entry into +Gemfile+ for the supplied gem.
2004
+ #
2005
+ # gem "rspec", group: :test
2006
+ # gem "technoweenie-restful-authentication", lib: "restful-authentication", source: "http://gems.github.com/"
2007
+ # gem "rails", "3.0", git: "https://github.com/rails/rails"
2008
+ # gem "RedCloth", ">= 4.1.0", "< 4.2.0"
2009
+ def gem: (*untyped args) -> untyped
2010
+
2011
+ # Wraps gem entries inside a group.
2012
+ #
2013
+ # gem_group :development, :test do
2014
+ # gem "rspec-rails"
2015
+ # end
2016
+ def gem_group: (*untyped names) { () -> untyped } -> untyped
2017
+
2018
+ def github: (untyped repo, ?::Hash[untyped, untyped] options) { () -> untyped } -> untyped
2019
+
2020
+ # Add the given source to +Gemfile+
2021
+ #
2022
+ # If block is given, gem entries in block are wrapped into the source group.
2023
+ #
2024
+ # add_source "http://gems.github.com/"
2025
+ #
2026
+ # add_source "http://gems.github.com/" do
2027
+ # gem "rspec-rails"
2028
+ # end
2029
+ def add_source: (untyped source, ?::Hash[untyped, untyped] options) { () -> untyped } -> untyped
2030
+
2031
+ # Adds a line inside the Application class for <tt>config/application.rb</tt>.
2032
+ #
2033
+ # If options <tt>:env</tt> is specified, the line is appended to the corresponding
2034
+ # file in <tt>config/environments</tt>.
2035
+ #
2036
+ # environment do
2037
+ # "config.action_controller.asset_host = 'cdn.provider.com'"
2038
+ # end
2039
+ #
2040
+ # environment(nil, env: "development") do
2041
+ # "config.action_controller.asset_host = 'localhost:3000'"
2042
+ # end
2043
+ def environment: (?untyped? data, ?::Hash[untyped, untyped] options) { () -> untyped } -> untyped
2044
+
2045
+ # Run a command in git.
2046
+ #
2047
+ # git :init
2048
+ # git add: "this.file that.rb"
2049
+ # git add: "onefile.rb", rm: "badfile.cxx"
2050
+ def git: (?::Hash[untyped, untyped] commands) -> untyped
2051
+
2052
+ # Create a new file in the <tt>vendor/</tt> directory. Code can be specified
2053
+ # in a block or a data string can be given.
2054
+ #
2055
+ # vendor("sekrit.rb") do
2056
+ # sekrit_salt = "#{Time.now}--#{3.years.ago}--#{rand}--"
2057
+ # "salt = '#{sekrit_salt}'"
2058
+ # end
2059
+ #
2060
+ # vendor("foreign.rb", "# Foreign code is fun")
2061
+ def vendor: (untyped filename, ?untyped? data) { () -> untyped } -> untyped
2062
+
2063
+ # Create a new file in the <tt>lib/</tt> directory. Code can be specified
2064
+ # in a block or a data string can be given.
2065
+ #
2066
+ # lib("crypto.rb") do
2067
+ # "crypted_special_value = '#{rand}--#{Time.now}--#{rand(1337)}--'"
2068
+ # end
2069
+ #
2070
+ # lib("foreign.rb", "# Foreign code is fun")
2071
+ def lib: (untyped filename, ?untyped? data) { () -> untyped } -> untyped
2072
+
2073
+ # Create a new +Rakefile+ with the provided code (either in a block or a string).
2074
+ #
2075
+ # rakefile("bootstrap.rake") do
2076
+ # project = ask("What is the UNIX name of your project?")
2077
+ #
2078
+ # <<-TASK
2079
+ # namespace :#{project} do
2080
+ # task :bootstrap do
2081
+ # puts "I like boots!"
2082
+ # end
2083
+ # end
2084
+ # TASK
2085
+ # end
2086
+ #
2087
+ # rakefile('seed.rake', 'puts "Planting seeds"')
2088
+ def rakefile: (untyped filename, ?untyped? data) { () -> untyped } -> untyped
2089
+
2090
+ # Create a new initializer with the provided code (either in a block or a string).
2091
+ #
2092
+ # initializer("globals.rb") do
2093
+ # data = ""
2094
+ #
2095
+ # ['MY_WORK', 'ADMINS', 'BEST_COMPANY_EVAR'].each do |const|
2096
+ # data << "#{const} = :entp\n"
2097
+ # end
2098
+ #
2099
+ # data
2100
+ # end
2101
+ #
2102
+ # initializer("api.rb", "API_KEY = '123456'")
2103
+ def initializer: (untyped filename, ?untyped? data) { () -> untyped } -> untyped
2104
+
2105
+ # Generate something using a generator from Rails or a plugin.
2106
+ # The second parameter is the argument string that is passed to
2107
+ # the generator or an Array that is joined.
2108
+ #
2109
+ # generate(:authenticated, "user session")
2110
+ def generate: (untyped what, *untyped args) -> untyped
2111
+
2112
+ # Runs the supplied rake task (invoked with 'rake ...')
2113
+ #
2114
+ # rake("db:migrate")
2115
+ # rake("db:migrate", env: "production")
2116
+ # rake("gems:install", sudo: true)
2117
+ # rake("gems:install", capture: true)
2118
+ def rake: (untyped command, ?::Hash[untyped, untyped] options) -> untyped
2119
+
2120
+ # Runs the supplied rake task (invoked with 'rails ...')
2121
+ #
2122
+ # rails_command("db:migrate")
2123
+ # rails_command("db:migrate", env: "production")
2124
+ # rails_command("gems:install", sudo: true)
2125
+ # rails_command("gems:install", capture: true)
2126
+ def rails_command: (untyped command, ?::Hash[untyped, untyped] options) -> untyped
2127
+
2128
+ # Make an entry in Rails routing file <tt>config/routes.rb</tt>
2129
+ #
2130
+ # route "root 'welcome#index'"
2131
+ def route: (untyped routing_code) -> untyped
2132
+
2133
+ # Reads the given file at the source root and prints it in the console.
2134
+ #
2135
+ # readme "README"
2136
+ def readme: (untyped path) -> untyped
2137
+
2138
+ def log: (*untyped args) -> untyped
2139
+
2140
+ def execute_command: (untyped executor, untyped command, ?::Hash[untyped, untyped] options) -> untyped
2141
+
2142
+ def extify: (untyped name) -> untyped
2143
+
2144
+ def quote: (untyped value) -> untyped
2145
+
2146
+ def optimize_indentation: (untyped value, ?::Integer amount) -> (::String | untyped)
2147
+
2148
+ def indentation: () -> untyped
2149
+
2150
+ def with_indentation: () { () -> untyped } -> untyped
2151
+ end
2152
+ end
2153
+ end
2154
+
2155
+ module Rails
2156
+ module Generators
2157
+ # ActiveModel is a class to be implemented by each ORM to allow Rails to
2158
+ # generate customized controller code.
2159
+ #
2160
+ # The API has the same methods as ActiveRecord, but each method returns a
2161
+ # string that matches the ORM API.
2162
+ #
2163
+ # For example:
2164
+ #
2165
+ # ActiveRecord::Generators::ActiveModel.find(Foo, "params[:id]")
2166
+ # # => "Foo.find(params[:id])"
2167
+ #
2168
+ # DataMapper::Generators::ActiveModel.find(Foo, "params[:id]")
2169
+ # # => "Foo.get(params[:id])"
2170
+ #
2171
+ # On initialization, the ActiveModel accepts the instance name that will
2172
+ # receive the calls:
2173
+ #
2174
+ # builder = ActiveRecord::Generators::ActiveModel.new "@foo"
2175
+ # builder.save # => "@foo.save"
2176
+ #
2177
+ # The only exception in ActiveModel for ActiveRecord is the use of self.build
2178
+ # instead of self.new.
2179
+ #
2180
+ class ActiveModel
2181
+ attr_reader name: untyped
2182
+
2183
+ def initialize: (untyped name) -> untyped
2184
+
2185
+ # GET index
2186
+ def self.all: (untyped klass) -> ::String
2187
+
2188
+ # GET show
2189
+ # GET edit
2190
+ # PATCH/PUT update
2191
+ # DELETE destroy
2192
+ def self.find: (untyped klass, ?untyped? params) -> ::String
2193
+
2194
+ # GET new
2195
+ # POST create
2196
+ def self.build: (untyped klass, ?untyped? params) -> untyped
2197
+
2198
+ # POST create
2199
+ def save: () -> ::String
2200
+
2201
+ # PATCH/PUT update
2202
+ def update: (?untyped? params) -> ::String
2203
+
2204
+ # POST create
2205
+ # PATCH/PUT update
2206
+ def errors: () -> ::String
2207
+
2208
+ # DELETE destroy
2209
+ def destroy: () -> ::String
2210
+ end
2211
+ end
2212
+ end
2213
+
2214
+ module Rails
2215
+ module Generators
2216
+ class AppBase < Base
2217
+ # :nodoc:
2218
+ include Database
2219
+
2220
+ include AppName
2221
+
2222
+ attr_accessor rails_template: untyped
2223
+
2224
+ def self.strict_args_position: () -> ::FalseClass
2225
+
2226
+ def self.add_shared_options_for: (untyped name) -> untyped
2227
+
2228
+ def initialize: (*untyped args) -> untyped
2229
+
2230
+ def gemfile_entry: (untyped name, *untyped args) -> untyped
2231
+
2232
+ def gemfile_entries: () -> untyped
2233
+
2234
+ def add_gem_entry_filter: () { (untyped) -> untyped } -> untyped
2235
+
2236
+ def builder: () -> untyped
2237
+
2238
+ def build: (untyped meth, *untyped args) -> untyped
2239
+
2240
+ def create_root: () -> untyped
2241
+
2242
+ def apply_rails_template: () -> untyped
2243
+
2244
+ def set_default_accessors!: () -> untyped
2245
+
2246
+ def database_gemfile_entry: () -> (::Array[untyped] | untyped)
2247
+
2248
+ def web_server_gemfile_entry: () -> (::Array[untyped] | GemfileEntry)
2249
+
2250
+ def include_all_railties?: () -> untyped
2251
+
2252
+ def comment_if: (untyped value) -> untyped
2253
+
2254
+ def keeps?: () -> untyped
2255
+
2256
+ def sqlite3?: () -> untyped
2257
+
2258
+ def skip_active_storage?: () -> untyped
2259
+
2260
+ def skip_action_mailbox?: () -> untyped
2261
+
2262
+ def skip_action_text?: () -> untyped
2263
+
2264
+ # Note: It inherits unnamed class, but omitted
2265
+ class GemfileEntry
2266
+ def initialize: (untyped name, untyped version, untyped comment, ?::Hash[untyped, untyped] options, ?bool commented_out) -> untyped
2267
+
2268
+ def self.github: (untyped name, untyped github, ?untyped? branch, ?untyped? comment) -> untyped
2269
+
2270
+ def self.version: (untyped name, untyped version, ?untyped? comment) -> untyped
2271
+
2272
+ def self.path: (untyped name, untyped path, ?untyped? comment) -> untyped
2273
+
2274
+ def version: () -> untyped
2275
+ end
2276
+
2277
+ def rails_gemfile_entry: () -> untyped
2278
+
2279
+ def rails_version_specifier: (?untyped gem_version) -> untyped
2280
+
2281
+ def assets_gemfile_entry: () -> (::Array[untyped] | untyped)
2282
+
2283
+ def webpacker_gemfile_entry: () -> (::Array[untyped] | untyped)
2284
+
2285
+ def jbuilder_gemfile_entry: () -> GemfileEntry
2286
+
2287
+ def javascript_gemfile_entry: () -> untyped
2288
+
2289
+ def psych_gemfile_entry: () -> (::Array[untyped] | GemfileEntry)
2290
+
2291
+ def cable_gemfile_entry: () -> (::Array[untyped] | untyped)
2292
+
2293
+ def bundle_command: (untyped command, ?::Hash[untyped, untyped] env) -> untyped
2294
+
2295
+ def exec_bundle_command: (untyped bundle_command, untyped command, untyped env) -> untyped
2296
+
2297
+ def bundle_install?: () -> untyped
2298
+
2299
+ def spring_install?: () -> untyped
2300
+
2301
+ def webpack_install?: () -> untyped
2302
+
2303
+ def depends_on_system_test?: () -> untyped
2304
+
2305
+ def depend_on_listen?: () -> untyped
2306
+
2307
+ def depend_on_bootsnap?: () -> untyped
2308
+
2309
+ def os_supports_listen_out_of_the_box?: () -> untyped
2310
+
2311
+ def run_bundle: () -> untyped
2312
+
2313
+ def run_webpack: () -> untyped
2314
+
2315
+ def generate_bundler_binstub: () -> untyped
2316
+
2317
+ def generate_spring_binstubs: () -> untyped
2318
+
2319
+ def empty_directory_with_keep_file: (untyped destination, ?::Hash[untyped, untyped] config) -> untyped
2320
+
2321
+ def keep_file: (untyped destination) -> untyped
2322
+ end
2323
+ end
2324
+ end
2325
+
2326
+ module Rails
2327
+ module Generators
2328
+ module AppName
2329
+ # :nodoc:
2330
+ RESERVED_NAMES: ::Array[untyped]
2331
+
2332
+ def app_name: () -> untyped
2333
+
2334
+ def original_app_name: () -> untyped
2335
+
2336
+ def defined_app_name: () -> untyped
2337
+
2338
+ def defined_app_const_base: () -> untyped
2339
+
2340
+ def app_const_base: () -> untyped
2341
+
2342
+ def app_const: () -> untyped
2343
+
2344
+ def valid_const?: () -> untyped
2345
+ end
2346
+ end
2347
+ end
2348
+
2349
+ module Rails
2350
+ module Generators
2351
+ class Error < Thor::Error
2352
+ end
2353
+
2354
+ class Base < Thor::Group
2355
+ include Thor::Actions
2356
+
2357
+ include Rails::Generators::Actions
2358
+
2359
+ def self.exit_on_failure?: () -> ::FalseClass
2360
+
2361
+ # Returns the source root for this generator using default_source_root as default.
2362
+ def self.source_root: (?untyped? path) -> untyped
2363
+
2364
+ # Tries to get the description from a USAGE file one folder above the source
2365
+ # root otherwise uses a default description.
2366
+ def self.desc: (?untyped? description) -> untyped
2367
+
2368
+ # Convenience method to get the namespace from the class name. It's the
2369
+ # same as Thor default except that the Generator at the end of the class
2370
+ # is removed.
2371
+ def self.namespace: (?untyped? name) -> untyped
2372
+
2373
+ # Convenience method to hide this generator from the available ones when
2374
+ # running rails generator command.
2375
+ def self.hide!: () -> untyped
2376
+
2377
+ # Invoke a generator based on the value supplied by the user to the
2378
+ # given option named "name". A class option is created when this method
2379
+ # is invoked and you can set a hash to customize it.
2380
+ #
2381
+ # ==== Examples
2382
+ #
2383
+ # module Rails::Generators
2384
+ # class ControllerGenerator < Base
2385
+ # hook_for :test_framework, aliases: "-t"
2386
+ # end
2387
+ # end
2388
+ #
2389
+ # The example above will create a test framework option and will invoke
2390
+ # a generator based on the user supplied value.
2391
+ #
2392
+ # For example, if the user invoke the controller generator as:
2393
+ #
2394
+ # rails generate controller Account --test-framework=test_unit
2395
+ #
2396
+ # The controller generator will then try to invoke the following generators:
2397
+ #
2398
+ # "rails:test_unit", "test_unit:controller", "test_unit"
2399
+ #
2400
+ # Notice that "rails:generators:test_unit" could be loaded as well, what
2401
+ # Rails looks for is the first and last parts of the namespace. This is what
2402
+ # allows any test framework to hook into Rails as long as it provides any
2403
+ # of the hooks above.
2404
+ #
2405
+ # ==== Options
2406
+ #
2407
+ # The first and last part used to find the generator to be invoked are
2408
+ # guessed based on class invokes hook_for, as noticed in the example above.
2409
+ # This can be customized with two options: :in and :as.
2410
+ #
2411
+ # Let's suppose you are creating a generator that needs to invoke the
2412
+ # controller generator from test unit. Your first attempt is:
2413
+ #
2414
+ # class AwesomeGenerator < Rails::Generators::Base
2415
+ # hook_for :test_framework
2416
+ # end
2417
+ #
2418
+ # The lookup in this case for test_unit as input is:
2419
+ #
2420
+ # "test_unit:awesome", "test_unit"
2421
+ #
2422
+ # Which is not the desired lookup. You can change it by providing the
2423
+ # :as option:
2424
+ #
2425
+ # class AwesomeGenerator < Rails::Generators::Base
2426
+ # hook_for :test_framework, as: :controller
2427
+ # end
2428
+ #
2429
+ # And now it will look up at:
2430
+ #
2431
+ # "test_unit:controller", "test_unit"
2432
+ #
2433
+ # Similarly, if you want it to also look up in the rails namespace, you
2434
+ # just need to provide the :in value:
2435
+ #
2436
+ # class AwesomeGenerator < Rails::Generators::Base
2437
+ # hook_for :test_framework, in: :rails, as: :controller
2438
+ # end
2439
+ #
2440
+ # And the lookup is exactly the same as previously:
2441
+ #
2442
+ # "rails:test_unit", "test_unit:controller", "test_unit"
2443
+ #
2444
+ # ==== Switches
2445
+ #
2446
+ # All hooks come with switches for user interface. If you do not want
2447
+ # to use any test framework, you can do:
2448
+ #
2449
+ # rails generate controller Account --skip-test-framework
2450
+ #
2451
+ # Or similarly:
2452
+ #
2453
+ # rails generate controller Account --no-test-framework
2454
+ #
2455
+ # ==== Boolean hooks
2456
+ #
2457
+ # In some cases, you may want to provide a boolean hook. For example, webrat
2458
+ # developers might want to have webrat available on controller generator.
2459
+ # This can be achieved as:
2460
+ #
2461
+ # Rails::Generators::ControllerGenerator.hook_for :webrat, type: :boolean
2462
+ #
2463
+ # Then, if you want webrat to be invoked, just supply:
2464
+ #
2465
+ # rails generate controller Account --webrat
2466
+ #
2467
+ # The hooks lookup is similar as above:
2468
+ #
2469
+ # "rails:generators:webrat", "webrat:generators:controller", "webrat"
2470
+ #
2471
+ # ==== Custom invocations
2472
+ #
2473
+ # You can also supply a block to hook_for to customize how the hook is
2474
+ # going to be invoked. The block receives two arguments, an instance
2475
+ # of the current class and the class to be invoked.
2476
+ #
2477
+ # For example, in the resource generator, the controller should be invoked
2478
+ # with a pluralized class name. But by default it is invoked with the same
2479
+ # name as the resource generator, which is singular. To change this, we
2480
+ # can give a block to customize how the controller can be invoked.
2481
+ #
2482
+ # hook_for :resource_controller do |instance, controller|
2483
+ # instance.invoke controller, [ instance.name.pluralize ]
2484
+ # end
2485
+ #
2486
+ def self.hook_for: (*untyped names) { () -> untyped } -> untyped
2487
+
2488
+ # Remove a previously added hook.
2489
+ #
2490
+ # remove_hook_for :orm
2491
+ def self.remove_hook_for: (*untyped names) -> untyped
2492
+
2493
+ def self.class_option: (untyped name, ?::Hash[untyped, untyped] options) -> untyped
2494
+
2495
+ # Returns the default source root for a given generator. This is used internally
2496
+ # by rails to set its generators source root. If you want to customize your source
2497
+ # root, you should use source_root.
2498
+ def self.default_source_root: () -> (nil | untyped)
2499
+
2500
+ # Returns the base root for a common set of generators. This is used to dynamically
2501
+ # guess the default source root.
2502
+ def self.base_root: () -> untyped
2503
+
2504
+ def self.inherited: (untyped base) -> untyped
2505
+
2506
+ # Check whether the given class names are already taken by user
2507
+ # application or Ruby on Rails.
2508
+ def class_collisions: (*untyped class_names) -> (nil | untyped)
2509
+
2510
+ def extract_last_module: (untyped nesting) -> untyped
2511
+
2512
+ def module_namespacing: () { () -> untyped } -> untyped
2513
+
2514
+ def indent: (untyped content, ?::Integer multiplier) -> untyped
2515
+
2516
+ def wrap_with_namespace: (untyped content) -> ::String
2517
+
2518
+ def namespace: () -> untyped
2519
+
2520
+ def namespaced?: () -> untyped
2521
+
2522
+ def namespace_dirs: () -> untyped
2523
+
2524
+ def namespaced_path: () -> untyped
2525
+
2526
+ def self.banner: () -> untyped
2527
+
2528
+ def self.base_name: () -> untyped
2529
+
2530
+ def self.generator_name: () -> untyped
2531
+
2532
+ def self.default_value_for_option: (untyped name, untyped options) -> untyped
2533
+
2534
+ def self.default_aliases_for_option: (untyped name, untyped options) -> untyped
2535
+
2536
+ def self.default_for_option: (untyped config, untyped name, untyped options, untyped default) -> untyped
2537
+
2538
+ def self.hooks: () -> untyped
2539
+
2540
+ def self.prepare_for_invocation: (untyped name, untyped value) -> untyped
2541
+
2542
+ def self.add_shebang_option!: () -> untyped
2543
+
2544
+ def self.usage_path: () -> untyped
2545
+
2546
+ def self.default_generator_root: () -> untyped
2547
+ end
2548
+ end
2549
+ end
2550
+
2551
+ module Css
2552
+ module Generators
2553
+ class AssetsGenerator < Rails::Generators::NamedBase
2554
+ def copy_stylesheet: () -> untyped
2555
+ end
2556
+ end
2557
+ end
2558
+
2559
+ module Css
2560
+ module Generators
2561
+ class ScaffoldGenerator < Rails::Generators::NamedBase
2562
+ # In order to allow the Sass generators to pick up the default Rails CSS and
2563
+ # transform it, we leave it in a standard location for the CSS stylesheet
2564
+ # generators to handle. For the simple, default case, just copy it over.
2565
+ def copy_stylesheet: () -> untyped
2566
+ end
2567
+ end
2568
+ end
2569
+
2570
+ module Rails
2571
+ module Generators
2572
+ module Database
2573
+ # :nodoc:
2574
+ JDBC_DATABASES: ::Array[untyped]
2575
+
2576
+ DATABASES: untyped
2577
+
2578
+ def initialize: () -> untyped
2579
+
2580
+ def gem_for_database: (?untyped database) -> untyped
2581
+
2582
+ def convert_database_option_for_jruby: () -> untyped
2583
+
2584
+ def mysql_socket: () -> untyped
2585
+ end
2586
+ end
2587
+ end
2588
+
2589
+ module Erb
2590
+ module Generators
2591
+ class ControllerGenerator < Base
2592
+ def copy_view_files: () -> untyped
2593
+ end
2594
+ end
2595
+ end
2596
+
2597
+ module Erb
2598
+ module Generators
2599
+ class MailerGenerator < Base
2600
+ def copy_view_files: () -> untyped
2601
+
2602
+ def formats: () -> ::Array[:text | :html]
2603
+
2604
+ def file_name: () -> untyped
2605
+ end
2606
+ end
2607
+ end
2608
+
2609
+ module Erb
2610
+ module Generators
2611
+ class Base < Rails::Generators::NamedBase
2612
+ def formats: () -> ::Array[untyped]
2613
+
2614
+ def format: () -> :html
2615
+
2616
+ def handler: () -> :erb
2617
+
2618
+ def filename_with_extensions: (untyped name, ?untyped file_format) -> untyped
2619
+ end
2620
+ end
2621
+ end
2622
+
2623
+ module Erb
2624
+ module Generators
2625
+ class ScaffoldGenerator < Base
2626
+ # :nodoc:
2627
+ # :nodoc:
2628
+ # :nodoc:
2629
+ include Rails::Generators::ResourceHelpers
2630
+
2631
+ def create_root_folder: () -> untyped
2632
+
2633
+ def copy_view_files: () -> untyped
2634
+
2635
+ def available_views: () -> ::Array["index" | "edit" | "show" | "new" | "_form"]
2636
+ end
2637
+ end
2638
+ end
2639
+
2640
+ module Rails
2641
+ module Generators
2642
+ class GeneratedAttribute
2643
+ # :nodoc:
2644
+ INDEX_OPTIONS: ::Array[untyped]
2645
+
2646
+ UNIQ_INDEX_OPTIONS: ::Array[untyped]
2647
+
2648
+ attr_accessor name: untyped
2649
+
2650
+ attr_accessor type: untyped
2651
+
2652
+ attr_reader attr_options: untyped
2653
+
2654
+ attr_writer index_name: untyped
2655
+
2656
+ def self.parse: (untyped column_definition) -> untyped
2657
+
2658
+ def self.reference?: (untyped `type`) -> untyped
2659
+
2660
+ # parse possible attribute options like :limit for string/text/binary/integer, :precision/:scale for decimals or :polymorphic for references/belongs_to
2661
+ # when declaring options curly brackets should be used
2662
+ def self.parse_type_and_options: (untyped `type`) -> untyped
2663
+
2664
+ def initialize: (untyped name, ?untyped? `type`, ?bool index_type, ?::Hash[untyped, untyped] attr_options) -> untyped
2665
+
2666
+ def field_type: () -> untyped
2667
+
2668
+ def default: () -> untyped
2669
+
2670
+ def plural_name: () -> untyped
2671
+
2672
+ def singular_name: () -> untyped
2673
+
2674
+ def human_name: () -> untyped
2675
+
2676
+ def index_name: () -> untyped
2677
+
2678
+ def column_name: () -> untyped
2679
+
2680
+ def foreign_key?: () -> untyped
2681
+
2682
+ def reference?: () -> untyped
2683
+
2684
+ def polymorphic?: () -> untyped
2685
+
2686
+ def required?: () -> untyped
2687
+
2688
+ def has_index?: () -> untyped
2689
+
2690
+ def has_uniq_index?: () -> untyped
2691
+
2692
+ def password_digest?: () -> untyped
2693
+
2694
+ def token?: () -> untyped
2695
+
2696
+ def rich_text?: () -> untyped
2697
+
2698
+ def attachment?: () -> untyped
2699
+
2700
+ def attachments?: () -> untyped
2701
+
2702
+ def virtual?: () -> untyped
2703
+
2704
+ def inject_options: () -> untyped
2705
+
2706
+ def inject_index_options: () -> untyped
2707
+
2708
+ def options_for_migration: () -> untyped
2709
+ end
2710
+ end
2711
+ end
2712
+
2713
+ module Rails
2714
+ module Generators
2715
+ # Holds common methods for migrations. It assumes that migrations have the
2716
+ # [0-9]*_name format and can be used by other frameworks (like Sequel)
2717
+ # just by implementing the next migration version method.
2718
+ module Migration
2719
+ extend ActiveSupport::Concern
2720
+
2721
+ attr_reader migration_number: untyped
2722
+
2723
+ attr_reader migration_file_name: untyped
2724
+
2725
+ attr_reader migration_class_name: untyped
2726
+
2727
+ module ClassMethods
2728
+ # nodoc:
2729
+ def migration_lookup_at: (untyped dirname) -> untyped
2730
+
2731
+ def migration_exists?: (untyped dirname, untyped file_name) -> untyped
2732
+
2733
+ def current_migration_number: (untyped dirname) -> untyped
2734
+
2735
+ def next_migration_number: (untyped dirname) -> untyped
2736
+ end
2737
+
2738
+ def create_migration: (untyped destination, untyped data, ?::Hash[untyped, untyped] config) { () -> untyped } -> untyped
2739
+
2740
+ def set_migration_assigns!: (untyped destination) -> untyped
2741
+
2742
+ # Creates a migration template at the given destination. The difference
2743
+ # to the default template method is that the migration version is appended
2744
+ # to the destination file name.
2745
+ #
2746
+ # The migration version, migration file name, migration class name are
2747
+ # available as instance variables in the template to be rendered.
2748
+ #
2749
+ # migration_template "migration.rb", "db/migrate/add_foo_to_bar.rb"
2750
+ def migration_template: (untyped source, untyped destination, ?::Hash[untyped, untyped] config) -> untyped
2751
+ end
2752
+ end
2753
+ end
2754
+
2755
+ module Rails
2756
+ module Generators
2757
+ module ModelHelpers
2758
+ # :nodoc:
2759
+ PLURAL_MODEL_NAME_WARN_MESSAGE: ::String
2760
+
2761
+ IRREGULAR_MODEL_NAME_WARN_MESSAGE: ::String
2762
+
2763
+ def self.included: (untyped base) -> untyped
2764
+
2765
+ def initialize: (untyped args, *untyped _options) -> untyped
2766
+ end
2767
+ end
2768
+ end
2769
+
2770
+ module Rails
2771
+ module Generators
2772
+ class NamedBase < Base
2773
+ def initialize: (untyped args, *untyped options) -> untyped
2774
+
2775
+ def template: (untyped source, *untyped args) { () -> untyped } -> untyped
2776
+
2777
+ def js_template: (untyped source, untyped destination) -> untyped
2778
+
2779
+ attr_reader file_name: untyped
2780
+
2781
+ def singular_name: () -> untyped
2782
+
2783
+ def inside_template: () { () -> untyped } -> untyped
2784
+
2785
+ def inside_template?: () -> untyped
2786
+
2787
+ def file_path: () -> untyped
2788
+
2789
+ def class_path: () -> untyped
2790
+
2791
+ def regular_class_path: () -> untyped
2792
+
2793
+ def namespaced_class_path: () -> untyped
2794
+
2795
+ def class_name: () -> untyped
2796
+
2797
+ def human_name: () -> untyped
2798
+
2799
+ def plural_name: () -> untyped
2800
+
2801
+ def i18n_scope: () -> untyped
2802
+
2803
+ def table_name: () -> untyped
2804
+
2805
+ def uncountable?: () -> untyped
2806
+
2807
+ def index_helper: () -> untyped
2808
+
2809
+ def show_helper: () -> ::String
2810
+
2811
+ def edit_helper: () -> ::String
2812
+
2813
+ def new_helper: () -> ::String
2814
+
2815
+ def singular_table_name: () -> untyped
2816
+
2817
+ def plural_table_name: () -> untyped
2818
+
2819
+ def plural_file_name: () -> untyped
2820
+
2821
+ def fixture_file_name: () -> untyped
2822
+
2823
+ def route_url: () -> untyped
2824
+
2825
+ def url_helper_prefix: () -> untyped
2826
+
2827
+ def application_name: () -> untyped
2828
+
2829
+ def redirect_resource_name: () -> untyped
2830
+
2831
+ def model_resource_name: (?prefix: ::String prefix) -> untyped
2832
+
2833
+ def singular_route_name: () -> untyped
2834
+
2835
+ def plural_route_name: () -> untyped
2836
+
2837
+ def assign_names!: (untyped name) -> untyped
2838
+
2839
+ # Convert attributes array into GeneratedAttribute objects.
2840
+ def parse_attributes!: () -> untyped
2841
+
2842
+ def attributes_names: () -> untyped
2843
+
2844
+ def pluralize_table_names?: () -> untyped
2845
+
2846
+ def mountable_engine?: () -> untyped
2847
+
2848
+ def self.check_class_collision: (?::Hash[untyped, untyped] options) -> untyped
2849
+ end
2850
+ end
2851
+ end
2852
+
2853
+ module Rails
2854
+ module ActionMethods
2855
+ # :nodoc:
2856
+ attr_reader options: untyped
2857
+
2858
+ def initialize: (untyped generator) -> untyped
2859
+
2860
+ def method_missing: (untyped meth, *untyped args) { () -> untyped } -> untyped
2861
+ end
2862
+
2863
+ # The application builder allows you to override elements of the application
2864
+ # generator without being forced to reverse the operations of the default
2865
+ # generator.
2866
+ #
2867
+ # This allows you to override entire operations, like the creation of the
2868
+ # Gemfile, README, or JavaScript files, without needing to know exactly
2869
+ # what those operations do so you can create another template action.
2870
+ #
2871
+ # class CustomAppBuilder < Rails::AppBuilder
2872
+ # def test
2873
+ # @generator.gem "rspec-rails", group: [:development, :test]
2874
+ # run "bundle install"
2875
+ # generate "rspec:install"
2876
+ # end
2877
+ # end
2878
+ class AppBuilder
2879
+ def rakefile: () -> untyped
2880
+
2881
+ def readme: () -> untyped
2882
+
2883
+ def ruby_version: () -> untyped
2884
+
2885
+ def gemfile: () -> untyped
2886
+
2887
+ def configru: () -> untyped
2888
+
2889
+ def gitignore: () -> untyped
2890
+
2891
+ def version_control: () -> untyped
2892
+
2893
+ def package_json: () -> untyped
2894
+
2895
+ def app: () -> untyped
2896
+
2897
+ def bin: () -> untyped
2898
+
2899
+ def bin_when_updating: () -> untyped
2900
+
2901
+ def config: () -> untyped
2902
+
2903
+ def config_when_updating: () -> untyped
2904
+
2905
+ def master_key: () -> (nil | untyped)
2906
+
2907
+ def credentials: () -> (nil | untyped)
2908
+
2909
+ def database_yml: () -> untyped
2910
+
2911
+ def db: () -> untyped
2912
+
2913
+ def lib: () -> untyped
2914
+
2915
+ def log: () -> untyped
2916
+
2917
+ def public_directory: () -> untyped
2918
+
2919
+ def storage: () -> untyped
2920
+
2921
+ def test: () -> untyped
2922
+
2923
+ def system_test: () -> untyped
2924
+
2925
+ def tmp: () -> untyped
2926
+
2927
+ def vendor: () -> untyped
2928
+
2929
+ def config_target_version: () -> untyped
2930
+ end
2931
+
2932
+ module Generators
2933
+ # We need to store the RAILS_DEV_PATH in a constant, otherwise the path
2934
+ # can change in Ruby 1.8.7 when we FileUtils.cd.
2935
+ RAILS_DEV_PATH: untyped
2936
+
2937
+ class AppGenerator < AppBase
2938
+ # :nodoc:
2939
+ WEBPACKS: ::Array[untyped]
2940
+
2941
+ def initialize: (*untyped args) -> untyped
2942
+
2943
+ def create_root_files: () -> untyped
2944
+
2945
+ def create_app_files: () -> untyped
2946
+
2947
+ def create_bin_files: () -> untyped
2948
+
2949
+ def update_bin_files: () -> untyped
2950
+
2951
+ def update_active_storage: () -> untyped
2952
+
2953
+ def create_config_files: () -> untyped
2954
+
2955
+ def update_config_files: () -> untyped
2956
+
2957
+ def create_master_key: () -> untyped
2958
+
2959
+ def create_credentials: () -> untyped
2960
+
2961
+ def display_upgrade_guide_info: () -> untyped
2962
+
2963
+ def create_boot_file: () -> untyped
2964
+
2965
+ def create_active_record_files: () -> (nil | untyped)
2966
+
2967
+ def create_db_files: () -> (nil | untyped)
2968
+
2969
+ def create_lib_files: () -> untyped
2970
+
2971
+ def create_log_files: () -> untyped
2972
+
2973
+ def create_public_files: () -> untyped
2974
+
2975
+ def create_tmp_files: () -> untyped
2976
+
2977
+ def create_vendor_files: () -> untyped
2978
+
2979
+ def create_test_files: () -> untyped
2980
+
2981
+ def create_system_test_files: () -> untyped
2982
+
2983
+ def create_storage_files: () -> untyped
2984
+
2985
+ def delete_app_assets_if_api_option: () -> untyped
2986
+
2987
+ def delete_app_helpers_if_api_option: () -> untyped
2988
+
2989
+ def delete_app_views_if_api_option: () -> untyped
2990
+
2991
+ def delete_public_files_if_api_option: () -> untyped
2992
+
2993
+ def delete_js_folder_skipping_javascript: () -> untyped
2994
+
2995
+ def delete_assets_initializer_skipping_sprockets: () -> untyped
2996
+
2997
+ def delete_application_record_skipping_active_record: () -> untyped
2998
+
2999
+ def delete_action_mailer_files_skipping_action_mailer: () -> untyped
3000
+
3001
+ def delete_action_cable_files_skipping_action_cable: () -> untyped
3002
+
3003
+ def delete_non_api_initializers_if_api_option: () -> untyped
3004
+
3005
+ def delete_api_initializers: () -> untyped
3006
+
3007
+ def delete_new_framework_defaults: () -> untyped
3008
+
3009
+ def delete_bin_yarn: () -> untyped
3010
+
3011
+ def finish_template: () -> untyped
3012
+
3013
+ def run_after_bundle_callbacks: () -> untyped
3014
+
3015
+ def self.banner: () -> ::String
3016
+
3017
+ # Define file as an alias to create_file for backwards compatibility.
3018
+ def file: (*untyped args) { () -> untyped } -> untyped
3019
+
3020
+ def after_bundle: () { () -> untyped } -> untyped
3021
+
3022
+ def get_builder_class: () -> untyped
3023
+ end
3024
+
3025
+ class ARGVScrubber
3026
+ # This class handles preparation of the arguments before the AppGenerator is
3027
+ # called. The class provides version or help information if they were
3028
+ # requested, and also constructs the railsrc file (used for extra configuration
3029
+ # options).
3030
+ #
3031
+ # This class should be called before the AppGenerator is required and started
3032
+ # since it configures and mutates ARGV correctly.
3033
+ # :nodoc:
3034
+ def initialize: (?untyped argv) -> untyped
3035
+
3036
+ def prepare!: () -> untyped
3037
+
3038
+ def self.default_rc_file: () -> untyped
3039
+
3040
+ def handle_version_request!: (untyped argument) -> untyped
3041
+
3042
+ def handle_invalid_command!: (untyped argument, untyped argv) { () -> untyped } -> untyped
3043
+
3044
+ def handle_rails_rc!: (untyped argv) -> untyped
3045
+
3046
+ def railsrc: (untyped argv) { (untyped, untyped) -> untyped } -> untyped
3047
+
3048
+ def read_rc_file: (untyped railsrc) -> untyped
3049
+
3050
+ def insert_railsrc_into_argv!: (untyped argv, untyped railsrc) -> untyped
3051
+ end
3052
+ end
3053
+ end
3054
+
3055
+ module Rails
3056
+ module Generators
3057
+ class ApplicationRecordGenerator < Base
3058
+ end
3059
+ end
3060
+ end
3061
+
3062
+ module Rails
3063
+ module Generators
3064
+ class AssetsGenerator < NamedBase
3065
+ def asset_name: () -> untyped
3066
+ end
3067
+ end
3068
+ end
3069
+
3070
+ module Rails
3071
+ module Generators
3072
+ class ControllerGenerator < NamedBase
3073
+ def create_controller_files: () -> untyped
3074
+
3075
+ def add_routes: () -> (nil | untyped)
3076
+
3077
+ def file_name: () -> untyped
3078
+
3079
+ def remove_possible_suffix: (untyped name) -> untyped
3080
+
3081
+ # This method creates nested route entry for namespaced resources.
3082
+ # For eg. rails g controller foo/bar/baz index show
3083
+ # Will generate -
3084
+ # namespace :foo do
3085
+ # namespace :bar do
3086
+ # get 'baz/index'
3087
+ # get 'baz/show'
3088
+ # end
3089
+ # end
3090
+ def generate_routing_code: () -> untyped
3091
+ end
3092
+ end
3093
+ end
3094
+
3095
+ module Rails
3096
+ module Generators
3097
+ class CredentialsGenerator < Base
3098
+ # :nodoc:
3099
+ def add_credentials_file: () -> untyped
3100
+
3101
+ def add_credentials_file_silently: (?untyped? template) -> untyped
3102
+
3103
+ def credentials: () -> ActiveSupport::EncryptedConfiguration
3104
+
3105
+ def credentials_template: () -> ::String
3106
+ end
3107
+ end
3108
+ end
3109
+
3110
+ module Rails
3111
+ module Generators
3112
+ module Db
3113
+ module System
3114
+ class ChangeGenerator < Base
3115
+ # :nodoc:
3116
+ include Database
3117
+
3118
+ include AppName
3119
+
3120
+ def self.default_generator_root: () -> untyped
3121
+
3122
+ def initialize: () -> untyped
3123
+
3124
+ def edit_database_config: () -> untyped
3125
+
3126
+ def edit_gemfile: () -> untyped
3127
+
3128
+ def all_database_gems: () -> untyped
3129
+
3130
+ def all_database_gems_regex: () -> ::Regexp
3131
+
3132
+ def gem_entry_regex_for: (untyped gem_name) -> ::Regexp
3133
+
3134
+ def gem_entry_for: (*untyped gem_name_and_version) -> ::String
3135
+ end
3136
+ end
3137
+ end
3138
+ end
3139
+ end
3140
+
3141
+ module Rails
3142
+ module Generators
3143
+ class EncryptedFileGenerator < Base
3144
+ # :nodoc:
3145
+ def add_encrypted_file_silently: (untyped file_path, untyped key_path, ?untyped template) -> untyped
3146
+
3147
+ def encrypted_file_template: () -> ::String
3148
+ end
3149
+ end
3150
+ end
3151
+
3152
+ module Rails
3153
+ module Generators
3154
+ class EncryptionKeyFileGenerator < Base
3155
+ # :nodoc:
3156
+ def add_key_file: (untyped key_path) -> untyped
3157
+
3158
+ def add_key_file_silently: (untyped key_path, ?untyped? key) -> untyped
3159
+
3160
+ def ignore_key_file: (untyped key_path, ?ignore: untyped ignore) -> untyped
3161
+
3162
+ def ignore_key_file_silently: (untyped key_path, ?ignore: untyped ignore) -> untyped
3163
+
3164
+ def key_ignore: (untyped key_path) -> untyped
3165
+ end
3166
+ end
3167
+ end
3168
+
3169
+ module Rails
3170
+ module Generators
3171
+ class GeneratorGenerator < NamedBase
3172
+ def create_generator_files: () -> untyped
3173
+
3174
+ def generator_dir: () -> untyped
3175
+ end
3176
+ end
3177
+ end
3178
+
3179
+ module Rails
3180
+ module Generators
3181
+ class HelperGenerator < NamedBase
3182
+ def create_helper_files: () -> untyped
3183
+
3184
+ def file_name: () -> untyped
3185
+ end
3186
+ end
3187
+ end
3188
+
3189
+ module Rails
3190
+ module Generators
3191
+ class IntegrationTestGenerator < NamedBase
3192
+ end
3193
+ end
3194
+ end
3195
+
3196
+ module Rails
3197
+ module Generators
3198
+ class MasterKeyGenerator < Base
3199
+ # :nodoc:
3200
+ MASTER_KEY_PATH: untyped
3201
+
3202
+ def add_master_key_file: () -> untyped
3203
+
3204
+ def add_master_key_file_silently: (?untyped? key) -> untyped
3205
+
3206
+ def ignore_master_key_file: () -> untyped
3207
+
3208
+ def ignore_master_key_file_silently: () -> untyped
3209
+
3210
+ def key_file_generator: () -> EncryptionKeyFileGenerator
3211
+
3212
+ def key_ignore: () -> untyped
3213
+ end
3214
+ end
3215
+ end
3216
+
3217
+ module Rails
3218
+ module Generators
3219
+ class MigrationGenerator < NamedBase
3220
+ end
3221
+ end
3222
+ end
3223
+
3224
+ module Rails
3225
+ module Generators
3226
+ class ModelGenerator < NamedBase
3227
+ # :nodoc:
3228
+ include Rails::Generators::ModelHelpers
3229
+ end
3230
+ end
3231
+ end
3232
+
3233
+ module Rails
3234
+ # The plugin builder allows you to override elements of the plugin
3235
+ # generator without being forced to reverse the operations of the default
3236
+ # generator.
3237
+ #
3238
+ # This allows you to override entire operations, like the creation of the
3239
+ # Gemfile, \README, or JavaScript files, without needing to know exactly
3240
+ # what those operations do so you can create another template action.
3241
+ class PluginBuilder
3242
+ def rakefile: () -> untyped
3243
+
3244
+ def app: () -> untyped
3245
+
3246
+ def readme: () -> untyped
3247
+
3248
+ def gemfile: () -> untyped
3249
+
3250
+ def license: () -> untyped
3251
+
3252
+ def gemspec: () -> untyped
3253
+
3254
+ def gitignore: () -> untyped
3255
+
3256
+ def lib: () -> untyped
3257
+
3258
+ def config: () -> untyped
3259
+
3260
+ def test: () -> untyped
3261
+
3262
+ PASSTHROUGH_OPTIONS: ::Array[untyped]
3263
+
3264
+ def generate_test_dummy: (?bool force) -> untyped
3265
+
3266
+ def test_dummy_config: () -> untyped
3267
+
3268
+ def test_dummy_assets: () -> untyped
3269
+
3270
+ def test_dummy_clean: () -> untyped
3271
+
3272
+ def assets_manifest: () -> untyped
3273
+
3274
+ def stylesheets: () -> untyped
3275
+
3276
+ def bin: (?bool force) -> untyped
3277
+
3278
+ def gemfile_entry: () -> (nil | untyped)
3279
+ end
3280
+
3281
+ module Generators
3282
+ class PluginGenerator < AppBase
3283
+ def initialize: (*untyped args) -> untyped
3284
+
3285
+ def create_root_files: () -> untyped
3286
+
3287
+ def create_app_files: () -> untyped
3288
+
3289
+ def create_config_files: () -> untyped
3290
+
3291
+ def create_lib_files: () -> untyped
3292
+
3293
+ def create_assets_manifest_file: () -> untyped
3294
+
3295
+ def create_public_stylesheets_files: () -> untyped
3296
+
3297
+ def create_bin_files: () -> untyped
3298
+
3299
+ def create_test_files: () -> untyped
3300
+
3301
+ def create_test_dummy_files: () -> (nil | untyped)
3302
+
3303
+ def update_gemfile: () -> untyped
3304
+
3305
+ def finish_template: () -> untyped
3306
+
3307
+ def name: () -> untyped
3308
+
3309
+ def underscored_name: () -> untyped
3310
+
3311
+ def namespaced_name: () -> untyped
3312
+
3313
+ def create_dummy_app: (?untyped? path) -> untyped
3314
+
3315
+ def engine?: () -> untyped
3316
+
3317
+ def full?: () -> untyped
3318
+
3319
+ def mountable?: () -> untyped
3320
+
3321
+ def skip_git?: () -> untyped
3322
+
3323
+ def with_dummy_app?: () -> untyped
3324
+
3325
+ def api?: () -> untyped
3326
+
3327
+ def self.banner: () -> ::String
3328
+
3329
+ def original_name: () -> untyped
3330
+
3331
+ def modules: () -> untyped
3332
+
3333
+ def wrap_in_modules: (untyped unwrapped_code) -> untyped
3334
+
3335
+ def camelized_modules: () -> untyped
3336
+
3337
+ def humanized: () -> untyped
3338
+
3339
+ def camelized: () -> untyped
3340
+
3341
+ def author: () -> untyped
3342
+
3343
+ def email: () -> untyped
3344
+
3345
+ def valid_const?: () -> untyped
3346
+
3347
+ def application_definition: () -> untyped
3348
+
3349
+ def get_builder_class: () -> untyped
3350
+
3351
+ def rakefile_test_tasks: () -> ::String
3352
+
3353
+ def dummy_path: (?untyped? path) -> untyped
3354
+
3355
+ def mute: () { () -> untyped } -> untyped
3356
+
3357
+ def rails_app_path: () -> untyped
3358
+
3359
+ def inside_application?: () -> untyped
3360
+
3361
+ def relative_path: () -> (nil | untyped)
3362
+ end
3363
+ end
3364
+ end
3365
+
3366
+ module Rails
3367
+ module Generators
3368
+ class ResourceGenerator < ModelGenerator
3369
+ # :nodoc:
3370
+ include ResourceHelpers
3371
+ end
3372
+ end
3373
+ end
3374
+
3375
+ module Rails
3376
+ module Generators
3377
+ class ResourceRouteGenerator < NamedBase
3378
+ # :nodoc:
3379
+ # Properly nests namespaces passed into a generator
3380
+ #
3381
+ # $ rails generate resource admin/users/products
3382
+ #
3383
+ # should give you
3384
+ #
3385
+ # namespace :admin do
3386
+ # namespace :users do
3387
+ # resources :products
3388
+ # end
3389
+ # end
3390
+ def add_resource_route: () -> (nil | untyped)
3391
+ end
3392
+ end
3393
+ end
3394
+
3395
+ module Rails
3396
+ module Generators
3397
+ class ScaffoldControllerGenerator < NamedBase
3398
+ # :nodoc:
3399
+ include ResourceHelpers
3400
+
3401
+ def create_controller_files: () -> untyped
3402
+
3403
+ def permitted_params: () -> untyped
3404
+
3405
+ def attachments?: (untyped name) -> untyped
3406
+ end
3407
+ end
3408
+ end
3409
+
3410
+ module Rails
3411
+ module Generators
3412
+ class ScaffoldGenerator < ResourceGenerator
3413
+ def handle_skip: () -> untyped
3414
+ end
3415
+ end
3416
+ end
3417
+
3418
+ module Rails
3419
+ module Generators
3420
+ class SystemTestGenerator < NamedBase
3421
+ end
3422
+ end
3423
+ end
3424
+
3425
+ module Rails
3426
+ module Generators
3427
+ class TaskGenerator < NamedBase
3428
+ def create_task_files: () -> untyped
3429
+ end
3430
+ end
3431
+ end
3432
+
3433
+ module Rails
3434
+ module Generators
3435
+ include Rails::Command::Behavior
3436
+
3437
+ DEFAULT_ALIASES: ::Hash[untyped, untyped]
3438
+
3439
+ DEFAULT_OPTIONS: ::Hash[untyped, untyped]
3440
+
3441
+ def self.configure!: (untyped config) -> untyped
3442
+
3443
+ def self.templates_path: () -> untyped
3444
+
3445
+ def self.aliases: () -> untyped
3446
+
3447
+ def self.options: () -> untyped
3448
+
3449
+ # Hold configured generators fallbacks. If a plugin developer wants a
3450
+ # generator group to fallback to another group in case of missing generators,
3451
+ # they can add a fallback.
3452
+ #
3453
+ # For example, shoulda is considered a test_framework and is an extension
3454
+ # of test_unit. However, most part of shoulda generators are similar to
3455
+ # test_unit ones.
3456
+ #
3457
+ # Shoulda then can tell generators to search for test_unit generators when
3458
+ # some of them are not available by adding a fallback:
3459
+ #
3460
+ # Rails::Generators.fallbacks[:shoulda] = :test_unit
3461
+ def self.fallbacks: () -> untyped
3462
+
3463
+ # Configure generators for API only applications. It basically hides
3464
+ # everything that is usually browser related, such as assets and session
3465
+ # migration generators, and completely disable helpers and assets
3466
+ # so generators such as scaffold won't create them.
3467
+ def self.api_only!: () -> untyped
3468
+
3469
+ # Remove the color from output.
3470
+ def self.no_color!: () -> untyped
3471
+
3472
+ # Returns an array of generator namespaces that are hidden.
3473
+ # Generator namespaces may be hidden for a variety of reasons.
3474
+ # Some are aliased such as "rails:migration" and can be
3475
+ # invoked with the shorter "migration", others are private to other generators
3476
+ # such as "css:scaffold".
3477
+ def self.hidden_namespaces: () -> untyped
3478
+
3479
+ def self.hide_namespaces: (*untyped namespaces) -> untyped
3480
+
3481
+ # Show help message with available generators.
3482
+ def self.help: (?::String command) -> untyped
3483
+
3484
+ def self.public_namespaces: () -> untyped
3485
+
3486
+ def self.print_generators: () -> untyped
3487
+
3488
+ def self.sorted_groups: () -> untyped
3489
+
3490
+ def self.find_by_namespace: (untyped name, ?untyped? base, ?untyped? context) -> untyped
3491
+
3492
+ # Receives a namespace, arguments and the behavior to invoke the generator.
3493
+ # It's used as the default entry point for generate, destroy and update
3494
+ # commands.
3495
+ def self.invoke: (untyped namespace, ?untyped args, ?::Hash[untyped, untyped] config) -> untyped
3496
+
3497
+ def self.print_list: (untyped base, untyped namespaces) -> untyped
3498
+
3499
+ # Try fallbacks for the given base.
3500
+ def self.invoke_fallbacks_for: (untyped name, untyped base) -> (nil | untyped)
3501
+
3502
+ def self.command_type: () -> untyped
3503
+
3504
+ def self.lookup_paths: () -> untyped
3505
+
3506
+ def self.file_lookup_paths: () -> untyped
3507
+ end
3508
+ end
3509
+
3510
+ module Rails
3511
+ module Generators
3512
+ module ResourceHelpers
3513
+ def self.included: (untyped base) -> untyped
3514
+
3515
+ def initialize: (*untyped args) -> untyped
3516
+
3517
+ attr_reader controller_name: untyped
3518
+
3519
+ attr_reader controller_file_name: untyped
3520
+
3521
+ def controller_class_path: () -> untyped
3522
+
3523
+ def assign_controller_names!: (untyped name) -> untyped
3524
+
3525
+ def controller_file_path: () -> untyped
3526
+
3527
+ def controller_class_name: () -> untyped
3528
+
3529
+ def controller_i18n_scope: () -> untyped
3530
+
3531
+ # Loads the ORM::Generators::ActiveModel class. This class is responsible
3532
+ # to tell scaffold entities how to generate a specific method for the
3533
+ # ORM. Check Rails::Generators::ActiveModel for more information.
3534
+ def orm_class: () -> untyped
3535
+
3536
+ # Initialize ORM::Generators::ActiveModel to access instance methods.
3537
+ def orm_instance: (?untyped name) -> untyped
3538
+ end
3539
+ end
3540
+ end
3541
+
3542
+ module Rails
3543
+ module Generators
3544
+ # This class provides a TestCase for testing generators. To setup, you need
3545
+ # just to configure the destination and set which generator is being tested:
3546
+ #
3547
+ # class AppGeneratorTest < Rails::Generators::TestCase
3548
+ # tests AppGenerator
3549
+ # destination File.expand_path("../tmp", __dir__)
3550
+ # end
3551
+ #
3552
+ # If you want to ensure your destination root is clean before running each test,
3553
+ # you can set a setup callback:
3554
+ #
3555
+ # class AppGeneratorTest < Rails::Generators::TestCase
3556
+ # tests AppGenerator
3557
+ # destination File.expand_path("../tmp", __dir__)
3558
+ # setup :prepare_destination
3559
+ # end
3560
+ class TestCase < ActiveSupport::TestCase
3561
+ include Rails::Generators::Testing::Behaviour
3562
+
3563
+ extend ::Rails::Generators::Testing::Behaviour::ClassMethods
3564
+
3565
+ include Rails::Generators::Testing::SetupAndTeardown
3566
+
3567
+ include Rails::Generators::Testing::Assertions
3568
+
3569
+ include FileUtils
3570
+ end
3571
+ end
3572
+ end
3573
+
3574
+ module Rails
3575
+ module Generators
3576
+ module Testing
3577
+ module Assertions
3578
+ # Asserts a given file exists. You need to supply an absolute path or a path relative
3579
+ # to the configured destination:
3580
+ #
3581
+ # assert_file "config/environment.rb"
3582
+ #
3583
+ # You can also give extra arguments. If the argument is a regexp, it will check if the
3584
+ # regular expression matches the given file content. If it's a string, it compares the
3585
+ # file with the given string:
3586
+ #
3587
+ # assert_file "config/environment.rb", /initialize/
3588
+ #
3589
+ # Finally, when a block is given, it yields the file content:
3590
+ #
3591
+ # assert_file "app/controllers/products_controller.rb" do |controller|
3592
+ # assert_instance_method :index, controller do |index|
3593
+ # assert_match(/Product\.all/, index)
3594
+ # end
3595
+ # end
3596
+ def assert_file: (untyped relative, *untyped contents) { (untyped) -> untyped } -> untyped
3597
+
3598
+ # Asserts a given file does not exist. You need to supply an absolute path or a
3599
+ # path relative to the configured destination:
3600
+ #
3601
+ # assert_no_file "config/random.rb"
3602
+ def assert_no_file: (untyped relative) -> untyped
3603
+
3604
+ # Asserts a given migration exists. You need to supply an absolute path or a
3605
+ # path relative to the configured destination:
3606
+ #
3607
+ # assert_migration "db/migrate/create_products.rb"
3608
+ #
3609
+ # This method manipulates the given path and tries to find any migration which
3610
+ # matches the migration name. For example, the call above is converted to:
3611
+ #
3612
+ # assert_file "db/migrate/003_create_products.rb"
3613
+ #
3614
+ # Consequently, assert_migration accepts the same arguments has assert_file.
3615
+ def assert_migration: (untyped relative, *untyped contents) { () -> untyped } -> untyped
3616
+
3617
+ # Asserts a given migration does not exist. You need to supply an absolute path or a
3618
+ # path relative to the configured destination:
3619
+ #
3620
+ # assert_no_migration "db/migrate/create_products.rb"
3621
+ def assert_no_migration: (untyped relative) -> untyped
3622
+
3623
+ # Asserts the given class method exists in the given content. This method does not detect
3624
+ # class methods inside (class << self), only class methods which starts with "self.".
3625
+ # When a block is given, it yields the content of the method.
3626
+ #
3627
+ # assert_migration "db/migrate/create_products.rb" do |migration|
3628
+ # assert_class_method :up, migration do |up|
3629
+ # assert_match(/create_table/, up)
3630
+ # end
3631
+ # end
3632
+ def assert_class_method: (untyped method, untyped content) { () -> untyped } -> untyped
3633
+
3634
+ # Asserts the given method exists in the given content. When a block is given,
3635
+ # it yields the content of the method.
3636
+ #
3637
+ # assert_file "app/controllers/products_controller.rb" do |controller|
3638
+ # assert_instance_method :index, controller do |index|
3639
+ # assert_match(/Product\.all/, index)
3640
+ # end
3641
+ # end
3642
+ def assert_instance_method: (untyped method, untyped content) { (untyped) -> untyped } -> untyped
3643
+
3644
+ # Asserts the given attribute type gets translated to a field type
3645
+ # properly:
3646
+ #
3647
+ # assert_field_type :date, :date_select
3648
+ def assert_field_type: (untyped attribute_type, untyped field_type) -> untyped
3649
+
3650
+ # Asserts the given attribute type gets a proper default value:
3651
+ #
3652
+ # assert_field_default_value :string, "MyString"
3653
+ def assert_field_default_value: (untyped attribute_type, untyped value) -> untyped
3654
+ end
3655
+ end
3656
+ end
3657
+ end
3658
+
3659
+ module Rails
3660
+ module Generators
3661
+ module Testing
3662
+ module Behaviour
3663
+ extend ActiveSupport::Concern
3664
+
3665
+ include ActiveSupport::Testing::Stream
3666
+
3667
+ module ClassMethods
3668
+ # Sets which generator should be tested:
3669
+ #
3670
+ # tests AppGenerator
3671
+ def tests: (untyped klass) -> untyped
3672
+
3673
+ # Sets default arguments on generator invocation. This can be overwritten when
3674
+ # invoking it.
3675
+ #
3676
+ # arguments %w(app_name --skip-active-record)
3677
+ def arguments: (untyped array) -> untyped
3678
+
3679
+ # Sets the destination of generator files:
3680
+ #
3681
+ # destination File.expand_path("../tmp", __dir__)
3682
+ def destination: (untyped path) -> untyped
3683
+ end
3684
+
3685
+ # Runs the generator configured for this class. The first argument is an array like
3686
+ # command line arguments:
3687
+ #
3688
+ # class AppGeneratorTest < Rails::Generators::TestCase
3689
+ # tests AppGenerator
3690
+ # destination File.expand_path("../tmp", __dir__)
3691
+ # setup :prepare_destination
3692
+ #
3693
+ # test "database.yml is not created when skipping Active Record" do
3694
+ # run_generator %w(myapp --skip-active-record)
3695
+ # assert_no_file "config/database.yml"
3696
+ # end
3697
+ # end
3698
+ #
3699
+ # You can provide a configuration hash as second argument. This method returns the output
3700
+ # printed by the generator.
3701
+ def run_generator: (?untyped args, ?::Hash[untyped, untyped] config) -> untyped
3702
+
3703
+ # Instantiate the generator.
3704
+ def generator: (?untyped args, ?::Hash[untyped, untyped] options, ?::Hash[untyped, untyped] config) -> untyped
3705
+
3706
+ # Create a Rails::Generators::GeneratedAttribute by supplying the
3707
+ # attribute type and, optionally, the attribute name:
3708
+ #
3709
+ # create_generated_attribute(:string, 'name')
3710
+ def create_generated_attribute: (untyped attribute_type, ?::String name, ?untyped? index) -> untyped
3711
+
3712
+ def destination_root_is_set?: () -> untyped
3713
+
3714
+ def ensure_current_path: () -> untyped
3715
+
3716
+ def prepare_destination: () -> untyped
3717
+
3718
+ def migration_file_name: (untyped relative) -> untyped
3719
+ end
3720
+ end
3721
+ end
3722
+ end
3723
+
3724
+ module Rails
3725
+ module Generators
3726
+ module Testing
3727
+ module SetupAndTeardown
3728
+ def setup: () -> untyped
3729
+
3730
+ def teardown: () -> untyped
3731
+ end
3732
+ end
3733
+ end
3734
+ end
3735
+
3736
+ module TestUnit
3737
+ module Generators
3738
+ class ControllerGenerator < Base
3739
+ def create_test_files: () -> untyped
3740
+ end
3741
+ end
3742
+ end
3743
+
3744
+ module TestUnit
3745
+ module Generators
3746
+ class GeneratorGenerator < Base
3747
+ def create_generator_files: () -> untyped
3748
+
3749
+ def generator_path: () -> untyped
3750
+ end
3751
+ end
3752
+ end
3753
+
3754
+ module TestUnit
3755
+ module Generators
3756
+ class HelperGenerator < Base
3757
+ end
3758
+ end
3759
+ end
3760
+
3761
+ module TestUnit
3762
+ module Generators
3763
+ class IntegrationGenerator < Base
3764
+ def create_test_files: () -> untyped
3765
+
3766
+ def file_name: () -> untyped
3767
+ end
3768
+ end
3769
+ end
3770
+
3771
+ module TestUnit
3772
+ module Generators
3773
+ class JobGenerator < Base
3774
+ def create_test_file: () -> untyped
3775
+
3776
+ def file_name: () -> untyped
3777
+ end
3778
+ end
3779
+ end
3780
+
3781
+ module TestUnit
3782
+ module Generators
3783
+ class MailerGenerator < Base
3784
+ def check_class_collision: () -> untyped
3785
+
3786
+ def create_test_files: () -> untyped
3787
+
3788
+ def create_preview_files: () -> untyped
3789
+
3790
+ def file_name: () -> untyped
3791
+ end
3792
+ end
3793
+ end
3794
+
3795
+ module TestUnit
3796
+ module Generators
3797
+ class ModelGenerator < Base
3798
+ # :nodoc:
3799
+ # :nodoc:
3800
+ # :nodoc:
3801
+ RESERVED_YAML_KEYWORDS: ::Array[untyped]
3802
+
3803
+ def create_test_file: () -> untyped
3804
+
3805
+ def create_fixture_file: () -> untyped
3806
+
3807
+ def yaml_key_value: (untyped key, untyped value) -> untyped
3808
+ end
3809
+ end
3810
+ end
3811
+
3812
+ module TestUnit
3813
+ module Generators
3814
+ class PluginGenerator < Base
3815
+ def create_test_files: () -> untyped
3816
+ end
3817
+ end
3818
+ end
3819
+
3820
+ module TestUnit
3821
+ module Generators
3822
+ class Base < Rails::Generators::NamedBase
3823
+ end
3824
+ end
3825
+ end
3826
+
3827
+ module TestUnit
3828
+ module Generators
3829
+ class ScaffoldGenerator < Base
3830
+ # :nodoc:
3831
+ # :nodoc:
3832
+ # :nodoc:
3833
+ include Rails::Generators::ResourceHelpers
3834
+
3835
+ def create_test_files: () -> untyped
3836
+
3837
+ def fixture_name: () -> untyped
3838
+
3839
+ def attributes_string: () -> untyped
3840
+
3841
+ def attributes_hash: () -> (::Hash[untyped, untyped] | untyped)
3842
+
3843
+ def boolean?: (untyped name) -> untyped
3844
+
3845
+ def virtual?: (untyped name) -> untyped
3846
+ end
3847
+ end
3848
+ end
3849
+
3850
+ module TestUnit
3851
+ module Generators
3852
+ class SystemGenerator < Base
3853
+ def create_test_files: () -> untyped
3854
+
3855
+ def file_name: () -> untyped
3856
+ end
3857
+ end
3858
+ end
3859
+
3860
+ class Rails::InfoController < Rails::ApplicationController
3861
+ def index: () -> untyped
3862
+
3863
+ def properties: () -> untyped
3864
+
3865
+ def routes: () -> untyped
3866
+
3867
+ def match_route: () { (untyped) -> untyped } -> untyped
3868
+
3869
+ def with_leading_slash: (untyped path) -> untyped
3870
+ end
3871
+
3872
+ module Rails
3873
+ # This module helps build the runtime properties that are displayed in
3874
+ # Rails::InfoController responses. These include the active Rails version,
3875
+ # Ruby version, Rack version, and so on.
3876
+ module Info
3877
+ def self.names: () -> untyped
3878
+
3879
+ def self.value_for: (untyped property_name) -> untyped
3880
+
3881
+ # nodoc:
3882
+ def self.property: (untyped name, ?untyped? value) { () -> untyped } -> untyped
3883
+
3884
+ def self.to_s: () -> untyped
3885
+
3886
+ def self.to_html: () -> untyped
3887
+ end
3888
+ end
3889
+
3890
+ module Rails
3891
+ module Initializable
3892
+ def self.included: (untyped base) -> untyped
3893
+
3894
+ class Initializer
3895
+ attr_reader name: untyped
3896
+
3897
+ attr_reader block: untyped
3898
+
3899
+ def initialize: (untyped name, untyped context, untyped options) { () -> untyped } -> untyped
3900
+
3901
+ def before: () -> untyped
3902
+
3903
+ def after: () -> untyped
3904
+
3905
+ def belongs_to?: (untyped group) -> untyped
3906
+
3907
+ def run: (*untyped args) -> untyped
3908
+
3909
+ def bind: (untyped context) -> (untyped | Initializer)
3910
+
3911
+ def context_class: () -> untyped
3912
+ end
3913
+
3914
+ class Collection[T] < Array[T]
3915
+ include TSort
3916
+
3917
+ def tsort_each_child: (untyped initializer) { () -> untyped } -> untyped
3918
+
3919
+ def +: (untyped other) -> Collection[untyped]
3920
+ end
3921
+
3922
+ def run_initializers: (?::Symbol group, *untyped args) -> (nil | untyped)
3923
+
3924
+ def initializers: () -> untyped
3925
+
3926
+ module ClassMethods
3927
+ def initializers: () -> untyped
3928
+
3929
+ def initializers_chain: () -> untyped
3930
+
3931
+ def initializers_for: (untyped binding) -> Collection[untyped]
3932
+
3933
+ def initializer: (untyped name, ?::Hash[untyped, untyped] opts) { () -> untyped } -> untyped
3934
+ end
3935
+ end
3936
+ end
3937
+
3938
+ class Rails::MailersController < Rails::ApplicationController
3939
+ def index: () -> untyped
3940
+
3941
+ def preview: () -> untyped
3942
+
3943
+ def show_previews?: () -> untyped
3944
+
3945
+ def find_preview: () -> untyped
3946
+
3947
+ def find_preferred_part: (*untyped formats) -> untyped
3948
+
3949
+ def find_part: (untyped format) -> untyped
3950
+
3951
+ def part_query: (untyped mime_type) -> untyped
3952
+
3953
+ def locale_query: (untyped locale) -> untyped
3954
+
3955
+ def set_locale: () { () -> untyped } -> untyped
3956
+ end
3957
+
3958
+ module Rails
3959
+ module Paths
3960
+ # This object is an extended hash that behaves as root of the <tt>Rails::Paths</tt> system.
3961
+ # It allows you to collect information about how you want to structure your application
3962
+ # paths through a Hash-like API. It requires you to give a physical path on initialization.
3963
+ #
3964
+ # root = Root.new "/rails"
3965
+ # root.add "app/controllers", eager_load: true
3966
+ #
3967
+ # The above command creates a new root object and adds "app/controllers" as a path.
3968
+ # This means we can get a <tt>Rails::Paths::Path</tt> object back like below:
3969
+ #
3970
+ # path = root["app/controllers"]
3971
+ # path.eager_load? # => true
3972
+ # path.is_a?(Rails::Paths::Path) # => true
3973
+ #
3974
+ # The +Path+ object is simply an enumerable and allows you to easily add extra paths:
3975
+ #
3976
+ # path.is_a?(Enumerable) # => true
3977
+ # path.to_ary.inspect # => ["app/controllers"]
3978
+ #
3979
+ # path << "lib/controllers"
3980
+ # path.to_ary.inspect # => ["app/controllers", "lib/controllers"]
3981
+ #
3982
+ # Notice that when you add a path using +add+, the path object created already
3983
+ # contains the path with the same path value given to +add+. In some situations,
3984
+ # you may not want this behavior, so you can give <tt>:with</tt> as option.
3985
+ #
3986
+ # root.add "config/routes", with: "config/routes.rb"
3987
+ # root["config/routes"].inspect # => ["config/routes.rb"]
3988
+ #
3989
+ # The +add+ method accepts the following options as arguments:
3990
+ # eager_load, autoload, autoload_once, and glob.
3991
+ #
3992
+ # Finally, the +Path+ object also provides a few helpers:
3993
+ #
3994
+ # root = Root.new "/rails"
3995
+ # root.add "app/controllers"
3996
+ #
3997
+ # root["app/controllers"].expanded # => ["/rails/app/controllers"]
3998
+ # root["app/controllers"].existent # => ["/rails/app/controllers"]
3999
+ #
4000
+ # Check the <tt>Rails::Paths::Path</tt> documentation for more information.
4001
+ class Root
4002
+ attr_accessor path: untyped
4003
+
4004
+ def initialize: (untyped path) -> untyped
4005
+
4006
+ def []=: (untyped path, untyped value) -> untyped
4007
+
4008
+ def add: (untyped path, ?::Hash[untyped, untyped] options) -> untyped
4009
+
4010
+ def []: (untyped path) -> untyped
4011
+
4012
+ def values: () -> untyped
4013
+
4014
+ def keys: () -> untyped
4015
+
4016
+ def values_at: (*untyped list) -> untyped
4017
+
4018
+ def all_paths: () -> untyped
4019
+
4020
+ def autoload_once: () -> untyped
4021
+
4022
+ def eager_load: () -> untyped
4023
+
4024
+ def autoload_paths: () -> untyped
4025
+
4026
+ def load_paths: () -> untyped
4027
+
4028
+ def filter_by: () { (untyped) -> untyped } -> untyped
4029
+ end
4030
+
4031
+ class Path
4032
+ include Enumerable[untyped, untyped]
4033
+
4034
+ attr_accessor glob: untyped
4035
+
4036
+ def initialize: (untyped root, untyped current, untyped paths, ?::Hash[untyped, untyped] options) -> untyped
4037
+
4038
+ def absolute_current: () -> untyped
4039
+
4040
+ def children: () -> untyped
4041
+
4042
+ def first: () -> untyped
4043
+
4044
+ def last: () -> untyped
4045
+
4046
+ def each: () { () -> untyped } -> untyped
4047
+
4048
+ def <<: (untyped path) -> untyped
4049
+
4050
+ def concat: (untyped paths) -> untyped
4051
+
4052
+ def unshift: (*untyped paths) -> untyped
4053
+
4054
+ def to_ary: () -> untyped
4055
+
4056
+ def extensions: () -> untyped
4057
+
4058
+ # Expands all paths against the root and return all unique values.
4059
+ def expanded: () -> untyped
4060
+
4061
+ # Returns all expanded paths but only if they exist in the filesystem.
4062
+ def existent: () -> untyped
4063
+
4064
+ def existent_directories: () -> untyped
4065
+
4066
+ def files_in: (untyped path) -> untyped
4067
+ end
4068
+ end
4069
+ end
4070
+
4071
+ module Rails
4072
+ module Rack
4073
+ # Sets log tags, logs the request, calls the app, and flushes the logs.
4074
+ #
4075
+ # Log tags (+taggers+) can be an Array containing: methods that the +request+
4076
+ # object responds to, objects that respond to +to_s+ or Proc objects that accept
4077
+ # an instance of the +request+ object.
4078
+ class Logger < ActiveSupport::LogSubscriber
4079
+ def initialize: (untyped app, ?untyped? taggers) -> untyped
4080
+
4081
+ def call: (untyped env) -> untyped
4082
+
4083
+ def call_app: (untyped request, untyped env) -> untyped
4084
+
4085
+ def started_request_message: (untyped request) -> untyped
4086
+
4087
+ def compute_tags: (untyped request) -> untyped
4088
+
4089
+ def finish: (untyped request) -> untyped
4090
+
4091
+ def logger: () -> untyped
4092
+ end
4093
+ end
4094
+ end
4095
+
4096
+ module Rails
4097
+ module Rack
4098
+ end
4099
+ end
4100
+
4101
+ module Rails
4102
+ class Railtie
4103
+ module Configurable
4104
+ extend ActiveSupport::Concern
4105
+
4106
+ module ClassMethods
4107
+ def inherited: (untyped base) -> untyped
4108
+
4109
+ def `instance`: () -> untyped
4110
+
4111
+ def respond_to?: (*untyped args) -> untyped
4112
+
4113
+ def configure: () { () -> untyped } -> untyped
4114
+
4115
+ def method_missing: (*untyped args) { () -> untyped } -> untyped
4116
+ end
4117
+ end
4118
+ end
4119
+ end
4120
+
4121
+ module Rails
4122
+ class Railtie
4123
+ class Configuration
4124
+ def initialize: () -> untyped
4125
+
4126
+ def self.eager_load_namespaces: () -> untyped
4127
+
4128
+ # All namespaces that are eager loaded
4129
+ def eager_load_namespaces: () -> untyped
4130
+
4131
+ # Add files that should be watched for change.
4132
+ def watchable_files: () -> untyped
4133
+
4134
+ # Add directories that should be watched for change.
4135
+ # The key of the hashes should be directories and the values should
4136
+ # be an array of extensions to match in each directory.
4137
+ def watchable_dirs: () -> untyped
4138
+
4139
+ # This allows you to modify the application's middlewares from Engines.
4140
+ #
4141
+ # All operations you run on the app_middleware will be replayed on the
4142
+ # application once it is defined and the default_middlewares are
4143
+ # created
4144
+ def app_middleware: () -> untyped
4145
+
4146
+ # This allows you to modify application's generators from Railties.
4147
+ #
4148
+ # Values set on app_generators will become defaults for application, unless
4149
+ # application overwrites them.
4150
+ def app_generators: () { (untyped) -> untyped } -> untyped
4151
+
4152
+ # First configurable block to run. Called before any initializers are run.
4153
+ def before_configuration: () { () -> untyped } -> untyped
4154
+
4155
+ # Third configurable block to run. Does not run if +config.eager_load+
4156
+ # set to false.
4157
+ def before_eager_load: () { () -> untyped } -> untyped
4158
+
4159
+ # Second configurable block to run. Called before frameworks initialize.
4160
+ def before_initialize: () { () -> untyped } -> untyped
4161
+
4162
+ # Last configurable block to run. Called after frameworks initialize.
4163
+ def after_initialize: () { () -> untyped } -> untyped
4164
+
4165
+ # Array of callbacks defined by #to_prepare.
4166
+ def to_prepare_blocks: () -> untyped
4167
+
4168
+ # Defines generic callbacks to run before #after_initialize. Useful for
4169
+ # Rails::Railtie subclasses.
4170
+ def to_prepare: () { () -> untyped } -> untyped
4171
+
4172
+ def respond_to?: (untyped name, ?bool include_private) -> untyped
4173
+
4174
+ def method_missing: (untyped name, *untyped args) { () -> untyped } -> untyped
4175
+ end
4176
+ end
4177
+ end
4178
+
4179
+ module Rails
4180
+ # <tt>Rails::Railtie</tt> is the core of the Rails framework and provides
4181
+ # several hooks to extend Rails and/or modify the initialization process.
4182
+ #
4183
+ # Every major component of Rails (Action Mailer, Action Controller, Active
4184
+ # Record, etc.) implements a railtie. Each of them is responsible for their
4185
+ # own initialization. This makes Rails itself absent of any component hooks,
4186
+ # allowing other components to be used in place of any of the Rails defaults.
4187
+ #
4188
+ # Developing a Rails extension does _not_ require implementing a railtie, but
4189
+ # if you need to interact with the Rails framework during or after boot, then
4190
+ # a railtie is needed.
4191
+ #
4192
+ # For example, an extension doing any of the following would need a railtie:
4193
+ #
4194
+ # * creating initializers
4195
+ # * configuring a Rails framework for the application, like setting a generator
4196
+ # * adding <tt>config.*</tt> keys to the environment
4197
+ # * setting up a subscriber with <tt>ActiveSupport::Notifications</tt>
4198
+ # * adding Rake tasks
4199
+ #
4200
+ # == Creating a Railtie
4201
+ #
4202
+ # To extend Rails using a railtie, create a subclass of <tt>Rails::Railtie</tt>.
4203
+ # This class must be loaded during the Rails boot process, and is conventionally
4204
+ # called <tt>MyNamespace::Railtie</tt>.
4205
+ #
4206
+ # The following example demonstrates an extension which can be used with or
4207
+ # without Rails.
4208
+ #
4209
+ # # lib/my_gem/railtie.rb
4210
+ # module MyGem
4211
+ # class Railtie < Rails::Railtie
4212
+ # end
4213
+ # end
4214
+ #
4215
+ # # lib/my_gem.rb
4216
+ # require 'my_gem/railtie' if defined?(Rails)
4217
+ #
4218
+ # == Initializers
4219
+ #
4220
+ # To add an initialization step to the Rails boot process from your railtie, just
4221
+ # define the initialization code with the +initializer+ macro:
4222
+ #
4223
+ # class MyRailtie < Rails::Railtie
4224
+ # initializer "my_railtie.configure_rails_initialization" do
4225
+ # # some initialization behavior
4226
+ # end
4227
+ # end
4228
+ #
4229
+ # If specified, the block can also receive the application object, in case you
4230
+ # need to access some application-specific configuration, like middleware:
4231
+ #
4232
+ # class MyRailtie < Rails::Railtie
4233
+ # initializer "my_railtie.configure_rails_initialization" do |app|
4234
+ # app.middleware.use MyRailtie::Middleware
4235
+ # end
4236
+ # end
4237
+ #
4238
+ # Finally, you can also pass <tt>:before</tt> and <tt>:after</tt> as options to
4239
+ # +initializer+, in case you want to couple it with a specific step in the
4240
+ # initialization process.
4241
+ #
4242
+ # == Configuration
4243
+ #
4244
+ # Railties can access a config object which contains configuration shared by all
4245
+ # railties and the application:
4246
+ #
4247
+ # class MyRailtie < Rails::Railtie
4248
+ # # Customize the ORM
4249
+ # config.app_generators.orm :my_railtie_orm
4250
+ #
4251
+ # # Add a to_prepare block which is executed once in production
4252
+ # # and before each request in development.
4253
+ # config.to_prepare do
4254
+ # MyRailtie.setup!
4255
+ # end
4256
+ # end
4257
+ #
4258
+ # == Loading Rake Tasks and Generators
4259
+ #
4260
+ # If your railtie has Rake tasks, you can tell Rails to load them through the method
4261
+ # +rake_tasks+:
4262
+ #
4263
+ # class MyRailtie < Rails::Railtie
4264
+ # rake_tasks do
4265
+ # load 'path/to/my_railtie.tasks'
4266
+ # end
4267
+ # end
4268
+ #
4269
+ # By default, Rails loads generators from your load path. However, if you want to place
4270
+ # your generators at a different location, you can specify in your railtie a block which
4271
+ # will load them during normal generators lookup:
4272
+ #
4273
+ # class MyRailtie < Rails::Railtie
4274
+ # generators do
4275
+ # require 'path/to/my_railtie_generator'
4276
+ # end
4277
+ # end
4278
+ #
4279
+ # Since filenames on the load path are shared across gems, be sure that files you load
4280
+ # through a railtie have unique names.
4281
+ #
4282
+ # == Application and Engine
4283
+ #
4284
+ # An engine is nothing more than a railtie with some initializers already set. And since
4285
+ # <tt>Rails::Application</tt> is an engine, the same configuration described here can be
4286
+ # used in both.
4287
+ #
4288
+ # Be sure to look at the documentation of those specific classes for more information.
4289
+ class Railtie
4290
+ include Initializable
4291
+
4292
+ ABSTRACT_RAILTIES: ::Array[untyped]
4293
+
4294
+ def self.subclasses: () -> untyped
4295
+
4296
+ def self.inherited: (untyped base) -> untyped
4297
+
4298
+ def self.rake_tasks: () { () -> untyped } -> untyped
4299
+
4300
+ def self.console: () { () -> untyped } -> untyped
4301
+
4302
+ def self.runner: () { () -> untyped } -> untyped
4303
+
4304
+ def self.generators: () { () -> untyped } -> untyped
4305
+
4306
+ def self.abstract_railtie?: () -> untyped
4307
+
4308
+ def self.railtie_name: (?untyped? name) -> untyped
4309
+
4310
+ # Since Rails::Railtie cannot be instantiated, any methods that call
4311
+ # +instance+ are intended to be called only on subclasses of a Railtie.
4312
+ def self.`instance`: () -> untyped
4313
+
4314
+ # Allows you to configure the railtie. This is the same method seen in
4315
+ # Railtie::Configurable, but this module is no longer required for all
4316
+ # subclasses of Railtie so we provide the class method here.
4317
+ def self.configure: () { () -> untyped } -> untyped
4318
+
4319
+ def self.generate_railtie_name: (untyped string) -> untyped
4320
+
4321
+ def self.respond_to_missing?: (untyped name, untyped _) -> untyped
4322
+
4323
+ # If the class method does not have a method, then send the method call
4324
+ # to the Railtie instance.
4325
+ def self.method_missing: (untyped name, *untyped args) { () -> untyped } -> untyped
4326
+
4327
+ # receives an instance variable identifier, set the variable value if is
4328
+ # blank and append given block to value, which will be used later in
4329
+ # `#each_registered_block(type, &block)`
4330
+ def self.register_block_for: (untyped `type`) { () -> untyped } -> untyped
4331
+
4332
+ def initialize: () -> untyped
4333
+
4334
+ def configure: () { () -> untyped } -> untyped
4335
+
4336
+ # This is used to create the <tt>config</tt> object on Railties, an instance of
4337
+ # Railtie::Configuration, that is used by Railties and Application to store
4338
+ # related configuration.
4339
+ def config: () -> untyped
4340
+
4341
+ def railtie_namespace: () -> untyped
4342
+
4343
+ def run_console_blocks: (untyped app) -> untyped
4344
+
4345
+ def run_generators_blocks: (untyped app) -> untyped
4346
+
4347
+ def run_runner_blocks: (untyped app) -> untyped
4348
+
4349
+ def run_tasks_blocks: (untyped app) -> untyped
4350
+
4351
+ # run `&block` in every registered block in `#register_block_for`
4352
+ def each_registered_block: (untyped `type`) { () -> untyped } -> untyped
4353
+ end
4354
+ end
4355
+
4356
+ module Rails
4357
+ extend ActiveSupport::Autoload
4358
+
4359
+ attr_writer application: untyped
4360
+
4361
+ attr_accessor app_class: untyped
4362
+
4363
+ attr_accessor cache: untyped
4364
+
4365
+ attr_accessor logger: untyped
4366
+
4367
+ def self.application: () -> untyped
4368
+
4369
+ # The Configuration instance used to configure the Rails environment
4370
+ def self.configuration: () -> untyped
4371
+
4372
+ def self.backtrace_cleaner: () -> untyped
4373
+
4374
+ # Returns a Pathname object of the current Rails project,
4375
+ # otherwise it returns +nil+ if there is no project:
4376
+ #
4377
+ # Rails.root
4378
+ # # => #<Pathname:/Users/someuser/some/path/project>
4379
+ def self.root: () -> untyped
4380
+
4381
+ # Returns the current Rails environment.
4382
+ #
4383
+ # Rails.env # => "development"
4384
+ # Rails.env.development? # => true
4385
+ # Rails.env.production? # => false
4386
+ def self.env: () -> untyped
4387
+
4388
+ # Sets the Rails environment.
4389
+ #
4390
+ # Rails.env = "staging" # => "staging"
4391
+ def self.env=: (untyped environment) -> untyped
4392
+
4393
+ # Returns all Rails groups for loading based on:
4394
+ #
4395
+ # * The Rails environment;
4396
+ # * The environment variable RAILS_GROUPS;
4397
+ # * The optional envs given as argument and the hash with group dependencies;
4398
+ #
4399
+ # groups assets: [:development, :test]
4400
+ #
4401
+ # # Returns
4402
+ # # => [:default, "development", :assets] for Rails.env == "development"
4403
+ # # => [:default, "production"] for Rails.env == "production"
4404
+ def self.groups: (*untyped groups) -> untyped
4405
+
4406
+ # Returns a Pathname object of the public folder of the current
4407
+ # Rails project, otherwise it returns +nil+ if there is no project:
4408
+ #
4409
+ # Rails.public_path
4410
+ # # => #<Pathname:/Users/someuser/some/path/project/public>
4411
+ def self.public_path: () -> untyped
4412
+
4413
+ def self.autoloaders: () -> untyped
4414
+ end
4415
+
4416
+ module Rails
4417
+ class Secrets
4418
+ # Greatly inspired by Ara T. Howard's magnificent sekrets gem. (trim non-ascii characters)
4419
+ # :nodoc:
4420
+ class MissingKeyError < RuntimeError
4421
+ def initialize: () -> untyped
4422
+ end
4423
+
4424
+ attr_writer root: untyped
4425
+
4426
+ def self.parse: (untyped paths, env: untyped env) -> untyped
4427
+
4428
+ def self.key: () -> untyped
4429
+
4430
+ def self.encrypt: (untyped data) -> untyped
4431
+
4432
+ def self.decrypt: (untyped data) -> untyped
4433
+
4434
+ def self.read: () -> untyped
4435
+
4436
+ def self.write: (untyped contents) -> untyped
4437
+
4438
+ def self.read_for_editing: () { () -> untyped } -> untyped
4439
+
4440
+ def self.handle_missing_key: () -> untyped
4441
+
4442
+ def self.read_key_file: () -> untyped
4443
+
4444
+ def self.key_path: () -> untyped
4445
+
4446
+ def self.path: () -> untyped
4447
+
4448
+ def self.preprocess: (untyped path) -> untyped
4449
+
4450
+ def self.writing: (untyped contents) { (untyped) -> untyped } -> untyped
4451
+
4452
+ def self.encryptor: () -> untyped
4453
+ end
4454
+ end
4455
+
4456
+ module Rails
4457
+ # Implements the logic behind <tt>Rails::Command::NotesCommand</tt>. See <tt>rails notes --help</tt> for usage information.
4458
+ #
4459
+ # Annotation objects are triplets <tt>:line</tt>, <tt>:tag</tt>, <tt>:text</tt> that
4460
+ # represent the line where the annotation lives, its tag, and its text. Note
4461
+ # the filename is not stored.
4462
+ #
4463
+ # Annotations are looked for in comments and modulus whitespace they have to
4464
+ # start with the tag optionally followed by a colon. Everything up to the end
4465
+ # of the line (or closing ERB comment tag) is considered to be their text.
4466
+ class SourceAnnotationExtractor
4467
+ # Note: It inherits unnamed class, but omitted
4468
+ class Annotation
4469
+ def self.directories: () -> untyped
4470
+
4471
+ # Registers additional directories to be included
4472
+ # Rails::SourceAnnotationExtractor::Annotation.register_directories("spec", "another")
4473
+ def self.register_directories: (*untyped dirs) -> untyped
4474
+
4475
+ def self.tags: () -> untyped
4476
+
4477
+ # Registers additional tags
4478
+ # Rails::SourceAnnotationExtractor::Annotation.register_tags("TESTME", "DEPRECATEME")
4479
+ def self.register_tags: (*untyped additional_tags) -> untyped
4480
+
4481
+ def self.extensions: () -> untyped
4482
+
4483
+ # Registers new Annotations File Extensions
4484
+ # Rails::SourceAnnotationExtractor::Annotation.register_extensions("css", "scss", "sass", "less", "js") { |tag| /\/\/\s*(#{tag}):?\s*(.*)$/ }
4485
+ def self.register_extensions: (*untyped exts) { () -> untyped } -> untyped
4486
+
4487
+ # Returns a representation of the annotation that looks like this:
4488
+ #
4489
+ # [126] [TODO] This algorithm is simple and clearly correct, make it faster.
4490
+ #
4491
+ # If +options+ has a flag <tt>:tag</tt> the tag is shown as in the example above.
4492
+ # Otherwise the string contains just line and text.
4493
+ def to_s: (?::Hash[untyped, untyped] options) -> untyped
4494
+
4495
+ # Used in annotations.rake
4496
+ # nodoc:
4497
+ def self.notes_task_deprecation_warning: () -> untyped
4498
+ end
4499
+
4500
+ # Prints all annotations with tag +tag+ under the root directories +app+,
4501
+ # +config+, +db+, +lib+, and +test+ (recursively).
4502
+ #
4503
+ # If +tag+ is <tt>nil</tt>, annotations with either default or registered tags are printed.
4504
+ #
4505
+ # Specific directories can be explicitly set using the <tt>:dirs</tt> key in +options+.
4506
+ #
4507
+ # Rails::SourceAnnotationExtractor.enumerate 'TODO|FIXME', dirs: %w(app lib), tag: true
4508
+ #
4509
+ # If +options+ has a <tt>:tag</tt> flag, it will be passed to each annotation's +to_s+.
4510
+ #
4511
+ # See <tt>#find_in</tt> for a list of file extensions that will be taken into account.
4512
+ #
4513
+ # This class method is the single entry point for the `rails notes` command.
4514
+ def self.enumerate: (?untyped? tag, ?::Hash[untyped, untyped] options) -> untyped
4515
+
4516
+ attr_reader tag: untyped
4517
+
4518
+ def initialize: (untyped tag) -> untyped
4519
+
4520
+ # Returns a hash that maps filenames under +dirs+ (recursively) to arrays
4521
+ # with their annotations.
4522
+ def find: (untyped dirs) -> untyped
4523
+
4524
+ # Returns a hash that maps filenames under +dir+ (recursively) to arrays
4525
+ # with their annotations. Files with extensions registered in
4526
+ # <tt>Rails::SourceAnnotationExtractor::Annotation.extensions</tt> are
4527
+ # taken into account. Only files with annotations are included.
4528
+ def find_in: (untyped dir) -> untyped
4529
+
4530
+ # If +file+ is the filename of a file that contains annotations this method returns
4531
+ # a hash with a single entry that maps +file+ to an array of its annotations.
4532
+ # Otherwise it returns an empty hash.
4533
+ def extract_annotations_from: (untyped file, untyped pattern) -> untyped
4534
+
4535
+ # Prints the mapping from filenames to annotations in +results+ ordered by filename.
4536
+ # The +options+ hash is passed to each annotation's +to_s+.
4537
+ def display: (untyped results, ?::Hash[untyped, untyped] options) -> untyped
4538
+ end
4539
+ end
4540
+
4541
+ # Remove this deprecated class in the next minor version
4542
+ # nodoc:
4543
+ SourceAnnotationExtractor: untyped
4544
+
4545
+ module Rails
4546
+ module LineFiltering
4547
+ # :nodoc:
4548
+ def run: (untyped reporter, ?::Hash[untyped, untyped] options) -> untyped
4549
+ end
4550
+ end
4551
+
4552
+ module Rails
4553
+ class TestUnitRailtie < Rails::Railtie
4554
+ end
4555
+ end
4556
+
4557
+ module Rails
4558
+ class TestUnitReporter < Minitest::StatisticsReporter
4559
+ def record: (untyped result) -> untyped
4560
+
4561
+ def report: () -> (nil | untyped)
4562
+
4563
+ def aggregated_results: () -> untyped
4564
+
4565
+ def filtered_results: () -> untyped
4566
+
4567
+ def relative_path_for: (untyped file) -> untyped
4568
+
4569
+ def output_inline?: () -> untyped
4570
+
4571
+ def fail_fast?: () -> untyped
4572
+
4573
+ def format_line: (untyped result) -> untyped
4574
+
4575
+ def format_rerun_snippet: (untyped result) -> ::String
4576
+
4577
+ def app_root: () -> untyped
4578
+
4579
+ def colored_output?: () -> untyped
4580
+
4581
+ COLOR_BY_RESULT_CODE: ::Hash[untyped, untyped]
4582
+
4583
+ def color_output: (untyped string, by: untyped by) -> untyped
4584
+ end
4585
+ end
4586
+
4587
+ module Rails
4588
+ module TestUnit
4589
+ class Runner
4590
+ def self.attach_before_load_options: (untyped opts) -> untyped
4591
+
4592
+ def self.parse_options: (untyped argv) -> untyped
4593
+
4594
+ def self.rake_run: (?untyped argv) -> untyped
4595
+
4596
+ def self.run: (?untyped argv) -> untyped
4597
+
4598
+ def self.load_tests: (untyped argv) -> untyped
4599
+
4600
+ def self.compose_filter: (untyped runnable, untyped filter) -> untyped
4601
+
4602
+ def self.extract_filters: (untyped argv) -> untyped
4603
+ end
4604
+
4605
+ class CompositeFilter
4606
+ # :nodoc:
4607
+ attr_reader named_filter: untyped
4608
+
4609
+ def initialize: (untyped runnable, untyped filter, untyped patterns) -> untyped
4610
+
4611
+ # minitest uses === to find matching filters.
4612
+ def ===: (untyped method) -> untyped
4613
+
4614
+ def derive_named_filter: (untyped filter) -> untyped
4615
+
4616
+ def derive_line_filters: (untyped patterns) -> untyped
4617
+ end
4618
+
4619
+ class Filter
4620
+ # :nodoc:
4621
+ def initialize: (untyped runnable, untyped file, untyped line) -> untyped
4622
+
4623
+ def ===: (untyped method) -> (nil | untyped)
4624
+
4625
+ def definition_for: (untyped method) -> untyped
4626
+ end
4627
+ end
4628
+ end
4629
+
4630
+ module Rails
4631
+ # Returns the version of the currently loaded Rails as a string.
4632
+ def self.version: () -> untyped
4633
+ end
4634
+
4635
+ class Rails::WelcomeController < Rails::ApplicationController
4636
+ def index: () -> nil
4637
+ end
4638
+
4639
+ class Object
4640
+ include ActiveRecord::TestDatabases
4641
+
4642
+ include ActiveRecord::TestFixtures
4643
+
4644
+ extend ::ActiveRecord::TestFixtures::ClassMethods
4645
+
4646
+ def before_setup: () -> untyped
4647
+ end