diff --git a/Gemfile b/Gemfile
index 004d67233..24531dc46 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,9 +2,6 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
-ruby_version = ENV.fetch('GEMFILE_RUBY_VERSION', nil)
-ruby ruby_version if ruby_version
-
# Declare your gem's dependencies in good_job.gemspec.
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
@@ -22,6 +19,10 @@ gem 'nokogiri'
gem 'pg', platforms: [:mri, :mingw, :x64_mingw]
gem 'rack', '~> 2.0'
gem 'rails'
+gem "sorbet", group: :development
+gem "sorbet-runtime"
+gem "spoom", require: false, group: :development
+gem "tapioca", require: false, group: :development
platforms :ruby do
gem "activerecord-explain-analyze", require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 84c896f82..9a00d19b4 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -249,6 +249,7 @@ GEM
timeout
net-smtp (0.3.3)
net-protocol
+ netrc (0.11.0)
nio4r (2.5.9)
nio4r (2.5.9-java)
nokogiri (1.15.2)
@@ -271,6 +272,7 @@ GEM
ast (~> 2.4.1)
racc
pg (1.5.3)
+ prettier_print (1.2.1)
protocol-hpack (1.4.2)
protocol-http (0.24.3)
protocol-http1 (0.15.0)
@@ -336,6 +338,11 @@ GEM
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
+ rbi (0.0.16)
+ ast
+ parser (>= 2.6.4.0)
+ sorbet-runtime (>= 0.5.9204)
+ unparser
rbtrace (0.4.14)
ffi (>= 1.0.6)
msgpack (>= 0.4.3)
@@ -398,9 +405,43 @@ GEM
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
smart_properties (1.17.0)
+ sorbet (0.5.10908)
+ sorbet-static (= 0.5.10908)
+ sorbet-runtime (0.5.10908)
+ sorbet-static (0.5.10908-java)
+ sorbet-static (0.5.10908-universal-darwin-14)
+ sorbet-static (0.5.10908-universal-darwin-15)
+ sorbet-static (0.5.10908-universal-darwin-16)
+ sorbet-static (0.5.10908-universal-darwin-17)
+ sorbet-static (0.5.10908-universal-darwin-18)
+ sorbet-static (0.5.10908-universal-darwin-19)
+ sorbet-static (0.5.10908-universal-darwin-20)
+ sorbet-static (0.5.10908-universal-darwin-21)
+ sorbet-static (0.5.10908-universal-darwin-22)
+ sorbet-static (0.5.10908-x86_64-linux)
+ sorbet-static-and-runtime (0.5.10908)
+ sorbet (= 0.5.10908)
+ sorbet-runtime (= 0.5.10908)
+ spoom (1.2.2)
+ erubi (>= 1.10.0)
+ sorbet (>= 0.5.10187)
+ sorbet-runtime (>= 0.5.9204)
+ syntax_tree (>= 6.1.1)
+ thor (>= 0.19.2)
spoon (0.0.6)
ffi
stackprof (0.2.25)
+ syntax_tree (6.1.1)
+ prettier_print (>= 1.2.0)
+ tapioca (0.11.7)
+ bundler (>= 2.2.25)
+ netrc (>= 0.11.0)
+ parallel (>= 1.21.0)
+ rbi (~> 0.0.0, >= 0.0.16)
+ sorbet-static-and-runtime (>= 0.5.10187)
+ spoom (~> 1.2.0, >= 1.2.0)
+ thor (>= 1.2.0)
+ yard-sorbet
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
thor (1.2.2)
@@ -414,6 +455,9 @@ GEM
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.4.2)
+ unparser (0.6.8)
+ diff-lcs (~> 1.3)
+ parser (>= 3.2.0)
webrick (1.8.1)
websocket (1.2.9)
websocket-driver (0.7.5)
@@ -426,6 +470,9 @@ GEM
yard (0.9.34)
yard-activesupport-concern (0.0.1)
yard (>= 0.8)
+ yard-sorbet (0.8.1)
+ sorbet-runtime (>= 0.5)
+ yard (>= 0.9)
zeitwerk (2.6.8)
PLATFORMS
@@ -473,7 +520,11 @@ DEPENDENCIES
rubocop-rails
rubocop-rspec
selenium-webdriver
+ sorbet
+ sorbet-runtime
+ spoom
stackprof
+ tapioca
yard
yard-activesupport-concern
diff --git a/app/models/good_job/base_record.rb b/app/models/good_job/base_record.rb
index 216002ac1..19a33da2b 100644
--- a/app/models/good_job/base_record.rb
+++ b/app/models/good_job/base_record.rb
@@ -1,10 +1,12 @@
# frozen_string_literal: true
module GoodJob
+ ACTIVE_RECORD_PARENT_CLASS = Object.const_get(GoodJob.active_record_parent_class)
+
# Base ActiveRecord class that all GoodJob models inherit from.
# Parent class can be configured with +GoodJob.active_record_parent_class+.
# @!parse
# class BaseRecord < ActiveRecord::Base; end
- class BaseRecord < Object.const_get(GoodJob.active_record_parent_class)
+ class BaseRecord < ACTIVE_RECORD_PARENT_CLASS
self.abstract_class = true
def self.migration_pending_warning!
diff --git a/bin/lint b/bin/lint
index 09e571ee7..11498e653 100755
--- a/bin/lint
+++ b/bin/lint
@@ -16,6 +16,10 @@ def system!(*args)
end
FileUtils.chdir GEM_ROOT do
+ puts "\n== Sorbet =="
+
+ system! "bundle exec srb tc"
+
puts "\n== Rubocop =="
flags = []
diff --git a/bin/tapioca b/bin/tapioca
new file mode 100755
index 000000000..a6ae7576e
--- /dev/null
+++ b/bin/tapioca
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+#
+# This file was generated by Bundler.
+#
+# The application 'tapioca' is installed as part of a gem, and
+# this file is here to facilitate running it.
+#
+
+ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
+
+bundle_binstub = File.expand_path("bundle", __dir__)
+
+if File.file?(bundle_binstub)
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
+ load(bundle_binstub)
+ else
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
+Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
+ end
+end
+
+require "rubygems"
+require "bundler/setup"
+
+load Gem.bin_path("tapioca", "tapioca")
diff --git a/lib/good_job/scheduler.rb b/lib/good_job/scheduler.rb
index 2b93a74d3..57d62bd99 100644
--- a/lib/good_job/scheduler.rb
+++ b/lib/good_job/scheduler.rb
@@ -334,7 +334,7 @@ def remaining_cache_count
# Custom sub-class of +Concurrent::ThreadPoolExecutor+ to add additional worker status.
# @private
- class ThreadPoolExecutor < Concurrent::ThreadPoolExecutor
+ class ThreadPoolExecutor < ::Concurrent::ThreadPoolExecutor
# Number of inactive threads available to execute tasks.
# https://github.com/ruby-concurrency/concurrent-ruby/issues/684#issuecomment-427594437
# @return [Integer]
@@ -353,7 +353,7 @@ def ready_worker_count
# Custom sub-class of +Concurrent::TimerSet+ for additional behavior.
# @private
- class TimerSet < Concurrent::TimerSet
+ class TimerSet < ::Concurrent::TimerSet
# Number of scheduled jobs in the queue
# @return [Integer]
def length
diff --git a/sorbet/config b/sorbet/config
new file mode 100644
index 000000000..de457cda6
--- /dev/null
+++ b/sorbet/config
@@ -0,0 +1,3 @@
+--dir
+.
+--ignore=vendor/
diff --git a/sorbet/rbi/annotations/actionmailer.rbi b/sorbet/rbi/annotations/actionmailer.rbi
new file mode 100644
index 000000000..e806f9909
--- /dev/null
+++ b/sorbet/rbi/annotations/actionmailer.rbi
@@ -0,0 +1,10 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActionMailer::Base
+ sig { params(headers: T.untyped, block: T.nilable(T.proc.void)).returns(Mail::Message) }
+ def mail(headers = nil, &block); end
+end
diff --git a/sorbet/rbi/annotations/actionpack.rbi b/sorbet/rbi/annotations/actionpack.rbi
new file mode 100644
index 000000000..c4f521258
--- /dev/null
+++ b/sorbet/rbi/annotations/actionpack.rbi
@@ -0,0 +1,428 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActionController::API
+ MODULES = T.let(T.unsafe(nil), T::Array[T.untyped])
+end
+
+module ActionController::Flash::ClassMethods
+ sig { params(types: Symbol).void }
+ def add_flash_types(*types); end
+end
+
+module ActionController::Helpers::ClassMethods
+ sig { returns(ActionView::Base) }
+ def helpers; end
+end
+
+class ActionController::Metal < AbstractController::Base
+ sig { returns(ActionController::Parameters) }
+ def params; end
+
+ sig { returns(ActionDispatch::Request) }
+ def request; end
+
+ sig { returns(ActionDispatch::Response) }
+ def response; end
+end
+
+module ActionController::MimeResponds
+ sig { params(mimes: T.nilable(Symbol), block: T.nilable(T.proc.params(arg0: ActionController::MimeResponds::Collector).void)).void }
+ def respond_to(*mimes, &block); end
+end
+
+class ActionController::Parameters
+ sig { params(other: T.any(String, ActionController::Parameters)).returns(T::Boolean) }
+ def ==(other); end
+
+ sig { params(key: T.any(String, Symbol), value: T.untyped).void }
+ def []=(key, value); end
+
+ sig { returns(T.nilable(T::Array[T.any(String, Symbol)])) }
+ def always_permitted_parameters; end
+
+ sig { params(obj: T.nilable(T::Array[T.any(String, Symbol)])).void }
+ def always_permitted_parameters=(obj); end
+
+ sig { returns(T.untyped) }
+ def deep_dup; end
+
+ sig { params(key: T.any(String, Symbol), block: T.untyped).returns(T.untyped) }
+ def delete(key, &block); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(T.untyped) }
+ def dig(*keys); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def each_pair(&block); end
+
+ # each is an alias of each_pair
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def each(&block); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ def except(*keys); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(T.untyped) }
+ def extract!(*keys); end
+
+ sig { params(key: T.any(String, Symbol), args: T.untyped).returns(T.untyped) }
+ def fetch(key, *args); end
+
+ sig { returns(String) }
+ def inspect; end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def merge!(other_hash); end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def merge(other_hash); end
+
+ sig { returns(T.untyped) }
+ def parameters; end
+
+ sig { returns(T.self_type) }
+ def permit!; end
+
+ # You can pass _a lot_ of stuff to permit, so filters is left untyped for now.
+ sig { params(filters: T.untyped).returns(ActionController::Parameters) }
+ def permit(*filters); end
+
+ sig { params(new_permitted: T.untyped).void }
+ def permitted=(new_permitted); end
+
+ sig { returns(T::Boolean) }
+ def permitted?; end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def reject!(&block); end
+
+ # delete_if is an alias of reject!
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def delete_if(&block); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def reject(&block); end
+
+ sig { params(key: T.any(String, Symbol)).returns(T.untyped) }
+ def [](key); end
+
+ sig { params(key: T.any(String, Symbol, T::Array[T.any(String, Symbol)])).returns(T.untyped) }
+ def require(key); end
+
+ # required is an alias of require
+ sig { params(key: T.any(String, Symbol, T::Array[T.any(String, Symbol)])).returns(T.untyped) }
+ def required(key); end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def reverse_merge!(other_hash); end
+
+ # with_defaults! is an alias of reverse_merge!
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def with_defaults!(other_hash); end
+
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def reverse_merge(other_hash); end
+
+ # with_defaults is an alias of reverse_merge
+ sig { params(other_hash: T.untyped).returns(ActionController::Parameters) }
+ def with_defaults(other_hash); end
+
+ sig { params(block: T.untyped).returns(T.nilable(ActionController::Parameters)) }
+ def select!(&block); end
+
+ # keep_if is an alias of select!
+ sig { params(block: T.untyped).returns(T.nilable(ActionController::Parameters)) }
+ def keep_if(&block); end
+
+ sig { params(block: T.untyped).returns(ActionController::Parameters) }
+ def select(&block); end
+
+ sig { returns(T.any(Symbol, T::Boolean)) }
+ def self.action_on_unpermitted_parameters; end
+
+ sig { params(obj: T.any(Symbol, T::Boolean)).void }
+ def self.action_on_unpermitted_parameters=(obj); end
+
+ sig { returns(T::Array[T.any(String, Symbol)]) }
+ def self.always_permitted_parameters; end
+
+ sig { params(obj: T::Array[T.any(String, Symbol)]).void }
+ def self.always_permitted_parameters=(obj); end
+
+ sig { returns(T::Boolean) }
+ def self.permit_all_parameters; end
+
+ sig { params(obj: T::Boolean).void }
+ def self.permit_all_parameters=(obj); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ def slice!(*keys); end
+
+ sig { params(keys: T.any(String, Symbol)).returns(ActionController::Parameters) }
+ def slice(*keys); end
+
+ sig { params(block: T.nilable(Proc)).returns(ActiveSupport::HashWithIndifferentAccess) }
+ def to_h(&block); end
+
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
+ def to_hash; end
+
+ # to_param is an alias of to_query
+ sig { params(args: String).returns(T.nilable(String)) }
+ def to_param(*args); end
+
+ sig { params(args: String).returns(T.nilable(String)) }
+ def to_query(*args); end
+
+ sig { returns(ActiveSupport::HashWithIndifferentAccess) }
+ def to_unsafe_h; end
+
+ # to_unsafe_hash is an alias of to_unsafe_h
+ sig { returns(ActiveSupport::HashWithIndifferentAccess) }
+ def to_unsafe_hash; end
+
+ sig { params(block: T.untyped).returns(ActionController::Parameters) }
+ def transform_keys!(&block); end
+
+ sig { params(block: T.untyped).returns(ActionController::Parameters) }
+ def transform_keys(&block); end
+
+ sig { returns(ActionController::Parameters) }
+ def transform_values!; end
+
+ sig { returns(ActionController::Parameters) }
+ def transform_values; end
+
+ sig { params(keys: T.any(String, Symbol)).returns(T.untyped) }
+ def values_at(*keys); end
+end
+
+module ActionController::RequestForgeryProtection
+ sig { returns(T::Boolean) }
+ def protect_against_forgery?; end
+
+ sig { params(form_options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def form_authenticity_token(form_options: {}); end
+end
+
+module ActionController::RequestForgeryProtection::ClassMethods
+ sig { params(options: T::Hash[T.untyped, T.untyped]).void }
+ def skip_forgery_protection(options = T.unsafe(nil)); end
+end
+
+module ActionController::StrongParameters
+ sig { returns(ActionController::Parameters) }
+ def params; end
+end
+
+module ActionDispatch::Http::Parameters
+ sig { returns(ActionController::Parameters) }
+ def parameters; end
+
+ # params is an alias of parameters
+ sig { returns(ActionController::Parameters) }
+ def params; end
+end
+
+module ActionDispatch::Integration::Runner
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { params(host: String).returns(String) }
+ def host!(host); end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { params(flag: T::Boolean).returns(T::Boolean) }
+ def https!(flag = true); end
+end
+
+class ActionDispatch::IntegrationTest
+ # The following methods are accessible on `IntegrationTest`
+ # through the following delegation chain:
+ # - `IntegrationTest` includes `IntegrationTest::Behavior`
+ # - `IntegrationTest::Behavior` includes `Integration::Runner`
+ # - `Integration::Runner#method_missing` delegates to `Integration::Session`
+ #
+ # Then `Integration::Session` either implements the methods
+ # directly or further delegates to `TestProcess` (included) or
+ # `TestResponse` / `Request` (via `delegate`).
+ #
+ # Cf. https://github.com/Shopify/rbi-central/pull/138 for more context.
+ # @method_missing: delegated to ActionDispatch::TestProcess
+ sig { returns(ActionDispatch::Flash::FlashHash) }
+ def flash; end
+
+ # @method_missing: delegated to ActionDispatch::TestProcess
+ sig { returns(ActionDispatch::Request::Session) }
+ def session; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(Integer)) }
+ def status; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(String)) }
+ def status_message; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(ActionDispatch::Response::Header) }
+ def headers; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(String)) }
+ def body; end
+
+ # @method_missing: delegated to ActionDispatch::TestResponse
+ sig { returns(T.nilable(T::Boolean)) }
+ def redirect?; end
+
+ # @method_missing: delegated to ActionDispatch::Request
+ sig { returns(T.nilable(String)) }
+ def path; end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(String) }
+ def host; end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { params(host: String).returns(String) }
+ attr_writer :host
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(T.nilable(String)) }
+ attr_accessor :remote_addr
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(T.nilable(String)) }
+ attr_accessor :accept
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(Rack::Test::CookieJar) }
+ def cookies; end
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(T.nilable(ActionController::Base)) }
+ attr_reader :controller
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(ActionDispatch::TestRequest) }
+ attr_reader :request
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(ActionDispatch::TestResponse) }
+ attr_reader :response
+
+ # @method_missing: delegated to ActionDispatch::Integration::Session
+ sig { returns(Integer) }
+ attr_accessor :request_count
+end
+
+class ActionDispatch::Request
+ # Provides access to the request's HTTP headers, for example:
+ #
+ # ```ruby
+ # request.headers["Content-Type"] # => "text/plain"
+ # ```
+ sig { returns(ActionDispatch::Http::Headers) }
+ def headers; end
+
+ # Returns a `String` with the last requested path including their params.
+ #
+ # ```ruby
+ # # get '/foo'
+ # request.original_fullpath # => '/foo'
+ #
+ # # get '/foo?bar'
+ # request.original_fullpath # => '/foo?bar'
+ # ```
+ sig { returns(String) }
+ def original_fullpath; end
+
+ # Returns the `String` full path including params of the last URL requested.
+ #
+ # ```ruby
+ # # get "/articles"
+ # request.fullpath # => "/articles"
+ #
+ # # get "/articles?page=2"
+ # request.fullpath # => "/articles?page=2"
+ # ```
+ sig { returns(String) }
+ def fullpath; end
+
+ # Returns the original request URL as a `String`.
+ #
+ # ```ruby
+ # # get "/articles?page=2"
+ # request.original_url # => "http://www.example.com/articles?page=2"
+ # ```
+ sig { returns(String) }
+ def original_url; end
+
+ # The `String` MIME type of the request.
+ #
+ # ```
+ # # get "/articles"
+ # request.media_type # => "application/x-www-form-urlencoded"
+ # ```
+ sig { returns(String) }
+ def media_type; end
+
+ # Returns the content length of the request as an integer.
+ sig { returns(Integer) }
+ def content_length; end
+
+ # Returns the IP address of client as a `String`.
+ sig { returns(String) }
+ def ip; end
+
+ # Returns the IP address of client as a `String`,
+ # usually set by the RemoteIp middleware.
+ sig { returns(String) }
+ def remote_ip; end
+
+ # Returns the unique request id, which is based on either the X-Request-Id header that can
+ # be generated by a firewall, load balancer, or web server or by the RequestId middleware
+ # (which sets the action_dispatch.request_id environment variable).
+ #
+ # This unique ID is useful for tracing a request from end-to-end as part of logging or debugging.
+ # This relies on the Rack variable set by the ActionDispatch::RequestId middleware.
+ sig { returns(T.nilable(String)) }
+ def request_id; end
+
+ # Returns true if the request has a header matching the given key parameter.
+ #
+ # ```ruby
+ # request.key? :ip_spoofing_check # => true
+ # ```
+ sig { params(key: Symbol).returns(T::Boolean) }
+ def key?(key); end
+
+ # True if the request came from localhost, 127.0.0.1, or ::1.
+ sig { returns(T::Boolean) }
+ def local?; end
+end
+
+module ActionDispatch::Routing::Mapper::Resources
+ sig { params(name: T.untyped).returns(T.untyped) }
+ def action_path(name); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def collection(&block); end
+
+ sig { params(block: T.untyped).returns(T.untyped) }
+ def member(&block); end
+
+ sig { returns(T.untyped) }
+ def shallow; end
+
+ sig { returns(T::Boolean) }
+ def shallow?; end
+end
+
+class ActionDispatch::Routing::RouteSet
+ sig { params(block: T.proc.bind(ActionDispatch::Routing::Mapper).void).void }
+ def draw(&block); end
+end
diff --git a/sorbet/rbi/annotations/actionview.rbi b/sorbet/rbi/annotations/actionview.rbi
new file mode 100644
index 000000000..eb3b6b9ca
--- /dev/null
+++ b/sorbet/rbi/annotations/actionview.rbi
@@ -0,0 +1,77 @@
+# typed: strong
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module ActionView
+ TemplateError = T.type_alias {
+ Template::Error
+}
+
+ class MissingTemplate < ActionView::ActionViewError
+ sig { returns(String) }
+ def path; end
+ end
+end
+
+class ActionView::Helpers::FormBuilder
+ sig { returns(T.untyped) }
+ def object; end
+end
+
+module ActionView::Helpers::NumberHelper
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_currency(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_human(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_human_size(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_percentage(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_to_phone(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_with_delimiter(number, options = T.unsafe(nil)); end
+
+ sig { params(number: T.untyped, options: T::Hash[T.untyped, T.untyped]).returns(T.nilable(String)) }
+ def number_with_precision(number, options = T.unsafe(nil)); end
+end
+
+module ActionView::Helpers::SanitizeHelper
+ mixes_in_class_methods ActionView::Helpers::SanitizeHelper::ClassMethods
+end
+
+module ActionView::Helpers::UrlHelper
+ extend ActiveSupport::Concern
+ include ActionView::Helpers::TagHelper
+ mixes_in_class_methods ActionView::Helpers::UrlHelper::ClassMethods
+
+ sig { params(name: T.nilable(String), options: T.untyped, html_options: T.untyped, block: T.untyped).returns(ActiveSupport::SafeBuffer) }
+ def link_to(name = nil, options = nil, html_options = nil, &block); end
+
+ sig { params(condition: T.untyped, name: String, options: T.untyped, html_options: T.untyped, block: T.untyped).returns(T.untyped) }
+ def link_to_if(condition, name, options = {}, html_options = {}, &block); end
+end
+
+module ActionView::Layouts
+ mixes_in_class_methods ActionView::Layouts::ClassMethods
+end
+
+module ActionView::Rendering
+ mixes_in_class_methods ActionView::Rendering::ClassMethods
+end
+
+module ActionView::ViewPaths
+ mixes_in_class_methods ActionView::ViewPaths::ClassMethods
+end
+
+module ActionView::ViewPaths::ClassMethods
+ sig { params(value: T.any(String, T::Array[String])).void }
+ def append_view_path(value); end
+end
diff --git a/sorbet/rbi/annotations/activemodel.rbi b/sorbet/rbi/annotations/activemodel.rbi
new file mode 100644
index 000000000..d90bcfe90
--- /dev/null
+++ b/sorbet/rbi/annotations/activemodel.rbi
@@ -0,0 +1,91 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveModel::Errors
+ Elem = type_member {
+ { fixed: ActiveModel::Error }
+}
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
+ def [](attribute); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(ActiveModel::Error) }
+ def add(attribute, type = :invalid, **options); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T::Boolean) }
+ def added?(attribute, type = :invalid, options = {}); end
+
+ sig { params(options: T.untyped).returns(T::Hash[T.untyped, T.untyped]) }
+ def as_json(options = nil); end
+
+ sig { returns(T::Array[Symbol]) }
+ def attribute_names; end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T.nilable(T::Array[String])) }
+ def delete(attribute, type = nil, **options); end
+
+ sig { returns(T::Hash[Symbol, T::Array[T::Hash[Symbol, T.untyped]]]) }
+ def details; end
+
+ sig { returns(T::Array[Elem]) }
+ def errors; end
+
+ sig { params(attribute: T.any(Symbol, String), message: String).returns(String) }
+ def full_message(attribute, message); end
+
+ sig { returns(T::Array[String]) }
+ def full_messages; end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
+ def full_messages_for(attribute); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(String) }
+ def generate_message(attribute, type = :invalid, options = {}); end
+
+ sig { returns(T::Hash[Symbol, T::Array[ActiveModel::Error]]) }
+ def group_by_attribute; end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
+ def has_key?(attribute); end
+
+ sig { params(error: ActiveModel::Error, override_options: T.untyped).returns(T::Array[ActiveModel::Error]) }
+ def import(error, override_options = {}); end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
+ def include?(attribute); end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Boolean) }
+ def key?(attribute); end
+
+ sig { params(other: T.untyped).returns(T::Array[ActiveModel::Error]) }
+ def merge!(other); end
+
+ sig { returns(T::Hash[Symbol, T::Array[String]]) }
+ def messages; end
+
+ sig { params(attribute: T.any(Symbol, String)).returns(T::Array[String]) }
+ def messages_for(attribute); end
+
+ sig { returns(T::Array[Elem]) }
+ def objects; end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped).returns(T::Boolean) }
+ def of_kind?(attribute, type = :invalid); end
+
+ sig { returns(T::Array[String]) }
+ def to_a; end
+
+ sig { params(full_messages: T.untyped).returns(T::Hash[Symbol, T::Array[String]]) }
+ def to_hash(full_messages = false); end
+
+ sig { params(attribute: T.any(Symbol, String), type: T.untyped, options: T.untyped).returns(T::Array[ActiveModel::Error]) }
+ def where(attribute, type = nil, **options); end
+end
+
+module ActiveModel::Validations
+ sig { returns(ActiveModel::Errors) }
+ def errors; end
+end
diff --git a/sorbet/rbi/annotations/activerecord.rbi b/sorbet/rbi/annotations/activerecord.rbi
new file mode 100644
index 000000000..82e9f9ccc
--- /dev/null
+++ b/sorbet/rbi/annotations/activerecord.rbi
@@ -0,0 +1,77 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveRecord::Schema
+ sig { params(info: T::Hash[T.untyped, T.untyped], blk: T.proc.bind(ActiveRecord::Schema).void).void }
+ def self.define(info = nil, &blk); end
+end
+
+class ActiveRecord::Migration
+ # @shim: Methods on migration are delegated to `SchemaStatements` using `method_missing`
+ include ActiveRecord::ConnectionAdapters::SchemaStatements
+
+ # @shim: Methods on migration are delegated to `DatabaseaStatements` using `method_missing`
+ include ActiveRecord::ConnectionAdapters::DatabaseStatements
+end
+
+class ActiveRecord::Base
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_initialize(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_find(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_touch(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_validation(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_validation(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_save(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_save(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_save(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_create(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_create(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_create(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_update(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_update(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_update(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.before_destroy(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.around_destroy(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_destroy(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_commit(*args, **options, &block); end
+
+ sig { params(args: T.untyped, options: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).params(record: T.attached_class).void)).void }
+ def self.after_rollback(*args, **options, &block); end
+end
diff --git a/sorbet/rbi/annotations/activesupport.rbi b/sorbet/rbi/annotations/activesupport.rbi
new file mode 100644
index 000000000..56db82991
--- /dev/null
+++ b/sorbet/rbi/annotations/activesupport.rbi
@@ -0,0 +1,136 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module ActiveSupport::Testing::Declarative
+ sig { params(name: String, block: T.proc.bind(T.untyped).void).void }
+ def test(name, &block); end
+end
+
+class ActiveSupport::EnvironmentInquirer
+ sig { returns(T::Boolean) }
+ def development?; end
+
+ sig { returns(T::Boolean) }
+ def production?; end
+
+ sig { returns(T::Boolean) }
+ def test?; end
+
+ # @method_missing: delegated to String through ActiveSupport::StringInquirer
+ sig { returns(T::Boolean) }
+ def staging?; end
+end
+
+module ActiveSupport::Testing::SetupAndTeardown::ClassMethods
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
+ def setup(*args, &block); end
+
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
+ def teardown(*args, &block); end
+end
+
+class ActiveSupport::TestCase
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
+ def self.setup(*args, &block); end
+
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
+ def self.teardown(*args, &block); end
+
+ sig { params(name: String, block: T.proc.bind(T.attached_class).void).void }
+ def self.test(name, &block); end
+end
+
+class ActiveSupport::TimeWithZone
+ # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
+ include ::DateAndTime::Zones
+
+ # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
+ include ::DateAndTime::Calculations
+end
+
+class Object
+ sig { returns(T::Boolean) }
+ def blank?; end
+
+ sig { returns(T::Boolean) }
+ def present?; end
+end
+
+class Hash
+ sig { returns(T::Boolean) }
+ def extractable_options?; end
+end
+
+class Array
+ sig { params(position: Integer).returns(T.self_type) }
+ def from(position); end
+
+ sig { params(position: Integer).returns(T.self_type) }
+ def to(position); end
+
+ sig { params(elements: T.untyped).returns(T::Array[T.untyped]) }
+ def including(*elements); end
+
+ sig { params(elements: T.untyped).returns(T.self_type) }
+ def excluding(*elements); end
+
+ sig { params(elements: T.untyped).returns(T.self_type) }
+ def without(*elements); end
+
+ sig { returns(T.nilable(Elem)) }
+ def second; end
+
+ sig { returns(T.nilable(Elem)) }
+ def third; end
+
+ sig { returns(T.nilable(Elem)) }
+ def fourth; end
+
+ sig { returns(T.nilable(Elem)) }
+ def fifth; end
+
+ sig { returns(T.nilable(Elem)) }
+ def forty_two; end
+
+ sig { returns(T.nilable(Elem)) }
+ def third_to_last; end
+
+ sig { returns(T.nilable(Elem)) }
+ def second_to_last; end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def to_sentence(options = {}); end
+
+ sig { params(format: Symbol).returns(String) }
+ def to_fs(format = :default); end
+
+ sig { params(format: Symbol).returns(String) }
+ def to_formatted_s(format = :default); end
+
+ sig { returns(String) }
+ def to_xml; end
+
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
+ def extract_options!; end
+
+ sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
+ def in_groups(number, fill_with = T.unsafe(nil), &block); end
+
+ sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
+ def in_groups_of(number, fill_with = T.unsafe(nil), &block); end
+
+ sig { params(value: T.untyped, block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T::Array[T::Array[Elem]]) }
+ def split(value = nil, &block); end
+
+ sig { params(object: T.untyped).returns(T::Array[T.untyped]) }
+ def self.wrap(object); end
+
+ sig { params(block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T.any(T::Array[Elem], T::Enumerator[Elem])) }
+ def extract!(&block); end
+
+ sig { returns(ActiveSupport::ArrayInquirer) }
+ def inquiry; end
+end
diff --git a/sorbet/rbi/annotations/faraday.rbi b/sorbet/rbi/annotations/faraday.rbi
new file mode 100644
index 000000000..59240715c
--- /dev/null
+++ b/sorbet/rbi/annotations/faraday.rbi
@@ -0,0 +1,17 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module Faraday
+ class << self
+ sig { params(url: T.untyped, options: T::Hash[Symbol, T.untyped], block: T.nilable(T.proc.params(connection: Faraday::Connection).void)).returns(Faraday::Connection) }
+ def new(url = nil, options = {}, &block); end
+ end
+end
+
+class Faraday::Response
+ sig { returns(T::Boolean) }
+ def success?; end
+end
diff --git a/sorbet/rbi/annotations/globalid.rbi b/sorbet/rbi/annotations/globalid.rbi
new file mode 100644
index 000000000..e70d46b02
--- /dev/null
+++ b/sorbet/rbi/annotations/globalid.rbi
@@ -0,0 +1,30 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+class ActiveRecord::Base
+ # @shim: this is included at runtime https://github.com/rails/globalid/blob/v1.0.0/lib/global_id/railtie.rb#L38
+ include GlobalID::Identification
+end
+
+module GlobalID::Identification
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(GlobalID) }
+ def to_gid(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def to_gid_param(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(GlobalID) }
+ def to_global_id(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(SignedGlobalID) }
+ def to_sgid(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
+ def to_sgid_param(options = {}); end
+
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(SignedGlobalID) }
+ def to_signed_global_id(options = {}); end
+end
diff --git a/sorbet/rbi/annotations/railties.rbi b/sorbet/rbi/annotations/railties.rbi
new file mode 100644
index 000000000..f71f1350f
--- /dev/null
+++ b/sorbet/rbi/annotations/railties.rbi
@@ -0,0 +1,58 @@
+# typed: strong
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module Rails
+ class << self
+ sig { returns(Rails::Application) }
+ def application; end
+
+ sig { returns(ActiveSupport::BacktraceCleaner) }
+ def backtrace_cleaner; end
+
+ sig { returns(ActiveSupport::Cache::Store) }
+ def cache; end
+
+ sig { returns(ActiveSupport::EnvironmentInquirer) }
+ def env; end
+
+ sig { returns(ActiveSupport::Logger) }
+ def logger; end
+
+ sig { returns(Pathname) }
+ def root; end
+
+ sig { returns(String) }
+ def version; end
+ end
+end
+
+class Rails::Application < ::Rails::Engine
+ class << self
+ sig { params(block: T.proc.bind(Rails::Application).void).void }
+ def configure(&block); end
+ end
+
+ sig { params(block: T.proc.bind(Rails::Application).void).void }
+ def configure(&block); end
+
+ sig { returns(T.untyped) }
+ def config; end
+end
+
+class Rails::Engine < ::Rails::Railtie
+ sig { params(block: T.untyped).returns(ActionDispatch::Routing::RouteSet) }
+ def routes(&block); end
+end
+
+class Rails::Railtie
+ sig { params(block: T.proc.bind(Rails::Railtie).void).void }
+ def configure(&block); end
+end
+
+class Rails::Railtie::Configuration
+ sig { params(blk: T.proc.bind(ActiveSupport::Reloader).void).void }
+ def to_prepare(&blk); end
+end
diff --git a/sorbet/rbi/annotations/rainbow.rbi b/sorbet/rbi/annotations/rainbow.rbi
new file mode 100644
index 000000000..60ba90a9b
--- /dev/null
+++ b/sorbet/rbi/annotations/rainbow.rbi
@@ -0,0 +1,269 @@
+# typed: strict
+
+# DO NOT EDIT MANUALLY
+# This file was pulled from a central RBI files repository.
+# Please run `bin/tapioca annotations` to update it.
+
+module Rainbow
+ # @shim: https://github.com/sickill/rainbow/blob/master/lib/rainbow.rb#L10-L12
+ sig { returns(T::Boolean) }
+ attr_accessor :enabled
+
+ class Color
+ sig { returns(Symbol) }
+ attr_reader :ground
+
+ sig { params(ground: Symbol, values: T.any([Integer], [Integer, Integer, Integer])).returns(Color) }
+ def self.build(ground, values); end
+
+ sig { params(hex: String).returns([Integer, Integer, Integer]) }
+ def self.parse_hex_color(hex); end
+
+ class Indexed < Rainbow::Color
+ sig { returns(Integer) }
+ attr_reader :num
+
+ sig { params(ground: Symbol, num: Integer).void }
+ def initialize(ground, num); end
+
+ sig { returns(T::Array[Integer]) }
+ def codes; end
+ end
+
+ class Named < Rainbow::Color::Indexed
+ NAMES = T.let(nil, T::Hash[Symbol, Integer])
+
+ sig { params(ground: Symbol, name: Symbol).void }
+ def initialize(ground, name); end
+
+ sig { returns(T::Array[Symbol]) }
+ def self.color_names; end
+
+ sig { returns(String) }
+ def self.valid_names; end
+ end
+
+ class RGB < Rainbow::Color::Indexed
+ sig { returns(Integer) }
+ attr_reader :r, :g, :b
+
+ sig { params(ground: Symbol, values: Integer).void }
+ def initialize(ground, *values); end
+
+ sig { returns(T::Array[Integer]) }
+ def codes; end
+
+ sig { params(value: Numeric).returns(Integer) }
+ def self.to_ansi_domain(value); end
+ end
+
+ class X11Named < Rainbow::Color::RGB
+ include Rainbow::X11ColorNames
+
+ sig { returns(T::Array[Symbol]) }
+ def self.color_names; end
+
+ sig { returns(String) }
+ def self.valid_names; end
+
+ sig { params(ground: Symbol, name: Symbol).void }
+ def initialize(ground, name); end
+ end
+ end
+
+ sig { returns(Wrapper) }
+ def self.global; end
+
+ sig { returns(T::Boolean) }
+ def self.enabled; end
+
+ sig { params(value: T::Boolean).returns(T::Boolean) }
+ def self.enabled=(value); end
+
+ sig { params(string: String).returns(String) }
+ def self.uncolor(string); end
+
+ class NullPresenter < String
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def color(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def foreground(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def fg(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def background(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(NullPresenter) }
+ def bg(*values); end
+
+ sig { returns(NullPresenter) }
+ def reset; end
+
+ sig { returns(NullPresenter) }
+ def bright; end
+
+ sig { returns(NullPresenter) }
+ def faint; end
+
+ sig { returns(NullPresenter) }
+ def italic; end
+
+ sig { returns(NullPresenter) }
+ def underline; end
+
+ sig { returns(NullPresenter) }
+ def blink; end
+
+ sig { returns(NullPresenter) }
+ def inverse; end
+
+ sig { returns(NullPresenter) }
+ def hide; end
+
+ sig { returns(NullPresenter) }
+ def cross_out; end
+
+ sig { returns(NullPresenter) }
+ def black; end
+
+ sig { returns(NullPresenter) }
+ def red; end
+
+ sig { returns(NullPresenter) }
+ def green; end
+
+ sig { returns(NullPresenter) }
+ def yellow; end
+
+ sig { returns(NullPresenter) }
+ def blue; end
+
+ sig { returns(NullPresenter) }
+ def magenta; end
+
+ sig { returns(NullPresenter) }
+ def cyan; end
+
+ sig { returns(NullPresenter) }
+ def white; end
+
+ sig { returns(NullPresenter) }
+ def bold; end
+
+ sig { returns(NullPresenter) }
+ def dark; end
+
+ sig { returns(NullPresenter) }
+ def strike; end
+ end
+
+ class Presenter < String
+ TERM_EFFECTS = T.let(nil, T::Hash[Symbol, Integer])
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def color(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def foreground(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def fg(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def background(*values); end
+
+ sig { params(values: T.any([Integer], [Integer, Integer, Integer])).returns(Presenter) }
+ def bg(*values); end
+
+ sig { returns(Presenter) }
+ def reset; end
+
+ sig { returns(Presenter) }
+ def bright; end
+
+ sig { returns(Presenter) }
+ def faint; end
+
+ sig { returns(Presenter) }
+ def italic; end
+
+ sig { returns(Presenter) }
+ def underline; end
+
+ sig { returns(Presenter) }
+ def blink; end
+
+ sig { returns(Presenter) }
+ def inverse; end
+
+ sig { returns(Presenter) }
+ def hide; end
+
+ sig { returns(Presenter) }
+ def cross_out; end
+
+ sig { returns(Presenter) }
+ def black; end
+
+ sig { returns(Presenter) }
+ def red; end
+
+ sig { returns(Presenter) }
+ def green; end
+
+ sig { returns(Presenter) }
+ def yellow; end
+
+ sig { returns(Presenter) }
+ def blue; end
+
+ sig { returns(Presenter) }
+ def magenta; end
+
+ sig { returns(Presenter) }
+ def cyan; end
+
+ sig { returns(Presenter) }
+ def white; end
+
+ sig { returns(Presenter) }
+ def bold; end
+
+ sig { returns(Presenter) }
+ def dark; end
+
+ sig { returns(Presenter) }
+ def strike; end
+ end
+
+ class StringUtils
+ sig { params(string: String, codes: T::Array[Integer]).returns(String) }
+ def self.wrap_with_sgr(string, codes); end
+
+ sig { params(string: String).returns(String) }
+ def self.uncolor(string); end
+ end
+
+ VERSION = T.let(nil, String)
+
+ class Wrapper
+ sig { returns(T::Boolean) }
+ attr_accessor :enabled
+
+ sig { params(enabled: T::Boolean).void }
+ def initialize(enabled = true); end
+
+ sig { params(string: String).returns(T.any(Rainbow::Presenter, Rainbow::NullPresenter)) }
+ def wrap(string); end
+ end
+
+ module X11ColorNames
+ NAMES = T.let(nil, T::Hash[Symbol, [Integer, Integer, Integer]])
+ end
+end
+
+sig { params(string: String).returns(Rainbow::Presenter) }
+def Rainbow(string); end
diff --git a/sorbet/rbi/dsl/abstract_controller/caching.rbi b/sorbet/rbi/dsl/abstract_controller/caching.rbi
new file mode 100644
index 000000000..3c397620d
--- /dev/null
+++ b/sorbet/rbi/dsl/abstract_controller/caching.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Caching`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Caching`.
+
+module AbstractController::Caching
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/abstract_controller/caching/fragments.rbi b/sorbet/rbi/dsl/abstract_controller/caching/fragments.rbi
new file mode 100644
index 000000000..ea36ce31e
--- /dev/null
+++ b/sorbet/rbi/dsl/abstract_controller/caching/fragments.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Caching::Fragments`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Caching::Fragments`.
+
+module AbstractController::Caching::Fragments
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/abstract_controller/callbacks.rbi b/sorbet/rbi/dsl/abstract_controller/callbacks.rbi
new file mode 100644
index 000000000..e5ef916a5
--- /dev/null
+++ b/sorbet/rbi/dsl/abstract_controller/callbacks.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Callbacks`.
+
+module AbstractController::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/abstract_controller/helpers.rbi b/sorbet/rbi/dsl/abstract_controller/helpers.rbi
new file mode 100644
index 000000000..e4c003aaa
--- /dev/null
+++ b/sorbet/rbi/dsl/abstract_controller/helpers.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Helpers`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Helpers`.
+
+module AbstractController::Helpers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/abstract_controller/rendering.rbi b/sorbet/rbi/dsl/abstract_controller/rendering.rbi
new file mode 100644
index 000000000..b6458761d
--- /dev/null
+++ b/sorbet/rbi/dsl/abstract_controller/rendering.rbi
@@ -0,0 +1,9 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::Rendering`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::Rendering`.
+
+module AbstractController::Rendering
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/abstract_controller/url_for.rbi b/sorbet/rbi/dsl/abstract_controller/url_for.rbi
new file mode 100644
index 000000000..5cda13ffa
--- /dev/null
+++ b/sorbet/rbi/dsl/abstract_controller/url_for.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `AbstractController::UrlFor`.
+# Please instead update this file by running `bin/tapioca dsl AbstractController::UrlFor`.
+
+module AbstractController::UrlFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/caching.rbi b/sorbet/rbi/dsl/action_controller/caching.rbi
new file mode 100644
index 000000000..3e3d1ab9b
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/caching.rbi
@@ -0,0 +1,29 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Caching`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Caching`.
+
+module ActionController::Caching
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/conditional_get.rbi b/sorbet/rbi/dsl/action_controller/conditional_get.rbi
new file mode 100644
index 000000000..be922d2b3
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/conditional_get.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::ConditionalGet`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::ConditionalGet`.
+
+module ActionController::ConditionalGet
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/content_security_policy.rbi b/sorbet/rbi/dsl/action_controller/content_security_policy.rbi
new file mode 100644
index 000000000..a32524d40
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/content_security_policy.rbi
@@ -0,0 +1,31 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::ContentSecurityPolicy`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::ContentSecurityPolicy`.
+
+module ActionController::ContentSecurityPolicy
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/data_streaming.rbi b/sorbet/rbi/dsl/action_controller/data_streaming.rbi
new file mode 100644
index 000000000..c233ddf5f
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/data_streaming.rbi
@@ -0,0 +1,9 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::DataStreaming`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::DataStreaming`.
+
+module ActionController::DataStreaming
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/action_controller/etag_with_flash.rbi b/sorbet/rbi/dsl/action_controller/etag_with_flash.rbi
new file mode 100644
index 000000000..a47c99480
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/etag_with_flash.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::EtagWithFlash`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::EtagWithFlash`.
+
+module ActionController::EtagWithFlash
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/etag_with_template_digest.rbi b/sorbet/rbi/dsl/action_controller/etag_with_template_digest.rbi
new file mode 100644
index 000000000..9b275ba70
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/etag_with_template_digest.rbi
@@ -0,0 +1,30 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::EtagWithTemplateDigest`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::EtagWithTemplateDigest`.
+
+module ActionController::EtagWithTemplateDigest
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/flash.rbi b/sorbet/rbi/dsl/action_controller/flash.rbi
new file mode 100644
index 000000000..7793a6252
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/flash.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Flash`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Flash`.
+
+module ActionController::Flash
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _flash_types; end
+ def _flash_types=(value); end
+ def _flash_types?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/action_controller/form_builder.rbi b/sorbet/rbi/dsl/action_controller/form_builder.rbi
new file mode 100644
index 000000000..dc249ce22
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/form_builder.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::FormBuilder`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::FormBuilder`.
+
+module ActionController::FormBuilder
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _default_form_builder; end
+ def _default_form_builder=(value); end
+ def _default_form_builder?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/action_controller/helpers.rbi b/sorbet/rbi/dsl/action_controller/helpers.rbi
new file mode 100644
index 000000000..b33bbd494
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/helpers.rbi
@@ -0,0 +1,36 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Helpers`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Helpers`.
+
+module ActionController::Helpers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/params_wrapper.rbi b/sorbet/rbi/dsl/action_controller/params_wrapper.rbi
new file mode 100644
index 000000000..d5f1e388a
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/params_wrapper.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::ParamsWrapper`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::ParamsWrapper`.
+
+module ActionController::ParamsWrapper
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/redirecting.rbi b/sorbet/rbi/dsl/action_controller/redirecting.rbi
new file mode 100644
index 000000000..8460401d2
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/redirecting.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Redirecting`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Redirecting`.
+
+module ActionController::Redirecting
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/renderers.rbi b/sorbet/rbi/dsl/action_controller/renderers.rbi
new file mode 100644
index 000000000..ec7617948
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/renderers.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Renderers`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Renderers`.
+
+module ActionController::Renderers
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/renderers/all.rbi b/sorbet/rbi/dsl/action_controller/renderers/all.rbi
new file mode 100644
index 000000000..80b72aa1f
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/renderers/all.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Renderers::All`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Renderers::All`.
+
+module ActionController::Renderers::All
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionController::Renderers::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/request_forgery_protection.rbi b/sorbet/rbi/dsl/action_controller/request_forgery_protection.rbi
new file mode 100644
index 000000000..70e272728
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/request_forgery_protection.rbi
@@ -0,0 +1,31 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::RequestForgeryProtection`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::RequestForgeryProtection`.
+
+module ActionController::RequestForgeryProtection
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/rescue.rbi b/sorbet/rbi/dsl/action_controller/rescue.rbi
new file mode 100644
index 000000000..c4f14684c
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/rescue.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::Rescue`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::Rescue`.
+
+module ActionController::Rescue
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/test_case/behavior.rbi b/sorbet/rbi/dsl/action_controller/test_case/behavior.rbi
new file mode 100644
index 000000000..375bb9957
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/test_case/behavior.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::TestCase::Behavior`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::TestCase::Behavior`.
+
+module ActionController::TestCase::Behavior
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _controller_class; end
+ def _controller_class=(value); end
+ def _controller_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _controller_class; end
+ def _controller_class=(value); end
+ def _controller_class?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_controller/url_for.rbi b/sorbet/rbi/dsl/action_controller/url_for.rbi
new file mode 100644
index 000000000..8a1567952
--- /dev/null
+++ b/sorbet/rbi/dsl/action_controller/url_for.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionController::UrlFor`.
+# Please instead update this file by running `bin/tapioca dsl ActionController::UrlFor`.
+
+module ActionController::UrlFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_dispatch/routing/url_for.rbi b/sorbet/rbi/dsl/action_dispatch/routing/url_for.rbi
new file mode 100644
index 000000000..96483c686
--- /dev/null
+++ b/sorbet/rbi/dsl/action_dispatch/routing/url_for.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionDispatch::Routing::UrlFor`.
+# Please instead update this file by running `bin/tapioca dsl ActionDispatch::Routing::UrlFor`.
+
+module ActionDispatch::Routing::UrlFor
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_mailer/delivery_methods.rbi b/sorbet/rbi/dsl/action_mailer/delivery_methods.rbi
new file mode 100644
index 000000000..0b1965137
--- /dev/null
+++ b/sorbet/rbi/dsl/action_mailer/delivery_methods.rbi
@@ -0,0 +1,53 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::DeliveryMethods`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::DeliveryMethods`.
+
+module ActionMailer::DeliveryMethods
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+
+ module GeneratedInstanceMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_mailer/mail_delivery_job.rbi b/sorbet/rbi/dsl/action_mailer/mail_delivery_job.rbi
new file mode 100644
index 000000000..48b9d856b
--- /dev/null
+++ b/sorbet/rbi/dsl/action_mailer/mail_delivery_job.rbi
@@ -0,0 +1,33 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::MailDeliveryJob`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::MailDeliveryJob`.
+
+class ActionMailer::MailDeliveryJob
+ class << self
+ sig do
+ params(
+ mailer: T.untyped,
+ mail_method: T.untyped,
+ delivery_method: T.untyped,
+ args: T.untyped,
+ kwargs: T.untyped,
+ params: T.untyped
+ ).returns(T.any(ActionMailer::MailDeliveryJob, FalseClass))
+ end
+ def perform_later(mailer, mail_method, delivery_method, args:, kwargs: T.unsafe(nil), params: T.unsafe(nil)); end
+
+ sig do
+ params(
+ mailer: T.untyped,
+ mail_method: T.untyped,
+ delivery_method: T.untyped,
+ args: T.untyped,
+ kwargs: T.untyped,
+ params: T.untyped
+ ).returns(T.untyped)
+ end
+ def perform_now(mailer, mail_method, delivery_method, args:, kwargs: T.unsafe(nil), params: T.unsafe(nil)); end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_mailer/rescuable.rbi b/sorbet/rbi/dsl/action_mailer/rescuable.rbi
new file mode 100644
index 000000000..25cb25ca1
--- /dev/null
+++ b/sorbet/rbi/dsl/action_mailer/rescuable.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionMailer::Rescuable`.
+# Please instead update this file by running `bin/tapioca dsl ActionMailer::Rescuable`.
+
+module ActionMailer::Rescuable
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/action_view/helpers.rbi b/sorbet/rbi/dsl/action_view/helpers.rbi
new file mode 100644
index 000000000..2b53bffb5
--- /dev/null
+++ b/sorbet/rbi/dsl/action_view/helpers.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers`.
+
+module ActionView::Helpers
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/action_view/helpers/form_helper.rbi b/sorbet/rbi/dsl/action_view/helpers/form_helper.rbi
new file mode 100644
index 000000000..53e7bf94d
--- /dev/null
+++ b/sorbet/rbi/dsl/action_view/helpers/form_helper.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers::FormHelper`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers::FormHelper`.
+
+module ActionView::Helpers::FormHelper
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/action_view/helpers/form_tag_helper.rbi b/sorbet/rbi/dsl/action_view/helpers/form_tag_helper.rbi
new file mode 100644
index 000000000..5ed609a33
--- /dev/null
+++ b/sorbet/rbi/dsl/action_view/helpers/form_tag_helper.rbi
@@ -0,0 +1,10 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers::FormTagHelper`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers::FormTagHelper`.
+
+module ActionView::Helpers::FormTagHelper
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/action_view/helpers/text_helper.rbi b/sorbet/rbi/dsl/action_view/helpers/text_helper.rbi
new file mode 100644
index 000000000..a1b29002a
--- /dev/null
+++ b/sorbet/rbi/dsl/action_view/helpers/text_helper.rbi
@@ -0,0 +1,9 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Helpers::TextHelper`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Helpers::TextHelper`.
+
+module ActionView::Helpers::TextHelper
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/action_view/layouts.rbi b/sorbet/rbi/dsl/action_view/layouts.rbi
new file mode 100644
index 000000000..fc9f9d044
--- /dev/null
+++ b/sorbet/rbi/dsl/action_view/layouts.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Layouts`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Layouts`.
+
+module ActionView::Layouts
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+ mixes_in_class_methods ::ActionView::Rendering::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _layout; end
+ def _layout=(value); end
+ def _layout?; end
+ def _layout_conditions; end
+ def _layout_conditions=(value); end
+ def _layout_conditions?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/action_view/rendering.rbi b/sorbet/rbi/dsl/action_view/rendering.rbi
new file mode 100644
index 000000000..96825dd54
--- /dev/null
+++ b/sorbet/rbi/dsl/action_view/rendering.rbi
@@ -0,0 +1,9 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActionView::Rendering`.
+# Please instead update this file by running `bin/tapioca dsl ActionView::Rendering`.
+
+module ActionView::Rendering
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+end
diff --git a/sorbet/rbi/dsl/active_job/callbacks.rbi b/sorbet/rbi/dsl/active_job/callbacks.rbi
new file mode 100644
index 000000000..fcf2b5255
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/callbacks.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Callbacks`.
+
+module ActiveJob::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_job/exceptions.rbi b/sorbet/rbi/dsl/active_job/exceptions.rbi
new file mode 100644
index 000000000..1b49871aa
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/exceptions.rbi
@@ -0,0 +1,18 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Exceptions`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Exceptions`.
+
+module ActiveJob::Exceptions
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def retry_jitter; end
+ def retry_jitter=(value); end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/active_job/execution.rbi b/sorbet/rbi/dsl/active_job/execution.rbi
new file mode 100644
index 000000000..807d7091d
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/execution.rbi
@@ -0,0 +1,24 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Execution`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Execution`.
+
+module ActiveJob::Execution
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_job/logging.rbi b/sorbet/rbi/dsl/active_job/logging.rbi
new file mode 100644
index 000000000..6a19fdd0b
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/logging.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::Logging`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::Logging`.
+
+module ActiveJob::Logging
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def log_arguments; end
+ def log_arguments=(value); end
+ def log_arguments?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/active_job/queue_adapter.rbi b/sorbet/rbi/dsl/active_job/queue_adapter.rbi
new file mode 100644
index 000000000..6d563d67f
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/queue_adapter.rbi
@@ -0,0 +1,20 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::QueueAdapter`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::QueueAdapter`.
+
+module ActiveJob::QueueAdapter
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _queue_adapter; end
+ def _queue_adapter=(value); end
+ def _queue_adapter_name; end
+ def _queue_adapter_name=(value); end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/active_job/queue_name.rbi b/sorbet/rbi/dsl/active_job/queue_name.rbi
new file mode 100644
index 000000000..b10fb8ee6
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/queue_name.rbi
@@ -0,0 +1,29 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::QueueName`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::QueueName`.
+
+module ActiveJob::QueueName
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def queue_name; end
+ def queue_name=(value); end
+ def queue_name?; end
+ def queue_name_delimiter; end
+ def queue_name_delimiter=(value); end
+ def queue_name_delimiter?; end
+ def queue_name_prefix; end
+ def queue_name_prefix=(value); end
+ def queue_name_prefix?; end
+ end
+
+ module GeneratedInstanceMethods
+ def queue_name_prefix; end
+ def queue_name_prefix=(value); end
+ def queue_name_prefix?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_job/queue_priority.rbi b/sorbet/rbi/dsl/active_job/queue_priority.rbi
new file mode 100644
index 000000000..a3e13cc40
--- /dev/null
+++ b/sorbet/rbi/dsl/active_job/queue_priority.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveJob::QueuePriority`.
+# Please instead update this file by running `bin/tapioca dsl ActiveJob::QueuePriority`.
+
+module ActiveJob::QueuePriority
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def priority; end
+ def priority=(value); end
+ def priority?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/active_model/attribute_methods.rbi b/sorbet/rbi/dsl/active_model/attribute_methods.rbi
new file mode 100644
index 000000000..093f939f7
--- /dev/null
+++ b/sorbet/rbi/dsl/active_model/attribute_methods.rbi
@@ -0,0 +1,27 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::AttributeMethods`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::AttributeMethods`.
+
+module ActiveModel::AttributeMethods
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers=(value); end
+ def attribute_method_matchers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_model/attributes.rbi b/sorbet/rbi/dsl/active_model/attributes.rbi
new file mode 100644
index 000000000..86ace17d1
--- /dev/null
+++ b/sorbet/rbi/dsl/active_model/attributes.rbi
@@ -0,0 +1,34 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Attributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Attributes`.
+
+module ActiveModel::Attributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _default_attributes; end
+ def _default_attributes=(value); end
+ def _default_attributes?; end
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers=(value); end
+ def attribute_method_matchers?; end
+ def attribute_types; end
+ def attribute_types=(value); end
+ def attribute_types?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_model/dirty.rbi b/sorbet/rbi/dsl/active_model/dirty.rbi
new file mode 100644
index 000000000..d8c8dcb1c
--- /dev/null
+++ b/sorbet/rbi/dsl/active_model/dirty.rbi
@@ -0,0 +1,28 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Dirty`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Dirty`.
+
+module ActiveModel::Dirty
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers=(value); end
+ def attribute_method_matchers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_model/serializers/json.rbi b/sorbet/rbi/dsl/active_model/serializers/json.rbi
new file mode 100644
index 000000000..bca80cf05
--- /dev/null
+++ b/sorbet/rbi/dsl/active_model/serializers/json.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Serializers::JSON`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Serializers::JSON`.
+
+module ActiveModel::Serializers::JSON
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def include_root_in_json; end
+ def include_root_in_json=(value); end
+ def include_root_in_json?; end
+ end
+
+ module GeneratedInstanceMethods
+ def include_root_in_json; end
+ def include_root_in_json?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_model/validations.rbi b/sorbet/rbi/dsl/active_model/validations.rbi
new file mode 100644
index 000000000..af7112c27
--- /dev/null
+++ b/sorbet/rbi/dsl/active_model/validations.rbi
@@ -0,0 +1,27 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Validations`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Validations`.
+
+module ActiveModel::Validations
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ def _validators; end
+ def _validators=(value); end
+ def _validators?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ def _validators; end
+ def _validators?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_model/validations/callbacks.rbi b/sorbet/rbi/dsl/active_model/validations/callbacks.rbi
new file mode 100644
index 000000000..4618b1ae6
--- /dev/null
+++ b/sorbet/rbi/dsl/active_model/validations/callbacks.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveModel::Validations::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveModel::Validations::Callbacks`.
+
+module ActiveModel::Validations::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/attribute_methods.rbi b/sorbet/rbi/dsl/active_record/attribute_methods.rbi
new file mode 100644
index 000000000..af6eba2ac
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/attribute_methods.rbi
@@ -0,0 +1,53 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods`.
+
+module ActiveRecord::AttributeMethods
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers=(value); end
+ def attribute_method_matchers?; end
+ def partial_inserts; end
+ def partial_inserts=(value); end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates=(value); end
+ def partial_updates?; end
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes=(value); end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes=(value); end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types=(value); end
+ def time_zone_aware_types?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers?; end
+ def partial_inserts; end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates?; end
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/attribute_methods/dirty.rbi b/sorbet/rbi/dsl/active_record/attribute_methods/dirty.rbi
new file mode 100644
index 000000000..4eaba8359
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/attribute_methods/dirty.rbi
@@ -0,0 +1,38 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods::Dirty`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods::Dirty`.
+
+module ActiveRecord::AttributeMethods::Dirty
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::AttributeMethods::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attribute_aliases; end
+ def attribute_aliases=(value); end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers=(value); end
+ def attribute_method_matchers?; end
+ def partial_inserts; end
+ def partial_inserts=(value); end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates=(value); end
+ def partial_updates?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attribute_aliases; end
+ def attribute_aliases?; end
+ def attribute_method_matchers; end
+ def attribute_method_matchers?; end
+ def partial_inserts; end
+ def partial_inserts?; end
+ def partial_updates; end
+ def partial_updates?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/attribute_methods/time_zone_conversion.rbi b/sorbet/rbi/dsl/active_record/attribute_methods/time_zone_conversion.rbi
new file mode 100644
index 000000000..912853771
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/attribute_methods/time_zone_conversion.rbi
@@ -0,0 +1,32 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::AttributeMethods::TimeZoneConversion`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::AttributeMethods::TimeZoneConversion`.
+
+module ActiveRecord::AttributeMethods::TimeZoneConversion
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes=(value); end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes=(value); end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types=(value); end
+ def time_zone_aware_types?; end
+ end
+
+ module GeneratedInstanceMethods
+ def skip_time_zone_conversion_for_attributes; end
+ def skip_time_zone_conversion_for_attributes?; end
+ def time_zone_aware_attributes; end
+ def time_zone_aware_attributes?; end
+ def time_zone_aware_types; end
+ def time_zone_aware_types?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/attributes.rbi b/sorbet/rbi/dsl/active_record/attributes.rbi
new file mode 100644
index 000000000..e81f17235
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/attributes.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Attributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Attributes`.
+
+module ActiveRecord::Attributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attributes_to_define_after_schema_loads; end
+ def attributes_to_define_after_schema_loads=(value); end
+ def attributes_to_define_after_schema_loads?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/active_record/callbacks.rbi b/sorbet/rbi/dsl/active_record/callbacks.rbi
new file mode 100644
index 000000000..2efcc9dc2
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/callbacks.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Callbacks`.
+
+module ActiveRecord::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/core.rbi b/sorbet/rbi/dsl/active_record/core.rbi
new file mode 100644
index 000000000..cd1ffaf2d
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/core.rbi
@@ -0,0 +1,55 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Core`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Core`.
+
+module ActiveRecord::Core
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def belongs_to_required_by_default; end
+ def belongs_to_required_by_default=(value); end
+ def belongs_to_required_by_default?; end
+ def default_connection_handler; end
+ def default_connection_handler=(value); end
+ def default_connection_handler?; end
+ def default_role; end
+ def default_role=(value); end
+ def default_role?; end
+ def default_shard; end
+ def default_shard=(value); end
+ def default_shard?; end
+ def destroy_association_async_job; end
+ def destroy_association_async_job=(value); end
+ def enumerate_columns_in_select_statements; end
+ def enumerate_columns_in_select_statements=(value); end
+ def enumerate_columns_in_select_statements?; end
+ def has_many_inversing; end
+ def has_many_inversing=(value); end
+ def has_many_inversing?; end
+ def logger; end
+ def logger=(value); end
+ def logger?; end
+ def shard_selector; end
+ def shard_selector=(value); end
+ def shard_selector?; end
+ def strict_loading_by_default; end
+ def strict_loading_by_default=(value); end
+ def strict_loading_by_default?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_connection_handler; end
+ def default_connection_handler?; end
+ def default_role; end
+ def default_role?; end
+ def default_shard; end
+ def default_shard?; end
+ def destroy_association_async_job; end
+ def logger; end
+ def logger?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/encryption/encryptable_record.rbi b/sorbet/rbi/dsl/active_record/encryption/encryptable_record.rbi
new file mode 100644
index 000000000..c364de6de
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/encryption/encryptable_record.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Encryption::EncryptableRecord`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Encryption::EncryptableRecord`.
+
+module ActiveRecord::Encryption::EncryptableRecord
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def encrypted_attributes; end
+ def encrypted_attributes=(value); end
+ def encrypted_attributes?; end
+ end
+
+ module GeneratedInstanceMethods
+ def encrypted_attributes; end
+ def encrypted_attributes=(value); end
+ def encrypted_attributes?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/inheritance.rbi b/sorbet/rbi/dsl/active_record/inheritance.rbi
new file mode 100644
index 000000000..a132d62bb
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/inheritance.rbi
@@ -0,0 +1,27 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Inheritance`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Inheritance`.
+
+module ActiveRecord::Inheritance
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def store_full_class_name; end
+ def store_full_class_name=(value); end
+ def store_full_class_name?; end
+ def store_full_sti_class; end
+ def store_full_sti_class=(value); end
+ def store_full_sti_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def store_full_class_name; end
+ def store_full_class_name?; end
+ def store_full_sti_class; end
+ def store_full_sti_class?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/integration.rbi b/sorbet/rbi/dsl/active_record/integration.rbi
new file mode 100644
index 000000000..277bb35ff
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/integration.rbi
@@ -0,0 +1,32 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Integration`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Integration`.
+
+module ActiveRecord::Integration
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def cache_timestamp_format; end
+ def cache_timestamp_format=(value); end
+ def cache_timestamp_format?; end
+ def cache_versioning; end
+ def cache_versioning=(value); end
+ def cache_versioning?; end
+ def collection_cache_versioning; end
+ def collection_cache_versioning=(value); end
+ def collection_cache_versioning?; end
+ end
+
+ module GeneratedInstanceMethods
+ def cache_timestamp_format; end
+ def cache_timestamp_format?; end
+ def cache_versioning; end
+ def cache_versioning?; end
+ def collection_cache_versioning; end
+ def collection_cache_versioning?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/locking/optimistic.rbi b/sorbet/rbi/dsl/active_record/locking/optimistic.rbi
new file mode 100644
index 000000000..a4c42bad3
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/locking/optimistic.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Locking::Optimistic`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Locking::Optimistic`.
+
+module ActiveRecord::Locking::Optimistic
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def lock_optimistically; end
+ def lock_optimistically=(value); end
+ def lock_optimistically?; end
+ end
+
+ module GeneratedInstanceMethods
+ def lock_optimistically; end
+ def lock_optimistically?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/model_schema.rbi b/sorbet/rbi/dsl/active_record/model_schema.rbi
new file mode 100644
index 000000000..5db56366c
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/model_schema.rbi
@@ -0,0 +1,52 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::ModelSchema`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::ModelSchema`.
+
+module ActiveRecord::ModelSchema
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def immutable_strings_by_default; end
+ def immutable_strings_by_default=(value); end
+ def immutable_strings_by_default?; end
+ def implicit_order_column; end
+ def implicit_order_column=(value); end
+ def implicit_order_column?; end
+ def inheritance_column; end
+ def inheritance_column=(value); end
+ def inheritance_column?; end
+ def internal_metadata_table_name; end
+ def internal_metadata_table_name=(value); end
+ def internal_metadata_table_name?; end
+ def pluralize_table_names; end
+ def pluralize_table_names=(value); end
+ def pluralize_table_names?; end
+ def primary_key_prefix_type; end
+ def primary_key_prefix_type=(value); end
+ def primary_key_prefix_type?; end
+ def schema_migrations_table_name; end
+ def schema_migrations_table_name=(value); end
+ def schema_migrations_table_name?; end
+ def table_name_prefix; end
+ def table_name_prefix=(value); end
+ def table_name_prefix?; end
+ def table_name_suffix; end
+ def table_name_suffix=(value); end
+ def table_name_suffix?; end
+ end
+
+ module GeneratedInstanceMethods
+ def pluralize_table_names; end
+ def pluralize_table_names?; end
+ def primary_key_prefix_type; end
+ def primary_key_prefix_type?; end
+ def table_name_prefix; end
+ def table_name_prefix?; end
+ def table_name_suffix; end
+ def table_name_suffix?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/nested_attributes.rbi b/sorbet/rbi/dsl/active_record/nested_attributes.rbi
new file mode 100644
index 000000000..24b735aaa
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/nested_attributes.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::NestedAttributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::NestedAttributes`.
+
+module ActiveRecord::NestedAttributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def nested_attributes_options; end
+ def nested_attributes_options=(value); end
+ def nested_attributes_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def nested_attributes_options; end
+ def nested_attributes_options?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/readonly_attributes.rbi b/sorbet/rbi/dsl/active_record/readonly_attributes.rbi
new file mode 100644
index 000000000..d2d906baa
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/readonly_attributes.rbi
@@ -0,0 +1,19 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::ReadonlyAttributes`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::ReadonlyAttributes`.
+
+module ActiveRecord::ReadonlyAttributes
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _attr_readonly; end
+ def _attr_readonly=(value); end
+ def _attr_readonly?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
diff --git a/sorbet/rbi/dsl/active_record/reflection.rbi b/sorbet/rbi/dsl/active_record/reflection.rbi
new file mode 100644
index 000000000..838578cda
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/reflection.rbi
@@ -0,0 +1,32 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Reflection`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Reflection`.
+
+module ActiveRecord::Reflection
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _reflections; end
+ def _reflections=(value); end
+ def _reflections?; end
+ def aggregate_reflections; end
+ def aggregate_reflections=(value); end
+ def aggregate_reflections?; end
+ def automatic_scope_inversing; end
+ def automatic_scope_inversing=(value); end
+ def automatic_scope_inversing?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _reflections; end
+ def _reflections?; end
+ def aggregate_reflections; end
+ def aggregate_reflections?; end
+ def automatic_scope_inversing; end
+ def automatic_scope_inversing?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/scoping.rbi b/sorbet/rbi/dsl/active_record/scoping.rbi
new file mode 100644
index 000000000..3cb1522a3
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/scoping.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Scoping`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Scoping`.
+
+module ActiveRecord::Scoping
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_scope_override; end
+ def default_scope_override=(value); end
+ def default_scopes; end
+ def default_scopes=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def default_scope_override; end
+ def default_scopes; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/scoping/default.rbi b/sorbet/rbi/dsl/active_record/scoping/default.rbi
new file mode 100644
index 000000000..77334e577
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/scoping/default.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Scoping::Default`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Scoping::Default`.
+
+module ActiveRecord::Scoping::Default
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def default_scope_override; end
+ def default_scope_override=(value); end
+ def default_scopes; end
+ def default_scopes=(value); end
+ end
+
+ module GeneratedInstanceMethods
+ def default_scope_override; end
+ def default_scopes; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/serialization.rbi b/sorbet/rbi/dsl/active_record/serialization.rbi
new file mode 100644
index 000000000..a3808ddf6
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/serialization.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Serialization`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Serialization`.
+
+module ActiveRecord::Serialization
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def include_root_in_json; end
+ def include_root_in_json=(value); end
+ def include_root_in_json?; end
+ end
+
+ module GeneratedInstanceMethods
+ def include_root_in_json; end
+ def include_root_in_json?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/signed_id.rbi b/sorbet/rbi/dsl/active_record/signed_id.rbi
new file mode 100644
index 000000000..ccac45e8e
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/signed_id.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::SignedId`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::SignedId`.
+
+module ActiveRecord::SignedId
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def signed_id_verifier_secret; end
+ def signed_id_verifier_secret=(value); end
+ def signed_id_verifier_secret?; end
+ end
+
+ module GeneratedInstanceMethods
+ def signed_id_verifier_secret; end
+ def signed_id_verifier_secret?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/test_fixtures.rbi b/sorbet/rbi/dsl/active_record/test_fixtures.rbi
new file mode 100644
index 000000000..0cef89b73
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/test_fixtures.rbi
@@ -0,0 +1,58 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::TestFixtures`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::TestFixtures`.
+
+module ActiveRecord::TestFixtures
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def fixture_class_names; end
+ def fixture_class_names=(value); end
+ def fixture_class_names?; end
+ def fixture_path; end
+ def fixture_path=(value); end
+ def fixture_path?; end
+ def fixture_table_names; end
+ def fixture_table_names=(value); end
+ def fixture_table_names?; end
+ def lock_threads; end
+ def lock_threads=(value); end
+ def lock_threads?; end
+ def pre_loaded_fixtures; end
+ def pre_loaded_fixtures=(value); end
+ def pre_loaded_fixtures?; end
+ def use_instantiated_fixtures; end
+ def use_instantiated_fixtures=(value); end
+ def use_instantiated_fixtures?; end
+ def use_transactional_tests; end
+ def use_transactional_tests=(value); end
+ def use_transactional_tests?; end
+ end
+
+ module GeneratedInstanceMethods
+ def fixture_class_names; end
+ def fixture_class_names=(value); end
+ def fixture_class_names?; end
+ def fixture_path; end
+ def fixture_path?; end
+ def fixture_table_names; end
+ def fixture_table_names=(value); end
+ def fixture_table_names?; end
+ def lock_threads; end
+ def lock_threads=(value); end
+ def lock_threads?; end
+ def pre_loaded_fixtures; end
+ def pre_loaded_fixtures=(value); end
+ def pre_loaded_fixtures?; end
+ def use_instantiated_fixtures; end
+ def use_instantiated_fixtures=(value); end
+ def use_instantiated_fixtures?; end
+ def use_transactional_tests; end
+ def use_transactional_tests=(value); end
+ def use_transactional_tests?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/timestamp.rbi b/sorbet/rbi/dsl/active_record/timestamp.rbi
new file mode 100644
index 000000000..687957e4c
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/timestamp.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Timestamp`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Timestamp`.
+
+module ActiveRecord::Timestamp
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def record_timestamps; end
+ def record_timestamps=(value); end
+ def record_timestamps?; end
+ end
+
+ module GeneratedInstanceMethods
+ def record_timestamps; end
+ def record_timestamps=(value); end
+ def record_timestamps?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_record/validations.rbi b/sorbet/rbi/dsl/active_record/validations.rbi
new file mode 100644
index 000000000..f7697f9a1
--- /dev/null
+++ b/sorbet/rbi/dsl/active_record/validations.rbi
@@ -0,0 +1,28 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveRecord::Validations`.
+# Please instead update this file by running `bin/tapioca dsl ActiveRecord::Validations`.
+
+module ActiveRecord::Validations
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods ::ActiveModel::Validations::ClassMethods
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ def _validators; end
+ def _validators=(value); end
+ def _validators?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ def _validators; end
+ def _validators?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_storage/reflection/active_record_extensions.rbi b/sorbet/rbi/dsl/active_storage/reflection/active_record_extensions.rbi
new file mode 100644
index 000000000..372891f86
--- /dev/null
+++ b/sorbet/rbi/dsl/active_storage/reflection/active_record_extensions.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveStorage::Reflection::ActiveRecordExtensions`.
+# Please instead update this file by running `bin/tapioca dsl ActiveStorage::Reflection::ActiveRecordExtensions`.
+
+module ActiveStorage::Reflection::ActiveRecordExtensions
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def attachment_reflections; end
+ def attachment_reflections=(value); end
+ def attachment_reflections?; end
+ end
+
+ module GeneratedInstanceMethods
+ def attachment_reflections; end
+ def attachment_reflections?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_support/actionable_error.rbi b/sorbet/rbi/dsl/active_support/actionable_error.rbi
new file mode 100644
index 000000000..a79d2b320
--- /dev/null
+++ b/sorbet/rbi/dsl/active_support/actionable_error.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::ActionableError`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::ActionableError`.
+
+module ActiveSupport::ActionableError
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def _actions; end
+ def _actions=(value); end
+ def _actions?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _actions; end
+ def _actions=(value); end
+ def _actions?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_support/callbacks.rbi b/sorbet/rbi/dsl/active_support/callbacks.rbi
new file mode 100644
index 000000000..646f9950b
--- /dev/null
+++ b/sorbet/rbi/dsl/active_support/callbacks.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::Callbacks`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::Callbacks`.
+
+module ActiveSupport::Callbacks
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_support/rescuable.rbi b/sorbet/rbi/dsl/active_support/rescuable.rbi
new file mode 100644
index 000000000..793108da9
--- /dev/null
+++ b/sorbet/rbi/dsl/active_support/rescuable.rbi
@@ -0,0 +1,23 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::Rescuable`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::Rescuable`.
+
+module ActiveSupport::Rescuable
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+end
diff --git a/sorbet/rbi/dsl/active_support/testing/file_fixtures.rbi b/sorbet/rbi/dsl/active_support/testing/file_fixtures.rbi
new file mode 100644
index 000000000..0bdaa8be1
--- /dev/null
+++ b/sorbet/rbi/dsl/active_support/testing/file_fixtures.rbi
@@ -0,0 +1,22 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for dynamic methods in `ActiveSupport::Testing::FileFixtures`.
+# Please instead update this file by running `bin/tapioca dsl ActiveSupport::Testing::FileFixtures`.
+
+module ActiveSupport::Testing::FileFixtures
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+
+ module GeneratedClassMethods
+ def file_fixture_path; end
+ def file_fixture_path=(value); end
+ def file_fixture_path?; end
+ end
+
+ module GeneratedInstanceMethods
+ def file_fixture_path; end
+ def file_fixture_path?; end
+ end
+end
diff --git a/sorbet/rbi/gems/actioncable@7.0.6.rbi b/sorbet/rbi/gems/actioncable@7.0.6.rbi
new file mode 100644
index 000000000..87051014b
--- /dev/null
+++ b/sorbet/rbi/gems/actioncable@7.0.6.rbi
@@ -0,0 +1,2759 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actioncable` gem.
+# Please instead update this file by running `bin/tapioca gem actioncable`.
+
+# source://actioncable//lib/action_cable/gem_version.rb#3
+module ActionCable
+ extend ::ActiveSupport::Autoload
+
+ private
+
+ # Singleton instance of the server
+ #
+ # source://actioncable//lib/action_cable.rb#51
+ def server; end
+
+ class << self
+ # Returns the currently loaded version of Action Cable as a Gem::Version.
+ #
+ # source://actioncable//lib/action_cable/gem_version.rb#5
+ def gem_version; end
+
+ # Singleton instance of the server
+ #
+ # source://actioncable//lib/action_cable.rb#51
+ def server; end
+
+ # Returns the currently loaded version of Action Cable as a Gem::Version.
+ #
+ # source://actioncable//lib/action_cable/version.rb#7
+ def version; end
+ end
+end
+
+# source://actioncable//lib/action_cable/channel.rb#4
+module ActionCable::Channel
+ extend ::ActiveSupport::Autoload
+end
+
+# The channel provides the basic structure of grouping behavior into logical units when communicating over the WebSocket connection.
+# You can think of a channel like a form of controller, but one that's capable of pushing content to the subscriber in addition to simply
+# responding to the subscriber's direct requests.
+#
+# Channel instances are long-lived. A channel object will be instantiated when the cable consumer becomes a subscriber, and then
+# lives until the consumer disconnects. This may be seconds, minutes, hours, or even days. That means you have to take special care
+# not to do anything silly in a channel that would balloon its memory footprint or whatever. The references are forever, so they won't be released
+# as is normally the case with a controller instance that gets thrown away after every request.
+#
+# Long-lived channels (and connections) also mean you're responsible for ensuring that the data is fresh. If you hold a reference to a user
+# record, but the name is changed while that reference is held, you may be sending stale data if you don't take precautions to avoid it.
+#
+# The upside of long-lived channel instances is that you can use instance variables to keep reference to objects that future subscriber requests
+# can interact with. Here's a quick example:
+#
+# class ChatChannel < ApplicationCable::Channel
+# def subscribed
+# @room = Chat::Room[params[:room_number]]
+# end
+#
+# def speak(data)
+# @room.speak data, user: current_user
+# end
+# end
+#
+# The #speak action simply uses the Chat::Room object that was created when the channel was first subscribed to by the consumer when that
+# subscriber wants to say something in the room.
+#
+# == Action processing
+#
+# Unlike subclasses of ActionController::Base, channels do not follow a RESTful
+# constraint form for their actions. Instead, Action Cable operates through a
+# remote-procedure call model. You can declare any public method on the
+# channel (optionally taking a data argument), and this method is
+# automatically exposed as callable to the client.
+#
+# Example:
+#
+# class AppearanceChannel < ApplicationCable::Channel
+# def subscribed
+# @connection_token = generate_connection_token
+# end
+#
+# def unsubscribed
+# current_user.disappear @connection_token
+# end
+#
+# def appear(data)
+# current_user.appear @connection_token, on: data['appearing_on']
+# end
+#
+# def away
+# current_user.away @connection_token
+# end
+#
+# private
+# def generate_connection_token
+# SecureRandom.hex(36)
+# end
+# end
+#
+# In this example, the subscribed and unsubscribed methods are not callable methods, as they
+# were already declared in ActionCable::Channel::Base, but #appear
+# and #away are. #generate_connection_token is also not
+# callable, since it's a private method. You'll see that appear accepts a data
+# parameter, which it then uses as part of its model call. #away
+# does not, since it's simply a trigger action.
+#
+# Also note that in this example, current_user is available because
+# it was marked as an identifying attribute on the connection. All such
+# identifiers will automatically create a delegation method of the same name
+# on the channel instance.
+#
+# == Rejecting subscription requests
+#
+# A channel can reject a subscription request in the #subscribed callback by
+# invoking the #reject method:
+#
+# class ChatChannel < ApplicationCable::Channel
+# def subscribed
+# @room = Chat::Room[params[:room_number]]
+# reject unless current_user.can_access?(@room)
+# end
+# end
+#
+# In this example, the subscription will be rejected if the
+# current_user does not have access to the chat room. On the
+# client-side, the Channel#rejected callback will get invoked when
+# the server rejects the subscription request.
+#
+# source://actioncable//lib/action_cable/channel/base.rb#97
+class ActionCable::Channel::Base
+ include ::ActiveSupport::Callbacks
+ include ::ActionCable::Channel::Callbacks
+ include ::ActionCable::Channel::PeriodicTimers
+ include ::ActionCable::Channel::Streams
+ include ::ActionCable::Channel::Naming
+ include ::ActionCable::Channel::Broadcasting
+ include ::ActiveSupport::Rescuable
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::ActiveSupport::DescendantsTracker
+ extend ::ActionCable::Channel::Callbacks::ClassMethods
+ extend ::ActionCable::Channel::PeriodicTimers::ClassMethods
+ extend ::ActionCable::Channel::Naming::ClassMethods
+ extend ::ActionCable::Channel::Broadcasting::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#144
+ def initialize(connection, identifier, params = T.unsafe(nil)); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_subscribe_callbacks(&block); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_unsubscribe_callbacks(&block); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _subscribe_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _unsubscribe_callbacks; end
+
+ # Returns the value of attribute connection.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#105
+ def connection; end
+
+ # Returns the value of attribute identifier.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#105
+ def identifier; end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#106
+ def logger(*_arg0, **_arg1, &_arg2); end
+
+ # Returns the value of attribute params.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#105
+ def params; end
+
+ # Extract the action name from the passed data and process it via the channel. The process will ensure
+ # that the action requested is a public method on the channel declared by the user (so not one of the callbacks
+ # like #subscribed).
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#164
+ def perform_action(data); end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#9
+ def periodic_timers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # This method is called after subscription has been added to the connection
+ # and confirms or rejects the subscription.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#179
+ def subscribe_to_channel; end
+
+ # Called by the cable connection when it's cut, so the channel has a chance to cleanup with callbacks.
+ # This method is not intended to be called directly by the user. Instead, override the #unsubscribed callback.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#190
+ def unsubscribe_from_channel; end
+
+ private
+
+ # source://actioncable//lib/action_cable/channel/base.rb#276
+ def action_signature(action, data); end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#228
+ def defer_subscription_confirmation!; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#232
+ def defer_subscription_confirmation?; end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#248
+ def delegate_connection_identifiers; end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#264
+ def dispatch_action(action, data); end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#222
+ def ensure_confirmation_sent; end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#256
+ def extract_action(data); end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#260
+ def processable_action?(action); end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#240
+ def reject; end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#295
+ def reject_subscription; end
+
+ # Called once a consumer has become a subscriber of the channel. Usually the place to set up any streams
+ # you want this channel to be sending to the subscriber.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#199
+ def subscribed; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#236
+ def subscription_confirmation_sent?; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#244
+ def subscription_rejected?; end
+
+ # Transmit a hash of data to the subscriber. The hash will automatically be wrapped in a JSON envelope with
+ # the proper channel identifier marked as the recipient.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#211
+ def transmit(data, via: T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#284
+ def transmit_subscription_confirmation; end
+
+ # source://actioncable//lib/action_cable/channel/base.rb#300
+ def transmit_subscription_rejection; end
+
+ # Called once a consumer has cut its cable connection. Can be used for cleaning up connections or marking
+ # users as offline or the like.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#205
+ def unsubscribed; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _subscribe_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _subscribe_callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _unsubscribe_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _unsubscribe_callbacks=(value); end
+
+ # A list of method names that should be considered actions. This
+ # includes all public instance methods on a channel, less
+ # any internal methods (defined on Base), adding back in
+ # any methods that are internal, but still exist on the class
+ # itself.
+ #
+ # ==== Returns
+ # * Set - A set of all methods that should be considered actions.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#117
+ def action_methods; end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#9
+ def periodic_timers; end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#9
+ def periodic_timers=(value); end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#9
+ def periodic_timers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ private
+
+ # action_methods are cached and there is sometimes need to refresh
+ # them. ::clear_action_methods! allows you to do that, so next time
+ # you run action_methods, they will be recalculated.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#133
+ def clear_action_methods!; end
+
+ # Refresh the cached action_methods when a new action_method is added.
+ #
+ # source://actioncable//lib/action_cable/channel/base.rb#138
+ def method_added(name); end
+ end
+end
+
+# source://actioncable//lib/action_cable/channel/broadcasting.rb#7
+module ActionCable::Channel::Broadcasting
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionCable::Channel::Broadcasting::ClassMethods
+
+ # source://actioncable//lib/action_cable/channel/broadcasting.rb#10
+ def broadcast_to(*_arg0, **_arg1, &_arg2); end
+
+ # source://actioncable//lib/action_cable/channel/broadcasting.rb#10
+ def broadcasting_for(*_arg0, **_arg1, &_arg2); end
+end
+
+# source://actioncable//lib/action_cable/channel/broadcasting.rb#12
+module ActionCable::Channel::Broadcasting::ClassMethods
+ # Broadcast a hash to a unique broadcasting for this model in this channel.
+ #
+ # source://actioncable//lib/action_cable/channel/broadcasting.rb#14
+ def broadcast_to(model, message); end
+
+ # Returns a unique broadcasting identifier for this model in this channel:
+ #
+ # CommentsChannel.broadcasting_for("all") # => "comments:all"
+ #
+ # You can pass any object as a target (e.g. Active Record model), and it
+ # would be serialized into a string under the hood.
+ #
+ # source://actioncable//lib/action_cable/channel/broadcasting.rb#24
+ def broadcasting_for(model); end
+
+ # source://actioncable//lib/action_cable/channel/broadcasting.rb#28
+ def serialize_broadcasting(object); end
+end
+
+# source://actioncable//lib/action_cable/channel/callbacks.rb#7
+module ActionCable::Channel::Callbacks
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::ActionCable::Channel::Callbacks::ClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/channel/callbacks.rb#16
+module ActionCable::Channel::Callbacks::ClassMethods
+ # source://actioncable//lib/action_cable/channel/callbacks.rb#21
+ def after_subscribe(*methods, &block); end
+
+ # source://actioncable//lib/action_cable/channel/callbacks.rb#30
+ def after_unsubscribe(*methods, &block); end
+
+ # source://actioncable//lib/action_cable/channel/callbacks.rb#17
+ def before_subscribe(*methods, &block); end
+
+ # source://actioncable//lib/action_cable/channel/callbacks.rb#26
+ def before_unsubscribe(*methods, &block); end
+
+ # source://actioncable//lib/action_cable/channel/callbacks.rb#21
+ def on_subscribe(*methods, &block); end
+
+ # source://actioncable//lib/action_cable/channel/callbacks.rb#30
+ def on_unsubscribe(*methods, &block); end
+end
+
+# Stub +stream_from+ to track streams for the channel.
+# Add public aliases for +subscription_confirmation_sent?+ and
+# +subscription_rejected?+.
+#
+# source://actioncable//lib/action_cable/channel/test_case.rb#21
+module ActionCable::Channel::ChannelStub
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#22
+ def confirmed?; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#26
+ def rejected?; end
+
+ # Make periodic timers no-op
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#43
+ def start_periodic_timers; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#34
+ def stop_all_streams; end
+
+ # Make periodic timers no-op
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#43
+ def stop_periodic_timers; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#30
+ def stream_from(broadcasting, *_arg1); end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#38
+ def streams; end
+end
+
+# source://actioncable//lib/action_cable/channel/test_case.rb#47
+class ActionCable::Channel::ConnectionStub
+ # @return [ConnectionStub] a new instance of ConnectionStub
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#50
+ def initialize(identifiers = T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#66
+ def connection_identifier; end
+
+ # Returns the value of attribute identifiers.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#48
+ def identifiers; end
+
+ # Returns the value of attribute logger.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#48
+ def logger; end
+
+ # Returns the value of attribute subscriptions.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#48
+ def subscriptions; end
+
+ # Returns the value of attribute transmissions.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#48
+ def transmissions; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#62
+ def transmit(cable_message); end
+
+ private
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#71
+ def connection_gid(ids); end
+end
+
+# source://actioncable//lib/action_cable/channel/naming.rb#5
+module ActionCable::Channel::Naming
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionCable::Channel::Naming::ClassMethods
+
+ # source://actioncable//lib/action_cable/channel/naming.rb#22
+ def channel_name(*_arg0, **_arg1, &_arg2); end
+end
+
+# source://actioncable//lib/action_cable/channel/naming.rb#8
+module ActionCable::Channel::Naming::ClassMethods
+ # Returns the name of the channel, underscored, without the Channel ending.
+ # If the channel is in a namespace, then the namespaces are represented by single
+ # colon separators in the channel name.
+ #
+ # ChatChannel.channel_name # => 'chat'
+ # Chats::AppearancesChannel.channel_name # => 'chats:appearances'
+ # FooChats::BarAppearancesChannel.channel_name # => 'foo_chats:bar_appearances'
+ #
+ # source://actioncable//lib/action_cable/channel/naming.rb#16
+ def channel_name; end
+end
+
+# source://actioncable//lib/action_cable/channel/test_case.rb#10
+class ActionCable::Channel::NonInferrableChannelError < ::StandardError
+ # @return [NonInferrableChannelError] a new instance of NonInferrableChannelError
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#11
+ def initialize(name); end
+end
+
+# source://actioncable//lib/action_cable/channel/periodic_timers.rb#5
+module ActionCable::Channel::PeriodicTimers
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionCable::Channel::PeriodicTimers::ClassMethods
+
+ private
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#56
+ def active_periodic_timers; end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#66
+ def start_periodic_timer(callback, every:); end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#60
+ def start_periodic_timers; end
+
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#72
+ def stop_periodic_timers; end
+
+ module GeneratedClassMethods
+ def periodic_timers; end
+ def periodic_timers=(value); end
+ def periodic_timers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def periodic_timers=(value); end
+ end
+end
+
+# source://actioncable//lib/action_cable/channel/periodic_timers.rb#15
+module ActionCable::Channel::PeriodicTimers::ClassMethods
+ # Periodically performs a task on the channel, like updating an online
+ # user counter, polling a backend for new status messages, sending
+ # regular "heartbeat" messages, or doing some internal work and giving
+ # progress updates.
+ #
+ # Pass a method name or lambda argument or provide a block to call.
+ # Specify the calling period in seconds using the every:
+ # keyword argument.
+ #
+ # periodically :transmit_progress, every: 5.seconds
+ #
+ # periodically every: 3.minutes do
+ # transmit action: :update_count, count: current_count
+ # end
+ #
+ # source://actioncable//lib/action_cable/channel/periodic_timers.rb#31
+ def periodically(callback_or_method_name = T.unsafe(nil), every:, &block); end
+end
+
+# Streams allow channels to route broadcastings to the subscriber. A broadcasting is, as discussed elsewhere, a pubsub queue where any data
+# placed into it is automatically sent to the clients that are connected at that time. It's purely an online queue, though. If you're not
+# streaming a broadcasting at the very moment it sends out an update, you will not get that update, even if you connect after it has been sent.
+#
+# Most commonly, the streamed broadcast is sent straight to the subscriber on the client-side. The channel just acts as a connector between
+# the two parties (the broadcaster and the channel subscriber). Here's an example of a channel that allows subscribers to get all new
+# comments on a given page:
+#
+# class CommentsChannel < ApplicationCable::Channel
+# def follow(data)
+# stream_from "comments_for_#{data['recording_id']}"
+# end
+#
+# def unfollow
+# stop_all_streams
+# end
+# end
+#
+# Based on the above example, the subscribers of this channel will get whatever data is put into the,
+# let's say, comments_for_45 broadcasting as soon as it's put there.
+#
+# An example broadcasting for this channel looks like so:
+#
+# ActionCable.server.broadcast "comments_for_45", { author: 'DHH', content: 'Rails is just swell' }
+#
+# If you have a stream that is related to a model, then the broadcasting used can be generated from the model and channel.
+# The following example would subscribe to a broadcasting like comments:Z2lkOi8vVGVzdEFwcC9Qb3N0LzE.
+#
+# class CommentsChannel < ApplicationCable::Channel
+# def subscribed
+# post = Post.find(params[:id])
+# stream_for post
+# end
+# end
+#
+# You can then broadcast to this channel using:
+#
+# CommentsChannel.broadcast_to(@post, @comment)
+#
+# If you don't just want to parlay the broadcast unfiltered to the subscriber, you can also supply a callback that lets you alter what is sent out.
+# The below example shows how you can use this to provide performance introspection in the process:
+#
+# class ChatChannel < ApplicationCable::Channel
+# def subscribed
+# @room = Chat::Room[params[:room_number]]
+#
+# stream_for @room, coder: ActiveSupport::JSON do |message|
+# if message['originated_at'].present?
+# elapsed_time = (Time.now.to_f - message['originated_at']).round(2)
+#
+# ActiveSupport::Notifications.instrument :performance, measurement: 'Chat.message_delay', value: elapsed_time, action: :timing
+# logger.info "Message took #{elapsed_time}s to arrive"
+# end
+#
+# transmit message
+# end
+# end
+# end
+#
+# You can stop streaming from all broadcasts by calling #stop_all_streams.
+#
+# source://actioncable//lib/action_cable/channel/streams.rb#65
+module ActionCable::Channel::Streams
+ extend ::ActiveSupport::Concern
+
+ # source://actioncable//lib/action_cable/channel/streams.rb#138
+ def pubsub(*_arg0, **_arg1, &_arg2); end
+
+ # Unsubscribes all streams associated with this channel from the pubsub queue.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#120
+ def stop_all_streams; end
+
+ # Unsubscribes streams for the model.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#115
+ def stop_stream_for(model); end
+
+ # Unsubscribes streams from the named broadcasting.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#106
+ def stop_stream_from(broadcasting); end
+
+ # Start streaming the pubsub queue for the model in this channel. Optionally, you can pass a
+ # callback that'll be used instead of the default of just transmitting the updates straight
+ # to the subscriber.
+ #
+ # Pass coder: ActiveSupport::JSON to decode messages as JSON before passing to the callback.
+ # Defaults to coder: nil which does no decoding, passes raw messages.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#101
+ def stream_for(model, callback = T.unsafe(nil), coder: T.unsafe(nil), &block); end
+
+ # Start streaming from the named broadcasting pubsub queue. Optionally, you can pass a callback that'll be used
+ # instead of the default of just transmitting the updates straight to the subscriber.
+ # Pass coder: ActiveSupport::JSON to decode messages as JSON before passing to the callback.
+ # Defaults to coder: nil which does no decoding, passes raw messages.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#76
+ def stream_from(broadcasting, callback = T.unsafe(nil), coder: T.unsafe(nil), &block); end
+
+ # Calls stream_for with the given model if it's present to start streaming,
+ # otherwise rejects the subscription.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#129
+ def stream_or_reject_for(model); end
+
+ private
+
+ # May be overridden to change the default stream handling behavior
+ # which decodes JSON and transmits to the client.
+ #
+ # TODO: Tests demonstrating this.
+ #
+ # TODO: Room for optimization. Update transmit API to be coder-aware
+ # so we can no-op when pubsub and connection are both JSON-encoded.
+ # Then we can skip decode+encode if we're just proxying messages.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#174
+ def default_stream_handler(broadcasting, coder:); end
+
+ # source://actioncable//lib/action_cable/channel/streams.rb#195
+ def identity_handler; end
+
+ # source://actioncable//lib/action_cable/channel/streams.rb#179
+ def stream_decoder(handler = T.unsafe(nil), coder:); end
+
+ # May be overridden to add instrumentation, logging, specialized error
+ # handling, or other forms of handler decoration.
+ #
+ # TODO: Tests demonstrating this.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#158
+ def stream_handler(broadcasting, user_handler, coder: T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/channel/streams.rb#187
+ def stream_transmitter(handler = T.unsafe(nil), broadcasting:); end
+
+ # source://actioncable//lib/action_cable/channel/streams.rb#140
+ def streams; end
+
+ # Always wrap the outermost handler to invoke the user handler on the
+ # worker pool rather than blocking the event loop.
+ #
+ # source://actioncable//lib/action_cable/channel/streams.rb#146
+ def worker_pool_stream_handler(broadcasting, user_handler, coder: T.unsafe(nil)); end
+end
+
+# Superclass for Action Cable channel functional tests.
+#
+# == Basic example
+#
+# Functional tests are written as follows:
+# 1. First, one uses the +subscribe+ method to simulate subscription creation.
+# 2. Then, one asserts whether the current state is as expected. "State" can be anything:
+# transmitted messages, subscribed streams, etc.
+#
+# For example:
+#
+# class ChatChannelTest < ActionCable::Channel::TestCase
+# def test_subscribed_with_room_number
+# # Simulate a subscription creation
+# subscribe room_number: 1
+#
+# # Asserts that the subscription was successfully created
+# assert subscription.confirmed?
+#
+# # Asserts that the channel subscribes connection to a stream
+# assert_has_stream "chat_1"
+#
+# # Asserts that the channel subscribes connection to a specific
+# # stream created for a model
+# assert_has_stream_for Room.find(1)
+# end
+#
+# def test_does_not_stream_with_incorrect_room_number
+# subscribe room_number: -1
+#
+# # Asserts that not streams was started
+# assert_no_streams
+# end
+#
+# def test_does_not_subscribe_without_room_number
+# subscribe
+#
+# # Asserts that the subscription was rejected
+# assert subscription.rejected?
+# end
+# end
+#
+# You can also perform actions:
+# def test_perform_speak
+# subscribe room_number: 1
+#
+# perform :speak, message: "Hello, Rails!"
+#
+# assert_equal "Hello, Rails!", transmissions.last["text"]
+# end
+#
+# == Special methods
+#
+# ActionCable::Channel::TestCase will also automatically provide the following instance
+# methods for use in the tests:
+#
+# connection::
+# An ActionCable::Channel::ConnectionStub, representing the current HTTP connection.
+# subscription::
+# An instance of the current channel, created when you call +subscribe+.
+# transmissions::
+# A list of all messages that have been transmitted into the channel.
+#
+#
+# == Channel is automatically inferred
+#
+# ActionCable::Channel::TestCase will automatically infer the channel under test
+# from the test class name. If the channel cannot be inferred from the test
+# class name, you can explicitly set it with +tests+.
+#
+# class SpecialEdgeCaseChannelTest < ActionCable::Channel::TestCase
+# tests SpecialChannel
+# end
+#
+# == Specifying connection identifiers
+#
+# You need to set up your connection manually to provide values for the identifiers.
+# To do this just use:
+#
+# stub_connection(user: users(:john))
+#
+# == Testing broadcasting
+#
+# ActionCable::Channel::TestCase enhances ActionCable::TestHelper assertions (e.g.
+# +assert_broadcasts+) to handle broadcasting to models:
+#
+#
+# # in your channel
+# def speak(data)
+# broadcast_to room, text: data["message"]
+# end
+#
+# def test_speak
+# subscribe room_id: rooms(:chat).id
+#
+# assert_broadcast_on(rooms(:chat), text: "Hello, Rails!") do
+# perform :speak, message: "Hello, Rails!"
+# end
+# end
+#
+# source://actioncable//lib/action_cable/channel/test_case.rb#181
+class ActionCable::Channel::TestCase < ::ActiveSupport::TestCase
+ include ::ActiveSupport::Testing::ConstantLookup
+ include ::ActionCable::TestHelper
+ include ::ActionCable::Channel::TestCase::Behavior
+ extend ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ extend ::ActionCable::Channel::TestCase::Behavior::ClassMethods
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#191
+ def _channel_class; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#191
+ def _channel_class=(_arg0); end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#191
+ def _channel_class?; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#193
+ def connection; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#193
+ def subscription; end
+
+ class << self
+ # source://actioncable//lib/action_cable/channel/test_case.rb#191
+ def _channel_class; end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#191
+ def _channel_class=(value); end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#191
+ def _channel_class?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/channel/test_case.rb#182
+module ActionCable::Channel::TestCase::Behavior
+ include ::ActionCable::TestHelper
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Testing::ConstantLookup
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods ::ActionCable::Channel::TestCase::Behavior::ClassMethods
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#273
+ def assert_broadcast_on(stream_or_object, *args); end
+
+ # Enhance TestHelper assertions to handle non-String
+ # broadcastings
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#269
+ def assert_broadcasts(stream_or_object, *args); end
+
+ # Asserts that the specified stream has been started.
+ #
+ # def test_assert_started_stream
+ # subscribe
+ # assert_has_stream 'messages'
+ # end
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#295
+ def assert_has_stream(stream); end
+
+ # Asserts that the specified stream for a model has started.
+ #
+ # def test_assert_started_stream_for
+ # subscribe id: 42
+ # assert_has_stream_for User.find(42)
+ # end
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#306
+ def assert_has_stream_for(object); end
+
+ # Asserts that no streams have been started.
+ #
+ # def test_assert_no_started_stream
+ # subscribe
+ # assert_no_streams
+ # end
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#284
+ def assert_no_streams; end
+
+ # Perform action on a channel.
+ #
+ # NOTE: Must be subscribed.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#256
+ def perform(action, data = T.unsafe(nil)); end
+
+ # Set up test connection with the specified identifiers:
+ #
+ # class ApplicationCable < ActionCable::Connection::Base
+ # identified_by :user, :token
+ # end
+ #
+ # stub_connection(user: users[:john], token: 'my-secret-token')
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#234
+ def stub_connection(identifiers = T.unsafe(nil)); end
+
+ # Subscribe to the channel under test. Optionally pass subscription parameters as a Hash.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#239
+ def subscribe(params = T.unsafe(nil)); end
+
+ # Returns messages transmitted into channel
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#262
+ def transmissions; end
+
+ # Unsubscribe the subscription under test.
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#248
+ def unsubscribe; end
+
+ private
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#315
+ def broadcasting_for(stream_or_object); end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#311
+ def check_subscribed!; end
+
+ module GeneratedClassMethods
+ def _channel_class; end
+ def _channel_class=(value); end
+ def _channel_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _channel_class; end
+ def _channel_class=(value); end
+ def _channel_class?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/channel/test_case.rb#188
+ActionCable::Channel::TestCase::Behavior::CHANNEL_IDENTIFIER = T.let(T.unsafe(nil), String)
+
+# source://actioncable//lib/action_cable/channel/test_case.rb#198
+module ActionCable::Channel::TestCase::Behavior::ClassMethods
+ # source://actioncable//lib/action_cable/channel/test_case.rb#210
+ def channel_class; end
+
+ # @raise [NonInferrableChannelError]
+ #
+ # source://actioncable//lib/action_cable/channel/test_case.rb#218
+ def determine_default_channel(name); end
+
+ # source://actioncable//lib/action_cable/channel/test_case.rb#199
+ def tests(channel); end
+end
+
+# source://actioncable//lib/action_cable/connection.rb#4
+module ActionCable::Connection
+ extend ::ActiveSupport::Autoload
+end
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#20
+module ActionCable::Connection::Assertions
+ # Asserts that the connection is rejected (via +reject_unauthorized_connection+).
+ #
+ # # Asserts that connection without user_id fails
+ # assert_reject_connection { connect params: { user_id: '' } }
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#25
+ def assert_reject_connection(&block); end
+end
+
+# source://actioncable//lib/action_cable/connection/authorization.rb#5
+module ActionCable::Connection::Authorization
+ # Closes the WebSocket connection if it is open and returns a 404 "File not Found" response.
+ #
+ # @raise [UnauthorizedError]
+ #
+ # source://actioncable//lib/action_cable/connection/authorization.rb#9
+ def reject_unauthorized_connection; end
+end
+
+# source://actioncable//lib/action_cable/connection/authorization.rb#6
+class ActionCable::Connection::Authorization::UnauthorizedError < ::StandardError; end
+
+# For every WebSocket connection the Action Cable server accepts, a Connection object will be instantiated. This instance becomes the parent
+# of all of the channel subscriptions that are created from there on. Incoming messages are then routed to these channel subscriptions
+# based on an identifier sent by the Action Cable consumer. The Connection itself does not deal with any specific application logic beyond
+# authentication and authorization.
+#
+# Here's a basic example:
+#
+# module ApplicationCable
+# class Connection < ActionCable::Connection::Base
+# identified_by :current_user
+#
+# def connect
+# self.current_user = find_verified_user
+# logger.add_tags current_user.name
+# end
+#
+# def disconnect
+# # Any cleanup work needed when the cable connection is cut.
+# end
+#
+# private
+# def find_verified_user
+# User.find_by_identity(cookies.encrypted[:identity_id]) ||
+# reject_unauthorized_connection
+# end
+# end
+# end
+#
+# First, we declare that this connection can be identified by its current_user. This allows us to later be able to find all connections
+# established for that current_user (and potentially disconnect them). You can declare as many
+# identification indexes as you like. Declaring an identification means that an attr_accessor is automatically set for that key.
+#
+# Second, we rely on the fact that the WebSocket connection is established with the cookies from the domain being sent along. This makes
+# it easy to use signed cookies that were set when logging in via a web interface to authorize the WebSocket connection.
+#
+# Finally, we add a tag to the connection-specific logger with the name of the current user to easily distinguish their messages in the log.
+#
+# Pretty simple, eh?
+#
+# source://actioncable//lib/action_cable/connection/base.rb#46
+class ActionCable::Connection::Base
+ include ::ActionCable::Connection::Identification
+ include ::ActionCable::Connection::InternalChannel
+ include ::ActionCable::Connection::Authorization
+ include ::ActiveSupport::Rescuable
+ extend ::ActionCable::Connection::Identification::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#55
+ def initialize(server, env, coder: T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#125
+ def beat; end
+
+ # Close the WebSocket connection.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#100
+ def close(reason: T.unsafe(nil), reconnect: T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#87
+ def dispatch_websocket_message(websocket_message); end
+
+ # Returns the value of attribute env.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#52
+ def env; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#53
+ def event_loop(*_arg0, **_arg1, &_arg2); end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers; end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers=(_arg0); end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers?; end
+
+ # Returns the value of attribute logger.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#52
+ def logger; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#142
+ def on_close(reason, code); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#137
+ def on_error(message); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#133
+ def on_message(message); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#129
+ def on_open; end
+
+ # Called by the server when a new WebSocket connection is established. This configures the callbacks intended for overwriting by the user.
+ # This method should not be called directly -- instead rely upon on the #connect (and #disconnect) callbacks.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#71
+ def process; end
+
+ # Returns the value of attribute protocol.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#52
+ def protocol; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#53
+ def pubsub(*_arg0, **_arg1, &_arg2); end
+
+ # Decodes WebSocket messages and dispatches them to subscribed channels.
+ # WebSocket message transfer encoding is always JSON.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#83
+ def receive(websocket_message); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # Invoke a method on the connection asynchronously through the pool of thread workers.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#110
+ def send_async(method, *arguments); end
+
+ # Returns the value of attribute server.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#52
+ def server; end
+
+ # Return a basic hash of statistics for the connection keyed with identifier, started_at, subscriptions, and request_id.
+ # This can be returned by a health check against the connection.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#116
+ def statistics; end
+
+ # Returns the value of attribute subscriptions.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#52
+ def subscriptions; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#95
+ def transmit(cable_message); end
+
+ # Returns the value of attribute worker_pool.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#52
+ def worker_pool; end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#201
+ def allow_request_origin?; end
+
+ # The cookies of the request that initiated the WebSocket connection. Useful for performing authorization checks.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#159
+ def cookies; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#167
+ def decode(websocket_message); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#163
+ def encode(cable_message); end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#243
+ def finished_request_message; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#183
+ def handle_close; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#171
+ def handle_open; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#251
+ def invalid_request_message; end
+
+ # Returns the value of attribute message_buffer.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#148
+ def message_buffer; end
+
+ # Tags are declared in the server but computed in the connection. This allows us per-connection tailored tags.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#229
+ def new_tagged_logger; end
+
+ # The request that initiated the WebSocket connection is available here. This gives access to the environment, cookies, etc.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#151
+ def request; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#220
+ def respond_to_invalid_request; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#215
+ def respond_to_successful_request; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#194
+ def send_welcome_message; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#234
+ def started_request_message; end
+
+ # source://actioncable//lib/action_cable/connection/base.rb#257
+ def successful_request_message; end
+
+ # Returns the value of attribute websocket.
+ #
+ # source://actioncable//lib/action_cable/connection/base.rb#147
+ def websocket; end
+
+ class << self
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers; end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers=(value); end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/connection/client_socket.rb#11
+class ActionCable::Connection::ClientSocket
+ # @return [ClientSocket] a new instance of ClientSocket
+ #
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#34
+ def initialize(env, event_target, event_loop, protocols); end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#112
+ def alive?; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#108
+ def client_gone; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#90
+ def close(code = T.unsafe(nil), reason = T.unsafe(nil)); end
+
+ # Returns the value of attribute env.
+ #
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#32
+ def env; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#104
+ def parse(data); end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#116
+ def protocol; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#69
+ def rack_response; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#57
+ def start_driver; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#80
+ def transmit(message); end
+
+ # Returns the value of attribute url.
+ #
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#32
+ def url; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#74
+ def write(data); end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#140
+ def begin_close(reason, code); end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#134
+ def emit_error(message); end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#149
+ def finalize_close; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#121
+ def open; end
+
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#128
+ def receive_message(data); end
+
+ class << self
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#12
+ def determine_url(env); end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/client_socket.rb#17
+ def secure_request?(env); end
+ end
+end
+
+# source://actioncable//lib/action_cable/connection/client_socket.rb#30
+ActionCable::Connection::ClientSocket::CLOSED = T.let(T.unsafe(nil), Integer)
+
+# source://actioncable//lib/action_cable/connection/client_socket.rb#29
+ActionCable::Connection::ClientSocket::CLOSING = T.let(T.unsafe(nil), Integer)
+
+# source://actioncable//lib/action_cable/connection/client_socket.rb#27
+ActionCable::Connection::ClientSocket::CONNECTING = T.let(T.unsafe(nil), Integer)
+
+# source://actioncable//lib/action_cable/connection/client_socket.rb#28
+ActionCable::Connection::ClientSocket::OPEN = T.let(T.unsafe(nil), Integer)
+
+# source://actioncable//lib/action_cable/connection/identification.rb#7
+module ActionCable::Connection::Identification
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionCable::Connection::Identification::ClassMethods
+
+ # Return a single connection identifier that combines the value of all the registered identifiers into a single gid.
+ #
+ # source://actioncable//lib/action_cable/connection/identification.rb#27
+ def connection_identifier; end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#36
+ def connection_gid(ids); end
+
+ module GeneratedClassMethods
+ def identifiers; end
+ def identifiers=(value); end
+ def identifiers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def identifiers; end
+ def identifiers=(value); end
+ def identifiers?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/connection/identification.rb#14
+module ActionCable::Connection::Identification::ClassMethods
+ # Mark a key as being a connection identifier index that can then be used to find the specific connection again later.
+ # Common identifiers are current_user and current_account, but could be anything, really.
+ #
+ # Note that anything marked as an identifier will automatically create a delegate by the same name on any
+ # channel instances created off the connection.
+ #
+ # source://actioncable//lib/action_cable/connection/identification.rb#20
+ def identified_by(*identifiers); end
+end
+
+# Makes it possible for the RemoteConnection to disconnect a specific connection.
+#
+# source://actioncable//lib/action_cable/connection/internal_channel.rb#6
+module ActionCable::Connection::InternalChannel
+ extend ::ActiveSupport::Concern
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/internal_channel.rb#10
+ def internal_channel; end
+
+ # source://actioncable//lib/action_cable/connection/internal_channel.rb#31
+ def process_internal_message(message); end
+
+ # source://actioncable//lib/action_cable/connection/internal_channel.rb#14
+ def subscribe_to_internal_channel; end
+
+ # source://actioncable//lib/action_cable/connection/internal_channel.rb#25
+ def unsubscribe_from_internal_channel; end
+end
+
+# Allows us to buffer messages received from the WebSocket before the Connection has been fully initialized, and is ready to receive them.
+#
+# source://actioncable//lib/action_cable/connection/message_buffer.rb#6
+class ActionCable::Connection::MessageBuffer
+ # @return [MessageBuffer] a new instance of MessageBuffer
+ #
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#7
+ def initialize(connection); end
+
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#12
+ def append(message); end
+
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#28
+ def process!; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#24
+ def processing?; end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#45
+ def buffer(message); end
+
+ # Returns the value of attribute buffered_messages.
+ #
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#35
+ def buffered_messages; end
+
+ # Returns the value of attribute connection.
+ #
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#34
+ def connection; end
+
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#41
+ def receive(message); end
+
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#49
+ def receive_buffered_messages; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/message_buffer.rb#37
+ def valid?(message); end
+end
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#12
+class ActionCable::Connection::NonInferrableConnectionError < ::StandardError
+ # @return [NonInferrableConnectionError] a new instance of NonInferrableConnectionError
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#13
+ def initialize(name); end
+end
+
+# source://actioncable//lib/action_cable/connection/stream.rb#11
+class ActionCable::Connection::Stream
+ # @return [Stream] a new instance of Stream
+ #
+ # source://actioncable//lib/action_cable/connection/stream.rb#12
+ def initialize(event_loop, socket); end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#28
+ def close; end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#24
+ def each(&callback); end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#72
+ def flush_write_buffer; end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#98
+ def hijack_rack_socket; end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#94
+ def receive(data); end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#33
+ def shutdown; end
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#37
+ def write(data); end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/stream.rb#110
+ def clean_rack_hijack; end
+end
+
+# source://actioncable//lib/action_cable/connection/stream_event_loop.rb#8
+class ActionCable::Connection::StreamEventLoop
+ # @return [StreamEventLoop] a new instance of StreamEventLoop
+ #
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#9
+ def initialize; end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#29
+ def attach(io, stream); end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#37
+ def detach(io, stream); end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#22
+ def post(task = T.unsafe(nil), &block); end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#55
+ def stop; end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#18
+ def timer(interval, &block); end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#46
+ def writes_pending(io); end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#85
+ def run; end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#61
+ def spawn; end
+
+ # source://actioncable//lib/action_cable/connection/stream_event_loop.rb#81
+ def wakeup; end
+end
+
+# Collection class for all the channel subscriptions established on a given connection. Responsible for routing incoming commands that arrive on
+# the connection to the proper channel.
+#
+# source://actioncable//lib/action_cable/connection/subscriptions.rb#9
+class ActionCable::Connection::Subscriptions
+ # @return [Subscriptions] a new instance of Subscriptions
+ #
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#10
+ def initialize(connection); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#28
+ def add(data); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#15
+ def execute_command(data); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#59
+ def identifiers; end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#69
+ def logger(*_arg0, **_arg1, &_arg2); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#55
+ def perform_action(data); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#45
+ def remove(data); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#50
+ def remove_subscription(subscription); end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#63
+ def unsubscribe_from_all; end
+
+ private
+
+ # Returns the value of attribute connection.
+ #
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#68
+ def connection; end
+
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#71
+ def find(data); end
+
+ # Returns the value of attribute subscriptions.
+ #
+ # source://actioncable//lib/action_cable/connection/subscriptions.rb#68
+ def subscriptions; end
+end
+
+# Allows the use of per-connection tags against the server logger. This wouldn't work using the traditional
+# ActiveSupport::TaggedLogging enhanced Rails.logger, as that logger will reset the tags between requests.
+# The connection is long-lived, so it needs its own set of tags for its independent duration.
+#
+# source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#8
+class ActionCable::Connection::TaggedLoggerProxy
+ # @return [TaggedLoggerProxy] a new instance of TaggedLoggerProxy
+ #
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#11
+ def initialize(logger, tags:); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#16
+ def add_tags(*tags); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#31
+ def debug(message); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#31
+ def error(message); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#31
+ def fatal(message); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#31
+ def info(message); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#21
+ def tag(logger, &block); end
+
+ # Returns the value of attribute tags.
+ #
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#9
+ def tags; end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#31
+ def unknown(message); end
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#31
+ def warn(message); end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/tagged_logger_proxy.rb#37
+ def log(type, message); end
+end
+
+# Unit test Action Cable connections.
+#
+# Useful to check whether a connection's +identified_by+ gets assigned properly
+# and that any improper connection requests are rejected.
+#
+# == Basic example
+#
+# Unit tests are written as follows:
+#
+# 1. Simulate a connection attempt by calling +connect+.
+# 2. Assert state, e.g. identifiers, has been assigned.
+#
+#
+# class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
+# def test_connects_with_proper_cookie
+# # Simulate the connection request with a cookie.
+# cookies["user_id"] = users(:john).id
+#
+# connect
+#
+# # Assert the connection identifier matches the fixture.
+# assert_equal users(:john).id, connection.user.id
+# end
+#
+# def test_rejects_connection_without_proper_cookie
+# assert_reject_connection { connect }
+# end
+# end
+#
+# +connect+ accepts additional information about the HTTP request with the
+# +params+, +headers+, +session+, and Rack +env+ options.
+#
+# def test_connect_with_headers_and_query_string
+# connect params: { user_id: 1 }, headers: { "X-API-TOKEN" => "secret-my" }
+#
+# assert_equal "1", connection.user.id
+# assert_equal "secret-my", connection.token
+# end
+#
+# def test_connect_with_params
+# connect params: { user_id: 1 }
+#
+# assert_equal "1", connection.user.id
+# end
+#
+# You can also set up the correct cookies before the connection request:
+#
+# def test_connect_with_cookies
+# # Plain cookies:
+# cookies["user_id"] = 1
+#
+# # Or signed/encrypted:
+# # cookies.signed["user_id"] = 1
+# # cookies.encrypted["user_id"] = 1
+#
+# connect
+#
+# assert_equal "1", connection.user_id
+# end
+#
+# == Connection is automatically inferred
+#
+# ActionCable::Connection::TestCase will automatically infer the connection under test
+# from the test class name. If the channel cannot be inferred from the test
+# class name, you can explicitly set it with +tests+.
+#
+# class ConnectionTest < ActionCable::Connection::TestCase
+# tests ApplicationCable::Connection
+# end
+#
+# source://actioncable//lib/action_cable/connection/test_case.rb#129
+class ActionCable::Connection::TestCase < ::ActiveSupport::TestCase
+ include ::ActiveSupport::Testing::ConstantLookup
+ include ::ActionCable::Connection::Assertions
+ include ::ActionCable::Connection::TestCase::Behavior
+ extend ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ extend ::ActionCable::Connection::TestCase::Behavior::ClassMethods
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#139
+ def _connection_class; end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#139
+ def _connection_class=(_arg0); end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#139
+ def _connection_class?; end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#141
+ def connection; end
+
+ class << self
+ # source://actioncable//lib/action_cable/connection/test_case.rb#139
+ def _connection_class; end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#139
+ def _connection_class=(value); end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#139
+ def _connection_class?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#130
+module ActionCable::Connection::TestCase::Behavior
+ include ::ActionCable::Connection::Assertions
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Testing::ConstantLookup
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods ::ActionCable::Connection::TestCase::Behavior::ClassMethods
+
+ # Performs connection attempt to exert #connect on the connection under test.
+ #
+ # Accepts request path as the first argument and the following request options:
+ #
+ # - params – URL parameters (Hash)
+ # - headers – request headers (Hash)
+ # - session – session data (Hash)
+ # - env – additional Rack env configuration (Hash)
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#183
+ def connect(path = T.unsafe(nil), **request_params); end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#203
+ def cookies; end
+
+ # Exert #disconnect on the connection under test.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#196
+ def disconnect; end
+
+ private
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#208
+ def build_test_request(path, params: T.unsafe(nil), headers: T.unsafe(nil), session: T.unsafe(nil), env: T.unsafe(nil)); end
+
+ module GeneratedClassMethods
+ def _connection_class; end
+ def _connection_class=(value); end
+ def _connection_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _connection_class; end
+ def _connection_class=(value); end
+ def _connection_class?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#146
+module ActionCable::Connection::TestCase::Behavior::ClassMethods
+ # source://actioncable//lib/action_cable/connection/test_case.rb#158
+ def connection_class; end
+
+ # @raise [NonInferrableConnectionError]
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#166
+ def determine_default_connection(name); end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#147
+ def tests(connection); end
+end
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#133
+ActionCable::Connection::TestCase::Behavior::DEFAULT_PATH = T.let(T.unsafe(nil), String)
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#47
+module ActionCable::Connection::TestConnection
+ # source://actioncable//lib/action_cable/connection/test_case.rb#50
+ def initialize(request); end
+
+ # Returns the value of attribute logger.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#48
+ def logger; end
+
+ # Returns the value of attribute request.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#48
+ def request; end
+end
+
+# We don't want to use the whole "encryption stack" for connection
+# unit-tests, but we want to make sure that users test against the correct types
+# of cookies (i.e. signed or encrypted or plain)
+#
+# source://actioncable//lib/action_cable/connection/test_case.rb#33
+class ActionCable::Connection::TestCookieJar < ::ActiveSupport::HashWithIndifferentAccess
+ # source://actioncable//lib/action_cable/connection/test_case.rb#38
+ def encrypted; end
+
+ # source://actioncable//lib/action_cable/connection/test_case.rb#34
+ def signed; end
+end
+
+# source://actioncable//lib/action_cable/connection/test_case.rb#43
+class ActionCable::Connection::TestRequest < ::ActionDispatch::TestRequest
+ # Returns the value of attribute cookie_jar.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#44
+ def cookie_jar; end
+
+ # Sets the attribute cookie_jar
+ #
+ # @param value the value to set the attribute cookie_jar to.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#44
+ def cookie_jar=(_arg0); end
+
+ # Returns the value of attribute session.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#44
+ def session; end
+
+ # Sets the attribute session
+ #
+ # @param value the value to set the attribute session to.
+ #
+ # source://actioncable//lib/action_cable/connection/test_case.rb#44
+ def session=(_arg0); end
+end
+
+# Wrap the real socket to minimize the externally-presented API
+#
+# source://actioncable//lib/action_cable/connection/web_socket.rb#8
+class ActionCable::Connection::WebSocket
+ # @return [WebSocket] a new instance of WebSocket
+ #
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#9
+ def initialize(env, event_target, event_loop, protocols: T.unsafe(nil)); end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#17
+ def alive?; end
+
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#25
+ def close; end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#13
+ def possible?; end
+
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#29
+ def protocol; end
+
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#33
+ def rack_response; end
+
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#21
+ def transmit(data); end
+
+ private
+
+ # Returns the value of attribute websocket.
+ #
+ # source://actioncable//lib/action_cable/connection/web_socket.rb#38
+ def websocket; end
+end
+
+# source://actioncable//lib/action_cable/engine.rb#9
+class ActionCable::Engine < ::Rails::Engine
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+ end
+end
+
+# source://actioncable//lib/action_cable/helpers/action_cable_helper.rb#4
+module ActionCable::Helpers; end
+
+# source://actioncable//lib/action_cable/helpers/action_cable_helper.rb#5
+module ActionCable::Helpers::ActionCableHelper
+ # Returns an "action-cable-url" meta tag with the value of the URL specified in your
+ # configuration. Ensure this is above your JavaScript tag:
+ #
+ #
+ # <%= action_cable_meta_tag %>
+ # <%= javascript_include_tag 'application', 'data-turbo-track' => 'reload' %>
+ #
+ #
+ # This is then used by Action Cable to determine the URL of your WebSocket server.
+ # Your JavaScript can then connect to the server without needing to specify the
+ # URL directly:
+ #
+ # import Cable from "@rails/actioncable"
+ # window.Cable = Cable
+ # window.App = {}
+ # App.cable = Cable.createConsumer()
+ #
+ # Make sure to specify the correct server location in each of your environment
+ # config files:
+ #
+ # config.action_cable.mount_path = "/cable123"
+ # <%= action_cable_meta_tag %> would render:
+ # =>
+ #
+ # config.action_cable.url = "ws://actioncable.com"
+ # <%= action_cable_meta_tag %> would render:
+ # =>
+ #
+ # source://actioncable//lib/action_cable/helpers/action_cable_helper.rb#34
+ def action_cable_meta_tag; end
+end
+
+# source://actioncable//lib/action_cable.rb#33
+ActionCable::INTERNAL = T.let(T.unsafe(nil), Hash)
+
+# If you need to disconnect a given connection, you can go through the
+# RemoteConnections. You can find the connections you're looking for by
+# searching for the identifier declared on the connection. For example:
+#
+# module ApplicationCable
+# class Connection < ActionCable::Connection::Base
+# identified_by :current_user
+# ....
+# end
+# end
+#
+# ActionCable.server.remote_connections.where(current_user: User.find(1)).disconnect
+#
+# This will disconnect all the connections established for
+# User.find(1), across all servers running on all machines, because
+# it uses the internal channel that all of these servers are subscribed to.
+#
+# source://actioncable//lib/action_cable/remote_connections.rb#22
+class ActionCable::RemoteConnections
+ # @return [RemoteConnections] a new instance of RemoteConnections
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#25
+ def initialize(server); end
+
+ # Returns the value of attribute server.
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#23
+ def server; end
+
+ # source://actioncable//lib/action_cable/remote_connections.rb#29
+ def where(identifier); end
+end
+
+# Represents a single remote connection found via ActionCable.server.remote_connections.where(*).
+# Exists solely for the purpose of calling #disconnect on that connection.
+#
+# source://actioncable//lib/action_cable/remote_connections.rb#36
+class ActionCable::RemoteConnections::RemoteConnection
+ include ::ActionCable::Connection::InternalChannel
+ include ::ActionCable::Connection::Identification
+ extend ::ActionCable::Connection::Identification::ClassMethods
+
+ # @return [RemoteConnection] a new instance of RemoteConnection
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#41
+ def initialize(server, ids); end
+
+ # Uses the internal channel to disconnect the connection.
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#47
+ def disconnect; end
+
+ # source://actioncable//lib/action_cable/remote_connections.rb#52
+ def identifiers; end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers=(_arg0); end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers?; end
+
+ protected
+
+ # Returns the value of attribute server.
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#57
+ def server; end
+
+ private
+
+ # @raise [InvalidIdentifiersError]
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#60
+ def set_identifier_instance_vars(ids); end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/remote_connections.rb#65
+ def valid_identifiers?(ids); end
+
+ class << self
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers; end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers=(value); end
+
+ # source://actioncable//lib/action_cable/connection/identification.rb#11
+ def identifiers?; end
+ end
+end
+
+# source://actioncable//lib/action_cable/remote_connections.rb#37
+class ActionCable::RemoteConnections::RemoteConnection::InvalidIdentifiersError < ::StandardError; end
+
+# source://actioncable//lib/action_cable/server.rb#4
+module ActionCable::Server
+ extend ::ActiveSupport::Autoload
+end
+
+# A singleton ActionCable::Server instance is available via ActionCable.server. It's used by the Rack process that starts the Action Cable server, but
+# is also used by the user to reach the RemoteConnections object, which is used for finding and disconnecting connections across all servers.
+#
+# Also, this is the server instance used for broadcasting. See Broadcasting for more information.
+#
+# source://actioncable//lib/action_cable/server/base.rb#11
+class ActionCable::Server::Base
+ include ::ActionCable::Server::Broadcasting
+ include ::ActionCable::Server::Connections
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#24
+ def initialize(config: T.unsafe(nil)); end
+
+ # Called by Rack to set up the server.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#31
+ def call(env); end
+
+ # Returns the value of attribute config.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#17
+ def config; end
+
+ # All of the identifiers applied to the connection class associated with this server.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#87
+ def connection_identifiers; end
+
+ # Disconnect all the connections identified by +identifiers+ on this server or any others via RemoteConnections.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#37
+ def disconnect(identifiers); end
+
+ # source://actioncable//lib/action_cable/server/base.rb#62
+ def event_loop; end
+
+ # source://actioncable//lib/action_cable/server/base.rb#20
+ def logger(*_arg0, **_arg1, &_arg2); end
+
+ # Returns the value of attribute mutex.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#22
+ def mutex; end
+
+ # Adapter used for all streams/broadcasting.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#82
+ def pubsub; end
+
+ # Gateway to RemoteConnections. See that class for details.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#58
+ def remote_connections; end
+
+ # source://actioncable//lib/action_cable/server/base.rb#41
+ def restart; end
+
+ # The worker pool is where we run connection callbacks and channel actions. We do as little as possible on the server's main thread.
+ # The worker pool is an executor service that's backed by a pool of threads working from a task queue. The thread pool size maxes out
+ # at 4 worker threads by default. Tune the size yourself with config.action_cable.worker_pool_size.
+ #
+ # Using Active Record, Redis, etc within your channel actions means you'll get a separate connection from each thread in the worker pool.
+ # Plan your deployment accordingly: 5 servers each running 5 Puma workers each running an 8-thread worker pool means at least 200 database
+ # connections.
+ #
+ # Also, ensure that your database connection pool size is as least as large as your worker pool size. Otherwise, workers may oversubscribe
+ # the database connection pool and block while they wait for other workers to release their connections. Use a smaller worker pool or a larger
+ # database connection pool instead.
+ #
+ # source://actioncable//lib/action_cable/server/base.rb#77
+ def worker_pool; end
+
+ class << self
+ # source://actioncable//lib/action_cable/server/base.rb#15
+ def config; end
+
+ # source://actioncable//lib/action_cable/server/base.rb#15
+ def config=(val); end
+
+ # source://actioncable//lib/action_cable/server/base.rb#19
+ def logger; end
+ end
+end
+
+# Broadcasting is how other parts of your application can send messages to a channel's subscribers. As explained in Channel, most of the time, these
+# broadcastings are streamed directly to the clients subscribed to the named broadcasting. Let's explain with a full-stack example:
+#
+# class WebNotificationsChannel < ApplicationCable::Channel
+# def subscribed
+# stream_from "web_notifications_#{current_user.id}"
+# end
+# end
+#
+# # Somewhere in your app this is called, perhaps from a NewCommentJob:
+# ActionCable.server.broadcast \
+# "web_notifications_1", { title: "New things!", body: "All that's fit for print" }
+#
+# # Client-side CoffeeScript, which assumes you've already requested the right to send web notifications:
+# App.cable.subscriptions.create "WebNotificationsChannel",
+# received: (data) ->
+# new Notification data['title'], body: data['body']
+#
+# source://actioncable//lib/action_cable/server/broadcasting.rb#22
+module ActionCable::Server::Broadcasting
+ # Broadcast a hash directly to a named broadcasting. This will later be JSON encoded.
+ #
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#24
+ def broadcast(broadcasting, message, coder: T.unsafe(nil)); end
+
+ # Returns a broadcaster for a named broadcasting that can be reused. Useful when you have an object that
+ # may need multiple spots to transmit to a specific broadcasting over and over.
+ #
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#30
+ def broadcaster_for(broadcasting, coder: T.unsafe(nil)); end
+end
+
+# source://actioncable//lib/action_cable/server/broadcasting.rb#35
+class ActionCable::Server::Broadcasting::Broadcaster
+ # @return [Broadcaster] a new instance of Broadcaster
+ #
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#38
+ def initialize(server, broadcasting, coder:); end
+
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#42
+ def broadcast(message); end
+
+ # Returns the value of attribute broadcasting.
+ #
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#36
+ def broadcasting; end
+
+ # Returns the value of attribute coder.
+ #
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#36
+ def coder; end
+
+ # Returns the value of attribute server.
+ #
+ # source://actioncable//lib/action_cable/server/broadcasting.rb#36
+ def server; end
+end
+
+# An instance of this configuration object is available via ActionCable.server.config, which allows you to tweak Action Cable configuration
+# in a Rails config initializer.
+#
+# source://actioncable//lib/action_cable/server/configuration.rb#7
+class ActionCable::Server::Configuration
+ # @return [Configuration] a new instance of Configuration
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#14
+ def initialize; end
+
+ # Returns the value of attribute allow_same_origin_as_host.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#10
+ def allow_same_origin_as_host; end
+
+ # Sets the attribute allow_same_origin_as_host
+ #
+ # @param value the value to set the attribute allow_same_origin_as_host to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#10
+ def allow_same_origin_as_host=(_arg0); end
+
+ # Returns the value of attribute allowed_request_origins.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#10
+ def allowed_request_origins; end
+
+ # Sets the attribute allowed_request_origins
+ #
+ # @param value the value to set the attribute allowed_request_origins to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#10
+ def allowed_request_origins=(_arg0); end
+
+ # Returns the value of attribute cable.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#11
+ def cable; end
+
+ # Sets the attribute cable
+ #
+ # @param value the value to set the attribute cable to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#11
+ def cable=(_arg0); end
+
+ # Returns the value of attribute connection_class.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#9
+ def connection_class; end
+
+ # Sets the attribute connection_class
+ #
+ # @param value the value to set the attribute connection_class to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#9
+ def connection_class=(_arg0); end
+
+ # Returns the value of attribute disable_request_forgery_protection.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#10
+ def disable_request_forgery_protection; end
+
+ # Sets the attribute disable_request_forgery_protection
+ #
+ # @param value the value to set the attribute disable_request_forgery_protection to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#10
+ def disable_request_forgery_protection=(_arg0); end
+
+ # Returns the value of attribute log_tags.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#8
+ def log_tags; end
+
+ # Sets the attribute log_tags
+ #
+ # @param value the value to set the attribute log_tags to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#8
+ def log_tags=(_arg0); end
+
+ # Returns the value of attribute logger.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#8
+ def logger; end
+
+ # Sets the attribute logger
+ #
+ # @param value the value to set the attribute logger to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#8
+ def logger=(_arg0); end
+
+ # Returns the value of attribute mount_path.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#11
+ def mount_path; end
+
+ # Sets the attribute mount_path
+ #
+ # @param value the value to set the attribute mount_path to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#11
+ def mount_path=(_arg0); end
+
+ # Returns the value of attribute precompile_assets.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#12
+ def precompile_assets; end
+
+ # Sets the attribute precompile_assets
+ #
+ # @param value the value to set the attribute precompile_assets to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#12
+ def precompile_assets=(_arg0); end
+
+ # Returns constant of subscription adapter specified in config/cable.yml.
+ # If the adapter cannot be found, this will default to the Redis adapter.
+ # Also makes sure proper dependencies are required.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#27
+ def pubsub_adapter; end
+
+ # Returns the value of attribute url.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#11
+ def url; end
+
+ # Sets the attribute url
+ #
+ # @param value the value to set the attribute url to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#11
+ def url=(_arg0); end
+
+ # Returns the value of attribute worker_pool_size.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#9
+ def worker_pool_size; end
+
+ # Sets the attribute worker_pool_size
+ #
+ # @param value the value to set the attribute worker_pool_size to.
+ #
+ # source://actioncable//lib/action_cable/server/configuration.rb#9
+ def worker_pool_size=(_arg0); end
+end
+
+# Collection class for all the connections that have been established on this specific server. Remember, usually you'll run many Action Cable servers, so
+# you can't use this collection as a full list of all of the connections established against your application. Instead, use RemoteConnections for that.
+#
+# source://actioncable//lib/action_cable/server/connections.rb#7
+module ActionCable::Server::Connections
+ # source://actioncable//lib/action_cable/server/connections.rb#14
+ def add_connection(connection); end
+
+ # source://actioncable//lib/action_cable/server/connections.rb#10
+ def connections; end
+
+ # source://actioncable//lib/action_cable/server/connections.rb#31
+ def open_connections_statistics; end
+
+ # source://actioncable//lib/action_cable/server/connections.rb#18
+ def remove_connection(connection); end
+
+ # WebSocket connection implementations differ on when they'll mark a connection as stale. We basically never want a connection to go stale, as you
+ # then can't rely on being able to communicate with the connection. To solve this, a 3 second heartbeat runs on all connections. If the beat fails, we automatically
+ # disconnect.
+ #
+ # source://actioncable//lib/action_cable/server/connections.rb#25
+ def setup_heartbeat_timer; end
+end
+
+# source://actioncable//lib/action_cable/server/connections.rb#8
+ActionCable::Server::Connections::BEAT_INTERVAL = T.let(T.unsafe(nil), Integer)
+
+# Worker used by Server.send_async to do connection work in threads.
+#
+# source://actioncable//lib/action_cable/server/worker/active_record_connection_management.rb#5
+class ActionCable::Server::Worker
+ include ::ActiveSupport::Callbacks
+ include ::ActionCable::Server::Worker::ActiveRecordConnectionManagement
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::ActiveSupport::DescendantsTracker
+
+ # @return [Worker] a new instance of Worker
+ #
+ # source://actioncable//lib/action_cable/server/worker.rb#20
+ def initialize(max_size: T.unsafe(nil)); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_work_callbacks(&block); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _work_callbacks; end
+
+ # source://actioncable//lib/action_cable/server/worker.rb#47
+ def async_exec(receiver, *args, connection:, &block); end
+
+ # source://actioncable//lib/action_cable/server/worker.rb#51
+ def async_invoke(receiver, method, *args, connection: T.unsafe(nil), &block); end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#56
+ def connection; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#100
+ def connection=(obj); end
+
+ # Returns the value of attribute executor.
+ #
+ # source://actioncable//lib/action_cable/server/worker.rb#18
+ def executor; end
+
+ # Stop processing work: any work that has not already started
+ # running will be discarded from the queue
+ #
+ # source://actioncable//lib/action_cable/server/worker.rb#31
+ def halt; end
+
+ # source://actioncable//lib/action_cable/server/worker.rb#57
+ def invoke(receiver, method, *args, connection:, &block); end
+
+ # @return [Boolean]
+ #
+ # source://actioncable//lib/action_cable/server/worker.rb#35
+ def stopping?; end
+
+ # source://actioncable//lib/action_cable/server/worker.rb#39
+ def work(connection, &block); end
+
+ private
+
+ # source://actioncable//lib/action_cable/server/worker.rb#69
+ def logger; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _work_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _work_callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#48
+ def connection; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attribute_accessors_per_thread.rb#92
+ def connection=(obj); end
+ end
+end
+
+# source://actioncable//lib/action_cable/server/worker/active_record_connection_management.rb#6
+module ActionCable::Server::Worker::ActiveRecordConnectionManagement
+ extend ::ActiveSupport::Concern
+
+ # source://actioncable//lib/action_cable/server/worker/active_record_connection_management.rb#15
+ def with_database_connections(&block); end
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter.rb#4
+module ActionCable::SubscriptionAdapter
+ extend ::ActiveSupport::Autoload
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter/async.rb#7
+class ActionCable::SubscriptionAdapter::Async < ::ActionCable::SubscriptionAdapter::Inline
+ private
+
+ # source://actioncable//lib/action_cable/subscription_adapter/async.rb#9
+ def new_subscriber_map; end
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter/async.rb#13
+class ActionCable::SubscriptionAdapter::Async::AsyncSubscriberMap < ::ActionCable::SubscriptionAdapter::SubscriberMap
+ # @return [AsyncSubscriberMap] a new instance of AsyncSubscriberMap
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/async.rb#14
+ def initialize(event_loop); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/async.rb#19
+ def add_subscriber(*_arg0); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/async.rb#23
+ def invoke_callback(*_arg0); end
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter/base.rb#5
+class ActionCable::SubscriptionAdapter::Base
+ # @return [Base] a new instance of Base
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#8
+ def initialize(server); end
+
+ # @raise [NotImplementedError]
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#13
+ def broadcast(channel, payload); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#29
+ def identifier; end
+
+ # Returns the value of attribute logger.
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#6
+ def logger; end
+
+ # Returns the value of attribute server.
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#6
+ def server; end
+
+ # @raise [NotImplementedError]
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#25
+ def shutdown; end
+
+ # @raise [NotImplementedError]
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#17
+ def subscribe(channel, message_callback, success_callback = T.unsafe(nil)); end
+
+ # @raise [NotImplementedError]
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/base.rb#21
+ def unsubscribe(channel, message_callback); end
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter/channel_prefix.rb#5
+module ActionCable::SubscriptionAdapter::ChannelPrefix
+ # source://actioncable//lib/action_cable/subscription_adapter/channel_prefix.rb#6
+ def broadcast(channel, payload); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/channel_prefix.rb#11
+ def subscribe(channel, callback, success_callback = T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/channel_prefix.rb#16
+ def unsubscribe(channel, callback); end
+
+ private
+
+ # Returns the channel name, including channel_prefix specified in cable.yml
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/channel_prefix.rb#23
+ def channel_with_prefix(channel); end
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter/inline.rb#5
+class ActionCable::SubscriptionAdapter::Inline < ::ActionCable::SubscriptionAdapter::Base
+ # @return [Inline] a new instance of Inline
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#6
+ def initialize(*_arg0); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#11
+ def broadcast(channel, payload); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#23
+ def shutdown; end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#15
+ def subscribe(channel, callback, success_callback = T.unsafe(nil)); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#19
+ def unsubscribe(channel, callback); end
+
+ private
+
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#32
+ def new_subscriber_map; end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/inline.rb#28
+ def subscriber_map; end
+end
+
+# source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#5
+class ActionCable::SubscriptionAdapter::SubscriberMap
+ # @return [SubscriberMap] a new instance of SubscriberMap
+ #
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#6
+ def initialize; end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#47
+ def add_channel(channel, on_success); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#11
+ def add_subscriber(channel, subscriber, on_success); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#36
+ def broadcast(channel, message); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#54
+ def invoke_callback(callback, message); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#51
+ def remove_channel(channel); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/subscriber_map.rb#25
+ def remove_subscriber(channel, subscriber); end
+end
+
+# == Test adapter for Action Cable
+#
+# The test adapter should be used only in testing. Along with
+# ActionCable::TestHelper it makes a great tool to test your Rails application.
+#
+# To use the test adapter set +adapter+ value to +test+ in your +config/cable.yml+ file.
+#
+# NOTE: Test adapter extends the ActionCable::SubscriptionsAdapter::Async adapter,
+# so it could be used in system tests too.
+#
+# source://actioncable//lib/action_cable/subscription_adapter/test.rb#16
+class ActionCable::SubscriptionAdapter::Test < ::ActionCable::SubscriptionAdapter::Async
+ # source://actioncable//lib/action_cable/subscription_adapter/test.rb#17
+ def broadcast(channel, payload); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/test.rb#22
+ def broadcasts(channel); end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/test.rb#30
+ def clear; end
+
+ # source://actioncable//lib/action_cable/subscription_adapter/test.rb#26
+ def clear_messages(channel); end
+
+ private
+
+ # source://actioncable//lib/action_cable/subscription_adapter/test.rb#35
+ def channels_data; end
+end
+
+# source://actioncable//lib/action_cable/test_case.rb#6
+class ActionCable::TestCase < ::ActiveSupport::TestCase
+ include ::ActionCable::TestHelper
+end
+
+# Provides helper methods for testing Action Cable broadcasting
+#
+# source://actioncable//lib/action_cable/test_helper.rb#5
+module ActionCable::TestHelper
+ # source://actioncable//lib/action_cable/test_helper.rb#16
+ def after_teardown; end
+
+ # Asserts that the specified message has been sent to the stream.
+ #
+ # def test_assert_transmitted_message
+ # ActionCable.server.broadcast 'messages', text: 'hello'
+ # assert_broadcast_on('messages', text: 'hello')
+ # end
+ #
+ # If a block is passed, that block should cause a message with the specified data to be sent.
+ #
+ # def test_assert_broadcast_on_again
+ # assert_broadcast_on('messages', text: 'hello') do
+ # ActionCable.server.broadcast 'messages', text: 'hello'
+ # end
+ # end
+ #
+ # source://actioncable//lib/action_cable/test_helper.rb#97
+ def assert_broadcast_on(stream, data, &block); end
+
+ # Asserts that the number of broadcasted messages to the stream matches the given number.
+ #
+ # def test_broadcasts
+ # assert_broadcasts 'messages', 0
+ # ActionCable.server.broadcast 'messages', { text: 'hello' }
+ # assert_broadcasts 'messages', 1
+ # ActionCable.server.broadcast 'messages', { text: 'world' }
+ # assert_broadcasts 'messages', 2
+ # end
+ #
+ # If a block is passed, that block should cause the specified number of
+ # messages to be broadcasted.
+ #
+ # def test_broadcasts_again
+ # assert_broadcasts('messages', 1) do
+ # ActionCable.server.broadcast 'messages', { text: 'hello' }
+ # end
+ #
+ # assert_broadcasts('messages', 2) do
+ # ActionCable.server.broadcast 'messages', { text: 'hi' }
+ # ActionCable.server.broadcast 'messages', { text: 'how are you?' }
+ # end
+ # end
+ #
+ # source://actioncable//lib/action_cable/test_helper.rb#45
+ def assert_broadcasts(stream, number, &block); end
+
+ # Asserts that no messages have been sent to the stream.
+ #
+ # def test_no_broadcasts
+ # assert_no_broadcasts 'messages'
+ # ActionCable.server.broadcast 'messages', { text: 'hi' }
+ # assert_broadcasts 'messages', 1
+ # end
+ #
+ # If a block is passed, that block should not cause any message to be sent.
+ #
+ # def test_broadcasts_again
+ # assert_no_broadcasts 'messages' do
+ # # No job messages should be sent from this block
+ # end
+ # end
+ #
+ # Note: This assertion is simply a shortcut for:
+ #
+ # assert_broadcasts 'messages', 0, &block
+ #
+ # source://actioncable//lib/action_cable/test_helper.rb#78
+ def assert_no_broadcasts(stream, &block); end
+
+ # source://actioncable//lib/action_cable/test_helper.rb#6
+ def before_setup; end
+
+ # source://actioncable//lib/action_cable/test_helper.rb#126
+ def broadcasts(*_arg0, **_arg1, &_arg2); end
+
+ # source://actioncable//lib/action_cable/test_helper.rb#126
+ def clear_messages(*_arg0, **_arg1, &_arg2); end
+
+ # source://actioncable//lib/action_cable/test_helper.rb#122
+ def pubsub_adapter; end
+
+ private
+
+ # source://actioncable//lib/action_cable/test_helper.rb#129
+ def broadcasts_size(channel); end
+end
+
+# source://actioncable//lib/action_cable/gem_version.rb#9
+module ActionCable::VERSION; end
+
+# source://actioncable//lib/action_cable/gem_version.rb#10
+ActionCable::VERSION::MAJOR = T.let(T.unsafe(nil), Integer)
+
+# source://actioncable//lib/action_cable/gem_version.rb#11
+ActionCable::VERSION::MINOR = T.let(T.unsafe(nil), Integer)
+
+# source://actioncable//lib/action_cable/gem_version.rb#13
+ActionCable::VERSION::PRE = T.let(T.unsafe(nil), T.untyped)
+
+# source://actioncable//lib/action_cable/gem_version.rb#15
+ActionCable::VERSION::STRING = T.let(T.unsafe(nil), String)
+
+# source://actioncable//lib/action_cable/gem_version.rb#12
+ActionCable::VERSION::TINY = T.let(T.unsafe(nil), Integer)
diff --git a/sorbet/rbi/gems/actionmailbox@7.0.6.rbi b/sorbet/rbi/gems/actionmailbox@7.0.6.rbi
new file mode 100644
index 000000000..3330434ab
--- /dev/null
+++ b/sorbet/rbi/gems/actionmailbox@7.0.6.rbi
@@ -0,0 +1,1773 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actionmailbox` gem.
+# Please instead update this file by running `bin/tapioca gem actionmailbox`.
+
+# source://actionmailbox//lib/action_mailbox.rb#5
+module ActionMailbox
+ extend ::ActiveSupport::Autoload
+
+ # source://actionmailbox//lib/action_mailbox.rb#14
+ def incinerate; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#14
+ def incinerate=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#15
+ def incinerate_after; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#15
+ def incinerate_after=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#12
+ def ingress; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#12
+ def ingress=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#13
+ def logger; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#13
+ def logger=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#16
+ def queues; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#16
+ def queues=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#17
+ def storage_service; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#17
+ def storage_service=(val); end
+
+ class << self
+ # source://actionmailbox//lib/action_mailbox.rb#14
+ def incinerate; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#14
+ def incinerate=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#15
+ def incinerate_after; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#15
+ def incinerate_after=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#12
+ def ingress; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#12
+ def ingress=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#13
+ def logger; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#13
+ def logger=(val); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#16
+ def queues; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#16
+ def queues=(val); end
+
+ # source://railties/7.0.6/lib/rails/engine.rb#405
+ def railtie_helpers_paths; end
+
+ # source://railties/7.0.6/lib/rails/engine.rb#394
+ def railtie_namespace; end
+
+ # source://railties/7.0.6/lib/rails/engine.rb#409
+ def railtie_routes_url_helpers(include_path_helpers = T.unsafe(nil)); end
+
+ # source://actionmailbox//lib/action_mailbox.rb#17
+ def storage_service; end
+
+ # source://actionmailbox//lib/action_mailbox.rb#17
+ def storage_service=(val); end
+
+ # source://railties/7.0.6/lib/rails/engine.rb#397
+ def table_name_prefix; end
+
+ # source://railties/7.0.6/lib/rails/engine.rb#401
+ def use_relative_model_naming?; end
+ end
+end
+
+# The base class for all application mailboxes. Not intended to be inherited from directly. Inherit from
+# +ApplicationMailbox+ instead, as that's where the app-specific routing is configured. This routing
+# is specified in the following ways:
+#
+# class ApplicationMailbox < ActionMailbox::Base
+# # Any of the recipients of the mail (whether to, cc, bcc) are matched against the regexp.
+# routing /^replies@/i => :replies
+#
+# # Any of the recipients of the mail (whether to, cc, bcc) needs to be an exact match for the string.
+# routing "help@example.com" => :help
+#
+# # Any callable (proc, lambda, etc) object is passed the inbound_email record and is a match if true.
+# routing ->(inbound_email) { inbound_email.mail.to.size > 2 } => :multiple_recipients
+#
+# # Any object responding to #match? is called with the inbound_email record as an argument. Match if true.
+# routing CustomAddress.new => :custom
+#
+# # Any inbound_email that has not been already matched will be sent to the BackstopMailbox.
+# routing :all => :backstop
+# end
+#
+# Application mailboxes need to override the #process method, which is invoked by the framework after
+# callbacks have been run. The callbacks available are: +before_processing+, +after_processing+, and
+# +around_processing+. The primary use case is ensure certain preconditions to processing are fulfilled
+# using +before_processing+ callbacks.
+#
+# If a precondition fails to be met, you can halt the processing using the +#bounced!+ method,
+# which will silently prevent any further processing, but not actually send out any bounce notice. You
+# can also pair this behavior with the invocation of an Action Mailer class responsible for sending out
+# an actual bounce email. This is done using the #bounce_with method, which takes the mail object returned
+# by an Action Mailer method, like so:
+#
+# class ForwardsMailbox < ApplicationMailbox
+# before_processing :ensure_sender_is_a_user
+#
+# private
+# def ensure_sender_is_a_user
+# unless User.exist?(email_address: mail.from)
+# bounce_with UserRequiredMailer.missing(inbound_email)
+# end
+# end
+# end
+#
+# During the processing of the inbound email, the status will be tracked. Before processing begins,
+# the email will normally have the +pending+ status. Once processing begins, just before callbacks
+# and the #process method is called, the status is changed to +processing+. If processing is allowed to
+# complete, the status is changed to +delivered+. If a bounce is triggered, then +bounced+. If an unhandled
+# exception is bubbled up, then +failed+.
+#
+# Exceptions can be handled at the class level using the familiar
+# ActiveSupport::Rescuable approach:
+#
+# class ForwardsMailbox < ApplicationMailbox
+# rescue_from(ApplicationSpecificVerificationError) { bounced! }
+# end
+#
+# source://actionmailbox//lib/action_mailbox/base.rb#64
+class ActionMailbox::Base
+ include ::ActiveSupport::Rescuable
+ include ::ActionMailbox::Routing
+ include ::ActiveSupport::Callbacks
+ include ::ActionMailbox::Callbacks
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionMailbox::Routing::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::ActiveSupport::DescendantsTracker
+ extend ::ActionMailbox::Callbacks::ClassMethods
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#77
+ def initialize(inbound_email); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _process_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_process_callbacks(&block); end
+
+ # Enqueues the given +message+ for delivery and changes the inbound email's status to +:bounced+.
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#102
+ def bounce_with(message); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#69
+ def bounced!(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#69
+ def delivered!(*_arg0, **_arg1, &_arg2); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#96
+ def finished_processing?; end
+
+ # Returns the value of attribute inbound_email.
+ #
+ # source://actionmailbox//lib/action_mailbox/base.rb#68
+ def inbound_email; end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#71
+ def logger(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#69
+ def mail(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#81
+ def perform_processing; end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#92
+ def process; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router=(val); end
+
+ private
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#108
+ def track_status_of_inbound_email; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _process_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _process_callbacks=(value); end
+
+ # source://actionmailbox//lib/action_mailbox/base.rb#73
+ def receive(inbound_email); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router; end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#9
+ def router=(val); end
+ end
+end
+
+class ActionMailbox::BaseController < ::ActionController::Base
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def authenticate_by_password; end
+ def ensure_configured; end
+ def ingress_name; end
+ def password; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+# Defines the callbacks related to processing.
+#
+# source://actionmailbox//lib/action_mailbox/callbacks.rb#7
+module ActionMailbox::Callbacks
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::ActionMailbox::Callbacks::ClassMethods
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/callbacks.rb#0
+module ActionMailbox::Callbacks::ClassMethods
+ # source://actionmailbox//lib/action_mailbox/callbacks.rb#25
+ def after_processing(*methods, &block); end
+
+ # source://actionmailbox//lib/action_mailbox/callbacks.rb#29
+ def around_processing(*methods, &block); end
+
+ # source://actionmailbox//lib/action_mailbox/callbacks.rb#21
+ def before_processing(*methods, &block); end
+end
+
+# source://actionmailbox//lib/action_mailbox/callbacks.rb#11
+ActionMailbox::Callbacks::TERMINATOR = T.let(T.unsafe(nil), Proc)
+
+# source://actionmailbox//lib/action_mailbox/engine.rb#12
+class ActionMailbox::Engine < ::Rails::Engine
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+ end
+end
+
+class ActionMailbox::InboundEmail < ::ActionMailbox::Record
+ include ::ActionMailbox::InboundEmail::GeneratedAttributeMethods
+ include ::ActionMailbox::InboundEmail::GeneratedAssociationMethods
+ include ::ActionMailbox::InboundEmail::Routable
+ include ::ActionMailbox::InboundEmail::MessageId
+ include ::ActionMailbox::InboundEmail::Incineratable
+ extend ::ActionMailbox::InboundEmail::MessageId::ClassMethods
+
+ # source://activerecord/7.0.6/lib/active_record/autosave_association.rb#160
+ def autosave_associated_records_for_raw_email_attachment(*args); end
+
+ # source://activerecord/7.0.6/lib/active_record/autosave_association.rb#160
+ def autosave_associated_records_for_raw_email_blob(*args); end
+
+ def mail; end
+ def processed?; end
+ def source; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activerecord/7.0.6/lib/active_record/reflection.rb#11
+ def _reflections; end
+
+ # source://activemodel/7.0.6/lib/active_model/validations.rb#52
+ def _validators; end
+
+ # source://activestorage/7.0.6/lib/active_storage/reflection.rb#53
+ def attachment_reflections; end
+
+ # source://activerecord/7.0.6/lib/active_record/attributes.rb#11
+ def attributes_to_define_after_schema_loads; end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def bounced(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/enum.rb#116
+ def defined_enums; end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def delivered(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def failed(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def not_bounced(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def not_delivered(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def not_failed(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def not_pending(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def not_processing(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def pending(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def processing(*args, **_arg1); end
+
+ # source://activerecord/7.0.6/lib/active_record/enum.rb#188
+ def statuses; end
+
+ # source://activerecord/7.0.6/lib/active_record/scoping/named.rb#174
+ def with_attached_raw_email(*args, **_arg1); end
+ end
+end
+
+module ActionMailbox::InboundEmail::GeneratedAssociationMethods
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#28
+ def build_raw_email_attachment(*args, &block); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#28
+ def build_raw_email_blob(*args, &block); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#32
+ def create_raw_email_attachment(*args, &block); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#36
+ def create_raw_email_attachment!(*args, &block); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#32
+ def create_raw_email_blob(*args, &block); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#36
+ def create_raw_email_blob!(*args, &block); end
+
+ # source://activestorage/7.0.6/lib/active_storage/attached/model.rb#55
+ def raw_email; end
+
+ # source://activestorage/7.0.6/lib/active_storage/attached/model.rb#60
+ def raw_email=(attachable); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/association.rb#103
+ def raw_email_attachment; end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/association.rb#111
+ def raw_email_attachment=(value); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/association.rb#103
+ def raw_email_blob; end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/association.rb#111
+ def raw_email_blob=(value); end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#19
+ def reload_raw_email_attachment; end
+
+ # source://activerecord/7.0.6/lib/active_record/associations/builder/singular_association.rb#19
+ def reload_raw_email_blob; end
+end
+
+module ActionMailbox::InboundEmail::GeneratedAttributeMethods; end
+
+module ActionMailbox::InboundEmail::Incineratable
+ extend ::ActiveSupport::Concern
+
+ def incinerate; end
+ def incinerate_later; end
+end
+
+class ActionMailbox::InboundEmail::Incineratable::Incineration
+ def initialize(inbound_email); end
+
+ def run; end
+
+ private
+
+ def due?; end
+ def processed?; end
+end
+
+module ActionMailbox::InboundEmail::MessageId
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailbox::InboundEmail::MessageId::ClassMethods
+end
+
+module ActionMailbox::InboundEmail::MessageId::ClassMethods
+ def create_and_extract_message_id!(source, **options); end
+
+ private
+
+ def create_and_upload_raw_email!(source); end
+ def extract_message_id(source); end
+ def generate_missing_message_id(message_checksum); end
+end
+
+module ActionMailbox::InboundEmail::Routable
+ extend ::ActiveSupport::Concern
+
+ def route; end
+ def route_later; end
+end
+
+class ActionMailbox::IncinerationJob < ::ActiveJob::Base
+ def perform(inbound_email); end
+
+ class << self
+ # source://activejob/7.0.6/lib/active_job/queue_name.rb#55
+ def queue_name; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ def schedule(inbound_email); end
+ end
+end
+
+module ActionMailbox::Ingresses; end
+module ActionMailbox::Ingresses::Mailgun; end
+
+class ActionMailbox::Ingresses::Mailgun::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def authenticate; end
+ def authenticated?; end
+ def key; end
+ def mail; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class ActionMailbox::Ingresses::Mailgun::InboundEmailsController::Authenticator
+ def initialize(key:, timestamp:, token:, signature:); end
+
+ def authenticated?; end
+ def key; end
+ def signature; end
+ def timestamp; end
+ def token; end
+
+ private
+
+ def expected_signature; end
+ def recent?; end
+ def signed?; end
+end
+
+module ActionMailbox::Ingresses::Mandrill; end
+
+class ActionMailbox::Ingresses::Mandrill::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+ def health_check; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def authenticate; end
+ def authenticated?; end
+ def events; end
+ def key; end
+ def raw_emails; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class ActionMailbox::Ingresses::Mandrill::InboundEmailsController::Authenticator
+ def initialize(request, key); end
+
+ def authenticated?; end
+ def key; end
+ def request; end
+
+ private
+
+ def expected_signature; end
+ def given_signature; end
+ def message; end
+end
+
+module ActionMailbox::Ingresses::Postmark; end
+
+class ActionMailbox::Ingresses::Postmark::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+module ActionMailbox::Ingresses::Relay; end
+
+class ActionMailbox::Ingresses::Relay::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def require_valid_rfc822_message; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+module ActionMailbox::Ingresses::Sendgrid; end
+
+class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController < ::ActionMailbox::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def envelope; end
+ def mail; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class ActionMailbox::Record < ::ActiveRecord::Base
+ include ::ActionMailbox::Record::GeneratedAttributeMethods
+ include ::ActionMailbox::Record::GeneratedAssociationMethods
+
+ class << self
+ # source://activemodel/7.0.6/lib/active_model/validations.rb#52
+ def _validators; end
+
+ # source://activerecord/7.0.6/lib/active_record/enum.rb#116
+ def defined_enums; end
+ end
+end
+
+module ActionMailbox::Record::GeneratedAssociationMethods; end
+module ActionMailbox::Record::GeneratedAttributeMethods; end
+
+# Encapsulates the routes that live on the ApplicationMailbox and performs the actual routing when
+# an inbound_email is received.
+#
+# source://actionmailbox//lib/action_mailbox/router.rb#6
+class ActionMailbox::Router
+ # @return [Router] a new instance of Router
+ #
+ # source://actionmailbox//lib/action_mailbox/router.rb#9
+ def initialize; end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#19
+ def add_route(address, to:); end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#13
+ def add_routes(routes); end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#33
+ def mailbox_for(inbound_email); end
+
+ # source://actionmailbox//lib/action_mailbox/router.rb#23
+ def route(inbound_email); end
+
+ private
+
+ # Returns the value of attribute routes.
+ #
+ # source://actionmailbox//lib/action_mailbox/router.rb#38
+ def routes; end
+end
+
+# source://actionmailbox//lib/action_mailbox/router/route.rb#7
+class ActionMailbox::Router::Route
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#10
+ def initialize(address, to:); end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#8
+ def address; end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#31
+ def mailbox_class; end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#8
+ def mailbox_name; end
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#16
+ def match?(inbound_email); end
+
+ private
+
+ # source://actionmailbox//lib/action_mailbox/router/route.rb#36
+ def ensure_valid_address; end
+end
+
+# source://actionmailbox//lib/action_mailbox/router.rb#7
+class ActionMailbox::Router::RoutingError < ::StandardError; end
+
+# See ActionMailbox::Base for how to specify routing.
+#
+# source://actionmailbox//lib/action_mailbox/routing.rb#5
+module ActionMailbox::Routing
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailbox::Routing::ClassMethods
+end
+
+# source://actionmailbox//lib/action_mailbox/routing.rb#0
+module ActionMailbox::Routing::ClassMethods
+ # source://actionmailbox//lib/action_mailbox/routing.rb#21
+ def mailbox_for(inbound_email); end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#17
+ def route(inbound_email); end
+
+ # source://actionmailbox//lib/action_mailbox/routing.rb#13
+ def routing(routes); end
+end
+
+class ActionMailbox::RoutingJob < ::ActiveJob::Base
+ def perform(inbound_email); end
+
+ class << self
+ # source://activejob/7.0.6/lib/active_job/queue_name.rb#55
+ def queue_name; end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/test_case.rb#7
+class ActionMailbox::TestCase < ::ActiveSupport::TestCase
+ include ::ActionMailbox::TestHelper
+end
+
+# source://actionmailbox//lib/action_mailbox/test_helper.rb#6
+module ActionMailbox::TestHelper
+ # Create an InboundEmail record using an eml fixture in the format of message/rfc822
+ # referenced with +fixture_name+ located in +test/fixtures/files/fixture_name+.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#9
+ def create_inbound_email_from_fixture(fixture_name, status: T.unsafe(nil)); end
+
+ # Creates an InboundEmail by specifying through options or a block.
+ #
+ # ==== Options
+ #
+ # * :status - The +status+ to set for the created InboundEmail.
+ # For possible statuses, see its documentation.
+ #
+ # ==== Creating a simple email
+ #
+ # When you only need to set basic fields like +from+, +to+, +subject+, and
+ # +body+, you can pass them directly as options.
+ #
+ # create_inbound_email_from_mail(from: "david@loudthinking.com", subject: "Hello!")
+ #
+ # ==== Creating a multi-part email
+ #
+ # When you need to create a more intricate email, like a multi-part email
+ # that contains both a plaintext version and an HTML version, you can pass a
+ # block.
+ #
+ # create_inbound_email_from_mail do
+ # to "David Heinemeier Hansson "
+ # from "Bilbo Baggins "
+ # subject "Come down to the Shire!"
+ #
+ # text_part do
+ # body "Please join us for a party at Bag End"
+ # end
+ #
+ # html_part do
+ # body "
Please join us for a party at Bag End
"
+ # end
+ # end
+ #
+ # As with +Mail.new+, you can also use a block parameter to define the parts
+ # of the message:
+ #
+ # create_inbound_email_from_mail do |mail|
+ # mail.to "David Heinemeier Hansson "
+ # mail.from "Bilbo Baggins "
+ # mail.subject "Come down to the Shire!"
+ #
+ # mail.text_part do |part|
+ # part.body "Please join us for a party at Bag End"
+ # end
+ #
+ # mail.html_part do |part|
+ # part.body "
Please join us for a party at Bag End
"
+ # end
+ # end
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#63
+ def create_inbound_email_from_mail(status: T.unsafe(nil), **mail_options, &block); end
+
+ # Create an InboundEmail using the raw rfc822 +source+ as text.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#72
+ def create_inbound_email_from_source(source, status: T.unsafe(nil)); end
+
+ # Create an InboundEmail from fixture using the same arguments as create_inbound_email_from_fixture
+ # and immediately route it to processing.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#79
+ def receive_inbound_email_from_fixture(*args); end
+
+ # Create an InboundEmail using the same options or block as
+ # create_inbound_email_from_mail, then immediately route it for processing.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#85
+ def receive_inbound_email_from_mail(**kwargs, &block); end
+
+ # Create an InboundEmail using the same arguments as create_inbound_email_from_source and immediately route it
+ # to processing.
+ #
+ # source://actionmailbox//lib/action_mailbox/test_helper.rb#91
+ def receive_inbound_email_from_source(*args); end
+end
+
+# source://actionmailbox//lib/action_mailbox/mail_ext/address_equality.rb#3
+module Mail
+ class << self
+ # source://mail/2.8.1/lib/mail/mail.rb#163
+ def all(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#183
+ def connection(&block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#98
+ def defaults(&block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#174
+ def delete_all(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#131
+ def deliver(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#103
+ def delivery_method; end
+
+ # source://mail/2.8.1/lib/mail.rb#35
+ def eager_autoload!; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#139
+ def find(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#145
+ def find_and_delete(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#151
+ def first(*args, &block); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/from_source.rb#4
+ def from_source(source); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#233
+ def inform_interceptors(mail); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#227
+ def inform_observers(mail); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#157
+ def last(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#50
+ def new(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#243
+ def random_tag; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#168
+ def read(filename); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#179
+ def read_from_string(mail_as_string); end
+
+ # source://mail/2.8.1/lib/mail.rb#23
+ def register_autoload(name, path); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#215
+ def register_interceptor(interceptor); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#196
+ def register_observer(observer); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#108
+ def retriever_method; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#252
+ def something_random; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#256
+ def uniq; end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#223
+ def unregister_interceptor(interceptor); end
+
+ # source://mail/2.8.1/lib/mail/mail.rb#204
+ def unregister_observer(observer); end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/mail_ext/address_equality.rb#4
+class Mail::Address
+ # source://mail/2.8.1/lib/mail/elements/address.rb#25
+ def initialize(value = T.unsafe(nil)); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/address_equality.rb#5
+ def ==(other_address); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#65
+ def address(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#79
+ def address=(value); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#132
+ def comments; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#173
+ def decoded; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#87
+ def display_name(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#99
+ def display_name=(str); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#118
+ def domain(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#169
+ def encoded; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#47
+ def format(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#177
+ def group; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#164
+ def inspect; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#108
+ def local(output_type = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#147
+ def name; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#36
+ def raw; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#156
+ def to_s; end
+
+ private
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#237
+ def format_comments; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#254
+ def get_comments; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#218
+ def get_display_name; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#250
+ def get_domain; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#246
+ def get_local; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#227
+ def get_name; end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#183
+ def parse(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#198
+ def strip_all_comments(string); end
+
+ # source://mail/2.8.1/lib/mail/elements/address.rb#207
+ def strip_domain_comments(value); end
+
+ class << self
+ # source://actionmailbox//lib/action_mailbox/mail_ext/address_wrapping.rb#5
+ def wrap(address); end
+ end
+end
+
+# source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#4
+class Mail::Message
+ # source://mail/2.8.1/lib/mail/message.rb#107
+ def initialize(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#334
+ def <=>(other); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#373
+ def ==(other); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1334
+ def [](name); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1316
+ def []=(name, value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1558
+ def action; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1472
+ def add_charset; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1487
+ def add_content_transfer_encoding; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1465
+ def add_content_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1448
+ def add_date(date_val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1757
+ def add_file(values); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1438
+ def add_message_id(msg_id_val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1458
+ def add_mime_version(ver_val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1701
+ def add_part(part); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1927
+ def all_parts; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1918
+ def attachment; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1913
+ def attachment?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1626
+ def attachments; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#500
+ def bcc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#512
+ def bcc=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#21
+ def bcc_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1306
+ def bcc_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1251
+ def body(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1237
+ def body=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1260
+ def body_encoding(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1268
+ def body_encoding=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1554
+ def bounced?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1583
+ def boundary; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#541
+ def cc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#553
+ def cc=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#17
+ def cc_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1300
+ def cc_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1497
+ def charset; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1506
+ def charset=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#557
+ def comments(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#561
+ def comments=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#565
+ def content_description(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#569
+ def content_description=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#573
+ def content_disposition(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#577
+ def content_disposition=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#581
+ def content_id(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#585
+ def content_id=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#589
+ def content_location(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#593
+ def content_location=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#597
+ def content_transfer_encoding(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#601
+ def content_transfer_encoding=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#605
+ def content_type(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#609
+ def content_type=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1523
+ def content_type_parameters; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1773
+ def convert_to_multipart; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#613
+ def date(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#617
+ def date=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1907
+ def decode_body; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1886
+ def decoded; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1204
+ def default(sym, val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#250
+ def deliver; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#267
+ def deliver!; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#199
+ def delivery_handler; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#199
+ def delivery_handler=(_arg0); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#274
+ def delivery_method(method = T.unsafe(nil), settings = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1543
+ def delivery_status_part; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1538
+ def delivery_status_report?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1282
+ def destinations; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1570
+ def diagnostic_code; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1803
+ def encoded; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#418
+ def envelope_date; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#414
+ def envelope_from; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1566
+ def error_status; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#471
+ def errors; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1923
+ def filename; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1562
+ def final_recipient; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1931
+ def find_first_mime_type(mt); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#658
+ def from(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#670
+ def from=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#5
+ def from_address; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1288
+ def from_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1630
+ def has_attachments?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1423
+ def has_charset?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1428
+ def has_content_transfer_encoding?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1418
+ def has_content_type?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1408
+ def has_date?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1402
+ def has_message_id?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1414
+ def has_mime_version?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#443
+ def header(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#428
+ def header=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1396
+ def header_fields; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#448
+ def headers(hash = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1635
+ def html_part(&block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1655
+ def html_part=(msg); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#674
+ def in_reply_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#678
+ def in_reply_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#240
+ def inform_interceptors; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#236
+ def inform_observers; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1873
+ def inspect; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1877
+ def inspect_structure; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1960
+ def is_marked_for_delete?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#682
+ def keywords(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#686
+ def keywords=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1513
+ def main_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1947
+ def mark_for_delete=(value = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#703
+ def message_id(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#712
+ def message_id=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1377
+ def method_missing(name, *args, &block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1492
+ def mime_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#729
+ def mime_version(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#739
+ def mime_version=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1528
+ def multipart?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1533
+ def multipart_report?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1722
+ def part(params = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1588
+ def parts; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#223
+ def perform_deliveries; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#223
+ def perform_deliveries=(_arg0); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#230
+ def raise_delivery_errors; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#230
+ def raise_delivery_errors=(_arg0); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#410
+ def raw_envelope; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#397
+ def raw_source; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1899
+ def read; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1791
+ def ready_to_send!; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#743
+ def received(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#751
+ def received=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/recipients.rb#5
+ def recipients; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#9
+ def recipients_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#755
+ def references(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#759
+ def references=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1574
+ def remote_mta; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#282
+ def reply(*args, &block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#788
+ def reply_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#800
+ def reply_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#829
+ def resent_bcc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#841
+ def resent_bcc=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#870
+ def resent_cc(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#882
+ def resent_cc=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#886
+ def resent_date(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#890
+ def resent_date=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#919
+ def resent_from(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#931
+ def resent_from=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#935
+ def resent_message_id(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#939
+ def resent_message_id=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#958
+ def resent_sender(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#968
+ def resent_sender=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#997
+ def resent_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1009
+ def resent_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1578
+ def retryable?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1014
+ def return_path(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1019
+ def return_path=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1037
+ def sender(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1047
+ def sender=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#402
+ def set_envelope(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1939
+ def skip_deletion; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1067
+ def smtp_envelope_from(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1081
+ def smtp_envelope_from=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1100
+ def smtp_envelope_to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1117
+ def smtp_envelope_to=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1518
+ def sub_type; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1142
+ def subject(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1152
+ def subject=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1964
+ def text?; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1644
+ def text_part(&block); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1679
+ def text_part=(msg); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1181
+ def to(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1193
+ def to=(val); end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#13
+ def to_addresses; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1294
+ def to_addrs; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1869
+ def to_s; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1823
+ def to_yaml(opts = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#621
+ def transport_encoding(val = T.unsafe(nil)); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#629
+ def transport_encoding=(val); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1811
+ def without_attachments!; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#25
+ def x_original_to_addresses; end
+
+ private
+
+ # source://mail/2.8.1/lib/mail/message.rb#2067
+ def add_boundary; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2032
+ def add_encoding_to_body; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2062
+ def add_multipart_alternate_header; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2079
+ def add_multipart_mixed_header; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2048
+ def add_required_fields; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2056
+ def add_required_message_fields; end
+
+ # source://actionmailbox//lib/action_mailbox/mail_ext/addresses.rb#30
+ def address_list(obj); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2025
+ def allowed_encodings; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1990
+ def body_lazy(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2152
+ def decode_body_as_text; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2142
+ def do_delivery; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2124
+ def find_attachment; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2038
+ def identify_and_set_transfer_encoding; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2086
+ def init_with_hash(hash); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2116
+ def init_with_string(string); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#384
+ def initialize_copy(original); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1979
+ def parse_message; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2005
+ def process_body_raw; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1985
+ def raw_source=(value); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2021
+ def separate_parts; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#2013
+ def set_envelope_header; end
+
+ class << self
+ # source://mail/2.8.1/lib/mail/message.rb#232
+ def default_charset; end
+
+ # source://mail/2.8.1/lib/mail/message.rb#233
+ def default_charset=(charset); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1865
+ def from_hash(hash); end
+
+ # source://mail/2.8.1/lib/mail/message.rb#1843
+ def from_yaml(str); end
+ end
+end
+
+module Rails
+ class << self
+ # source://railties/7.0.6/lib/rails.rb#38
+ def app_class; end
+
+ # source://railties/7.0.6/lib/rails.rb#38
+ def app_class=(_arg0); end
+
+ # source://railties/7.0.6/lib/rails.rb#39
+ def application; end
+
+ # source://railties/7.0.6/lib/rails.rb#37
+ def application=(_arg0); end
+
+ # source://railties/7.0.6/lib/rails.rb#123
+ def autoloaders; end
+
+ # source://railties/7.0.6/lib/rails.rb#50
+ def backtrace_cleaner; end
+
+ # source://railties/7.0.6/lib/rails.rb#38
+ def cache; end
+
+ # source://railties/7.0.6/lib/rails.rb#38
+ def cache=(_arg0); end
+
+ # source://railties/7.0.6/lib/rails.rb#46
+ def configuration; end
+
+ # source://railties/7.0.6/lib/rails.rb#72
+ def env; end
+
+ # source://railties/7.0.6/lib/rails.rb#79
+ def env=(environment); end
+
+ # source://railties/7.0.6/lib/rails.rb#90
+ def error; end
+
+ # source://railties/7.0.6/lib/rails/gem_version.rb#5
+ def gem_version; end
+
+ # source://railties/7.0.6/lib/rails.rb#103
+ def groups(*groups); end
+
+ # source://railties/7.0.6/lib/rails.rb#43
+ def initialize!(*_arg0, **_arg1, &_arg2); end
+
+ # source://railties/7.0.6/lib/rails.rb#43
+ def initialized?(*_arg0, **_arg1, &_arg2); end
+
+ # source://railties/7.0.6/lib/rails.rb#38
+ def logger; end
+
+ # source://railties/7.0.6/lib/rails.rb#38
+ def logger=(_arg0); end
+
+ # source://railties/7.0.6/lib/rails.rb#119
+ def public_path; end
+
+ # source://railties/7.0.6/lib/rails.rb#63
+ def root; end
+
+ # source://railties/7.0.6/lib/rails/version.rb#7
+ def version; end
+ end
+end
+
+module Rails::Conductor; end
+module Rails::Conductor::ActionMailbox; end
+module Rails::Conductor::ActionMailbox::InboundEmails; end
+
+class Rails::Conductor::ActionMailbox::InboundEmails::SourcesController < ::Rails::Conductor::BaseController
+ def create; end
+ def new; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ class << self
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class Rails::Conductor::ActionMailbox::InboundEmailsController < ::Rails::Conductor::BaseController
+ def create; end
+ def index; end
+ def new; end
+ def show; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def create_inbound_email(mail); end
+ def mail_params; end
+ def new_mail; end
+
+ class << self
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class Rails::Conductor::ActionMailbox::IncineratesController < ::Rails::Conductor::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ class << self
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class Rails::Conductor::ActionMailbox::ReroutesController < ::Rails::Conductor::BaseController
+ def create; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def reroute(inbound_email); end
+
+ class << self
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
+
+class Rails::Conductor::BaseController < ::ActionController::Base
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ def ensure_development_env; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions; end
+
+ # source://actionpack/7.0.6/lib/action_controller/metal.rb#210
+ def middleware_stack; end
+ end
+end
diff --git a/sorbet/rbi/gems/actionmailer@7.0.6.rbi b/sorbet/rbi/gems/actionmailer@7.0.6.rbi
new file mode 100644
index 000000000..1e7a2eac7
--- /dev/null
+++ b/sorbet/rbi/gems/actionmailer@7.0.6.rbi
@@ -0,0 +1,2366 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actionmailer` gem.
+# Please instead update this file by running `bin/tapioca gem actionmailer`.
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#3
+module ActionMailer
+ extend ::ActiveSupport::Autoload
+
+ class << self
+ # source://actionmailer//lib/action_mailer.rb#56
+ def eager_load!; end
+
+ # Returns the currently loaded version of Action Mailer as a Gem::Version.
+ #
+ # source://actionmailer//lib/action_mailer/gem_version.rb#5
+ def gem_version; end
+
+ # Returns the currently loaded version of Action Mailer as a
+ # Gem::Version.
+ #
+ # source://actionmailer//lib/action_mailer/version.rb#8
+ def version; end
+ end
+end
+
+# Action Mailer allows you to send email from your application using a mailer model and views.
+#
+# = Mailer Models
+#
+# To use Action Mailer, you need to create a mailer model.
+#
+# $ bin/rails generate mailer Notifier
+#
+# The generated model inherits from ApplicationMailer which in turn
+# inherits from ActionMailer::Base. A mailer model defines methods
+# used to generate an email message. In these methods, you can set up variables to be used in
+# the mailer views, options on the mail itself such as the :from address, and attachments.
+#
+# class ApplicationMailer < ActionMailer::Base
+# default from: 'from@example.com'
+# layout 'mailer'
+# end
+#
+# class NotifierMailer < ApplicationMailer
+# default from: 'no-reply@example.com',
+# return_path: 'system@example.com'
+#
+# def welcome(recipient)
+# @account = recipient
+# mail(to: recipient.email_address_with_name,
+# bcc: ["bcc@example.com", "Order Watcher "])
+# end
+# end
+#
+# Within the mailer method, you have access to the following methods:
+#
+# * attachments[]= - Allows you to add attachments to your email in an intuitive
+# manner; attachments['filename.png'] = File.read('path/to/filename.png')
+#
+# * attachments.inline[]= - Allows you to add an inline attachment to your email
+# in the same manner as attachments[]=
+#
+# * headers[]= - Allows you to specify any header field in your email such
+# as headers['X-No-Spam'] = 'True'. Note that declaring a header multiple times
+# will add many fields of the same name. Read #headers doc for more information.
+#
+# * headers(hash) - Allows you to specify multiple headers in your email such
+# as headers({'X-No-Spam' => 'True', 'In-Reply-To' => '1234@message.id'})
+#
+# * mail - Allows you to specify email to be sent.
+#
+# The hash passed to the mail method allows you to specify any header that a Mail::Message
+# will accept (any valid email header including optional fields).
+#
+# The +mail+ method, if not passed a block, will inspect your views and send all the views with
+# the same name as the method, so the above action would send the +welcome.text.erb+ view
+# file as well as the +welcome.html.erb+ view file in a +multipart/alternative+ email.
+#
+# If you want to explicitly render only certain templates, pass a block:
+#
+# mail(to: user.email) do |format|
+# format.text
+# format.html
+# end
+#
+# The block syntax is also useful in providing information specific to a part:
+#
+# mail(to: user.email) do |format|
+# format.html
+# end
+#
+# Or even to render a special view:
+#
+# mail(to: user.email) do |format|
+# format.text
+# format.html { render "some_other_template" }
+# end
+#
+# = Mailer views
+#
+# Like Action Controller, each mailer class has a corresponding view directory in which each
+# method of the class looks for a template with its name.
+#
+# To define a template to be used with a mailer, create an .erb file with the same
+# name as the method in your mailer model. For example, in the mailer defined above, the template at
+# app/views/notifier_mailer/welcome.text.erb would be used to generate the email.
+#
+# Variables defined in the methods of your mailer model are accessible as instance variables in their
+# corresponding view.
+#
+# Emails by default are sent in plain text, so a sample view for our model example might look like this:
+#
+# Hi <%= @account.name %>,
+# Thanks for joining our service! Please check back often.
+#
+# You can even use Action View helpers in these views. For example:
+#
+# You got a new note!
+# <%= truncate(@note.body, length: 25) %>
+#
+# If you need to access the subject, from, or the recipients in the view, you can do that through message object:
+#
+# You got a new note from <%= message.from %>!
+# <%= truncate(@note.body, length: 25) %>
+#
+#
+# = Generating URLs
+#
+# URLs can be generated in mailer views using url_for or named routes. Unlike controllers from
+# Action Pack, the mailer instance doesn't have any context about the incoming request, so you'll need
+# to provide all of the details needed to generate a URL.
+#
+# When using url_for you'll need to provide the :host, :controller, and :action:
+#
+# <%= url_for(host: "example.com", controller: "welcome", action: "greeting") %>
+#
+# When using named routes you only need to supply the :host:
+#
+# <%= users_url(host: "example.com") %>
+#
+# You should use the named_route_url style (which generates absolute URLs) and avoid using the
+# named_route_path style (which generates relative URLs), since clients reading the mail will
+# have no concept of a current URL from which to determine a relative path.
+#
+# It is also possible to set a default host that will be used in all mailers by setting the :host
+# option as a configuration option in config/application.rb:
+#
+# config.action_mailer.default_url_options = { host: "example.com" }
+#
+# You can also define a default_url_options method on individual mailers to override these
+# default settings per-mailer.
+#
+# By default when config.force_ssl is +true+, URLs generated for hosts will use the HTTPS protocol.
+#
+# = Sending mail
+#
+# Once a mailer action and template are defined, you can deliver your message or defer its creation and
+# delivery for later:
+#
+# NotifierMailer.welcome(User.first).deliver_now # sends the email
+# mail = NotifierMailer.welcome(User.first) # => an ActionMailer::MessageDelivery object
+# mail.deliver_now # generates and sends the email now
+#
+# The ActionMailer::MessageDelivery class is a wrapper around a delegate that will call
+# your method to generate the mail. If you want direct access to the delegator, or Mail::Message,
+# you can call the message method on the ActionMailer::MessageDelivery object.
+#
+# NotifierMailer.welcome(User.first).message # => a Mail::Message object
+#
+# Action Mailer is nicely integrated with Active Job so you can generate and send emails in the background
+# (example: outside of the request-response cycle, so the user doesn't have to wait on it):
+#
+# NotifierMailer.welcome(User.first).deliver_later # enqueue the email sending to Active Job
+#
+# Note that deliver_later will execute your method from the background job.
+#
+# You never instantiate your mailer class. Rather, you just call the method you defined on the class itself.
+# All instance methods are expected to return a message object to be sent.
+#
+# = Multipart Emails
+#
+# Multipart messages can also be used implicitly because Action Mailer will automatically detect and use
+# multipart templates, where each template is named after the name of the action, followed by the content
+# type. Each such detected template will be added to the message, as a separate part.
+#
+# For example, if the following templates exist:
+# * signup_notification.text.erb
+# * signup_notification.html.erb
+# * signup_notification.xml.builder
+# * signup_notification.yml.erb
+#
+# Each would be rendered and added as a separate part to the message, with the corresponding content
+# type. The content type for the entire message is automatically set to multipart/alternative,
+# which indicates that the email contains multiple different representations of the same email
+# body. The same instance variables defined in the action are passed to all email templates.
+#
+# Implicit template rendering is not performed if any attachments or parts have been added to the email.
+# This means that you'll have to manually add each part to the email and set the content type of the email
+# to multipart/alternative.
+#
+# = Attachments
+#
+# Sending attachment in emails is easy:
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments['free_book.pdf'] = File.read('path/to/file.pdf')
+# mail(to: recipient, subject: "New account information")
+# end
+# end
+#
+# Which will (if it had both a welcome.text.erb and welcome.html.erb
+# template in the view directory), send a complete multipart/mixed email with two parts,
+# the first part being a multipart/alternative with the text and HTML email parts inside,
+# and the second being a application/pdf with a Base64 encoded copy of the file.pdf book
+# with the filename +free_book.pdf+.
+#
+# If you need to send attachments with no content, you need to create an empty view for it,
+# or add an empty body parameter like this:
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments['free_book.pdf'] = File.read('path/to/file.pdf')
+# mail(to: recipient, subject: "New account information", body: "")
+# end
+# end
+#
+# You can also send attachments with html template, in this case you need to add body, attachments,
+# and custom content type like this:
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments["free_book.pdf"] = File.read("path/to/file.pdf")
+# mail(to: recipient,
+# subject: "New account information",
+# content_type: "text/html",
+# body: "Hello there")
+# end
+# end
+#
+# = Inline Attachments
+#
+# You can also specify that a file should be displayed inline with other HTML. This is useful
+# if you want to display a corporate logo or a photo.
+#
+# class NotifierMailer < ApplicationMailer
+# def welcome(recipient)
+# attachments.inline['photo.png'] = File.read('path/to/photo.png')
+# mail(to: recipient, subject: "Here is what we look like")
+# end
+# end
+#
+# And then to reference the image in the view, you create a welcome.html.erb file and
+# make a call to +image_tag+ passing in the attachment you want to display and then call
+# +url+ on the attachment to get the relative content id path for the image source:
+#
+#
Please Don't Cringe
+#
+# <%= image_tag attachments['photo.png'].url -%>
+#
+# As we are using Action View's +image_tag+ method, you can pass in any other options you want:
+#
+#
Please Don't Cringe
+#
+# <%= image_tag attachments['photo.png'].url, alt: 'Our Photo', class: 'photo' -%>
+#
+# = Observing and Intercepting Mails
+#
+# Action Mailer provides hooks into the Mail observer and interceptor methods. These allow you to
+# register classes that are called during the mail delivery life cycle.
+#
+# An observer class must implement the :delivered_email(message) method which will be
+# called once for every email sent after the email has been sent.
+#
+# An interceptor class must implement the :delivering_email(message) method which will be
+# called before the email is sent, allowing you to make modifications to the email before it hits
+# the delivery agents. Your class should make any needed modifications directly to the passed
+# in Mail::Message instance.
+#
+# = Default Hash
+#
+# Action Mailer provides some intelligent defaults for your emails, these are usually specified in a
+# default method inside the class definition:
+#
+# class NotifierMailer < ApplicationMailer
+# default sender: 'system@example.com'
+# end
+#
+# You can pass in any header value that a Mail::Message accepts. Out of the box,
+# ActionMailer::Base sets the following:
+#
+# * mime_version: "1.0"
+# * charset: "UTF-8"
+# * content_type: "text/plain"
+# * parts_order: [ "text/plain", "text/enriched", "text/html" ]
+#
+# parts_order and charset are not actually valid Mail::Message header fields,
+# but Action Mailer translates them appropriately and sets the correct values.
+#
+# As you can pass in any header, you need to either quote the header as a string, or pass it in as
+# an underscored symbol, so the following will work:
+#
+# class NotifierMailer < ApplicationMailer
+# default 'Content-Transfer-Encoding' => '7bit',
+# content_description: 'This is a description'
+# end
+#
+# Finally, Action Mailer also supports passing Proc and Lambda objects into the default hash,
+# so you can define methods that evaluate as the message is being generated:
+#
+# class NotifierMailer < ApplicationMailer
+# default 'X-Special-Header' => Proc.new { my_method }, to: -> { @inviter.email_address }
+#
+# private
+# def my_method
+# 'some complex call'
+# end
+# end
+#
+# Note that the proc/lambda is evaluated right at the start of the mail message generation, so if you
+# set something in the default hash using a proc, and then set the same thing inside of your
+# mailer method, it will get overwritten by the mailer method.
+#
+# It is also possible to set these default options that will be used in all mailers through
+# the default_options= configuration in config/application.rb:
+#
+# config.action_mailer.default_options = { from: "no-reply@example.org" }
+#
+# = Callbacks
+#
+# You can specify callbacks using before_action and after_action for configuring your messages.
+# This may be useful, for example, when you want to add default inline attachments for all
+# messages sent out by a certain mailer class:
+#
+# class NotifierMailer < ApplicationMailer
+# before_action :add_inline_attachment!
+#
+# def welcome
+# mail
+# end
+#
+# private
+# def add_inline_attachment!
+# attachments.inline["footer.jpg"] = File.read('/path/to/filename.jpg')
+# end
+# end
+#
+# Callbacks in Action Mailer are implemented using
+# AbstractController::Callbacks, so you can define and configure
+# callbacks in the same manner that you would use callbacks in classes that
+# inherit from ActionController::Base.
+#
+# Note that unless you have a specific reason to do so, you should prefer
+# using before_action rather than after_action in your
+# Action Mailer classes so that headers are parsed properly.
+#
+# = Rescuing Errors
+#
+# +rescue+ blocks inside of a mailer method cannot rescue errors that occur
+# outside of rendering -- for example, record deserialization errors in a
+# background job, or errors from a third-party mail delivery service.
+#
+# To rescue errors that occur during any part of the mailing process, use
+# {rescue_from}[rdoc-ref:ActiveSupport::Rescuable::ClassMethods#rescue_from]:
+#
+# class NotifierMailer < ApplicationMailer
+# rescue_from ActiveJob::DeserializationError do
+# # ...
+# end
+#
+# rescue_from "SomeThirdPartyService::ApiError" do
+# # ...
+# end
+#
+# def notify(recipient)
+# mail(to: recipient, subject: "Notification")
+# end
+# end
+#
+# = Previewing emails
+#
+# You can preview your email templates visually by adding a mailer preview file to the
+# ActionMailer::Base.preview_path. Since most emails do something interesting
+# with database data, you'll need to write some scenarios to load messages with fake data:
+#
+# class NotifierMailerPreview < ActionMailer::Preview
+# def welcome
+# NotifierMailer.welcome(User.first)
+# end
+# end
+#
+# Methods must return a Mail::Message object which can be generated by calling the mailer
+# method without the additional deliver_now / deliver_later. The location of the
+# mailer previews directory can be configured using the preview_path option which has a default
+# of test/mailers/previews:
+#
+# config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"
+#
+# An overview of all previews is accessible at http://localhost:3000/rails/mailers
+# on a running development server instance.
+#
+# Previews can also be intercepted in a similar manner as deliveries can be by registering
+# a preview interceptor that has a previewing_email method:
+#
+# class CssInlineStyler
+# def self.previewing_email(message)
+# # inline CSS styles
+# end
+# end
+#
+# config.action_mailer.preview_interceptors :css_inline_styler
+#
+# Note that interceptors need to be registered both with register_interceptor
+# and register_preview_interceptor if they should operate on both sending and
+# previewing emails.
+#
+# = Configuration options
+#
+# These options are specified on the class level, like
+# ActionMailer::Base.raise_delivery_errors = true
+#
+# * default_options - You can pass this in at a class level as well as within the class itself as
+# per the above section.
+#
+# * logger - the logger is used for generating information on the mailing run if available.
+# Can be set to +nil+ for no logging. Compatible with both Ruby's own +Logger+ and Log4r loggers.
+#
+# * smtp_settings - Allows detailed configuration for :smtp delivery method:
+# * :address - Allows you to use a remote mail server. Just change it from its default
+# "localhost" setting.
+# * :port - On the off chance that your mail server doesn't run on port 25, you can change it.
+# * :domain - If you need to specify a HELO domain, you can do it here.
+# * :user_name - If your mail server requires authentication, set the username in this setting.
+# * :password - If your mail server requires authentication, set the password in this setting.
+# * :authentication - If your mail server requires authentication, you need to specify the
+# authentication type here.
+# This is a symbol and one of :plain (will send the password Base64 encoded), :login (will
+# send the password Base64 encoded) or :cram_md5 (combines a Challenge/Response mechanism to exchange
+# information and a cryptographic Message Digest 5 algorithm to hash important information)
+# * :enable_starttls - Use STARTTLS when connecting to your SMTP server and fail if unsupported. Defaults to false.
+# * :enable_starttls_auto - Detects if STARTTLS is enabled in your SMTP server and starts
+# to use it. Defaults to true.
+# * :openssl_verify_mode - When using TLS, you can set how OpenSSL checks the certificate. This is
+# really useful if you need to validate a self-signed and/or a wildcard certificate. You can use the name
+# of an OpenSSL verify constant ('none' or 'peer') or directly the constant
+# (OpenSSL::SSL::VERIFY_NONE or OpenSSL::SSL::VERIFY_PEER).
+# * :ssl/:tls Enables the SMTP connection to use SMTP/TLS (SMTPS: SMTP over direct TLS connection)
+# * :open_timeout Number of seconds to wait while attempting to open a connection.
+# * :read_timeout Number of seconds to wait until timing-out a read(2) call.
+#
+# * sendmail_settings - Allows you to override options for the :sendmail delivery method.
+# * :location - The location of the sendmail executable. Defaults to /usr/sbin/sendmail.
+# * :arguments - The command line arguments. Defaults to -i with -f sender@address
+# added automatically before the message is sent.
+#
+# * file_settings - Allows you to override options for the :file delivery method.
+# * :location - The directory into which emails will be written. Defaults to the application
+# tmp/mails.
+#
+# * raise_delivery_errors - Whether or not errors should be raised if the email fails to be delivered.
+#
+# * delivery_method - Defines a delivery method. Possible values are :smtp (default),
+# :sendmail, :test, and :file. Or you may provide a custom delivery method
+# object e.g. +MyOwnDeliveryMethodClass+. See the Mail gem documentation on the interface you need to
+# implement for a custom delivery agent.
+#
+# * perform_deliveries - Determines whether emails are actually sent from Action Mailer when you
+# call .deliver on an email message or on an Action Mailer method. This is on by default but can
+# be turned off to aid in functional testing.
+#
+# * deliveries - Keeps an array of all the emails sent out through the Action Mailer with
+# delivery_method :test. Most useful for unit and functional testing.
+#
+# * delivery_job - The job class used with deliver_later. Defaults to
+# +ActionMailer::MailDeliveryJob+.
+#
+# * deliver_later_queue_name - The name of the queue used with deliver_later.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionmailer//lib/action_mailer/base.rb#466
+class ActionMailer::Base < ::AbstractController::Base
+ include ::ActionMailer::DeliveryMethods
+ include ::ActiveSupport::Rescuable
+ include ::ActionMailer::Rescuable
+ include ::ActionMailer::Parameterized
+ include ::ActionMailer::Previews
+ include ::ActionView::ViewPaths
+ include ::AbstractController::Rendering
+ include ::AbstractController::Logger
+ include ::ActiveSupport::Benchmarkable
+ include ::AbstractController::Helpers
+ include ::AbstractController::Translation
+ include ::AbstractController::AssetPaths
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching::ConfigMethods
+ include ::AbstractController::Caching
+ include ::ActionView::Rendering
+ include ::ActionView::Layouts
+ extend ::ActionMailer::DeliveryMethods::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionMailer::Rescuable::ClassMethods
+ extend ::ActionMailer::Parameterized::ClassMethods
+ extend ::ActionMailer::Previews::ClassMethods
+ extend ::ActionView::ViewPaths::ClassMethods
+ extend ::AbstractController::Helpers::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::AbstractController::Callbacks::ClassMethods
+ extend ::AbstractController::Caching::Fragments::ClassMethods
+ extend ::AbstractController::Caching::ClassMethods
+ extend ::AbstractController::Caching::ConfigMethods
+ extend ::ActionView::Rendering::ClassMethods
+ extend ::ActionView::Layouts::ClassMethods
+
+ # @return [Base] a new instance of Base
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#632
+ def initialize; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#11
+ def _helper_methods; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#11
+ def _helper_methods=(_arg0); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#11
+ def _helper_methods?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _process_action_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_process_action_callbacks(&block); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies=(_arg0); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def asset_host; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def asset_host=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def assets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def assets_dir=(value); end
+
+ # Allows you to add attachments to an email, like so:
+ #
+ # mail.attachments['filename.jpg'] = File.read('/path/to/filename.jpg')
+ #
+ # If you do this, then Mail will take the file name and work out the mime type.
+ # It will also set the +Content-Type+, +Content-Disposition+, and +Content-Transfer-Encoding+,
+ # and encode the contents of the attachment in Base64.
+ #
+ # You can also specify overrides if you want by passing a hash instead of a string:
+ #
+ # mail.attachments['filename.jpg'] = {mime_type: 'application/gzip',
+ # content: File.read('/path/to/filename.jpg')}
+ #
+ # If you want to use encoding other than Base64 then you will need to pass encoding
+ # type along with the pre-encoded content as Mail doesn't know how to decode the
+ # data:
+ #
+ # file_content = SpecialEncode(File.read('/path/to/filename.jpg'))
+ # mail.attachments['filename.jpg'] = {mime_type: 'application/gzip',
+ # content: file_content }
+ #
+ # You can also search for specific attachments:
+ #
+ # # By Filename
+ # mail.attachments['filename.jpg'] # => Mail::Part object or nil
+ #
+ # # or by index
+ # mail.attachments[0] # => Mail::Part (first attachment)
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#749
+ def attachments; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_asset_host_protocol; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_asset_host_protocol=(value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#490
+ def default_params; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#490
+ def default_params=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#490
+ def default_params?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_static_extension; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_static_extension=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def deliver_later_queue_name; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def deliver_later_queue_name=(val); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#489
+ def delivery_job; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#489
+ def delivery_job=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#489
+ def delivery_job?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_method; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_method=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_method?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#17
+ def delivery_methods; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#17
+ def delivery_methods=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#17
+ def delivery_methods?; end
+
+ # Returns an email in the format "Name ".
+ #
+ # If the name is a blank string, it returns just the address.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#673
+ def email_address_with_name(address, name); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def file_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def file_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def file_settings?; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys=(_arg0); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys?; end
+
+ # Allows you to pass random and unusual headers to the new Mail::Message
+ # object which will add them to itself.
+ #
+ # headers['X-Special-Domain-Specific-Header'] = "SecretValue"
+ #
+ # You can also pass a hash into headers of header field names and values,
+ # which will then be set on the Mail::Message object:
+ #
+ # headers 'X-Special-Domain-Specific-Header' => "SecretValue",
+ # 'In-Reply-To' => incoming.message_id
+ #
+ # The resulting Mail::Message will have the following in its header:
+ #
+ # X-Special-Domain-Specific-Header: SecretValue
+ #
+ # Note about replacing already defined headers:
+ #
+ # * +subject+
+ # * +sender+
+ # * +from+
+ # * +to+
+ # * +cc+
+ # * +bcc+
+ # * +reply-to+
+ # * +orig-date+
+ # * +message-id+
+ # * +references+
+ #
+ # Fields can only appear once in email headers while other fields such as
+ # X-Anything can appear multiple times.
+ #
+ # If you want to replace any header which already exists, first set it to
+ # +nil+ in order to reset the value otherwise another field will be added
+ # for the same header.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#711
+ def headers(args = T.unsafe(nil)); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def javascripts_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def javascripts_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def logger; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def logger=(value); end
+
+ # The main method that creates the message and renders the email templates. There are
+ # two ways to call this method, with a block, or without a block.
+ #
+ # It accepts a headers hash. This hash allows you to specify
+ # the most used headers in an email message, these are:
+ #
+ # * +:subject+ - The subject of the message, if this is omitted, Action Mailer will
+ # ask the Rails I18n class for a translated +:subject+ in the scope of
+ # [mailer_scope, action_name] or if this is missing, will translate the
+ # humanized version of the +action_name+
+ # * +:to+ - Who the message is destined for, can be a string of addresses, or an array
+ # of addresses.
+ # * +:from+ - Who the message is from
+ # * +:cc+ - Who you would like to Carbon-Copy on this email, can be a string of addresses,
+ # or an array of addresses.
+ # * +:bcc+ - Who you would like to Blind-Carbon-Copy on this email, can be a string of
+ # addresses, or an array of addresses.
+ # * +:reply_to+ - Who to set the +Reply-To+ header of the email to.
+ # * +:date+ - The date to say the email was sent on.
+ #
+ # You can set default values for any of the above headers (except +:date+)
+ # by using the ::default class method:
+ #
+ # class Notifier < ActionMailer::Base
+ # default from: 'no-reply@test.lindsaar.net',
+ # bcc: 'email_logger@test.lindsaar.net',
+ # reply_to: 'bounces@test.lindsaar.net'
+ # end
+ #
+ # If you need other headers not listed above, you can either pass them in
+ # as part of the headers hash or use the headers['name'] = value
+ # method.
+ #
+ # When a +:return_path+ is specified as header, that value will be used as
+ # the 'envelope from' address for the Mail message. Setting this is useful
+ # when you want delivery notifications sent to a different address than the
+ # one in +:from+. Mail will actually use the +:return_path+ in preference
+ # to the +:sender+ in preference to the +:from+ field for the 'envelope
+ # from' value.
+ #
+ # If you do not pass a block to the +mail+ method, it will find all
+ # templates in the view paths using by default the mailer name and the
+ # method name that it is being called from, it will then create parts for
+ # each of these templates intelligently, making educated guesses on correct
+ # content type and sequence, and return a fully prepared Mail::Message
+ # ready to call :deliver on to send.
+ #
+ # For example:
+ #
+ # class Notifier < ActionMailer::Base
+ # default from: 'no-reply@test.lindsaar.net'
+ #
+ # def welcome
+ # mail(to: 'mikel@test.lindsaar.net')
+ # end
+ # end
+ #
+ # Will look for all templates at "app/views/notifier" with name "welcome".
+ # If no welcome template exists, it will raise an ActionView::MissingTemplate error.
+ #
+ # However, those can be customized:
+ #
+ # mail(template_path: 'notifications', template_name: 'another')
+ #
+ # And now it will look for all templates at "app/views/notifications" with name "another".
+ #
+ # If you do pass a block, you can render specific templates of your choice:
+ #
+ # mail(to: 'mikel@test.lindsaar.net') do |format|
+ # format.text
+ # format.html
+ # end
+ #
+ # You can even render plain text directly without using a template:
+ #
+ # mail(to: 'mikel@test.lindsaar.net') do |format|
+ # format.text { render plain: "Hello Mikel!" }
+ # format.html { render html: "
Hello Mikel!
".html_safe }
+ # end
+ #
+ # Which will render a +multipart/alternative+ email with +text/plain+ and
+ # +text/html+ parts.
+ #
+ # The block syntax also allows you to customize the part headers if desired:
+ #
+ # mail(to: 'mikel@test.lindsaar.net') do |format|
+ # format.html
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#858
+ def mail(headers = T.unsafe(nil), &block); end
+
+ # Returns the name of the mailer object.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#666
+ def mailer_name; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def message; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def message=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#91
+ def params; end
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#91
+ def params=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def perform_caching; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def perform_caching=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#14
+ def perform_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#14
+ def perform_deliveries=(val); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#25
+ def preview_interceptors; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#14
+ def preview_path; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#638
+ def process(method_name, *args, **_arg2); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#13
+ def raise_delivery_errors; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#13
+ def raise_delivery_errors=(val); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def relative_url_root; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def relative_url_root=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def sendmail_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def sendmail_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def sendmail_settings?; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#22
+ def show_previews; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def smtp_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def smtp_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def smtp_settings?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def stylesheets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def stylesheets_dir=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def test_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def test_settings=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def test_settings?; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1059
+ def _protected_ivars; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#935
+ def apply_defaults(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#955
+ def assign_headers_to_message(message, headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#961
+ def collect_responses(headers, &block); end
+
+ # @yield [collector]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#971
+ def collect_responses_from_block(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#985
+ def collect_responses_from_templates(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#978
+ def collect_responses_from_text(headers); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#945
+ def compute_default(value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1028
+ def create_parts_from_responses(m, responses); end
+
+ # Translates the +subject+ using Rails I18n class under [mailer_scope, action_name] scope.
+ # If it does not find a translation for the +subject+ under the specified scope it will default to a
+ # humanized version of the action_name.
+ # If the subject has interpolations, you can pass them through the +interpolations+ parameter.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#925
+ def default_i18n_subject(interpolations = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#998
+ def each_template(paths, name, &block); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1041
+ def insert_part(container, response, charset); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1055
+ def instrument_name; end
+
+ # This and #instrument_name is for caching instrument
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#1048
+ def instrument_payload(key); end
+
+ # Used by #mail to set the content type of the message.
+ #
+ # It will use the given +user_content_type+, or multipart if the mail
+ # message has any attachments. If the attachments are inline, the content
+ # type will be "multipart/related", otherwise "multipart/mixed".
+ #
+ # If there is no content type passed in via headers, and there are no
+ # attachments, or the message is multipart, then the default content type is
+ # used.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#903
+ def set_content_type(m, user_content_type, class_default); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#1007
+ def wrap_inline_attachments(message); end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#11
+ def _helper_methods; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#11
+ def _helper_methods=(value); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#11
+ def _helper_methods?; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/helpers.rb#15
+ def _helpers; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout=(value); end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout?; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions=(value); end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _process_action_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _process_action_callbacks=(value); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies=(value); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def asset_host; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def asset_host=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def assets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def assets_dir=(value); end
+
+ # Returns the name of the current mailer. This method is also being used as a path for a view lookup.
+ # If this is an anonymous mailer, this method will return +anonymous+ instead.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#558
+ def controller_path; end
+
+ # Sets the defaults through app configuration:
+ #
+ # config.action_mailer.default(from: "no-reply@example.org")
+ #
+ # Aliased by ::default_options=
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#570
+ def default(value = T.unsafe(nil)); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_asset_host_protocol; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_asset_host_protocol=(value); end
+
+ # Sets the defaults through app configuration:
+ #
+ # config.action_mailer.default(from: "no-reply@example.org")
+ #
+ # Aliased by ::default_options=
+ # Allows to set defaults through app configuration:
+ #
+ # config.action_mailer.default_options = { from: "no-reply@example.org" }
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#570
+ def default_options=(value = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#490
+ def default_params; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#490
+ def default_params=(value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#490
+ def default_params?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_static_extension; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_static_extension=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def deliver_later_queue_name; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#15
+ def deliver_later_queue_name=(val); end
+
+ # Wraps an email delivery inside of ActiveSupport::Notifications instrumentation.
+ #
+ # This method is actually called by the Mail::Message object itself
+ # through a callback when you call :deliver on the Mail::Message,
+ # calling +deliver_mail+ directly and passing a Mail::Message will do
+ # nothing except tell the logger you sent the email.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#585
+ def deliver_mail(mail); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#489
+ def delivery_job; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#489
+ def delivery_job=(value); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#489
+ def delivery_job?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_method; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_method=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#18
+ def delivery_method?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#17
+ def delivery_methods; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#17
+ def delivery_methods=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#17
+ def delivery_methods?; end
+
+ # Returns an email in the format "Name ".
+ #
+ # If the name is a blank string, it returns just the address.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#595
+ def email_address_with_name(address, name); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def file_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def file_settings=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def file_settings?; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys; end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys=(value); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def javascripts_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def javascripts_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def logger; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def logger=(value); end
+
+ # Returns the name of the current mailer. This method is also being used as a path for a view lookup.
+ # If this is an anonymous mailer, this method will return +anonymous+ instead.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#558
+ def mailer_name; end
+
+ # Allows to set the name of current mailer.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#562
+ def mailer_name=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def perform_caching; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def perform_caching=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#14
+ def perform_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#14
+ def perform_deliveries=(val); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#25
+ def preview_interceptors; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#25
+ def preview_interceptors=(val); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#14
+ def preview_path; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#14
+ def preview_path=(val); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#13
+ def raise_delivery_errors; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#13
+ def raise_delivery_errors=(val); end
+
+ # Register an Interceptor which will be called before mail is sent.
+ # Either a class, string, or symbol can be passed in as the Interceptor.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#535
+ def register_interceptor(interceptor); end
+
+ # Register one or more Interceptors which will be called before mail is sent.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#509
+ def register_interceptors(*interceptors); end
+
+ # Register an Observer which will be notified when mail is delivered.
+ # Either a class, string, or symbol can be passed in as the Observer.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#521
+ def register_observer(observer); end
+
+ # Register one or more Observers which will be notified when mail is delivered.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#499
+ def register_observers(*observers); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def relative_url_root; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def relative_url_root=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def sendmail_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def sendmail_settings=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def sendmail_settings?; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#22
+ def show_previews; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#22
+ def show_previews=(val); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def smtp_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def smtp_settings=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def smtp_settings?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def stylesheets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def stylesheets_dir=(value); end
+
+ # Emails do not support relative path links.
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#931
+ def supports_path?; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def test_settings; end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def test_settings=(value); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#51
+ def test_settings?; end
+
+ # Unregister a previously registered Interceptor.
+ # Either a class, string, or symbol can be passed in as the Interceptor.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#542
+ def unregister_interceptor(interceptor); end
+
+ # Unregister one or more previously registered Interceptors.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#514
+ def unregister_interceptors(*interceptors); end
+
+ # Unregister a previously registered Observer.
+ # Either a class, string, or symbol can be passed in as the Observer.
+ # If a string or symbol is passed in it will be camelized and constantized.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#528
+ def unregister_observer(observer); end
+
+ # Unregister one or more previously registered Observers.
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#504
+ def unregister_observers(*observers); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/base.rb#616
+ def method_missing(method_name, *args, **_arg2); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#546
+ def observer_class_for(value); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#625
+ def respond_to_missing?(method, include_all = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#603
+ def set_payload_for_mail(payload, mail); end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#0
+module ActionMailer::Base::HelperMethods
+ include ::ActionMailer::MailHelper
+ include ::ActionText::ContentHelper
+ include ::ActionText::TagHelper
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching/fragments.rb#31
+ def combined_fragment_cache_key(*args, **_arg1, &block); end
+
+ # source://actionpack/7.0.6/lib/abstract_controller/caching.rb#43
+ def view_cache_dependencies(*args, **_arg1, &block); end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#757
+class ActionMailer::Base::LateAttachmentsProxy < ::SimpleDelegator
+ # source://actionmailer//lib/action_mailer/base.rb#759
+ def []=(_name, _content); end
+
+ # source://actionmailer//lib/action_mailer/base.rb#758
+ def inline; end
+
+ private
+
+ # @raise [RuntimeError]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#762
+ def _raise_error; end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#652
+class ActionMailer::Base::NullMail
+ # source://actionmailer//lib/action_mailer/base.rb#653
+ def body; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#654
+ def header; end
+
+ # source://actionmailer//lib/action_mailer/base.rb#660
+ def method_missing(*args); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/base.rb#656
+ def respond_to?(string, include_all = T.unsafe(nil)); end
+end
+
+# source://actionmailer//lib/action_mailer/base.rb#485
+ActionMailer::Base::PROTECTED_IVARS = T.let(T.unsafe(nil), Array)
+
+# source://actionmailer//lib/action_mailer/collector.rb#8
+class ActionMailer::Collector
+ include ::AbstractController::Collector
+
+ # @return [Collector] a new instance of Collector
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#12
+ def initialize(context, &block); end
+
+ # @raise [ArgumentError]
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#18
+ def all(*args, &block); end
+
+ # @raise [ArgumentError]
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#18
+ def any(*args, &block); end
+
+ # source://actionmailer//lib/action_mailer/collector.rb#25
+ def custom(mime, options = T.unsafe(nil)); end
+
+ # Returns the value of attribute responses.
+ #
+ # source://actionmailer//lib/action_mailer/collector.rb#10
+ def responses; end
+end
+
+# This module handles everything related to mail delivery, from registering
+# new delivery methods to configuring the mail object to be sent.
+#
+# source://actionmailer//lib/action_mailer/delivery_methods.rb#8
+module ActionMailer::DeliveryMethods
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionMailer::DeliveryMethods::ClassMethods
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#78
+ def wrap_delivery_behavior!(*args); end
+
+ module GeneratedClassMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+
+ module GeneratedInstanceMethods
+ def delivery_method; end
+ def delivery_method=(value); end
+ def delivery_method?; end
+ def delivery_methods; end
+ def delivery_methods=(value); end
+ def delivery_methods?; end
+ def file_settings; end
+ def file_settings=(value); end
+ def file_settings?; end
+ def sendmail_settings; end
+ def sendmail_settings=(value); end
+ def sendmail_settings?; end
+ def smtp_settings; end
+ def smtp_settings=(value); end
+ def smtp_settings?; end
+ def test_settings; end
+ def test_settings=(value); end
+ def test_settings?; end
+ end
+end
+
+# Helpers for creating and wrapping delivery behavior, used by DeliveryMethods.
+#
+# source://actionmailer//lib/action_mailer/delivery_methods.rb#40
+module ActionMailer::DeliveryMethods::ClassMethods
+ # Adds a new delivery method through the given class using the given
+ # symbol as alias and the default options supplied.
+ #
+ # add_delivery_method :sendmail, Mail::Sendmail,
+ # location: '/usr/sbin/sendmail',
+ # arguments: '-i'
+ #
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#50
+ def add_delivery_method(symbol, klass, default_options = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#42
+ def deliveries(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#42
+ def deliveries=(arg); end
+
+ # source://actionmailer//lib/action_mailer/delivery_methods.rb#56
+ def wrap_delivery_behavior(mail, method = T.unsafe(nil), options = T.unsafe(nil)); end
+end
+
+# Implements a mailer preview interceptor that converts image tag src attributes
+# that use inline cid: style URLs to data: style URLs so that they are visible
+# when previewing an HTML email in a web browser.
+#
+# This interceptor is enabled by default. To disable it, delete it from the
+# ActionMailer::Base.preview_interceptors array:
+#
+# ActionMailer::Base.preview_interceptors.delete(ActionMailer::InlinePreviewInterceptor)
+#
+# source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#15
+class ActionMailer::InlinePreviewInterceptor
+ include ::Base64
+
+ # @return [InlinePreviewInterceptor] a new instance of InlinePreviewInterceptor
+ #
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#24
+ def initialize(message); end
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#28
+ def transform!; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#49
+ def data_url(part); end
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#53
+ def find_part(cid); end
+
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#45
+ def html_part; end
+
+ # Returns the value of attribute message.
+ #
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#43
+ def message; end
+
+ class << self
+ # source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#20
+ def previewing_email(message); end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/inline_preview_interceptor.rb#16
+ActionMailer::InlinePreviewInterceptor::PATTERN = T.let(T.unsafe(nil), Regexp)
+
+# Implements the ActiveSupport::LogSubscriber for logging notifications when
+# email is delivered or received.
+#
+# source://actionmailer//lib/action_mailer/log_subscriber.rb#8
+class ActionMailer::LogSubscriber < ::ActiveSupport::LogSubscriber
+ # An email was delivered.
+ #
+ # source://actionmailer//lib/action_mailer/log_subscriber.rb#10
+ def deliver(event); end
+
+ # Use the logger configured for ActionMailer::Base.
+ #
+ # source://actionmailer//lib/action_mailer/log_subscriber.rb#33
+ def logger; end
+
+ # An email was generated.
+ #
+ # source://actionmailer//lib/action_mailer/log_subscriber.rb#24
+ def process(event); end
+end
+
+# The ActionMailer::MailDeliveryJob class is used when you
+# want to send emails outside of the request-response cycle. It supports
+# sending either parameterized or normal mail.
+#
+# Exceptions are rescued and handled by the mailer class.
+#
+# source://actionmailer//lib/action_mailer/mail_delivery_job.rb#11
+class ActionMailer::MailDeliveryJob < ::ActiveJob::Base
+ # source://actionmailer//lib/action_mailer/mail_delivery_job.rb#16
+ def perform(mailer, mail_method, delivery_method, args:, kwargs: T.unsafe(nil), params: T.unsafe(nil)); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/mail_delivery_job.rb#35
+ def handle_exception_with_mailer_class(exception); end
+
+ # "Deserialize" the mailer class name by hand in case another argument
+ # (like a Global ID reference) raised DeserializationError.
+ #
+ # source://actionmailer//lib/action_mailer/mail_delivery_job.rb#29
+ def mailer_class; end
+
+ class << self
+ # source://activejob/7.0.6/lib/active_job/queue_name.rb#55
+ def queue_name; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+ end
+end
+
+# Provides helper methods for ActionMailer::Base that can be used for easily
+# formatting messages, accessing mailer or message instances, and the
+# attachments list.
+#
+# source://actionmailer//lib/action_mailer/mail_helper.rb#7
+module ActionMailer::MailHelper
+ # Access the message attachments list.
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#43
+ def attachments; end
+
+ # Take the text and format it, indented two spaces for each line, and
+ # wrapped at 72 columns:
+ #
+ # text = <<-TEXT
+ # This is
+ # the paragraph.
+ #
+ # * item1 * item2
+ # TEXT
+ #
+ # block_format text
+ # # => " This is the paragraph.\n\n * item1\n * item2\n"
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#20
+ def block_format(text); end
+
+ # Returns +text+ wrapped at +len+ columns and indented +indent+ spaces.
+ # By default column length +len+ equals 72 characters and indent
+ # +indent+ equal two spaces.
+ #
+ # my_text = 'Here is a sample text with more than 40 characters'
+ #
+ # format_paragraph(my_text, 25, 4)
+ # # => " Here is a sample text with\n more than 40 characters"
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#55
+ def format_paragraph(text, len = T.unsafe(nil), indent = T.unsafe(nil)); end
+
+ # Access the mailer instance.
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#33
+ def mailer; end
+
+ # Access the message instance.
+ #
+ # source://actionmailer//lib/action_mailer/mail_helper.rb#38
+ def message; end
+end
+
+# The ActionMailer::MessageDelivery class is used by
+# ActionMailer::Base when creating a new mailer.
+# MessageDelivery is a wrapper (+Delegator+ subclass) around a lazy
+# created Mail::Message. You can get direct access to the
+# Mail::Message, deliver the email or schedule the email to be sent
+# through Active Job.
+#
+# Notifier.welcome(User.first) # an ActionMailer::MessageDelivery object
+# Notifier.welcome(User.first).deliver_now # sends the email
+# Notifier.welcome(User.first).deliver_later # enqueue email delivery as a job through Active Job
+# Notifier.welcome(User.first).message # a Mail::Message object
+#
+# source://actionmailer//lib/action_mailer/message_delivery.rb#17
+class ActionMailer::MessageDelivery
+ # @return [MessageDelivery] a new instance of MessageDelivery
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#18
+ def initialize(mailer_class, action, *args, **_arg3); end
+
+ # Method calls are delegated to the Mail::Message that's ready to deliver.
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#29
+ def __getobj__; end
+
+ # Unused except for delegator internals (dup, marshalling).
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#34
+ def __setobj__(mail_message); end
+
+ # Enqueues the email to be delivered through Active Job. When the
+ # job runs it will send the email using +deliver_now+.
+ #
+ # Notifier.welcome(User.first).deliver_later
+ # Notifier.welcome(User.first).deliver_later(wait: 1.hour)
+ # Notifier.welcome(User.first).deliver_later(wait_until: 10.hours.from_now)
+ # Notifier.welcome(User.first).deliver_later(priority: 10)
+ #
+ # Options:
+ #
+ # * :wait - Enqueue the email to be delivered with a delay.
+ # * :wait_until - Enqueue the email to be delivered at (after) a specific date / time.
+ # * :queue - Enqueue the email on the specified queue.
+ # * :priority - Enqueues the email with the specified priority
+ #
+ # By default, the email will be enqueued using ActionMailer::MailDeliveryJob. Each
+ # ActionMailer::Base class can specify the job to use by setting the class variable
+ # +delivery_job+.
+ #
+ # class AccountRegistrationMailer < ApplicationMailer
+ # self.delivery_job = RegistrationDeliveryJob
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#98
+ def deliver_later(options = T.unsafe(nil)); end
+
+ # Enqueues the email to be delivered through Active Job. When the
+ # job runs it will send the email using +deliver_now!+. That means
+ # that the message will be sent bypassing checking +perform_deliveries+
+ # and +raise_delivery_errors+, so use with caution.
+ #
+ # Notifier.welcome(User.first).deliver_later!
+ # Notifier.welcome(User.first).deliver_later!(wait: 1.hour)
+ # Notifier.welcome(User.first).deliver_later!(wait_until: 10.hours.from_now)
+ # Notifier.welcome(User.first).deliver_later!(priority: 10)
+ #
+ # Options:
+ #
+ # * :wait - Enqueue the email to be delivered with a delay
+ # * :wait_until - Enqueue the email to be delivered at (after) a specific date / time
+ # * :queue - Enqueue the email on the specified queue
+ # * :priority - Enqueues the email with the specified priority
+ #
+ # By default, the email will be enqueued using ActionMailer::MailDeliveryJob. Each
+ # ActionMailer::Base class can specify the job to use by setting the class variable
+ # +delivery_job+.
+ #
+ # class AccountRegistrationMailer < ApplicationMailer
+ # self.delivery_job = RegistrationDeliveryJob
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#72
+ def deliver_later!(options = T.unsafe(nil)); end
+
+ # Delivers an email:
+ #
+ # Notifier.welcome(User.first).deliver_now
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#117
+ def deliver_now; end
+
+ # Delivers an email without checking +perform_deliveries+ and +raise_delivery_errors+,
+ # so use with caution.
+ #
+ # Notifier.welcome(User.first).deliver_now!
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#107
+ def deliver_now!; end
+
+ # Returns the resulting Mail::Message
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#39
+ def message; end
+
+ # Was the delegate loaded, causing the mailer action to be processed?
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#44
+ def processed?; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#132
+ def enqueue_delivery(delivery_method, options = T.unsafe(nil)); end
+
+ # Returns the processed Mailer instance. We keep this instance
+ # on hand so we can delegate exception handling to it.
+ #
+ # source://actionmailer//lib/action_mailer/message_delivery.rb#126
+ def processed_mailer; end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#7
+class ActionMailer::NonInferrableMailerError < ::StandardError
+ # @return [NonInferrableMailerError] a new instance of NonInferrableMailerError
+ #
+ # source://actionmailer//lib/action_mailer/test_case.rb#8
+ def initialize(name); end
+end
+
+# Provides the option to parameterize mailers in order to share instance variable
+# setup, processing, and common headers.
+#
+# Consider this example that does not use parameterization:
+#
+# class InvitationsMailer < ApplicationMailer
+# def account_invitation(inviter, invitee)
+# @account = inviter.account
+# @inviter = inviter
+# @invitee = invitee
+#
+# subject = "#{@inviter.name} invited you to their Basecamp (#{@account.name})"
+#
+# mail \
+# subject: subject,
+# to: invitee.email_address,
+# from: common_address(inviter),
+# reply_to: inviter.email_address_with_name
+# end
+#
+# def project_invitation(project, inviter, invitee)
+# @account = inviter.account
+# @project = project
+# @inviter = inviter
+# @invitee = invitee
+# @summarizer = ProjectInvitationSummarizer.new(@project.bucket)
+#
+# subject = "#{@inviter.name.familiar} added you to a project in Basecamp (#{@account.name})"
+#
+# mail \
+# subject: subject,
+# to: invitee.email_address,
+# from: common_address(inviter),
+# reply_to: inviter.email_address_with_name
+# end
+#
+# def bulk_project_invitation(projects, inviter, invitee)
+# @account = inviter.account
+# @projects = projects.sort_by(&:name)
+# @inviter = inviter
+# @invitee = invitee
+#
+# subject = "#{@inviter.name.familiar} added you to some new stuff in Basecamp (#{@account.name})"
+#
+# mail \
+# subject: subject,
+# to: invitee.email_address,
+# from: common_address(inviter),
+# reply_to: inviter.email_address_with_name
+# end
+# end
+#
+# InvitationsMailer.account_invitation(person_a, person_b).deliver_later
+#
+# Using parameterized mailers, this can be rewritten as:
+#
+# class InvitationsMailer < ApplicationMailer
+# before_action { @inviter, @invitee = params[:inviter], params[:invitee] }
+# before_action { @account = params[:inviter].account }
+#
+# default to: -> { @invitee.email_address },
+# from: -> { common_address(@inviter) },
+# reply_to: -> { @inviter.email_address_with_name }
+#
+# def account_invitation
+# mail subject: "#{@inviter.name} invited you to their Basecamp (#{@account.name})"
+# end
+#
+# def project_invitation
+# @project = params[:project]
+# @summarizer = ProjectInvitationSummarizer.new(@project.bucket)
+#
+# mail subject: "#{@inviter.name.familiar} added you to a project in Basecamp (#{@account.name})"
+# end
+#
+# def bulk_project_invitation
+# @projects = params[:projects].sort_by(&:name)
+#
+# mail subject: "#{@inviter.name.familiar} added you to some new stuff in Basecamp (#{@account.name})"
+# end
+# end
+#
+# InvitationsMailer.with(inviter: person_a, invitee: person_b).account_invitation.deliver_later
+#
+# source://actionmailer//lib/action_mailer/parameterized.rb#87
+module ActionMailer::Parameterized
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailer::Parameterized::ClassMethods
+end
+
+# source://actionmailer//lib/action_mailer/parameterized.rb#94
+module ActionMailer::Parameterized::ClassMethods
+ # Provide the parameters to the mailer in order to use them in the instance methods and callbacks.
+ #
+ # InvitationsMailer.with(inviter: person_a, invitee: person_b).account_invitation.deliver_later
+ #
+ # See Parameterized documentation for full example.
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#100
+ def with(params); end
+end
+
+# source://actionmailer//lib/action_mailer/parameterized.rb#105
+class ActionMailer::Parameterized::Mailer
+ # @return [Mailer] a new instance of Mailer
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#106
+ def initialize(mailer, params); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#111
+ def method_missing(method_name, *args, **_arg2); end
+
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#120
+ def respond_to_missing?(method, include_all = T.unsafe(nil)); end
+end
+
+# source://actionmailer//lib/action_mailer/parameterized.rb#125
+class ActionMailer::Parameterized::MessageDelivery < ::ActionMailer::MessageDelivery
+ # @return [MessageDelivery] a new instance of MessageDelivery
+ #
+ # source://actionmailer//lib/action_mailer/parameterized.rb#126
+ def initialize(mailer_class, action, params, *args, **_arg4); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#140
+ def enqueue_delivery(delivery_method, options = T.unsafe(nil)); end
+
+ # source://actionmailer//lib/action_mailer/parameterized.rb#133
+ def processed_mailer; end
+end
+
+# source://actionmailer//lib/action_mailer/preview.rb#69
+class ActionMailer::Preview
+ extend ::ActiveSupport::DescendantsTracker
+
+ # @return [Preview] a new instance of Preview
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#74
+ def initialize(params = T.unsafe(nil)); end
+
+ # Returns the value of attribute params.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#72
+ def params; end
+
+ class << self
+ # Returns all mailer preview classes.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#80
+ def all; end
+
+ # Returns the mail object for the given email name. The registered preview
+ # interceptors will be informed so that they can transform the message
+ # as they would if the mail was actually being delivered.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#88
+ def call(email, params = T.unsafe(nil)); end
+
+ # Returns +true+ if the email exists.
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#101
+ def email_exists?(email); end
+
+ # Returns all of the available email previews.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#96
+ def emails; end
+
+ # Returns +true+ if the preview exists.
+ #
+ # @return [Boolean]
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#106
+ def exists?(preview); end
+
+ # Find a mailer preview by its underscored class name.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#111
+ def find(preview); end
+
+ # Returns the underscored name of the mailer preview without the suffix.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#116
+ def preview_name; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/preview.rb#135
+ def inform_preview_interceptors(message); end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#121
+ def load_previews; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#127
+ def preview_path; end
+
+ # source://actionmailer//lib/action_mailer/preview.rb#131
+ def show_previews; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/preview.rb#6
+module ActionMailer::Previews
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionMailer::Previews::ClassMethods
+end
+
+# source://actionmailer//lib/action_mailer/preview.rb#28
+module ActionMailer::Previews::ClassMethods
+ # Register an Interceptor which will be called before mail is previewed.
+ # Either a class or a string can be passed in as the Interceptor. If a
+ # string is passed in it will be constantized.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#42
+ def register_preview_interceptor(interceptor); end
+
+ # Register one or more Interceptors which will be called before mail is previewed.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#30
+ def register_preview_interceptors(*interceptors); end
+
+ # Unregister a previously registered Interceptor.
+ # Either a class or a string can be passed in as the Interceptor. If a
+ # string is passed in it will be constantized.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#53
+ def unregister_preview_interceptor(interceptor); end
+
+ # Unregister one or more previously registered Interceptors.
+ #
+ # source://actionmailer//lib/action_mailer/preview.rb#35
+ def unregister_preview_interceptors(*interceptors); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/preview.rb#58
+ def interceptor_class_for(interceptor); end
+end
+
+# source://actionmailer//lib/action_mailer/railtie.rb#9
+class ActionMailer::Railtie < ::Rails::Railtie; end
+
+# Provides
+# {rescue_from}[rdoc-ref:ActiveSupport::Rescuable::ClassMethods#rescue_from]
+# for mailers. Wraps mailer action processing, mail job processing, and mail
+# delivery to handle configured errors.
+#
+# source://actionmailer//lib/action_mailer/rescuable.rb#8
+module ActionMailer::Rescuable
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Rescuable
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Rescuable::ClassMethods
+ mixes_in_class_methods ::ActionMailer::Rescuable::ClassMethods
+
+ # source://actionmailer//lib/action_mailer/rescuable.rb#18
+ def handle_exceptions; end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/rescuable.rb#25
+ def process(*_arg0, **_arg1, &_arg2); end
+
+ module GeneratedClassMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def rescue_handlers; end
+ def rescue_handlers=(value); end
+ def rescue_handlers?; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/rescuable.rb#0
+module ActionMailer::Rescuable::ClassMethods
+ # source://actionmailer//lib/action_mailer/rescuable.rb#13
+ def handle_exception(exception); end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#15
+class ActionMailer::TestCase < ::ActiveSupport::TestCase
+ include ::ActiveSupport::Testing::ConstantLookup
+ include ::ActiveJob::TestHelper
+ include ::ActionMailer::TestHelper
+ include ::Rails::Dom::Testing::Assertions::SelectorAssertions::CountDescribable
+ include ::Rails::Dom::Testing::Assertions::SelectorAssertions
+ include ::Rails::Dom::Testing::Assertions::DomAssertions
+ include ::ActionMailer::TestCase::Behavior
+ extend ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ extend ::ActionMailer::TestCase::Behavior::ClassMethods
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class=(_arg0); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class?; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class=(value); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#41
+ def _mailer_class?; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#32
+module ActionMailer::TestCase::Behavior
+ include ::ActiveSupport::Testing::Assertions
+ include ::ActiveJob::TestHelper
+ include ::ActionMailer::TestHelper
+ include ::Rails::Dom::Testing::Assertions::SelectorAssertions::CountDescribable
+ include ::Rails::Dom::Testing::Assertions::SelectorAssertions
+ include ::Rails::Dom::Testing::Assertions::DomAssertions
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Testing::ConstantLookup
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Testing::ConstantLookup::ClassMethods
+ mixes_in_class_methods ::ActionMailer::TestCase::Behavior::ClassMethods
+
+ private
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#106
+ def charset; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#110
+ def encode(subject); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#78
+ def initialize_test_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#114
+ def read_fixture(action); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#95
+ def restore_delivery_method; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#85
+ def restore_test_deliveries; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#90
+ def set_delivery_method(method); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#100
+ def set_expected_mail; end
+
+ module GeneratedClassMethods
+ def _mailer_class; end
+ def _mailer_class=(value); end
+ def _mailer_class?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _mailer_class; end
+ def _mailer_class=(value); end
+ def _mailer_class?; end
+ end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#48
+module ActionMailer::TestCase::Behavior::ClassMethods
+ # @raise [NonInferrableMailerError]
+ #
+ # source://actionmailer//lib/action_mailer/test_case.rb#68
+ def determine_default_mailer(name); end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#60
+ def mailer_class; end
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#49
+ def tests(mailer); end
+end
+
+# source://actionmailer//lib/action_mailer/test_case.rb#16
+module ActionMailer::TestCase::ClearTestDeliveries
+ extend ::ActiveSupport::Concern
+
+ private
+
+ # source://actionmailer//lib/action_mailer/test_case.rb#25
+ def clear_test_deliveries; end
+end
+
+# Provides helper methods for testing Action Mailer, including #assert_emails
+# and #assert_no_emails.
+#
+# source://actionmailer//lib/action_mailer/test_helper.rb#8
+module ActionMailer::TestHelper
+ include ::ActiveSupport::Testing::Assertions
+ include ::ActiveJob::TestHelper
+
+ # Asserts that the number of emails sent matches the given number.
+ #
+ # def test_emails
+ # assert_emails 0
+ # ContactMailer.welcome.deliver_now
+ # assert_emails 1
+ # ContactMailer.welcome.deliver_now
+ # assert_emails 2
+ # end
+ #
+ # If a block is passed, that block should cause the specified number of
+ # emails to be sent.
+ #
+ # def test_emails_again
+ # assert_emails 1 do
+ # ContactMailer.welcome.deliver_now
+ # end
+ #
+ # assert_emails 2 do
+ # ContactMailer.welcome.deliver_now
+ # ContactMailer.welcome.deliver_later
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#34
+ def assert_emails(number, &block); end
+
+ # Asserts that a specific email has been enqueued, optionally
+ # matching arguments.
+ #
+ # def test_email
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome
+ # end
+ #
+ # def test_email_with_arguments
+ # ContactMailer.welcome("Hello", "Goodbye").deliver_later
+ # assert_enqueued_email_with ContactMailer, :welcome, args: ["Hello", "Goodbye"]
+ # end
+ #
+ # If a block is passed, that block should cause the specified email
+ # to be enqueued.
+ #
+ # def test_email_in_block
+ # assert_enqueued_email_with ContactMailer, :welcome do
+ # ContactMailer.welcome.deliver_later
+ # end
+ # end
+ #
+ # If +args+ is provided as a Hash, a parameterized email is matched.
+ #
+ # def test_parameterized_email
+ # assert_enqueued_email_with ContactMailer, :welcome,
+ # args: {email: 'user@example.com'} do
+ # ContactMailer.with(email: 'user@example.com').welcome.deliver_later
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#126
+ def assert_enqueued_email_with(mailer, method, args: T.unsafe(nil), queue: T.unsafe(nil), &block); end
+
+ # Asserts that the number of emails enqueued for later delivery matches
+ # the given number.
+ #
+ # def test_emails
+ # assert_enqueued_emails 0
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_emails 1
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_emails 2
+ # end
+ #
+ # If a block is passed, that block should cause the specified number of
+ # emails to be enqueued.
+ #
+ # def test_emails_again
+ # assert_enqueued_emails 1 do
+ # ContactMailer.welcome.deliver_later
+ # end
+ #
+ # assert_enqueued_emails 2 do
+ # ContactMailer.welcome.deliver_later
+ # ContactMailer.welcome.deliver_later
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#92
+ def assert_enqueued_emails(number, &block); end
+
+ # Asserts that no emails have been sent.
+ #
+ # def test_emails
+ # assert_no_emails
+ # ContactMailer.welcome.deliver_now
+ # assert_emails 1
+ # end
+ #
+ # If a block is passed, that block should not cause any emails to be sent.
+ #
+ # def test_emails_again
+ # assert_no_emails do
+ # # No emails should be sent from this block
+ # end
+ # end
+ #
+ # Note: This assertion is simply a shortcut for:
+ #
+ # assert_emails 0, &block
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#64
+ def assert_no_emails(&block); end
+
+ # Asserts that no emails are enqueued for later delivery.
+ #
+ # def test_no_emails
+ # assert_no_enqueued_emails
+ # ContactMailer.welcome.deliver_later
+ # assert_enqueued_emails 1
+ # end
+ #
+ # If a block is provided, it should not cause any emails to be enqueued.
+ #
+ # def test_no_emails
+ # assert_no_enqueued_emails do
+ # # No emails should be enqueued from this block
+ # end
+ # end
+ #
+ # source://actionmailer//lib/action_mailer/test_helper.rb#150
+ def assert_no_enqueued_emails(&block); end
+
+ private
+
+ # source://actionmailer//lib/action_mailer/test_helper.rb#155
+ def delivery_job_filter(job); end
+end
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#9
+module ActionMailer::VERSION; end
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#10
+ActionMailer::VERSION::MAJOR = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#11
+ActionMailer::VERSION::MINOR = T.let(T.unsafe(nil), Integer)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#13
+ActionMailer::VERSION::PRE = T.let(T.unsafe(nil), T.untyped)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#15
+ActionMailer::VERSION::STRING = T.let(T.unsafe(nil), String)
+
+# source://actionmailer//lib/action_mailer/gem_version.rb#12
+ActionMailer::VERSION::TINY = T.let(T.unsafe(nil), Integer)
diff --git a/sorbet/rbi/gems/actionpack@7.0.6.rbi b/sorbet/rbi/gems/actionpack@7.0.6.rbi
new file mode 100644
index 000000000..d2eb2e75f
--- /dev/null
+++ b/sorbet/rbi/gems/actionpack@7.0.6.rbi
@@ -0,0 +1,19770 @@
+# typed: true
+
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `actionpack` gem.
+# Please instead update this file by running `bin/tapioca gem actionpack`.
+
+# source://actionpack//lib/abstract_controller.rb#8
+module AbstractController
+ extend ::ActiveSupport::Autoload
+
+ class << self
+ # source://actionpack//lib/abstract_controller.rb#24
+ def eager_load!; end
+ end
+end
+
+# Raised when a non-existing controller action is triggered.
+#
+# source://actionpack//lib/abstract_controller/base.rb#11
+class AbstractController::ActionNotFound < ::StandardError
+ include ::DidYouMean::Correctable
+
+ # @return [ActionNotFound] a new instance of ActionNotFound
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#14
+ def initialize(message = T.unsafe(nil), controller = T.unsafe(nil), action = T.unsafe(nil)); end
+
+ # source://actionpack//lib/abstract_controller/base.rb#12
+ def action; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#12
+ def controller; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#23
+ def corrections; end
+end
+
+# source://actionpack//lib/abstract_controller/asset_paths.rb#4
+module AbstractController::AssetPaths
+ extend ::ActiveSupport::Concern
+end
+
+# AbstractController::Base is a low-level API. Nobody should be
+# using it directly, and subclasses (like ActionController::Base) are
+# expected to provide their own +render+ method, since rendering means
+# different things depending on the context.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/abstract_controller/base.rb#33
+class AbstractController::Base
+ include ::ActiveSupport::Configurable
+ extend ::ActiveSupport::Configurable::ClassMethods
+ extend ::ActiveSupport::DescendantsTracker
+
+ # Delegates to the class's ::action_methods.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#161
+ def action_methods; end
+
+ # Returns the name of the action this controller is processing.
+ #
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def action_name; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def action_name=(_arg0); end
+
+ # Returns true if a method for the action is available and
+ # can be dispatched, false otherwise.
+ #
+ # Notice that action_methods.include?("foo") may return
+ # false and available_action?("foo") returns true because
+ # this method considers actions that are also available
+ # through other means, for example, implicit render ones.
+ #
+ # ==== Parameters
+ # * action_name - The name of an action to be tested
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#175
+ def available_action?(action_name); end
+
+ # Delegates to the class's ::controller_path.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#156
+ def controller_path; end
+
+ # Returns the formats that can be processed by the controller.
+ #
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def formats; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def formats=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/base.rb#194
+ def inspect; end
+
+ # Tests if a response body is set. Used to determine if the
+ # +process_action+ callback needs to be terminated in
+ # AbstractController::Callbacks.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#182
+ def performed?; end
+
+ # Calls the action going through the entire action dispatch stack.
+ #
+ # The actual method that is called is determined by calling
+ # #method_for_action. If no method can handle the action, then an
+ # AbstractController::ActionNotFound error is raised.
+ #
+ # ==== Returns
+ # * self
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#142
+ def process(action, *args, **_arg2); end
+
+ # Returns the body of the HTTP response sent by the controller.
+ #
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def response_body; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def response_body=(_arg0); end
+
+ # Actually call the method associated with the action. Override
+ # this method if you wish to change how action methods are called,
+ # not to add additional behavior around it. For example, you would
+ # override #send_action if you want to inject arguments into the
+ # method.
+ def send_action(*_arg0); end
+
+ private
+
+ # Takes an action name and returns the name of the method that will
+ # handle the action.
+ #
+ # It checks if the action name is valid and returns false otherwise.
+ #
+ # See method_for_action for more information.
+ #
+ # ==== Parameters
+ # * action_name - An action name to find a method name for
+ #
+ # ==== Returns
+ # * string - The name of the method that handles the action
+ # * false - No valid method name could be found.
+ # Raise +AbstractController::ActionNotFound+.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#246
+ def _find_action_name(action_name); end
+
+ # If the action name was not found, but a method called "action_missing"
+ # was found, #method_for_action will return "_handle_action_missing".
+ # This method calls #action_missing with the current action name.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#228
+ def _handle_action_missing(*args); end
+
+ # Checks if the action name is valid and returns false otherwise.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#282
+ def _valid_action_name?(action_name); end
+
+ # Returns true if the name can be considered an action because
+ # it has a method defined in the controller.
+ #
+ # ==== Parameters
+ # * name - The name of an action to be tested
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#204
+ def action_method?(name); end
+
+ # Takes an action name and returns the name of the method that will
+ # handle the action. In normal cases, this method returns the same
+ # name as it receives. By default, if #method_for_action receives
+ # a name that is not an action, it will look for an #action_missing
+ # method and return "_handle_action_missing" if one is found.
+ #
+ # Subclasses may override this method to add additional conditions
+ # that should be considered an action. For instance, an HTTP controller
+ # with a template matching the action name is considered to exist.
+ #
+ # If you override this method to handle additional cases, you may
+ # also provide a method (like +_handle_method_missing+) to handle
+ # the case.
+ #
+ # If none of these conditions are true, and +method_for_action+
+ # returns +nil+, an +AbstractController::ActionNotFound+ exception will be raised.
+ #
+ # ==== Parameters
+ # * action_name - An action name to find a method name for
+ #
+ # ==== Returns
+ # * string - The name of the method that handles the action
+ # * nil - No method name could be found.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#273
+ def method_for_action(action_name); end
+
+ # Call the action. Override this in a subclass to modify the
+ # behavior around processing an action. This, and not #process,
+ # is the intended way to override action dispatching.
+ #
+ # Notice that the first argument is the method to be dispatched
+ # which is *not* necessarily the same as the action name.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#214
+ def process_action(*_arg0, **_arg1, &_arg2); end
+
+ class << self
+ # Returns the value of attribute abstract.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#50
+ def abstract; end
+
+ # Define a controller as abstract. See internal_methods for more
+ # details.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#55
+ def abstract!; end
+
+ # Returns the value of attribute abstract.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#50
+ def abstract?; end
+
+ # A list of method names that should be considered actions. This
+ # includes all public instance methods on a controller, less
+ # any internal methods (see internal_methods), adding back in
+ # any methods that are internal, but still exist on the class
+ # itself.
+ #
+ # ==== Returns
+ # * Set - A set of all methods that should be considered actions.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#89
+ def action_methods; end
+
+ # action_methods are cached and there is sometimes a need to refresh
+ # them. ::clear_action_methods! allows you to do that, so next time
+ # you run action_methods, they will be recalculated.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#107
+ def clear_action_methods!; end
+
+ # Returns the full controller name, underscored, without the ending Controller.
+ #
+ # class MyApp::MyPostsController < AbstractController::Base
+ #
+ # end
+ #
+ # MyApp::MyPostsController.controller_path # => "my_app/my_posts"
+ #
+ # ==== Returns
+ # * String
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#121
+ def controller_path; end
+
+ # source://actionpack//lib/abstract_controller/base.rb#59
+ def inherited(klass); end
+
+ # A list of all internal methods for a controller. This finds the first
+ # abstract superclass of a controller, and gets a list of all public
+ # instance methods on that abstract class. Public instance methods of
+ # a controller would normally be considered action methods, so methods
+ # declared on abstract classes are being removed.
+ # (ActionController::Metal and ActionController::Base are defined as abstract)
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#74
+ def internal_methods; end
+
+ # Refresh the cached action_methods when a new action_method is added.
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#126
+ def method_added(name); end
+
+ # Returns true if the given controller is capable of rendering
+ # a path. A subclass of +AbstractController::Base+
+ # may return false. An Email controller for example does not
+ # support paths, only full URLs.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/base.rb#190
+ def supports_path?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/caching.rb#4
+module AbstractController::Caching
+ include ::AbstractController::Caching::ConfigMethods
+ extend ::ActiveSupport::Concern
+ extend ::ActiveSupport::Autoload
+ include GeneratedInstanceMethods
+ include ::AbstractController::Caching::Fragments
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ConfigMethods
+
+ # source://actionpack//lib/abstract_controller/caching.rb#52
+ def view_cache_dependencies; end
+
+ private
+
+ # Convenience accessor.
+ #
+ # source://actionpack//lib/abstract_controller/caching.rb#58
+ def cache(key, options = T.unsafe(nil), &block); end
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/caching.rb#46
+module AbstractController::Caching::ClassMethods
+ # source://actionpack//lib/abstract_controller/caching.rb#47
+ def view_cache_dependency(&dependency); end
+end
+
+# source://actionpack//lib/abstract_controller/caching.rb#12
+module AbstractController::Caching::ConfigMethods
+ # source://actionpack//lib/abstract_controller/caching.rb#13
+ def cache_store; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#17
+ def cache_store=(store); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/caching.rb#22
+ def cache_configured?; end
+end
+
+# Fragment caching is used for caching various blocks within
+# views without caching the entire action as a whole. This is
+# useful when certain elements of an action change frequently or
+# depend on complicated state while other parts rarely change or
+# can be shared amongst multiple parties. The caching is done using
+# the +cache+ helper available in the Action View. See
+# ActionView::Helpers::CacheHelper for more information.
+#
+# While it's strongly recommended that you use key-based cache
+# expiration (see links in CacheHelper for more information),
+# it is also possible to manually expire caches. For example:
+#
+# expire_fragment('name_of_cache')
+#
+# source://actionpack//lib/abstract_controller/caching/fragments.rb#18
+module AbstractController::Caching::Fragments
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+
+ # Given a key (as described in +expire_fragment+), returns
+ # a key array suitable for use in reading, writing, or expiring a
+ # cached fragment. All keys begin with :views,
+ # followed by ENV["RAILS_CACHE_ID"] or ENV["RAILS_APP_VERSION"] if set,
+ # followed by any controller-wide key prefix values, ending
+ # with the specified +key+ value.
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#68
+ def combined_fragment_cache_key(key); end
+
+ # Removes fragments from the cache.
+ #
+ # +key+ can take one of three forms:
+ #
+ # * String - This would normally take the form of a path, like
+ # pages/45/notes.
+ # * Hash - Treated as an implicit call to +url_for+, like
+ # { controller: 'pages', action: 'notes', id: 45}
+ # * Regexp - Will remove any fragment that matches, so
+ # %r{pages/\d*/notes} might remove all notes. Make sure you
+ # don't use anchors in the regex (^ or $) because
+ # the actual filename matched looks like
+ # ./cache/filename/path.cache. Note: Regexp expiration is
+ # only supported on caches that can iterate over all keys (unlike
+ # memcached).
+ #
+ # +options+ is passed through to the cache store's +delete+
+ # method (or delete_matched, for Regexp keys).
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#132
+ def expire_fragment(key, options = T.unsafe(nil)); end
+
+ # Check if a cached fragment from the location signified by
+ # +key+ exists (see +expire_fragment+ for acceptable formats).
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#105
+ def fragment_exist?(key, options = T.unsafe(nil)); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#145
+ def instrument_fragment_cache(name, key, &block); end
+
+ # Reads a cached fragment from the location signified by +key+
+ # (see +expire_fragment+ for acceptable formats).
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#93
+ def read_fragment(key, options = T.unsafe(nil)); end
+
+ # Writes +content+ to the location signified by
+ # +key+ (see +expire_fragment+ for acceptable formats).
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#80
+ def write_fragment(key, content, options = T.unsafe(nil)); end
+
+ module GeneratedClassMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/caching/fragments.rb#35
+module AbstractController::Caching::Fragments::ClassMethods
+ # Allows you to specify controller-wide key prefixes for
+ # cache fragments. Pass either a constant +value+, or a block
+ # which computes a value each time a cache key is generated.
+ #
+ # For example, you may want to prefix all fragment cache keys
+ # with a global version identifier, so you can easily
+ # invalidate all caches.
+ #
+ # class ApplicationController
+ # fragment_cache_key "v1"
+ # end
+ #
+ # When it's time to invalidate all fragments, simply change
+ # the string constant. Or, progressively roll out the cache
+ # invalidation using a computed value:
+ #
+ # class ApplicationController
+ # fragment_cache_key do
+ # @account.id.odd? ? "v1" : "v2"
+ # end
+ # end
+ #
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#57
+ def fragment_cache_key(value = T.unsafe(nil), &key); end
+end
+
+# = Abstract Controller Callbacks
+#
+# Abstract Controller provides hooks during the life cycle of a controller action.
+# Callbacks allow you to trigger logic during this cycle. Available callbacks are:
+#
+# * after_action
+# * append_after_action
+# * append_around_action
+# * append_before_action
+# * around_action
+# * before_action
+# * prepend_after_action
+# * prepend_around_action
+# * prepend_before_action
+# * skip_after_action
+# * skip_around_action
+# * skip_before_action
+#
+# NOTE: Calling the same callback multiple times will overwrite previous callback definitions.
+#
+# source://actionpack//lib/abstract_controller/callbacks.rb#24
+module AbstractController::Callbacks
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+
+ private
+
+ # Override AbstractController::Base#process_action to run the
+ # process_action callbacks around the normal behavior.
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#232
+ def process_action(*_arg0, **_arg1, &_arg2); end
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/callbacks.rb#38
+class AbstractController::Callbacks::ActionFilter
+ # @return [ActionFilter] a new instance of ActionFilter
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#39
+ def initialize(actions); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#43
+ def after(controller); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#43
+ def around(controller); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#43
+ def before(controller); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#43
+ def match?(controller); end
+end
+
+# source://actionpack//lib/abstract_controller/callbacks.rb#52
+module AbstractController::Callbacks::ClassMethods
+ # Take callback names and an optional callback proc, normalize them,
+ # then call the block with each callback. This allows us to abstract
+ # the normalization across several methods that use it.
+ #
+ # ==== Parameters
+ # * callbacks - An array of callbacks, with an optional
+ # options hash as the last parameter.
+ # * block - A proc that should be added to the callbacks.
+ #
+ # ==== Block Parameters
+ # * name - The callback to be added.
+ # * options - A hash of options to be used when adding the callback.
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#96
+ def _insert_callbacks(callbacks, block = T.unsafe(nil)); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#77
+ def _normalize_callback_option(options, from, to); end
+
+ # If +:only+ or +:except+ are used, convert the options into the
+ # +:if+ and +:unless+ options of ActiveSupport::Callbacks.
+ #
+ # The basic idea is that :only => :index gets converted to
+ # :if => proc {|c| c.action_name == "index" }.
+ #
+ # Note that :only has priority over :if in case they
+ # are used together.
+ #
+ # only: :index, if: -> { true } # the :if option will be ignored.
+ #
+ # Note that :if has priority over :except in case they
+ # are used together.
+ #
+ # except: :index, if: -> { true } # the :except option will be ignored.
+ #
+ # ==== Options
+ # * only - The callback should be run only for this action.
+ # * except - The callback should be run for all actions except this action.
+ #
+ # source://actionpack//lib/abstract_controller/callbacks.rb#72
+ def _normalize_callback_options(options); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#204
+ def after_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#204
+ def append_after_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#204
+ def append_around_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#204
+ def append_before_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#204
+ def around_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#204
+ def before_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#210
+ def prepend_after_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#210
+ def prepend_around_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#210
+ def prepend_before_action(*names, &blk); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#218
+ def skip_after_action(*names); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#218
+ def skip_around_action(*names); end
+
+ # source://actionpack//lib/abstract_controller/callbacks.rb#218
+ def skip_before_action(*names); end
+end
+
+# source://actionpack//lib/abstract_controller/collector.rb#6
+module AbstractController::Collector
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def atom(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def bmp(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def css(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def csv(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def gif(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def gzip(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def html(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def ics(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def jpeg(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def js(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def json(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def m4a(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def mp3(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def mp4(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def mpeg(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def multipart_form(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def ogg(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def otf(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def pdf(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def png(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def rss(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def svg(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def text(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def tiff(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def ttf(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def url_encoded_form(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def vcf(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def vtt(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def webm(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def woff(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def woff2(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def xml(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def yaml(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/collector.rb#10
+ def zip(*args, **_arg1, &block); end
+
+ private
+
+ # source://actionpack//lib/abstract_controller/collector.rb#26
+ def method_missing(symbol, *args, **_arg2, &block); end
+
+ class << self
+ # source://actionpack//lib/abstract_controller/collector.rb#7
+ def generate_method_for_mime(mime); end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#9
+class AbstractController::DoubleRenderError < ::AbstractController::Error
+ # @return [DoubleRenderError] a new instance of DoubleRenderError
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#12
+ def initialize(message = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#10
+AbstractController::DoubleRenderError::DEFAULT_MESSAGE = T.let(T.unsafe(nil), String)
+
+# source://actionpack//lib/abstract_controller/error.rb#4
+class AbstractController::Error < ::StandardError; end
+
+# source://actionpack//lib/abstract_controller/helpers.rb#7
+module AbstractController::Helpers
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#40
+ def _helpers; end
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/helpers.rb#44
+module AbstractController::Helpers::ClassMethods
+ # Sets the attribute _helpers
+ #
+ # @param value the value to set the attribute _helpers to.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#56
+ def _helpers=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#185
+ def _helpers_for_modification; end
+
+ # Clears up all existing helpers in this class, only keeping the helper
+ # with the same name as this class.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#159
+ def clear_helpers; end
+
+ # Includes the given modules in the template class.
+ #
+ # Modules can be specified in different ways. All of the following calls
+ # include +FooHelper+:
+ #
+ # # Module, recommended.
+ # helper FooHelper
+ #
+ # # String/symbol without the "helper" suffix, camel or snake case.
+ # helper "Foo"
+ # helper :Foo
+ # helper "foo"
+ # helper :foo
+ #
+ # The last two assume that "foo".camelize returns "Foo".
+ #
+ # When strings or symbols are passed, the method finds the actual module
+ # object using String#constantize. Therefore, if the module has not been
+ # yet loaded, it has to be autoloadable, which is normally the case.
+ #
+ # Namespaces are supported. The following calls include +Foo::BarHelper+:
+ #
+ # # Module, recommended.
+ # helper Foo::BarHelper
+ #
+ # # String/symbol without the "helper" suffix, camel or snake case.
+ # helper "Foo::Bar"
+ # helper :"Foo::Bar"
+ # helper "foo/bar"
+ # helper :"foo/bar"
+ #
+ # The last two assume that "foo/bar".camelize returns "Foo::Bar".
+ #
+ # The method accepts a block too. If present, the block is evaluated in
+ # the context of the controller helper module. This simple call makes the
+ # +wadus+ method available in templates of the enclosing controller:
+ #
+ # helper do
+ # def wadus
+ # "wadus"
+ # end
+ # end
+ #
+ # Furthermore, all the above styles can be mixed together:
+ #
+ # helper FooHelper, "woo", "bar/baz" do
+ # def wadus
+ # "wadus"
+ # end
+ # end
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#148
+ def helper(*args, &block); end
+
+ # Declare a controller method as a helper. For example, the following
+ # makes the +current_user+ and +logged_in?+ controller methods available
+ # to the view:
+ # class ApplicationController < ActionController::Base
+ # helper_method :current_user, :logged_in?
+ #
+ # private
+ # def current_user
+ # @current_user ||= User.find_by(id: session[:user])
+ # end
+ #
+ # def logged_in?
+ # current_user != nil
+ # end
+ # end
+ #
+ # In a view:
+ # <% if logged_in? -%>Welcome, <%= current_user.name %><% end -%>
+ #
+ # ==== Parameters
+ # * method[, method] - A name or names of a method on the controller
+ # to be made available on the view.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#80
+ def helper_method(*methods); end
+
+ # When a class is inherited, wrap its helper module in a new module.
+ # This ensures that the parent class's module can be changed
+ # independently of the child class's.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#48
+ def inherited(klass); end
+
+ # Given an array of values like the ones accepted by +helper+, this method
+ # returns an array with the corresponding modules, in the same order.
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#170
+ def modules_for_helpers(modules_or_helper_prefixes); end
+
+ private
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#204
+ def default_helper_module!; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#193
+ def define_helpers_module(klass, helpers = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/abstract_controller/helpers.rb#26
+class AbstractController::Helpers::MissingHelperError < ::LoadError
+ # @return [MissingHelperError] a new instance of MissingHelperError
+ #
+ # source://actionpack//lib/abstract_controller/helpers.rb#27
+ def initialize(error, path); end
+end
+
+# source://actionpack//lib/abstract_controller/logger.rb#6
+module AbstractController::Logger
+ extend ::ActiveSupport::Concern
+ include ::ActiveSupport::Benchmarkable
+end
+
+# source://actionpack//lib/abstract_controller/railties/routes_helpers.rb#6
+module AbstractController::Railties; end
+
+# source://actionpack//lib/abstract_controller/railties/routes_helpers.rb#7
+module AbstractController::Railties::RoutesHelpers
+ class << self
+ # source://actionpack//lib/abstract_controller/railties/routes_helpers.rb#8
+ def with(routes, include_path_helpers = T.unsafe(nil)); end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#17
+module AbstractController::Rendering
+ extend ::ActiveSupport::Concern
+ include ::ActionView::ViewPaths
+
+ mixes_in_class_methods ::ActionView::ViewPaths::ClassMethods
+
+ # Normalizes arguments and options, and then delegates to render_to_body and
+ # sticks the result in self.response_body.
+ #
+ # Supported options depend on the underlying +render_to_body+ implementation.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#25
+ def render(*args, &block); end
+
+ # Performs the actual template rendering.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#49
+ def render_to_body(options = T.unsafe(nil)); end
+
+ # Similar to #render, but only returns the rendered template as a string,
+ # instead of setting +self.response_body+.
+ #
+ # If a component extends the semantics of +response_body+ (as ActionController
+ # extends it to be anything that responds to the method each), this method
+ # needs to be overridden in order to still return a string.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#43
+ def render_to_string(*args, &block); end
+
+ # Returns +Content-Type+ of rendered content.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#53
+ def rendered_format; end
+
+ # This method should return a hash with assigns.
+ # You can overwrite this configuration per controller.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#61
+ def view_assigns; end
+
+ private
+
+ # Normalize args by converting render "foo" to
+ # render :action => "foo" and render "foo/bar" to
+ # render :file => "foo/bar".
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#73
+ def _normalize_args(action = T.unsafe(nil), options = T.unsafe(nil)); end
+
+ # Normalize options.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#88
+ def _normalize_options(options); end
+
+ # Normalize args and options.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#114
+ def _normalize_render(*args, &block); end
+
+ # Process the rendered format.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#98
+ def _process_format(format); end
+
+ # Process extra options.
+ #
+ # source://actionpack//lib/abstract_controller/rendering.rb#93
+ def _process_options(options); end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#101
+ def _process_variant(options); end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#121
+ def _protected_ivars; end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#104
+ def _set_html_content_type; end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#110
+ def _set_rendered_content_type(format); end
+
+ # source://actionpack//lib/abstract_controller/rendering.rb#107
+ def _set_vary_header; end
+end
+
+# source://actionpack//lib/abstract_controller/rendering.rb#57
+AbstractController::Rendering::DEFAULT_PROTECTED_INSTANCE_VARIABLES = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/abstract_controller/translation.rb#6
+module AbstractController::Translation
+ # Delegates to I18n.localize.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#33
+ def l(object, **options); end
+
+ # Delegates to I18n.localize.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#33
+ def localize(object, **options); end
+
+ # source://actionpack//lib/abstract_controller/translation.rb#7
+ def raise_on_missing_translations; end
+
+ # source://actionpack//lib/abstract_controller/translation.rb#7
+ def raise_on_missing_translations=(val); end
+
+ # Delegates to I18n.translate.
+ #
+ # When the given key starts with a period, it will be scoped by the current
+ # controller and action. So if you call translate(".foo") from
+ # PeopleController#index, it will convert the call to
+ # I18n.translate("people.index.foo"). This makes it less repetitive
+ # to translate many keys within the same controller / action and gives you a
+ # simple framework for scoping them consistently.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#17
+ def t(key, **options); end
+
+ # Delegates to I18n.translate.
+ #
+ # When the given key starts with a period, it will be scoped by the current
+ # controller and action. So if you call translate(".foo") from
+ # PeopleController#index, it will convert the call to
+ # I18n.translate("people.index.foo"). This makes it less repetitive
+ # to translate many keys within the same controller / action and gives you a
+ # simple framework for scoping them consistently.
+ #
+ # source://actionpack//lib/abstract_controller/translation.rb#17
+ def translate(key, **options); end
+
+ class << self
+ # source://actionpack//lib/abstract_controller/translation.rb#7
+ def raise_on_missing_translations; end
+
+ # source://actionpack//lib/abstract_controller/translation.rb#7
+ def raise_on_missing_translations=(val); end
+ end
+end
+
+# Includes +url_for+ into the host class (e.g. an abstract controller or mailer). The class
+# has to provide a +RouteSet+ by implementing the _routes methods. Otherwise, an
+# exception will be raised.
+#
+# Note that this module is completely decoupled from HTTP - the only requirement is a valid
+# _routes implementation.
+#
+# source://actionpack//lib/abstract_controller/url_for.rb#10
+module AbstractController::UrlFor
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionDispatch::Routing::UrlFor
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+
+ # source://actionpack//lib/abstract_controller/url_for.rb#14
+ def _routes; end
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
+
+# source://actionpack//lib/abstract_controller/url_for.rb#19
+module AbstractController::UrlFor::ClassMethods
+ # source://actionpack//lib/abstract_controller/url_for.rb#20
+ def _routes; end
+
+ # source://actionpack//lib/abstract_controller/url_for.rb#24
+ def action_methods; end
+end
+
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#13
+module ActionController
+ extend ::ActiveSupport::Autoload
+
+ class << self
+ # See Renderers.add
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#7
+ def add_renderer(key, &block); end
+
+ # See Renderers.remove
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#12
+ def remove_renderer(key); end
+ end
+end
+
+# API Controller is a lightweight version of ActionController::Base,
+# created for applications that don't require all functionalities that a complete
+# \Rails controller provides, allowing you to create controllers with just the
+# features that you need for API only applications.
+#
+# An API Controller is different from a normal controller in the sense that
+# by default it doesn't include a number of features that are usually required
+# by browser access only: layouts and templates rendering,
+# flash, assets, and so on. This makes the entire controller stack thinner,
+# suitable for API applications. It doesn't mean you won't have such
+# features if you need them: they're all available for you to include in
+# your application, they're just not part of the default API controller stack.
+#
+# Normally, +ApplicationController+ is the only controller that inherits from
+# ActionController::API. All other controllers in turn inherit from
+# +ApplicationController+.
+#
+# A sample controller could look like this:
+#
+# class PostsController < ApplicationController
+# def index
+# posts = Post.all
+# render json: posts
+# end
+# end
+#
+# Request, response, and parameters objects all work the exact same way as
+# ActionController::Base.
+#
+# == Renders
+#
+# The default API Controller stack includes all renderers, which means you
+# can use render :json and siblings freely in your controllers. Keep
+# in mind that templates are not going to be rendered, so you need to ensure
+# your controller is calling either render or redirect_to in
+# all actions, otherwise it will return 204 No Content.
+#
+# def show
+# post = Post.find(params[:id])
+# render json: post
+# end
+#
+# == Redirects
+#
+# Redirects are used to move from one action to another. You can use the
+# redirect_to method in your controllers in the same way as in
+# ActionController::Base. For example:
+#
+# def create
+# redirect_to root_url and return if not_authorized?
+# # do stuff here
+# end
+#
+# == Adding New Behavior
+#
+# In some scenarios you may want to add back some functionality provided by
+# ActionController::Base that is not present by default in
+# ActionController::API, for instance MimeResponds. This
+# module gives you the respond_to method. Adding it is quite simple,
+# you just need to include the module in a specific controller or in
+# +ApplicationController+ in case you want it available in your entire
+# application:
+#
+# class ApplicationController < ActionController::API
+# include ActionController::MimeResponds
+# end
+#
+# class PostsController < ApplicationController
+# def index
+# posts = Post.all
+#
+# respond_to do |format|
+# format.json { render json: posts }
+# format.xml { render xml: posts }
+# end
+# end
+# end
+#
+# Make sure to check the modules included in ActionController::Base
+# if you want to use any other functionality that is not provided
+# by ActionController::API out of the box.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/action_controller/api.rb#89
+class ActionController::API < ::ActionController::Metal
+ include ::ActionView::ViewPaths
+ include ::AbstractController::Rendering
+ include ::ActionDispatch::Routing::PolymorphicRoutes
+ include ::ActionDispatch::Routing::UrlFor
+ include ::AbstractController::UrlFor
+ include ::ActionController::UrlFor
+ include ::AbstractController::Logger
+ include ::ActiveSupport::Benchmarkable
+ include ::ActionController::Redirecting
+ include ::ActionController::ApiRendering
+ include ::ActionController::Rendering
+ include ::ActionController::Renderers
+ include ::ActionController::Renderers::All
+ include ::ActionController::Head
+ include ::ActionController::ConditionalGet
+ include ::ActionController::BasicImplicitRender
+ include ::ActionController::StrongParameters
+ include ::ActionController::DataStreaming
+ include ::ActionController::DefaultHeaders
+ include ::ActionController::Logging
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+ include ::ActiveSupport::Rescuable
+ include ::ActionController::Rescue
+ include ::ActionController::Instrumentation
+ include ::ActionController::ParamsWrapper
+ extend ::ActionView::ViewPaths::ClassMethods
+ extend ::AbstractController::UrlFor::ClassMethods
+ extend ::ActionController::Rendering::ClassMethods
+ extend ::ActionController::Renderers::ClassMethods
+ extend ::ActionController::ConditionalGet::ClassMethods
+ extend ::ActionController::DefaultHeaders::ClassMethods
+ extend ::ActionController::Logging::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::AbstractController::Callbacks::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionController::Instrumentation::ClassMethods
+ extend ::ActionController::ParamsWrapper::ClassMethods
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _process_action_callbacks; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_process_action_callbacks(&block); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options=(_arg0); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options?; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def logger; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def logger=(value); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _process_action_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _process_action_callbacks=(value); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers=(value); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers?; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options=(value); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options=(value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options?; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers=(value); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def logger; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def logger=(value); end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # Shortcut helper that returns all the ActionController::API modules except
+ # the ones passed as arguments:
+ #
+ # class MyAPIBaseController < ActionController::Metal
+ # ActionController::API.without_modules(:UrlFor).each do |left|
+ # include left
+ # end
+ # end
+ #
+ # This gives better control over what you want to exclude and makes it easier
+ # to create an API controller class, instead of listing the modules required
+ # manually.
+ #
+ # source://actionpack//lib/action_controller/api.rb#104
+ def without_modules(*modules); end
+ end
+end
+
+# source://actionpack//lib/action_controller/api.rb#112
+ActionController::API::MODULES = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#4
+class ActionController::ActionControllerError < ::StandardError; end
+
+# source://actionpack//lib/action_controller/api/api_rendering.rb#4
+module ActionController::ApiRendering
+ extend ::ActiveSupport::Concern
+ include ::ActionController::Rendering
+
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+
+ # source://actionpack//lib/action_controller/api/api_rendering.rb#11
+ def render_to_body(options = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#7
+class ActionController::BadRequest < ::ActionController::ActionControllerError
+ # @return [BadRequest] a new instance of BadRequest
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#8
+ def initialize(msg = T.unsafe(nil)); end
+end
+
+# Action Controllers are the core of a web request in \Rails. They are made up of one or more actions that are executed
+# on request and then either it renders a template or redirects to another action. An action is defined as a public method
+# on the controller, which will automatically be made accessible to the web-server through \Rails Routes.
+#
+# By default, only the ApplicationController in a \Rails application inherits from ActionController::Base. All other
+# controllers inherit from ApplicationController. This gives you one class to configure things such as
+# request forgery protection and filtering of sensitive request parameters.
+#
+# A sample controller could look like this:
+#
+# class PostsController < ApplicationController
+# def index
+# @posts = Post.all
+# end
+#
+# def create
+# @post = Post.create params[:post]
+# redirect_to posts_path
+# end
+# end
+#
+# Actions, by default, render a template in the app/views directory corresponding to the name of the controller and action
+# after executing code in the action. For example, the +index+ action of the PostsController would render the
+# template app/views/posts/index.html.erb by default after populating the @posts instance variable.
+#
+# Unlike index, the create action will not render a template. After performing its main purpose (creating a
+# new post), it initiates a redirect instead. This redirect works by returning an external
+# 302 Moved HTTP response that takes the user to the index action.
+#
+# These two methods represent the two basic action archetypes used in Action Controllers: Get-and-show and do-and-redirect.
+# Most actions are variations on these themes.
+#
+# == Requests
+#
+# For every request, the router determines the value of the +controller+ and +action+ keys. These determine which controller
+# and action are called. The remaining request parameters, the session (if one is available), and the full request with
+# all the HTTP headers are made available to the action through accessor methods. Then the action is performed.
+#
+# The full request object is available via the request accessor and is primarily used to query for HTTP headers:
+#
+# def server_ip
+# location = request.env["REMOTE_ADDR"]
+# render plain: "This server hosted at #{location}"
+# end
+#
+# == Parameters
+#
+# All request parameters, whether they come from a query string in the URL or form data submitted through a POST request are
+# available through the params method which returns a hash. For example, an action that was performed through
+# /posts?category=All&limit=5 will include { "category" => "All", "limit" => "5" } in params.
+#
+# It's also possible to construct multi-dimensional parameter hashes by specifying keys using brackets, such as:
+#
+#
+#
+#
+# A request coming from a form holding these inputs will include { "post" => { "name" => "david", "address" => "hyacintvej" } }.
+# If the address input had been named post[address][street], the params would have included
+# { "post" => { "address" => { "street" => "hyacintvej" } } }. There's no limit to the depth of the nesting.
+#
+# == Sessions
+#
+# Sessions allow you to store objects in between requests. This is useful for objects that are not yet ready to be persisted,
+# such as a Signup object constructed in a multi-paged process, or objects that don't change much and are needed all the time, such
+# as a User object for a system that requires login. The session should not be used, however, as a cache for objects where it's likely
+# they could be changed unknowingly. It's usually too much work to keep it all synchronized -- something databases already excel at.
+#
+# You can place objects in the session by using the session method, which accesses a hash:
+#
+# session[:person] = Person.authenticate(user_name, password)
+#
+# You can retrieve it again through the same hash:
+#
+# "Hello #{session[:person]}"
+#
+# For removing objects from the session, you can either assign a single key to +nil+:
+#
+# # removes :person from session
+# session[:person] = nil
+#
+# or you can remove the entire session with +reset_session+.
+#
+# By default, sessions are stored in an encrypted browser cookie (see
+# ActionDispatch::Session::CookieStore). Thus the user will not be able to
+# read or edit the session data. However, the user can keep a copy of the
+# cookie even after it has expired, so you should avoid storing sensitive
+# information in cookie-based sessions.
+#
+# == Responses
+#
+# Each action results in a response, which holds the headers and document to be sent to the user's browser. The actual response
+# object is generated automatically through the use of renders and redirects and requires no user intervention.
+#
+# == Renders
+#
+# Action Controller sends content to the user by using one of five rendering methods. The most versatile and common is the rendering
+# of a template. Included in the Action Pack is the Action View, which enables rendering of ERB templates. It's automatically configured.
+# The controller passes objects to the view by assigning instance variables:
+#
+# def show
+# @post = Post.find(params[:id])
+# end
+#
+# Which are then automatically available to the view:
+#
+# Title: <%= @post.title %>
+#
+# You don't have to rely on the automated rendering. For example, actions that could result in the rendering of different templates
+# will use the manual rendering methods:
+#
+# def search
+# @results = Search.find(params[:query])
+# case @results.count
+# when 0 then render action: "no_results"
+# when 1 then render action: "show"
+# when 2..10 then render action: "show_many"
+# end
+# end
+#
+# Read more about writing ERB and Builder templates in ActionView::Base.
+#
+# == Redirects
+#
+# Redirects are used to move from one action to another. For example, after a create action, which stores a blog entry to the
+# database, we might like to show the user the new entry. Because we're following good DRY principles (Don't Repeat Yourself), we're
+# going to reuse (and redirect to) a show action that we'll assume has already been created. The code might look like this:
+#
+# def create
+# @entry = Entry.new(params[:entry])
+# if @entry.save
+# # The entry was saved correctly, redirect to show
+# redirect_to action: 'show', id: @entry.id
+# else
+# # things didn't go so well, do something else
+# end
+# end
+#
+# In this case, after saving our new entry to the database, the user is redirected to the show method, which is then executed.
+# Note that this is an external HTTP-level redirection which will cause the browser to make a second request (a GET to the show action),
+# and not some internal re-routing which calls both "create" and then "show" within one request.
+#
+# Learn more about redirect_to and what options you have in ActionController::Redirecting.
+#
+# == Calling multiple redirects or renders
+#
+# An action may contain only a single render or a single redirect. Attempting to try to do either again will result in a DoubleRenderError:
+#
+# def do_something
+# redirect_to action: "elsewhere"
+# render action: "overthere" # raises DoubleRenderError
+# end
+#
+# If you need to redirect on the condition of something, then be sure to add "and return" to halt execution.
+#
+# def do_something
+# redirect_to(action: "elsewhere") and return if monkeys.nil?
+# render action: "overthere" # won't be called if monkeys is nil
+# end
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/action_controller/base.rb#167
+class ActionController::Base < ::ActionController::Metal
+ include ::ActionView::ViewPaths
+ include ::AbstractController::Rendering
+ include ::AbstractController::Translation
+ include ::AbstractController::AssetPaths
+ include ::AbstractController::Helpers
+ include ::ActionController::Helpers
+ include ::ActionDispatch::Routing::PolymorphicRoutes
+ include ::ActionDispatch::Routing::UrlFor
+ include ::AbstractController::UrlFor
+ include ::ActionController::UrlFor
+ include ::AbstractController::Logger
+ include ::ActiveSupport::Benchmarkable
+ include ::ActionController::Redirecting
+ include ::ActionView::Rendering
+ include ::ActionView::Layouts
+ include ::ActionController::Rendering
+ include ::ActionController::Renderers
+ include ::ActionController::Renderers::All
+ include ::ActionController::Head
+ include ::ActionController::ConditionalGet
+ include ::ActionController::EtagWithTemplateDigest
+ include ::ActionController::EtagWithFlash
+ include ::ActionController::Caching
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching::ConfigMethods
+ include ::AbstractController::Caching
+ include ::ActionController::MimeResponds
+ include ::ActionController::BasicImplicitRender
+ include ::ActionController::ImplicitRender
+ include ::ActionController::StrongParameters
+ include ::ActionController::ParameterEncoding
+ include ::ActionController::Cookies
+ include ::ActionController::Flash
+ include ::ActionController::FormBuilder
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+ include ::ActionController::RequestForgeryProtection
+ include ::ActionController::ContentSecurityPolicy
+ include ::ActionController::PermissionsPolicy
+ include ::ActionController::Streaming
+ include ::ActionController::DataStreaming
+ include ::ActionController::HttpAuthentication::Basic::ControllerMethods
+ include ::ActionController::HttpAuthentication::Digest::ControllerMethods
+ include ::ActionController::HttpAuthentication::Token::ControllerMethods
+ include ::ActionController::DefaultHeaders
+ include ::ActionController::Logging
+ include ::ActiveSupport::Rescuable
+ include ::ActionController::Rescue
+ include ::ActionController::Instrumentation
+ include ::ActionController::ParamsWrapper
+ extend ::ActionView::ViewPaths::ClassMethods
+ extend ::AbstractController::Helpers::ClassMethods
+ extend ::ActionController::Helpers::ClassMethods
+ extend ::AbstractController::UrlFor::ClassMethods
+ extend ::ActionView::Rendering::ClassMethods
+ extend ::ActionView::Layouts::ClassMethods
+ extend ::ActionController::Rendering::ClassMethods
+ extend ::ActionController::Renderers::ClassMethods
+ extend ::ActionController::ConditionalGet::ClassMethods
+ extend ::AbstractController::Caching::Fragments::ClassMethods
+ extend ::AbstractController::Caching::ClassMethods
+ extend ::AbstractController::Caching::ConfigMethods
+ extend ::ActionController::ParameterEncoding::ClassMethods
+ extend ::ActionController::Flash::ClassMethods
+ extend ::ActionController::FormBuilder::ClassMethods
+ extend ::ActiveSupport::Callbacks::ClassMethods
+ extend ::AbstractController::Callbacks::ClassMethods
+ extend ::ActionController::RequestForgeryProtection::ClassMethods
+ extend ::ActionController::ContentSecurityPolicy::ClassMethods
+ extend ::ActionController::PermissionsPolicy::ClassMethods
+ extend ::ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods
+ extend ::ActionController::DefaultHeaders::ClassMethods
+ extend ::ActionController::Logging::ClassMethods
+ extend ::ActiveSupport::Rescuable::ClassMethods
+ extend ::ActionController::Instrumentation::ClassMethods
+ extend ::ActionController::ParamsWrapper::ClassMethods
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#11
+ def _helper_methods; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#11
+ def _helper_methods=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#11
+ def _helper_methods?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#940
+ def _process_action_callbacks; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#928
+ def _run_process_action_callbacks(&block); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies?; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#36
+ def alert; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def allow_forgery_protection; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def allow_forgery_protection=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def asset_host; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def asset_host=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def assets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def assets_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_asset_host_protocol; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_asset_host_protocol=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_protect_from_forgery; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_protect_from_forgery=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_static_extension; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_static_extension=(value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options=(_arg0); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#27
+ def etag_with_template_digest; end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#27
+ def etag_with_template_digest=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#27
+ def etag_with_template_digest?; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers?; end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#10
+ def flash(*_arg0, **_arg1, &_arg2); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def forgery_protection_origin_check; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def forgery_protection_origin_check=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def forgery_protection_strategy; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def forgery_protection_strategy=(value); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys; end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys=(_arg0); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys?; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#63
+ def helpers_path; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#63
+ def helpers_path=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#63
+ def helpers_path?; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#64
+ def include_all_helpers; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#64
+ def include_all_helpers=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#64
+ def include_all_helpers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def javascripts_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def javascripts_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def log_warning_on_csrf_failure; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def log_warning_on_csrf_failure=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def logger; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def logger=(value); end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#36
+ def notice; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def per_form_csrf_tokens; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def per_form_csrf_tokens=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def perform_caching; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def perform_caching=(value); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def relative_url_root; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def relative_url_root=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def request_forgery_protection_token; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def request_forgery_protection_token=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(_arg0); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def stylesheets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def stylesheets_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def urlsafe_csrf_tokens; end
+
+ private
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#328
+ def _layout(lookup_context, formats); end
+
+ # source://actionpack//lib/action_controller/base.rb#266
+ def _protected_ivars; end
+
+ class << self
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#68
+ def __callbacks?; end
+
+ # source://actionpack//lib/action_controller/form_builder.rb#31
+ def _default_form_builder; end
+
+ # source://actionpack//lib/action_controller/form_builder.rb#31
+ def _default_form_builder=(value); end
+
+ # source://actionpack//lib/action_controller/form_builder.rb#31
+ def _default_form_builder?; end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#8
+ def _flash_types; end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#8
+ def _flash_types=(value); end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#8
+ def _flash_types?; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#11
+ def _helper_methods; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#11
+ def _helper_methods=(value); end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#11
+ def _helper_methods?; end
+
+ # source://actionpack//lib/abstract_controller/helpers.rb#15
+ def _helpers; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout=(value); end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#209
+ def _layout?; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions; end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions=(value); end
+
+ # source://actionview/7.0.6/lib/action_view/layouts.rb#210
+ def _layout_conditions?; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#932
+ def _process_action_callbacks; end
+
+ # source://activesupport/7.0.6/lib/active_support/callbacks.rb#936
+ def _process_action_callbacks=(value); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers; end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers=(value); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#31
+ def _renderers?; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies; end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies=(value); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#42
+ def _view_cache_dependencies?; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options; end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options=(value); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#185
+ def _wrapper_options?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def allow_forgery_protection; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def allow_forgery_protection=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def asset_host; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def asset_host=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def assets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def assets_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_asset_host_protocol; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_asset_host_protocol=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_protect_from_forgery; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_protect_from_forgery=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def default_static_extension; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def default_static_extension=(value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options; end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options=(value); end
+
+ # source://actionpack//lib/action_dispatch/routing/url_for.rb#95
+ def default_url_options?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def enable_fragment_cache_logging; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def enable_fragment_cache_logging=(value); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#27
+ def etag_with_template_digest; end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#27
+ def etag_with_template_digest=(value); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#27
+ def etag_with_template_digest?; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers; end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers=(value); end
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#13
+ def etaggers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def forgery_protection_origin_check; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def forgery_protection_origin_check=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def forgery_protection_strategy; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def forgery_protection_strategy=(value); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys; end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys=(value); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#23
+ def fragment_cache_keys?; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#63
+ def helpers_path; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#63
+ def helpers_path=(value); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#63
+ def helpers_path?; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#64
+ def include_all_helpers; end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#64
+ def include_all_helpers=(value); end
+
+ # source://actionpack//lib/action_controller/metal/helpers.rb#64
+ def include_all_helpers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def javascripts_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def javascripts_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def log_warning_on_csrf_failure; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def log_warning_on_csrf_failure=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def logger; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def logger=(value); end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def per_form_csrf_tokens; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def per_form_csrf_tokens=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def perform_caching; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def perform_caching=(value); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#15
+ def raise_on_open_redirects=(val); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def relative_url_root; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def relative_url_root=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def request_forgery_protection_token; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def request_forgery_protection_token=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers; end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/rescuable.rb#13
+ def rescue_handlers?; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def stylesheets_dir; end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#114
+ def stylesheets_dir=(value); end
+
+ # source://activesupport/7.0.6/lib/active_support/configurable.rb#113
+ def urlsafe_csrf_tokens; end
+
+ # source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#97
+ def urlsafe_csrf_tokens=(urlsafe_csrf_tokens); end
+
+ # Shortcut helper that returns all the modules included in
+ # ActionController::Base except the ones passed as arguments:
+ #
+ # class MyBaseController < ActionController::Metal
+ # ActionController::Base.without_modules(:ParamsWrapper, :Streaming).each do |left|
+ # include left
+ # end
+ # end
+ #
+ # This gives better control over what you want to exclude and makes it
+ # easier to create a bare controller class, instead of listing the modules
+ # required manually.
+ #
+ # source://actionpack//lib/action_controller/base.rb#198
+ def without_modules(*modules); end
+ end
+end
+
+# source://actionpack//lib/action_controller/base.rb#0
+module ActionController::Base::HelperMethods
+ include ::ActionText::ContentHelper
+ include ::ActionText::TagHelper
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#39
+ def alert(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/caching/fragments.rb#31
+ def combined_fragment_cache_key(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#11
+ def content_security_policy?(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#12
+ def content_security_policy_nonce(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/cookies.rb#8
+ def cookies(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#106
+ def form_authenticity_token(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#39
+ def notice(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#107
+ def protect_against_forgery?(*args, **_arg1, &block); end
+
+ # source://actionpack//lib/abstract_controller/caching.rb#43
+ def view_cache_dependencies(*args, **_arg1, &block); end
+end
+
+# source://actionpack//lib/action_controller/base.rb#206
+ActionController::Base::MODULES = T.let(T.unsafe(nil), Array)
+
+# Define some internal variables that should not be propagated to the view.
+#
+# source://actionpack//lib/action_controller/base.rb#261
+ActionController::Base::PROTECTED_IVARS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/basic_implicit_render.rb#4
+module ActionController::BasicImplicitRender
+ # source://actionpack//lib/action_controller/metal/basic_implicit_render.rb#11
+ def default_render; end
+
+ # source://actionpack//lib/action_controller/metal/basic_implicit_render.rb#5
+ def send_action(method, *args); end
+end
+
+# \Caching is a cheap way of speeding up slow applications by keeping the result of
+# calculations, renderings, and database calls around for subsequent requests.
+#
+# You can read more about each approach by clicking the modules below.
+#
+# Note: To turn off all caching provided by Action Controller, set
+# config.action_controller.perform_caching = false
+#
+# == \Caching stores
+#
+# All the caching stores from ActiveSupport::Cache are available to be used as backends
+# for Action Controller caching.
+#
+# Configuration examples (FileStore is the default):
+#
+# config.action_controller.cache_store = :memory_store
+# config.action_controller.cache_store = :file_store, '/path/to/cache/directory'
+# config.action_controller.cache_store = :mem_cache_store, 'localhost'
+# config.action_controller.cache_store = :mem_cache_store, Memcached::Rails.new('localhost:11211')
+# config.action_controller.cache_store = MyOwnStore.new('parameter')
+#
+# source://actionpack//lib/action_controller/caching.rb#24
+module ActionController::Caching
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::AbstractController::Caching::Fragments
+ include ::AbstractController::Caching
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::Fragments::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ClassMethods
+ mixes_in_class_methods ::AbstractController::Caching::ConfigMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/caching.rb#40
+ def instrument_name; end
+
+ # source://actionpack//lib/action_controller/caching.rb#32
+ def instrument_payload(key); end
+
+ module GeneratedClassMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _view_cache_dependencies; end
+ def _view_cache_dependencies=(value); end
+ def _view_cache_dependencies?; end
+ def fragment_cache_keys; end
+ def fragment_cache_keys=(value); end
+ def fragment_cache_keys?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/conditional_get.rb#7
+module ActionController::ConditionalGet
+ include ::ActionController::Head
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+
+ # Sets the +Cache-Control+ header, overwriting existing directives. This
+ # method will also ensure an HTTP +Date+ header for client compatibility.
+ #
+ # Defaults to issuing the +private+ directive, so that intermediate caches
+ # must not cache the response.
+ #
+ # ==== Options
+ #
+ # [+:public+]
+ # If true, replaces the default +private+ directive with the +public+
+ # directive.
+ # [+:must_revalidate+]
+ # If true, adds the +must-revalidate+ directive.
+ # [+:stale_while_revalidate+]
+ # Sets the value of the +stale-while-revalidate+ directive.
+ # [+:stale_if_error+]
+ # Sets the value of the +stale-if-error+ directive.
+ #
+ # Any additional key-value pairs are concatenated as directives. For a list
+ # of supported +Cache-Control+ directives, see the {article on
+ # MDN}[https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control].
+ #
+ # ==== Examples
+ #
+ # expires_in 10.minutes
+ # # => Cache-Control: max-age=600, private
+ #
+ # expires_in 10.minutes, public: true
+ # # => Cache-Control: max-age=600, public
+ #
+ # expires_in 10.minutes, public: true, must_revalidate: true
+ # # => Cache-Control: max-age=600, public, must-revalidate
+ #
+ # expires_in 1.hour, stale_while_revalidate: 60.seconds
+ # # => Cache-Control: max-age=3600, private, stale-while-revalidate=60
+ #
+ # expires_in 1.hour, stale_if_error: 5.minutes
+ # # => Cache-Control: max-age=3600, private, stale-if-error=300
+ #
+ # expires_in 1.hour, public: true, "s-maxage": 3.hours, "no-transform": true
+ # # => Cache-Control: max-age=3600, public, s-maxage=10800, no-transform=true
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#274
+ def expires_in(seconds, options = T.unsafe(nil)); end
+
+ # Sets an HTTP 1.1 +Cache-Control+ header of no-cache. This means the
+ # resource will be marked as stale, so clients must always revalidate.
+ # Intermediate/browser caches may still store the asset.
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#292
+ def expires_now; end
+
+ # Sets the +etag+, +last_modified+, or both on the response, and renders a
+ # 304 Not Modified response if the request is already fresh.
+ #
+ # ==== Options
+ #
+ # [+:etag+]
+ # Sets a "weak" ETag validator on the response. See the +:weak_etag+ option.
+ # [+:weak_etag+]
+ # Sets a "weak" ETag validator on the response. Requests that specify an
+ # +If-None-Match+ header may receive a 304 Not Modified response
+ # if the ETag matches exactly.
+ #
+ # A weak ETag indicates semantic equivalence, not byte-for-byte equality,
+ # so they're good for caching HTML pages in browser caches. They can't be
+ # used for responses that must be byte-identical, like serving +Range+
+ # requests within a PDF file.
+ # [+:strong_etag+]
+ # Sets a "strong" ETag validator on the response. Requests that specify an
+ # +If-None-Match+ header may receive a 304 Not Modified response
+ # if the ETag matches exactly.
+ #
+ # A strong ETag implies exact equality -- the response must match byte for
+ # byte. This is necessary for serving +Range+ requests within a large
+ # video or PDF file, for example, or for compatibility with some CDNs that
+ # don't support weak ETags.
+ # [+:last_modified+]
+ # Sets a "weak" last-update validator on the response. Subsequent requests
+ # that specify an +If-Modified-Since+ header may receive a 304 Not Modified
+ # response if +last_modified+ <= +If-Modified-Since+.
+ # [+:public+]
+ # By default the +Cache-Control+ header is private. Set this option to
+ # +true+ if you want your application to be cacheable by other devices,
+ # such as proxy caches.
+ # [+:cache_control+]
+ # When given, will overwrite an existing +Cache-Control+ header. For a
+ # list of +Cache-Control+ directives, see the {article on
+ # MDN}[https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control].
+ # [+:template+]
+ # By default, the template digest for the current controller/action is
+ # included in ETags. If the action renders a different template, you can
+ # include its digest instead. If the action doesn't render a template at
+ # all, you can pass template: false to skip any attempt to check
+ # for a template digest.
+ #
+ # ==== Examples
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ # fresh_when(etag: @article, last_modified: @article.updated_at, public: true)
+ # end
+ #
+ # This will send a 304 Not Modified response if the request
+ # specifies a matching ETag and +If-Modified-Since+ header. Otherwise, it
+ # will render the +show+ template.
+ #
+ # You can also just pass a record:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ # fresh_when(@article)
+ # end
+ #
+ # +etag+ will be set to the record, and +last_modified+ will be set to the
+ # record's +updated_at+.
+ #
+ # You can also pass an object that responds to +maximum+, such as a
+ # collection of records:
+ #
+ # def index
+ # @articles = Article.all
+ # fresh_when(@articles)
+ # end
+ #
+ # In this case, +etag+ will be set to the collection, and +last_modified+
+ # will be set to maximum(:updated_at) (the timestamp of the most
+ # recently updated record).
+ #
+ # When passing a record or a collection, you can still specify other
+ # options, such as +:public+ and +:cache_control+:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ # fresh_when(@article, public: true, cache_control: { no_cache: true })
+ # end
+ #
+ # The above will set Cache-Control: public, no-cache in the response.
+ #
+ # When rendering a different template than the controller/action's default
+ # template, you can indicate which digest to include in the ETag:
+ #
+ # before_action { fresh_when @article, template: "widgets/show" }
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#128
+ def fresh_when(object = T.unsafe(nil), etag: T.unsafe(nil), weak_etag: T.unsafe(nil), strong_etag: T.unsafe(nil), last_modified: T.unsafe(nil), public: T.unsafe(nil), cache_control: T.unsafe(nil), template: T.unsafe(nil)); end
+
+ # Cache or yield the block. The cache is supposed to never expire.
+ #
+ # You can use this method when you have an HTTP response that never changes,
+ # and the browser and proxies should cache it indefinitely.
+ #
+ # * +public+: By default, HTTP responses are private, cached only on the
+ # user's web browser. To allow proxies to cache the response, set +true+ to
+ # indicate that they can serve the cached response to all users.
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#304
+ def http_cache_forever(public: T.unsafe(nil)); end
+
+ # Sets an HTTP 1.1 +Cache-Control+ header of no-store. This means the
+ # resource may not be stored in any cache.
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#314
+ def no_store; end
+
+ # Sets the +etag+ and/or +last_modified+ on the response and checks them
+ # against the request. If the request doesn't match the provided options, it
+ # is considered stale, and the response should be rendered from scratch.
+ # Otherwise, it is fresh, and a 304 Not Modified is sent.
+ #
+ # ==== Options
+ #
+ # See #fresh_when for supported options.
+ #
+ # ==== Examples
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ #
+ # if stale?(etag: @article, last_modified: @article.updated_at)
+ # @statistics = @article.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # You can also just pass a record:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ #
+ # if stale?(@article)
+ # @statistics = @article.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # +etag+ will be set to the record, and +last_modified+ will be set to the
+ # record's +updated_at+.
+ #
+ # You can also pass an object that responds to +maximum+, such as a
+ # collection of records:
+ #
+ # def index
+ # @articles = Article.all
+ #
+ # if stale?(@articles)
+ # @statistics = @articles.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # In this case, +etag+ will be set to the collection, and +last_modified+
+ # will be set to maximum(:updated_at) (the timestamp of the most
+ # recently updated record).
+ #
+ # When passing a record or a collection, you can still specify other
+ # options, such as +:public+ and +:cache_control+:
+ #
+ # def show
+ # @article = Article.find(params[:id])
+ #
+ # if stale?(@article, public: true, cache_control: { no_cache: true })
+ # @statistics = @articles.really_expensive_call
+ # respond_to do |format|
+ # # all the supported formats
+ # end
+ # end
+ # end
+ #
+ # The above will set Cache-Control: public, no-cache in the response.
+ #
+ # When rendering a different template than the controller/action's default
+ # template, you can indicate which digest to include in the ETag:
+ #
+ # def show
+ # super if stale?(@article, template: "widgets/show")
+ # end
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#227
+ def stale?(object = T.unsafe(nil), **freshness_kwargs); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#319
+ def combine_etags(validator, options); end
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/conditional_get.rb#16
+module ActionController::ConditionalGet::ClassMethods
+ # Allows you to consider additional controller-wide information when generating an ETag.
+ # For example, if you serve pages tailored depending on who's logged in at the moment, you
+ # may want to add the current user id to be part of the ETag to prevent unauthorized displaying
+ # of cached pages.
+ #
+ # class InvoicesController < ApplicationController
+ # etag { current_user&.id }
+ #
+ # def show
+ # # Etag will differ even for the same invoice when it's viewed by a different current_user
+ # @invoice = Invoice.find(params[:id])
+ # fresh_when etag: @invoice
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/conditional_get.rb#31
+ def etag(&etagger); end
+end
+
+# source://actionpack//lib/action_controller/metal/content_security_policy.rb#4
+module ActionController::ContentSecurityPolicy
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::AbstractController::Helpers
+ include ::ActiveSupport::Callbacks
+ include ::AbstractController::Callbacks
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActiveSupport::DescendantsTracker
+ mixes_in_class_methods ::AbstractController::Callbacks::ClassMethods
+ mixes_in_class_methods ::ActionController::ContentSecurityPolicy::ClassMethods
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#73
+ def content_security_policy?; end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#77
+ def content_security_policy_nonce; end
+
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#81
+ def current_content_security_policy; end
+
+ module GeneratedClassMethods
+ def __callbacks; end
+ def __callbacks=(value); end
+ def __callbacks?; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+
+ module GeneratedInstanceMethods
+ def __callbacks; end
+ def __callbacks?; end
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/content_security_policy.rb#15
+module ActionController::ContentSecurityPolicy::ClassMethods
+ # Overrides parts of the globally configured +Content-Security-Policy+
+ # header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy do |policy|
+ # policy.base_uri "https://www.example.com"
+ # end
+ # end
+ #
+ # Options can be passed similar to +before_action+. For example, pass
+ # only: :index to override the header on the index action only:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy(only: :index) do |policy|
+ # policy.default_src :self, :https
+ # end
+ # end
+ #
+ # Pass +false+ to remove the +Content-Security-Policy+ header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy false, only: :index
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#39
+ def content_security_policy(enabled = T.unsafe(nil), **options, &block); end
+
+ # Overrides the globally configured +Content-Security-Policy-Report-Only+
+ # header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy_report_only only: :index
+ # end
+ #
+ # Pass +false+ to remove the +Content-Security-Policy-Report-Only+ header:
+ #
+ # class PostsController < ApplicationController
+ # content_security_policy_report_only false, only: :index
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/content_security_policy.rb#65
+ def content_security_policy_report_only(report_only = T.unsafe(nil), **options); end
+end
+
+# source://actionpack//lib/action_controller/metal/cookies.rb#4
+module ActionController::Cookies
+ extend ::ActiveSupport::Concern
+
+ private
+
+ # The cookies for the current request. See ActionDispatch::Cookies for
+ # more information.
+ #
+ # source://actionpack//lib/action_controller/metal/cookies.rb#14
+ def cookies; end
+end
+
+# Methods for sending arbitrary data and for streaming files to the browser,
+# instead of rendering.
+#
+# source://actionpack//lib/action_controller/metal/data_streaming.rb#9
+module ActionController::DataStreaming
+ extend ::ActiveSupport::Concern
+ include ::ActionController::Rendering
+
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+
+ private
+
+ # Sends the given binary data to the browser. This method is similar to
+ # render plain: data, but also allows you to specify whether
+ # the browser should display the response as a file attachment (i.e. in a
+ # download dialog) or as inline data. You may also set the content type,
+ # the file name, and other things.
+ #
+ # Options:
+ # * :filename - suggests a filename for the browser to use.
+ # * :type - specifies an HTTP content type. Defaults to +application/octet-stream+.
+ # You can specify either a string or a symbol for a registered type with Mime::Type.register, for example +:json+.
+ # If omitted, type will be inferred from the file extension specified in :filename.
+ # If no content type is registered for the extension, the default type +application/octet-stream+ will be used.
+ # * :disposition - specifies whether the file will be shown inline or downloaded.
+ # Valid values are "inline" and "attachment" (default).
+ # * :status - specifies the status code to send with the response. Defaults to 200.
+ #
+ # Generic data download:
+ #
+ # send_data buffer
+ #
+ # Download a dynamically-generated tarball:
+ #
+ # send_data generate_tgz('dir'), filename: 'dir.tgz'
+ #
+ # Display an image Active Record in the browser:
+ #
+ # send_data image.data, type: image.content_type, disposition: 'inline'
+ #
+ # See +send_file+ for more information on HTTP Content-* headers and caching.
+ #
+ # source://actionpack//lib/action_controller/metal/data_streaming.rb#109
+ def send_data(data, options = T.unsafe(nil)); end
+
+ # Sends the file. This uses a server-appropriate method (such as +X-Sendfile+)
+ # via the +Rack::Sendfile+ middleware. The header to use is set via
+ # +config.action_dispatch.x_sendfile_header+.
+ # Your server can also configure this for you by setting the +X-Sendfile-Type+ header.
+ #
+ # Be careful to sanitize the path parameter if it is coming from a web
+ # page. send_file(params[:path]) allows a malicious user to
+ # download any file on your server.
+ #
+ # Options:
+ # * :filename - suggests a filename for the browser to use.
+ # Defaults to File.basename(path).
+ # * :type - specifies an HTTP content type.
+ # You can specify either a string or a symbol for a registered type with Mime::Type.register, for example +:json+.
+ # If omitted, the type will be inferred from the file extension specified in :filename.
+ # If no content type is registered for the extension, the default type +application/octet-stream+ will be used.
+ # * :disposition - specifies whether the file will be shown inline or downloaded.
+ # Valid values are "inline" and "attachment" (default).
+ # * :status - specifies the status code to send with the response. Defaults to 200.
+ # * :url_based_filename - set to +true+ if you want the browser to guess the filename from
+ # the URL, which is necessary for i18n filenames on certain browsers
+ # (setting :filename overrides this option).
+ #
+ # The default +Content-Type+ and +Content-Disposition+ headers are
+ # set to download arbitrary binary files in as many browsers as
+ # possible. IE versions 4, 5, 5.5, and 6 are all known to have
+ # a variety of quirks (especially when downloading over SSL).
+ #
+ # Simple download:
+ #
+ # send_file '/path/to.zip'
+ #
+ # Show a JPEG in the browser:
+ #
+ # send_file '/path/to.jpeg', type: 'image/jpeg', disposition: 'inline'
+ #
+ # Show a 404 page in the browser:
+ #
+ # send_file '/path/to/404.html', type: 'text/html; charset=utf-8', disposition: 'inline', status: 404
+ #
+ # You can use other Content-* HTTP headers to provide additional
+ # information to the client. See MDN for a
+ # {list of HTTP headers}[https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers].
+ #
+ # Also be aware that the document may be cached by proxies and browsers.
+ # The +Pragma+ and +Cache-Control+ headers declare how the file may be cached
+ # by intermediaries. They default to require clients to validate with
+ # the server before releasing cached responses. See
+ # https://www.mnot.net/cache_docs/ for an overview of web caching and
+ # {RFC 9111}[https://www.rfc-editor.org/rfc/rfc9111.html#name-cache-control]
+ # for the +Cache-Control+ header spec.
+ #
+ # @raise [MissingFile]
+ #
+ # source://actionpack//lib/action_controller/metal/data_streaming.rb#69
+ def send_file(path, options = T.unsafe(nil)); end
+
+ # @raise [ArgumentError]
+ #
+ # source://actionpack//lib/action_controller/metal/data_streaming.rb#114
+ def send_file_headers!(options); end
+end
+
+# source://actionpack//lib/action_controller/metal/data_streaming.rb#15
+ActionController::DataStreaming::DEFAULT_SEND_FILE_DISPOSITION = T.let(T.unsafe(nil), String)
+
+# source://actionpack//lib/action_controller/metal/data_streaming.rb#14
+ActionController::DataStreaming::DEFAULT_SEND_FILE_TYPE = T.let(T.unsafe(nil), String)
+
+# Allows configuring default headers that will be automatically merged into
+# each response.
+#
+# source://actionpack//lib/action_controller/metal/default_headers.rb#6
+module ActionController::DefaultHeaders
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::DefaultHeaders::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/default_headers.rb#9
+module ActionController::DefaultHeaders::ClassMethods
+ # source://actionpack//lib/action_controller/metal/default_headers.rb#10
+ def make_response!(request); end
+end
+
+# When you're using the flash, it's generally used as a conditional on the view.
+# This means the content of the view depends on the flash. Which in turn means
+# that the ETag for a response should be computed with the content of the flash
+# in mind. This does that by including the content of the flash as a component
+# in the ETag that's generated for a response.
+#
+# source://actionpack//lib/action_controller/metal/etag_with_flash.rb#9
+module ActionController::EtagWithFlash
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionController::ConditionalGet
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+
+ module GeneratedClassMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
+
+# When our views change, they should bubble up into HTTP cache freshness
+# and bust browser caches. So the template digest for the current action
+# is automatically included in the ETag.
+#
+# Enabled by default for apps that use Action View. Disable by setting
+#
+# config.action_controller.etag_with_template_digest = false
+#
+# Override the template to digest by passing +:template+ to +fresh_when+
+# and +stale?+ calls. For example:
+#
+# # We're going to render widgets/show, not posts/show
+# fresh_when @post, template: 'widgets/show'
+#
+# # We're not going to render a template, so omit it from the ETag.
+# fresh_when @post, template: false
+#
+# source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#21
+module ActionController::EtagWithTemplateDigest
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionController::ConditionalGet
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ConditionalGet::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#35
+ def determine_template_etag(options); end
+
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#51
+ def lookup_and_digest_template(template); end
+
+ # Pick the template digest to include in the ETag. If the +:template+ option
+ # is present, use the named template. If +:template+ is +nil+ or absent, use
+ # the default controller/action template. If +:template+ is false, omit the
+ # template digest from the ETag.
+ #
+ # source://actionpack//lib/action_controller/metal/etag_with_template_digest.rb#45
+ def pick_template_for_etag(options); end
+
+ module GeneratedClassMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def etag_with_template_digest; end
+ def etag_with_template_digest=(value); end
+ def etag_with_template_digest?; end
+ def etaggers; end
+ def etaggers=(value); end
+ def etaggers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/flash.rb#4
+module ActionController::Flash
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::Flash::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/flash.rb#51
+ def redirect_to(options = T.unsafe(nil), response_options_and_flash = T.unsafe(nil)); end
+
+ module GeneratedClassMethods
+ def _flash_types; end
+ def _flash_types=(value); end
+ def _flash_types?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
+
+# source://actionpack//lib/action_controller/metal/flash.rb#14
+module ActionController::Flash::ClassMethods
+ # source://actionpack//lib/action_controller/metal/flash.rb#45
+ def action_methods; end
+
+ # Creates new flash types. You can pass as many types as you want to create
+ # flash types other than the default alert and notice in
+ # your controllers and views. For instance:
+ #
+ # # in application_controller.rb
+ # class ApplicationController < ActionController::Base
+ # add_flash_types :warning
+ # end
+ #
+ # # in your controller
+ # redirect_to user_path(@user), warning: "Incomplete profile"
+ #
+ # # in your view
+ # <%= warning %>
+ #
+ # This method will automatically define a new method for each of the given
+ # names, and it will be available in your views.
+ #
+ # source://actionpack//lib/action_controller/metal/flash.rb#32
+ def add_flash_types(*types); end
+end
+
+# Override the default form builder for all views rendered by this
+# controller and any of its descendants. Accepts a subclass of
+# ActionView::Helpers::FormBuilder.
+#
+# For example, given a form builder:
+#
+# class AdminFormBuilder < ActionView::Helpers::FormBuilder
+# def special_field(name)
+# end
+# end
+#
+# The controller specifies a form builder as its default:
+#
+# class AdminAreaController < ApplicationController
+# default_form_builder AdminFormBuilder
+# end
+#
+# Then in the view any form using +form_for+ will be an instance of the
+# specified form builder:
+#
+# <%= form_for(@instance) do |builder| %>
+# <%= builder.special_field(:name) %>
+# <% end %>
+#
+# source://actionpack//lib/action_controller/form_builder.rb#27
+module ActionController::FormBuilder
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::FormBuilder::ClassMethods
+
+ # Default form builder for the controller
+ #
+ # source://actionpack//lib/action_controller/form_builder.rb#46
+ def default_form_builder; end
+
+ module GeneratedClassMethods
+ def _default_form_builder; end
+ def _default_form_builder=(value); end
+ def _default_form_builder?; end
+ end
+
+ module GeneratedInstanceMethods; end
+end
+
+# source://actionpack//lib/action_controller/form_builder.rb#34
+module ActionController::FormBuilder::ClassMethods
+ # Set the form builder to be used as the default for all forms
+ # in the views rendered by this controller and its subclasses.
+ #
+ # ==== Parameters
+ # * builder - Default form builder, an instance of ActionView::Helpers::FormBuilder
+ #
+ # source://actionpack//lib/action_controller/form_builder.rb#40
+ def default_form_builder(builder); end
+end
+
+# source://actionpack//lib/action_controller/metal/head.rb#4
+module ActionController::Head
+ # Returns a response that has no content (merely headers). The options
+ # argument is interpreted to be a hash of header names and values.
+ # This allows you to easily return a response that consists only of
+ # significant headers:
+ #
+ # head :created, location: person_path(@person)
+ #
+ # head :created, location: @person
+ #
+ # It can also be used to return exceptional conditions:
+ #
+ # return head(:method_not_allowed) unless request.post?
+ # return head(:bad_request) unless valid_request?
+ # render
+ #
+ # See +Rack::Utils::SYMBOL_TO_STATUS_CODE+ for a full list of valid +status+ symbols.
+ #
+ # source://actionpack//lib/action_controller/metal/head.rb#21
+ def head(status, options = T.unsafe(nil)); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/head.rb#52
+ def include_content?(status); end
+end
+
+# The \Rails framework provides a large number of helpers for working with assets, dates, forms,
+# numbers and model objects, to name a few. These helpers are available to all templates
+# by default.
+#
+# In addition to using the standard template helpers provided, creating custom helpers to
+# extract complicated logic or reusable functionality is strongly encouraged. By default, each controller
+# will include all helpers. These helpers are only accessible on the controller through #helpers
+#
+# In previous versions of \Rails the controller will include a helper which
+# matches the name of the controller, e.g., MyController will automatically
+# include MyHelper. You can revert to the old behavior with the following:
+#
+# # config/application.rb
+# class Application < Rails::Application
+# config.action_controller.include_all_helpers = false
+# end
+#
+# Additional helpers can be specified using the +helper+ class method in ActionController::Base or any
+# controller which inherits from it.
+#
+# The +to_s+ method from the \Time class can be wrapped in a helper method to display a custom message if
+# a \Time object is blank:
+#
+# module FormattedTimeHelper
+# def format_time(time, format=:long, blank_message=" ")
+# time.blank? ? blank_message : time.to_fs(format)
+# end
+# end
+#
+# FormattedTimeHelper can now be included in a controller, using the +helper+ class method:
+#
+# class EventsController < ActionController::Base
+# helper FormattedTimeHelper
+# def index
+# @events = Event.all
+# end
+# end
+#
+# Then, in any view rendered by EventsController, the format_time method can be called:
+#
+# <% @events.each do |event| -%>
+#
+# <% end -%>
+#
+# Finally, assuming we have two event instances, one which has a time and one which does not,
+# the output might look like this:
+#
+# 23 Aug 11:30 | Carolina Railhawks Soccer Match
+# N/A | Carolina Railhawks Training Workshop
+#
+# source://actionpack//lib/action_controller/metal/helpers.rb#56
+module ActionController::Helpers
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::AbstractController::Helpers
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::Helpers::ClassMethods
+ mixes_in_class_methods ::ActionController::Helpers::ClassMethods
+
+ # Provides a proxy to access helper methods from outside the view.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#128
+ def helpers; end
+
+ class << self
+ # Returns the value of attribute helpers_path.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#59
+ def helpers_path; end
+
+ # Sets the attribute helpers_path
+ #
+ # @param value the value to set the attribute helpers_path to.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#59
+ def helpers_path=(_arg0); end
+ end
+
+ module GeneratedClassMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _helper_methods; end
+ def _helper_methods=(value); end
+ def _helper_methods?; end
+ def helpers_path; end
+ def helpers_path=(value); end
+ def helpers_path?; end
+ def include_all_helpers; end
+ def include_all_helpers=(value); end
+ def include_all_helpers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/helpers.rb#67
+module ActionController::Helpers::ClassMethods
+ # Returns a list of helper names in a given path.
+ #
+ # ActionController::Base.all_helpers_from_path 'app/helpers'
+ # # => ["application", "chart", "rubygems"]
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#111
+ def all_helpers_from_path(path); end
+
+ # Declares helper accessors for controller attributes. For example, the
+ # following adds new +name+ and name= instance methods to a
+ # controller and makes them available to the view:
+ # attr_accessor :name
+ # helper_attr :name
+ #
+ # ==== Parameters
+ # * attrs - Names of attributes to be converted into helpers.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#76
+ def helper_attr(*attrs); end
+
+ # Provides a proxy to access helper methods from outside the view.
+ #
+ # Note that the proxy is rendered under a different view context.
+ # This may cause incorrect behaviour with capture methods. Consider
+ # using {helper}[rdoc-ref:AbstractController::Helpers::ClassMethods#helper]
+ # instead when using +capture+.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#86
+ def helpers; end
+
+ # Override modules_for_helpers to accept +:all+ as argument, which loads
+ # all helpers in helpers_path.
+ #
+ # ==== Parameters
+ # * args - A list of helpers
+ #
+ # ==== Returns
+ # * array - A normalized list of modules for the list of helpers provided.
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#102
+ def modules_for_helpers(args); end
+
+ private
+
+ # Extract helper names from files in app/helpers/**/*_helper.rb
+ #
+ # source://actionpack//lib/action_controller/metal/helpers.rb#122
+ def all_application_helpers; end
+end
+
+# HTTP Basic, Digest, and Token authentication.
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#9
+module ActionController::HttpAuthentication; end
+
+# = HTTP \Basic authentication
+#
+# === Simple \Basic example
+#
+# class PostsController < ApplicationController
+# http_basic_authenticate_with name: "dhh", password: "secret", except: :index
+#
+# def index
+# render plain: "Everyone can see me!"
+# end
+#
+# def edit
+# render plain: "I'm only accessible if you know the password"
+# end
+# end
+#
+# === Advanced \Basic example
+#
+# Here is a more advanced \Basic example where only Atom feeds and the XML API are protected by HTTP authentication.
+# The regular HTML interface is protected by a session approach:
+#
+# class ApplicationController < ActionController::Base
+# before_action :set_account, :authenticate
+#
+# private
+# def set_account
+# @account = Account.find_by(url_name: request.subdomains.first)
+# end
+#
+# def authenticate
+# case request.format
+# when Mime[:xml], Mime[:atom]
+# if user = authenticate_with_http_basic { |u, p| @account.users.authenticate(u, p) }
+# @current_user = user
+# else
+# request_http_basic_authentication
+# end
+# else
+# if session_authenticated?
+# @current_user = @account.users.find(session[:authenticated][:user_id])
+# else
+# redirect_to(login_url) and return false
+# end
+# end
+# end
+# end
+#
+# In your integration tests, you can do something like this:
+#
+# def test_access_granted_from_xml
+# authorization = ActionController::HttpAuthentication::Basic.encode_credentials(users(:dhh).name, users(:dhh).password)
+#
+# get "/notes/1.xml", headers: { 'HTTP_AUTHORIZATION' => authorization }
+#
+# assert_equal 200, status
+# end
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#66
+module ActionController::HttpAuthentication::Basic
+ extend ::ActionController::HttpAuthentication::Basic
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#127
+ def auth_param(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#123
+ def auth_scheme(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#105
+ def authenticate(request, &login_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#135
+ def authentication_request(controller, realm, message); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#119
+ def decode_credentials(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#131
+ def encode_credentials(user_name, password); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#111
+ def has_basic_credentials?(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#115
+ def user_name_and_password(request); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#69
+module ActionController::HttpAuthentication::Basic::ControllerMethods
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#92
+ def authenticate_or_request_with_http_basic(realm = T.unsafe(nil), message = T.unsafe(nil), &login_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#96
+ def authenticate_with_http_basic(&login_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#83
+ def http_basic_authenticate_or_request_with(name:, password:, realm: T.unsafe(nil), message: T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#100
+ def request_http_basic_authentication(realm = T.unsafe(nil), message = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#72
+module ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods
+ # Enables HTTP \Basic authentication.
+ #
+ # See ActionController::HttpAuthentication::Basic for example usage.
+ #
+ # @raise [ArgumentError]
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#76
+ def http_basic_authenticate_with(name:, password:, realm: T.unsafe(nil), **options); end
+end
+
+# = HTTP \Digest authentication
+#
+# === Simple \Digest example
+#
+# require "openssl"
+# class PostsController < ApplicationController
+# REALM = "SuperSecret"
+# USERS = {"dhh" => "secret", #plain text password
+# "dap" => OpenSSL::Digest::MD5.hexdigest(["dap",REALM,"secret"].join(":"))} #ha1 digest password
+#
+# before_action :authenticate, except: [:index]
+#
+# def index
+# render plain: "Everyone can see me!"
+# end
+#
+# def edit
+# render plain: "I'm only accessible if you know the password"
+# end
+#
+# private
+# def authenticate
+# authenticate_or_request_with_http_digest(REALM) do |username|
+# USERS[username]
+# end
+# end
+# end
+#
+# === Notes
+#
+# The +authenticate_or_request_with_http_digest+ block must return the user's password
+# or the ha1 digest hash so the framework can appropriately hash to check the user's
+# credentials. Returning +nil+ will cause authentication to fail.
+#
+# Storing the ha1 hash: MD5(username:realm:password), is better than storing a plain password. If
+# the password file or database is compromised, the attacker would be able to use the ha1 hash to
+# authenticate as the user at this +realm+, but would not have the user's password to try using at
+# other sites.
+#
+# In rare instances, web servers or front proxies strip authorization headers before
+# they reach your application. You can debug this situation by logging all environment
+# variables, and check for HTTP_AUTHORIZATION, amongst others.
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#185
+module ActionController::HttpAuthentication::Digest
+ extend ::ActionController::HttpAuthentication::Digest
+
+ # Returns false on a valid response, true otherwise.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#211
+ def authenticate(request, realm, &password_procedure); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#269
+ def authentication_header(controller, realm); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#276
+ def authentication_request(controller, realm, message = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#262
+ def decode_credentials(header); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#258
+ def decode_credentials_header(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#253
+ def encode_credentials(http_method, credentials, password, password_is_ha1); end
+
+ # Returns the expected response for a request of +http_method+ to +uri+ with the decoded +credentials+ and the expected +password+
+ # Optional parameter +password_is_ha1+ is set to +true+ by default, since best practice is to store ha1 digest instead
+ # of a plain-text password.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#243
+ def expected_response(http_method, uri, credentials, password, password_is_ha1 = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#249
+ def ha1(credentials, password); end
+
+ # Uses an MD5 digest based on time to generate a value to be used only once.
+ #
+ # A server-specified data string which should be uniquely generated each time a 401 response is made.
+ # It is recommended that this string be base64 or hexadecimal data.
+ # Specifically, since the string is passed in the header lines as a quoted string, the double-quote character is not allowed.
+ #
+ # The contents of the nonce are implementation dependent.
+ # The quality of the implementation depends on a good choice.
+ # A nonce might, for example, be constructed as the base 64 encoding of
+ #
+ # time-stamp H(time-stamp ":" ETag ":" private-key)
+ #
+ # where time-stamp is a server-generated time or other non-repeating value,
+ # ETag is the value of the HTTP ETag header associated with the requested entity,
+ # and private-key is data known only to the server.
+ # With a nonce of this form a server would recalculate the hash portion after receiving the client authentication header and
+ # reject the request if it did not match the nonce from that header or
+ # if the time-stamp value is not recent enough. In this way the server can limit the time of the nonce's validity.
+ # The inclusion of the ETag prevents a replay request for an updated version of the resource.
+ # (Note: including the IP address of the client in the nonce would appear to offer the server the ability
+ # to limit the reuse of the nonce to the same client that originally got it.
+ # However, that would break proxy farms, where requests from a single user often go through different proxies in the farm.
+ # Also, IP address spoofing is not that hard.)
+ #
+ # An implementation might choose not to accept a previously used nonce or a previously used digest, in order to
+ # protect against a replay attack. Or, an implementation might choose to use one-time nonces or digests for
+ # POST, PUT, or PATCH requests, and a time-stamp for GET requests. For more details on the issues involved see Section 4
+ # of this document.
+ #
+ # The nonce is opaque to the client. Composed of Time, and hash of Time with secret
+ # key from the Rails session secret generated upon creation of project. Ensures
+ # the time cannot be modified by client.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#321
+ def nonce(secret_key, time = T.unsafe(nil)); end
+
+ # Opaque based on digest of secret key
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#340
+ def opaque(secret_key); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#283
+ def secret_token(request); end
+
+ # Returns false unless the request credentials response value matches the expected value.
+ # First try the password as a ha1 digest password. If this fails, then try it as a plain
+ # text password.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#218
+ def validate_digest_response(request, realm, &password_procedure); end
+
+ # Might want a shorter timeout depending on whether the request
+ # is a PATCH, PUT, or POST, and if the client is a browser or web service.
+ # Can be much shorter if the Stale directive is implemented. This would
+ # allow a user to use new nonce without prompting the user again for their
+ # username and password.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#333
+ def validate_nonce(secret_key, request, value, seconds_to_timeout = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#188
+module ActionController::HttpAuthentication::Digest::ControllerMethods
+ # Authenticate using an HTTP \Digest, or otherwise render an HTTP header
+ # requesting the client to send a \Digest.
+ #
+ # See ActionController::HttpAuthentication::Digest for example usage.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#193
+ def authenticate_or_request_with_http_digest(realm = T.unsafe(nil), message = T.unsafe(nil), &password_procedure); end
+
+ # Authenticate using an HTTP \Digest. Returns true if authentication is
+ # successful, false otherwise.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#199
+ def authenticate_with_http_digest(realm = T.unsafe(nil), &password_procedure); end
+
+ # Render an HTTP header requesting the client to send a \Digest for
+ # authentication.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#205
+ def request_http_digest_authentication(realm = T.unsafe(nil), message = T.unsafe(nil)); end
+end
+
+# = HTTP \Token authentication
+#
+# === Simple \Token example
+#
+# class PostsController < ApplicationController
+# TOKEN = "secret"
+#
+# before_action :authenticate, except: [ :index ]
+#
+# def index
+# render plain: "Everyone can see me!"
+# end
+#
+# def edit
+# render plain: "I'm only accessible if you know the password"
+# end
+#
+# private
+# def authenticate
+# authenticate_or_request_with_http_token do |token, options|
+# # Compare the tokens in a time-constant manner, to mitigate
+# # timing attacks.
+# ActiveSupport::SecurityUtils.secure_compare(token, TOKEN)
+# end
+# end
+# end
+#
+#
+# Here is a more advanced Token example where only Atom feeds and the XML API are protected by HTTP token authentication.
+# The regular HTML interface is protected by a session approach:
+#
+# class ApplicationController < ActionController::Base
+# before_action :set_account, :authenticate
+#
+# private
+# def set_account
+# @account = Account.find_by(url_name: request.subdomains.first)
+# end
+#
+# def authenticate
+# case request.format
+# when Mime[:xml], Mime[:atom]
+# if user = authenticate_with_http_token { |t, o| @account.users.authenticate(t, o) }
+# @current_user = user
+# else
+# request_http_token_authentication
+# end
+# else
+# if session_authenticated?
+# @current_user = @account.users.find(session[:authenticated][:user_id])
+# else
+# redirect_to(login_url) and return false
+# end
+# end
+# end
+# end
+#
+#
+# In your integration tests, you can do something like this:
+#
+# def test_access_granted_from_xml
+# authorization = ActionController::HttpAuthentication::Token.encode_credentials(users(:dhh).token)
+#
+# get "/notes/1.xml", headers: { 'HTTP_AUTHORIZATION' => authorization }
+#
+# assert_equal 200, status
+# end
+#
+#
+# On shared hosts, Apache sometimes doesn't pass authentication headers to
+# FCGI instances. If your environment matches this description and you cannot
+# authenticate, try this rule in your Apache setup:
+#
+# RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
+#
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#419
+module ActionController::HttpAuthentication::Token
+ extend ::ActionController::HttpAuthentication::Token
+
+ # If token Authorization header is present, call the login
+ # procedure with the present token and options.
+ #
+ # Returns the return value of login_procedure if a
+ # token is found. Returns nil if no token is found.
+ #
+ # ==== Parameters
+ #
+ # * +controller+ - ActionController::Base instance for the current request.
+ # * +login_procedure+ - Proc to call if a token is present. The Proc
+ # should take two arguments:
+ #
+ # authenticate(controller) { |token, options| ... }
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#461
+ def authenticate(controller, &login_procedure); end
+
+ # Sets a WWW-Authenticate header to let the client know a token is desired.
+ #
+ # Returns nothing.
+ #
+ # ==== Parameters
+ #
+ # * +controller+ - ActionController::Base instance for the outgoing response.
+ # * +realm+ - String realm to use in the header.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#541
+ def authentication_request(controller, realm, message = T.unsafe(nil)); end
+
+ # Encodes the given token and options into an Authorization header value.
+ #
+ # Returns String.
+ #
+ # ==== Parameters
+ #
+ # * +token+ - String token.
+ # * +options+ - Optional Hash of the options.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#526
+ def encode_credentials(token, options = T.unsafe(nil)); end
+
+ # Takes +raw_params+ and turns it into an array of parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#496
+ def params_array_from(raw_params); end
+
+ # This method takes an authorization body and splits up the key-value
+ # pairs by the standardized :, ;, or \t
+ # delimiters defined in +AUTHN_PAIR_DELIMITERS+.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#508
+ def raw_params(auth); end
+
+ # This removes the " characters wrapping the value.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#501
+ def rewrite_param_values(array_params); end
+
+ # Parses the token and options out of the token Authorization header.
+ # The value for the Authorization header is expected to have the prefix
+ # "Token" or "Bearer". If the header looks like this:
+ #
+ # Authorization: Token token="abc", nonce="def"
+ #
+ # Then the returned token is "abc", and the options are
+ # {nonce: "def"}.
+ #
+ # Returns an +Array+ of [String, Hash] if a token is present.
+ # Returns +nil+ if no token is found.
+ #
+ # ==== Parameters
+ #
+ # * +request+ - ActionDispatch::Request instance with the current headers.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#483
+ def token_and_options(request); end
+
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#491
+ def token_params_from(auth); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#422
+ActionController::HttpAuthentication::Token::AUTHN_PAIR_DELIMITERS = T.let(T.unsafe(nil), Regexp)
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#425
+module ActionController::HttpAuthentication::Token::ControllerMethods
+ # Authenticate using an HTTP Bearer token, or otherwise render an HTTP
+ # header requesting the client to send a Bearer token.
+ #
+ # See ActionController::HttpAuthentication::Token for example usage.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#430
+ def authenticate_or_request_with_http_token(realm = T.unsafe(nil), message = T.unsafe(nil), &login_procedure); end
+
+ # Authenticate using an HTTP Bearer token. Returns true if
+ # authentication is successful, false otherwise.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#436
+ def authenticate_with_http_token(&login_procedure); end
+
+ # Render an HTTP header requesting the client to send a Bearer token for
+ # authentication.
+ #
+ # source://actionpack//lib/action_controller/metal/http_authentication.rb#442
+ def request_http_token_authentication(realm = T.unsafe(nil), message = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#420
+ActionController::HttpAuthentication::Token::TOKEN_KEY = T.let(T.unsafe(nil), String)
+
+# source://actionpack//lib/action_controller/metal/http_authentication.rb#421
+ActionController::HttpAuthentication::Token::TOKEN_REGEX = T.let(T.unsafe(nil), Regexp)
+
+# Handles implicit rendering for a controller action that does not
+# explicitly respond with +render+, +respond_to+, +redirect+, or +head+.
+#
+# For API controllers, the implicit response is always 204 No Content.
+#
+# For all other controllers, we use these heuristics to decide whether to
+# render a template, raise an error for a missing template, or respond with
+# 204 No Content:
+#
+# First, if we DO find a template, it's rendered. Template lookup accounts
+# for the action name, locales, format, variant, template handlers, and more
+# (see +render+ for details).
+#
+# Second, if we DON'T find a template but the controller action does have
+# templates for other formats, variants, etc., then we trust that you meant
+# to provide a template for this response, too, and we raise
+# ActionController::UnknownFormat with an explanation.
+#
+# Third, if we DON'T find a template AND the request is a page load in a web
+# browser (technically, a non-XHR GET request for an HTML response) where
+# you reasonably expect to have rendered a template, then we raise
+# ActionController::MissingExactTemplate with an explanation.
+#
+# Finally, if we DON'T find a template AND the request isn't a browser page
+# load, then we implicitly respond with 204 No Content.
+#
+# source://actionpack//lib/action_controller/metal/implicit_render.rb#29
+module ActionController::ImplicitRender
+ include ::ActionController::BasicImplicitRender
+
+ # source://actionpack//lib/action_controller/metal/implicit_render.rb#33
+ def default_render; end
+
+ # source://actionpack//lib/action_controller/metal/implicit_render.rb#52
+ def method_for_action(action_name); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/implicit_render.rb#59
+ def interactive_browser_request?; end
+end
+
+# Adds instrumentation to several ends in ActionController::Base. It also provides
+# some hooks related with process_action. This allows an ORM like Active Record
+# and/or DataMapper to plug in ActionController and show related information.
+#
+# Check ActiveRecord::Railties::ControllerRuntime for an example.
+#
+# source://actionpack//lib/action_controller/metal/instrumentation.rb#12
+module ActionController::Instrumentation
+ extend ::ActiveSupport::Concern
+ include ::ActiveSupport::Benchmarkable
+ include ::AbstractController::Logger
+
+ mixes_in_class_methods ::ActionController::Instrumentation::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#40
+ def redirect_to(*_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#19
+ def render(*_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#34
+ def send_data(data, options = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#27
+ def send_file(path, options = T.unsafe(nil)); end
+
+ def view_runtime; end
+ def view_runtime=(_arg0); end
+
+ private
+
+ # Every time after an action is processed, this method is invoked
+ # with the payload, so you can add more information.
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#96
+ def append_info_to_payload(payload); end
+
+ # A hook which allows you to clean up any time, wrongly taken into account in
+ # views, like database querying time.
+ #
+ # def cleanup_view_runtime
+ # super - time_taken_in_something_expensive
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#90
+ def cleanup_view_runtime; end
+
+ # A hook invoked every time a before callback is halted.
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#80
+ def halted_callback_hook(filter, _); end
+
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#50
+ def process_action(*_arg0); end
+end
+
+# source://actionpack//lib/action_controller/metal/instrumentation.rb#100
+module ActionController::Instrumentation::ClassMethods
+ # A hook which allows other frameworks to log what happened during
+ # controller process action. This method should return an array
+ # with the messages to be added.
+ #
+ # source://actionpack//lib/action_controller/metal/instrumentation.rb#104
+ def log_process_action(payload); end
+end
+
+# source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#8
+class ActionController::InvalidAuthenticityToken < ::ActionController::ActionControllerError; end
+
+# source://actionpack//lib/action_controller/metal/request_forgery_protection.rb#11
+class ActionController::InvalidCrossOriginRequest < ::ActionController::ActionControllerError; end
+
+# Mix this module into your controller, and all actions in that controller
+# will be able to stream data to the client as it's written.
+#
+# class MyController < ActionController::Base
+# include ActionController::Live
+#
+# def stream
+# response.headers['Content-Type'] = 'text/event-stream'
+# 100.times {
+# response.stream.write "hello world\n"
+# sleep 1
+# }
+# ensure
+# response.stream.close
+# end
+# end
+#
+# There are a few caveats with this module. You *cannot* write headers after the
+# response has been committed (Response#committed? will return truthy).
+# Calling +write+ or +close+ on the response stream will cause the response
+# object to be committed. Make sure all headers are set before calling write
+# or close on your stream.
+#
+# You *must* call close on your stream when you're finished, otherwise the
+# socket may be left open forever.
+#
+# The final caveat is that your actions are executed in a separate thread than
+# the main thread. Make sure your actions are thread safe, and this shouldn't
+# be a problem (don't share state across threads, etc).
+#
+# source://actionpack//lib/action_controller/metal/live.rb#37
+module ActionController::Live
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::Live::ClassMethods
+
+ # source://actionpack//lib/action_controller/test_case.rb#24
+ def new_controller_thread; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#249
+ def process(name); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#295
+ def response_body=(body); end
+
+ # Sends a stream to the browser, which is helpful when you're generating exports or other running data where you
+ # don't want the entire file buffered in memory first. Similar to send_data, but where the data is generated live.
+ #
+ # Options:
+ # * :filename - suggests a filename for the browser to use.
+ # * :type - specifies an HTTP content type.
+ # You can specify either a string or a symbol for a registered type with Mime::Type.register, for example :json.
+ # If omitted, type will be inferred from the file extension specified in :filename.
+ # If no content type is registered for the extension, the default type 'application/octet-stream' will be used.
+ # * :disposition - specifies whether the file will be shown inline or downloaded.
+ # Valid values are 'inline' and 'attachment' (default).
+ #
+ # Example of generating a csv export:
+ #
+ # send_stream(filename: "subscribers.csv") do |stream|
+ # stream.write "email_address,updated_at\n"
+ #
+ # @subscribers.find_each do |subscriber|
+ # stream.write "#{subscriber.email_address},#{subscriber.updated_at}\n"
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#321
+ def send_stream(filename:, disposition: T.unsafe(nil), type: T.unsafe(nil)); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#348
+ def log_error(exception); end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#127
+class ActionController::Live::Buffer < ::ActionDispatch::Response::Buffer
+ include ::MonitorMixin
+
+ # @return [Buffer] a new instance of Buffer
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#143
+ def initialize(response); end
+
+ # Inform the producer/writing thread that the client has
+ # disconnected; the reading thread is no longer interested in
+ # anything that's being written.
+ #
+ # See also #close.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#193
+ def abort; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#212
+ def call_on_error; end
+
+ # Write a 'close' event to the buffer; the producer/writing thread
+ # uses this to notify us that it's finished supplying content.
+ #
+ # See also #abort.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#180
+ def close; end
+
+ # Is the client still connected and waiting for content?
+ #
+ # The result of calling `write` when this is `false` is determined
+ # by `ignore_disconnect`.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#204
+ def connected?; end
+
+ # Ignore that the client has disconnected.
+ #
+ # If this value is `true`, calling `write` after the client
+ # disconnects will result in the written content being silently
+ # discarded. If this value is `false` (the default), a
+ # ClientDisconnected exception will be raised.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#141
+ def ignore_disconnect; end
+
+ # Ignore that the client has disconnected.
+ #
+ # If this value is `true`, calling `write` after the client
+ # disconnects will result in the written content being silently
+ # discarded. If this value is `false` (the default), a
+ # ClientDisconnected exception will be raised.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#141
+ def ignore_disconnect=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#208
+ def on_error(&block); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#151
+ def write(string); end
+
+ # Same as +write+ but automatically include a newline at the end of the string.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#172
+ def writeln(string); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#228
+ def build_queue(queue_size); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#217
+ def each_chunk(&block); end
+
+ class << self
+ # Returns the value of attribute queue_size.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#131
+ def queue_size; end
+
+ # Sets the attribute queue_size
+ #
+ # @param value the value to set the attribute queue_size to.
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#131
+ def queue_size=(_arg0); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#40
+module ActionController::Live::ClassMethods
+ # source://actionpack//lib/action_controller/metal/live.rb#41
+ def make_response!(request); end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#124
+class ActionController::Live::ClientDisconnected < ::RuntimeError; end
+
+# source://actionpack//lib/action_controller/metal/live.rb#233
+class ActionController::Live::Response < ::ActionDispatch::Response
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#235
+ def before_committed; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#242
+ def build_buffer(response, body); end
+end
+
+# This class provides the ability to write an SSE (Server Sent Event)
+# to an IO stream. The class is initialized with a stream and can be used
+# to either write a JSON string or an object which can be converted to JSON.
+#
+# Writing an object will convert it into standard SSE format with whatever
+# options you have configured. You may choose to set the following options:
+#
+# 1) Event. If specified, an event with this name will be dispatched on
+# the browser.
+# 2) Retry. The reconnection time in milliseconds used when attempting
+# to send the event.
+# 3) Id. If the connection dies while sending an SSE to the browser, then
+# the server will receive a +Last-Event-ID+ header with value equal to +id+.
+#
+# After setting an option in the constructor of the SSE object, all future
+# SSEs sent across the stream will use those options unless overridden.
+#
+# Example Usage:
+#
+# class MyController < ActionController::Base
+# include ActionController::Live
+#
+# def index
+# response.headers['Content-Type'] = 'text/event-stream'
+# sse = SSE.new(response.stream, retry: 300, event: "event-name")
+# sse.write({ name: 'John'})
+# sse.write({ name: 'John'}, id: 10)
+# sse.write({ name: 'John'}, id: 10, event: "other-event")
+# sse.write({ name: 'John'}, id: 10, event: "other-event", retry: 500)
+# ensure
+# sse.close
+# end
+# end
+#
+# Note: SSEs are not currently supported by IE. However, they are supported
+# by Chrome, Firefox, Opera, and Safari.
+#
+# source://actionpack//lib/action_controller/metal/live.rb#88
+class ActionController::Live::SSE
+ # @return [SSE] a new instance of SSE
+ #
+ # source://actionpack//lib/action_controller/metal/live.rb#91
+ def initialize(stream, options = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#96
+ def close; end
+
+ # source://actionpack//lib/action_controller/metal/live.rb#100
+ def write(object, options = T.unsafe(nil)); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/live.rb#110
+ def perform_write(json, options); end
+end
+
+# source://actionpack//lib/action_controller/metal/live.rb#89
+ActionController::Live::SSE::PERMITTED_OPTIONS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/test_case.rb#169
+class ActionController::LiveTestResponse < ::ActionController::Live::Response
+ # Was there a server-side error?
+ #
+ # source://rack/2.2.7/lib/rack/response.rb#141
+ def error?; end
+
+ # Was the URL not found?
+ #
+ # source://rack/2.2.7/lib/rack/response.rb#151
+ def missing?; end
+
+ # Was the response successful?
+ #
+ # source://rack/2.2.7/lib/rack/response.rb#138
+ def success?; end
+end
+
+# source://actionpack//lib/action_controller/log_subscriber.rb#4
+class ActionController::LogSubscriber < ::ActiveSupport::LogSubscriber
+ # source://actionpack//lib/action_controller/log_subscriber.rb#67
+ def exist_fragment?(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#67
+ def expire_fragment(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#40
+ def halted_callback(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#76
+ def logger; end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#20
+ def process_action(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#67
+ def read_fragment(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#48
+ def redirect_to(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#52
+ def send_data(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#44
+ def send_file(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#7
+ def start_processing(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#56
+ def unpermitted_parameters(event); end
+
+ # source://actionpack//lib/action_controller/log_subscriber.rb#67
+ def write_fragment(event); end
+end
+
+# source://actionpack//lib/action_controller/log_subscriber.rb#5
+ActionController::LogSubscriber::INTERNAL_PARAMS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/logging.rb#4
+module ActionController::Logging
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::Logging::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/logging.rb#7
+module ActionController::Logging::ClassMethods
+ # Set a different log level per request.
+ #
+ # # Use the debug log level if a particular cookie is set.
+ # class ApplicationController < ActionController::Base
+ # log_at :debug, if: -> { cookies[:debug] }
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/logging.rb#15
+ def log_at(level, **options); end
+end
+
+# ActionController::Metal is the simplest possible controller, providing a
+# valid Rack interface without the additional niceties provided by
+# ActionController::Base.
+#
+# A sample metal controller might look like this:
+#
+# class HelloController < ActionController::Metal
+# def index
+# self.response_body = "Hello World!"
+# end
+# end
+#
+# And then to route requests to your metal controller, you would add
+# something like this to config/routes.rb:
+#
+# get 'hello', to: HelloController.action(:index)
+#
+# The +action+ method returns a valid Rack application for the \Rails
+# router to dispatch to.
+#
+# == Rendering Helpers
+#
+# ActionController::Metal by default provides no utilities for rendering
+# views, partials, or other responses aside from explicitly calling of
+# response_body=, content_type=, and status=. To
+# add the render helpers you're used to having in a normal controller, you
+# can do the following:
+#
+# class HelloController < ActionController::Metal
+# include AbstractController::Rendering
+# include ActionView::Layouts
+# append_view_path "#{Rails.root}/app/views"
+#
+# def index
+# render "hello/index"
+# end
+# end
+#
+# == Redirection Helpers
+#
+# To add redirection helpers to your metal controller, do the following:
+#
+# class HelloController < ActionController::Metal
+# include ActionController::Redirecting
+# include Rails.application.routes.url_helpers
+#
+# def index
+# redirect_to root_url
+# end
+# end
+#
+# == Other Helpers
+#
+# You can refer to the modules included in ActionController::Base to see
+# other features you can bring into your metal controller.
+#
+# @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
+#
+# source://actionpack//lib/action_controller/metal.rb#117
+class ActionController::Metal < ::AbstractController::Base
+ include ::ActionController::Testing::Functional
+
+ # @return [Metal] a new instance of Metal
+ #
+ # source://actionpack//lib/action_controller/metal.rb#150
+ def initialize; end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def content_type(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def content_type=(arg); end
+
+ # Delegates to the class's ::controller_name.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#141
+ def controller_name; end
+
+ # source://actionpack//lib/action_controller/metal.rb#185
+ def dispatch(name, request, response); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def headers(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def location(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def location=(arg); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def media_type(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack; end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack?; end
+
+ # source://actionpack//lib/action_controller/metal.rb#157
+ def params; end
+
+ # source://actionpack//lib/action_controller/metal.rb#161
+ def params=(val); end
+
+ # Tests if render or redirect has already happened.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal.rb#181
+ def performed?; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def request; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def request=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal.rb#206
+ def reset_session; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def response; end
+
+ # source://activesupport/7.0.6/lib/active_support/core_ext/module/attr_internal.rb#33
+ def response=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal.rb#172
+ def response_body=(body); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def response_code(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#146
+ def session(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#197
+ def set_request!(request); end
+
+ # source://actionpack//lib/action_controller/metal.rb#193
+ def set_response!(response); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def status(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal.rb#147
+ def status=(arg); end
+
+ # source://actionpack//lib/action_controller/metal.rb#202
+ def to_a; end
+
+ # Basic url_for that can be overridden for more robust functionality.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#168
+ def url_for(string); end
+
+ class << self
+ # Returns a Rack endpoint for the given action name.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#231
+ def action(name); end
+
+ # source://actionpack//lib/action_controller/metal.rb#136
+ def action_encoding_template(action); end
+
+ # Returns the last part of the controller's name, underscored, without the ending
+ # Controller. For instance, PostsController returns posts.
+ # Namespaces are left out, so Admin::PostsController returns posts as well.
+ #
+ # ==== Returns
+ # * string
+ #
+ # source://actionpack//lib/action_controller/metal.rb#126
+ def controller_name; end
+
+ # Direct dispatch to the controller. Instantiates the controller, then
+ # executes the action named +name+.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#247
+ def dispatch(name, req, res); end
+
+ # source://actionpack//lib/action_controller/metal.rb#212
+ def inherited(base); end
+
+ # source://actionpack//lib/action_controller/metal.rb#130
+ def make_response!(request); end
+
+ # Alias for +middleware_stack+.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#226
+ def middleware; end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack; end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack=(value); end
+
+ # source://actionpack//lib/action_controller/metal.rb#210
+ def middleware_stack?; end
+
+ # Pushes the given Rack middleware and its arguments to the bottom of the
+ # middleware stack.
+ #
+ # source://actionpack//lib/action_controller/metal.rb#220
+ def use(*_arg0, **_arg1, &_arg2); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#50
+class ActionController::MethodNotAllowed < ::ActionController::ActionControllerError
+ # @return [MethodNotAllowed] a new instance of MethodNotAllowed
+ #
+ # source://actionpack//lib/action_controller/metal/exceptions.rb#51
+ def initialize(*allowed_methods); end
+end
+
+# Extend ActionDispatch middleware stack to make it aware of options
+# allowing the following syntax in controllers:
+#
+# class PostsController < ApplicationController
+# use AuthenticationMiddleware, except: [:index, :show]
+# end
+#
+# source://actionpack//lib/action_controller/metal.rb#14
+class ActionController::MiddlewareStack < ::ActionDispatch::MiddlewareStack
+ # source://actionpack//lib/action_controller/metal.rb#27
+ def build(action, app = T.unsafe(nil), &block); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal.rb#40
+ def build_middleware(klass, args, block); end
+end
+
+# source://actionpack//lib/action_controller/metal.rb#37
+ActionController::MiddlewareStack::EXCLUDE = T.let(T.unsafe(nil), Proc)
+
+# source://actionpack//lib/action_controller/metal.rb#36
+ActionController::MiddlewareStack::INCLUDE = T.let(T.unsafe(nil), Proc)
+
+# source://actionpack//lib/action_controller/metal.rb#15
+class ActionController::MiddlewareStack::Middleware < ::ActionDispatch::MiddlewareStack::Middleware
+ # @return [Middleware] a new instance of Middleware
+ #
+ # source://actionpack//lib/action_controller/metal.rb#16
+ def initialize(klass, args, actions, strategy, block); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal.rb#22
+ def valid?(action); end
+end
+
+# source://actionpack//lib/action_controller/metal.rb#38
+ActionController::MiddlewareStack::NULL = T.let(T.unsafe(nil), Proc)
+
+# source://actionpack//lib/action_controller/metal/mime_responds.rb#6
+module ActionController::MimeResponds
+ # Without web-service support, an action which collects the data for displaying a list of people
+ # might look something like this:
+ #
+ # def index
+ # @people = Person.all
+ # end
+ #
+ # That action implicitly responds to all formats, but formats can also be explicitly enumerated:
+ #
+ # def index
+ # @people = Person.all
+ # respond_to :html, :js
+ # end
+ #
+ # Here's the same action, with web-service support baked in:
+ #
+ # def index
+ # @people = Person.all
+ #
+ # respond_to do |format|
+ # format.html
+ # format.js
+ # format.xml { render xml: @people }
+ # end
+ # end
+ #
+ # What that says is, "if the client wants HTML or JS in response to this action, just respond as we
+ # would have before, but if the client wants XML, return them the list of people in XML format."
+ # (Rails determines the desired response format from the HTTP Accept header submitted by the client.)
+ #
+ # Supposing you have an action that adds a new person, optionally creating their company
+ # (by name) if it does not already exist, without web-services, it might look like this:
+ #
+ # def create
+ # @company = Company.find_or_create_by(name: params[:company][:name])
+ # @person = @company.people.create(params[:person])
+ #
+ # redirect_to(person_list_url)
+ # end
+ #
+ # Here's the same action, with web-service support baked in:
+ #
+ # def create
+ # company = params[:person].delete(:company)
+ # @company = Company.find_or_create_by(name: company[:name])
+ # @person = @company.people.create(params[:person])
+ #
+ # respond_to do |format|
+ # format.html { redirect_to(person_list_url) }
+ # format.js
+ # format.xml { render xml: @person.to_xml(include: @company) }
+ # end
+ # end
+ #
+ # If the client wants HTML, we just redirect them back to the person list. If they want JavaScript,
+ # then it is an Ajax request and we render the JavaScript template associated with this action.
+ # Lastly, if the client wants XML, we render the created person as XML, but with a twist: we also
+ # include the person's company in the rendered XML, so you get something like this:
+ #
+ #
+ # ...
+ # ...
+ #
+ # ...
+ # ...
+ # ...
+ #
+ #
+ #
+ # Note, however, the extra bit at the top of that action:
+ #
+ # company = params[:person].delete(:company)
+ # @company = Company.find_or_create_by(name: company[:name])
+ #
+ # This is because the incoming XML document (if a web-service request is in process) can only contain a
+ # single root-node. So, we have to rearrange things so that the request looks like this (url-encoded):
+ #
+ # person[name]=...&person[company][name]=...&...
+ #
+ # And, like this (xml-encoded):
+ #
+ #
+ # ...
+ #
+ # ...
+ #
+ #
+ #
+ # In other words, we make the request so that it operates on a single entity's person. Then, in the action,
+ # we extract the company data from the request, find or create the company, and then create the new person
+ # with the remaining data.
+ #
+ # Note that you can define your own XML parameter parser which would allow you to describe multiple entities
+ # in a single request (i.e., by wrapping them all in a single root node), but if you just go with the flow
+ # and accept Rails' defaults, life will be much easier.
+ #
+ # If you need to use a MIME type which isn't supported by default, you can register your own handlers in
+ # +config/initializers/mime_types.rb+ as follows.
+ #
+ # Mime::Type.register "image/jpeg", :jpg
+ #
+ # +respond_to+ also allows you to specify a common block for different formats by using +any+:
+ #
+ # def index
+ # @people = Person.all
+ #
+ # respond_to do |format|
+ # format.html
+ # format.any(:xml, :json) { render request.format.to_sym => @people }
+ # end
+ # end
+ #
+ # In the example above, if the format is xml, it will render:
+ #
+ # render xml: @people
+ #
+ # Or if the format is json:
+ #
+ # render json: @people
+ #
+ # +any+ can also be used with no arguments, in which case it will be used for any format requested by
+ # the user:
+ #
+ # respond_to do |format|
+ # format.html
+ # format.any { redirect_to support_path }
+ # end
+ #
+ # Formats can have different variants.
+ #
+ # The request variant is a specialization of the request format, like :tablet,
+ # :phone, or :desktop.
+ #
+ # We often want to render different html/json/xml templates for phones,
+ # tablets, and desktop browsers. Variants make it easy.
+ #
+ # You can set the variant in a +before_action+:
+ #
+ # request.variant = :tablet if /iPad/.match?(request.user_agent)
+ #
+ # Respond to variants in the action just like you respond to formats:
+ #
+ # respond_to do |format|
+ # format.html do |variant|
+ # variant.tablet # renders app/views/projects/show.html+tablet.erb
+ # variant.phone { extra_setup; render ... }
+ # variant.none { special_setup } # executed only if there is no variant set
+ # end
+ # end
+ #
+ # Provide separate templates for each format and variant:
+ #
+ # app/views/projects/show.html.erb
+ # app/views/projects/show.html+tablet.erb
+ # app/views/projects/show.html+phone.erb
+ #
+ # When you're not sharing any code within the format, you can simplify defining variants
+ # using the inline syntax:
+ #
+ # respond_to do |format|
+ # format.js { render "trash" }
+ # format.html.phone { redirect_to progress_path }
+ # format.html.none { render "trash" }
+ # end
+ #
+ # Variants also support common +any+/+all+ block that formats have.
+ #
+ # It works for both inline:
+ #
+ # respond_to do |format|
+ # format.html.any { render html: "any" }
+ # format.html.phone { render html: "phone" }
+ # end
+ #
+ # and block syntax:
+ #
+ # respond_to do |format|
+ # format.html do |variant|
+ # variant.any(:tablet, :phablet){ render html: "any" }
+ # variant.phone { render html: "phone" }
+ # end
+ # end
+ #
+ # You can also set an array of variants:
+ #
+ # request.variant = [:tablet, :phone]
+ #
+ # This will work similarly to formats and MIME types negotiation. If there
+ # is no +:tablet+ variant declared, the +:phone+ variant will be used:
+ #
+ # respond_to do |format|
+ # format.html.none
+ # format.html.phone # this gets rendered
+ # end
+ #
+ # @raise [ArgumentError]
+ # @yield [collector]
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#201
+ def respond_to(*mimes); end
+end
+
+# A container for responses available from the current controller for
+# requests for different mime-types sent to a particular action.
+#
+# The public controller methods +respond_to+ may be called with a block
+# that is used to define responses to different mime-types, e.g.
+# for +respond_to+ :
+#
+# respond_to do |format|
+# format.html
+# format.xml { render xml: @people }
+# end
+#
+# In this usage, the argument passed to the block (+format+ above) is an
+# instance of the ActionController::MimeResponds::Collector class. This
+# object serves as a container in which available responses can be stored by
+# calling any of the dynamically generated, mime-type-specific methods such
+# as +html+, +xml+ etc on the Collector. Each response is represented by a
+# corresponding block if present.
+#
+# A subsequent call to #negotiate_format(request) will enable the Collector
+# to determine which specific mime-type it should respond with for the current
+# request, with this response then being accessible by calling #response.
+#
+# source://actionpack//lib/action_controller/metal/mime_responds.rb#242
+class ActionController::MimeResponds::Collector
+ include ::AbstractController::Collector
+
+ # @return [Collector] a new instance of Collector
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#246
+ def initialize(mimes, variant = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#253
+ def all(*args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#253
+ def any(*args, &block); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#271
+ def any_response?; end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#262
+ def custom(mime_type, &block); end
+
+ # Returns the value of attribute format.
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#244
+ def format; end
+
+ # Sets the attribute format
+ #
+ # @param value the value to set the attribute format to.
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#244
+ def format=(_arg0); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#288
+ def negotiate_format(request); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#275
+ def response; end
+end
+
+# source://actionpack//lib/action_controller/metal/mime_responds.rb#292
+class ActionController::MimeResponds::Collector::VariantCollector
+ # @return [VariantCollector] a new instance of VariantCollector
+ #
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#293
+ def initialize(variant = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#298
+ def all(*args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#298
+ def any(*args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#309
+ def method_missing(name, *args, &block); end
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#313
+ def variant; end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/mime_responds.rb#322
+ def variant_key; end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#94
+class ActionController::MissingExactTemplate < ::ActionController::UnknownFormat; end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#59
+class ActionController::MissingFile < ::ActionController::ActionControllerError; end
+
+# See Responder#api_behavior
+#
+# source://actionpack//lib/action_controller/metal/renderers.rb#17
+class ActionController::MissingRenderer < ::LoadError
+ # @return [MissingRenderer] a new instance of MissingRenderer
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#18
+ def initialize(format); end
+end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#56
+class ActionController::NotImplemented < ::ActionController::MethodNotAllowed; end
+
+# Specify binary encoding for parameters for a given action.
+#
+# source://actionpack//lib/action_controller/metal/parameter_encoding.rb#5
+module ActionController::ParameterEncoding
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::ParameterEncoding::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/parameter_encoding.rb#8
+module ActionController::ParameterEncoding::ClassMethods
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#18
+ def action_encoding_template(action); end
+
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#9
+ def inherited(klass); end
+
+ # Specify the encoding for a parameter on an action.
+ # If not specified the default is UTF-8.
+ #
+ # You can specify a binary (ASCII_8BIT) parameter with:
+ #
+ # class RepositoryController < ActionController::Base
+ # # This specifies that file_path is not UTF-8 and is instead ASCII_8BIT
+ # param_encoding :show, :file_path, Encoding::ASCII_8BIT
+ #
+ # def show
+ # @repo = Repository.find_by_filesystem_path params[:file_path]
+ #
+ # # params[:repo_name] remains UTF-8 encoded
+ # @repo_name = params[:repo_name]
+ # end
+ #
+ # def index
+ # @repositories = Repository.all
+ # end
+ # end
+ #
+ # The file_path parameter on the show action would be encoded as ASCII-8BIT,
+ # but all other arguments will remain UTF-8 encoded.
+ # This is useful in the case where an application must handle data
+ # but encoding of the data is unknown, like file system data.
+ #
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#77
+ def param_encoding(action, param, encoding); end
+
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#14
+ def setup_param_encode; end
+
+ # Specify that a given action's parameters should all be encoded as
+ # ASCII-8BIT (it "skips" the encoding default of UTF-8).
+ #
+ # For example, a controller would use it like this:
+ #
+ # class RepositoryController < ActionController::Base
+ # skip_parameter_encoding :show
+ #
+ # def show
+ # @repo = Repository.find_by_filesystem_path params[:file_path]
+ #
+ # # `repo_name` is guaranteed to be UTF-8, but was ASCII-8BIT, so
+ # # tag it as such
+ # @repo_name = params[:repo_name].force_encoding 'UTF-8'
+ # end
+ #
+ # def index
+ # @repositories = Repository.all
+ # end
+ # end
+ #
+ # The show action in the above controller would have all parameter values
+ # encoded as ASCII-8BIT. This is useful in the case where an application
+ # must handle data but encoding of the data is unknown, like file system data.
+ #
+ # source://actionpack//lib/action_controller/metal/parameter_encoding.rb#48
+ def skip_parameter_encoding(action); end
+end
+
+# Raised when a required parameter is missing.
+#
+# params = ActionController::Parameters.new(a: {})
+# params.fetch(:b)
+# # => ActionController::ParameterMissing: param is missing or the value is empty: b
+# params.require(:a)
+# # => ActionController::ParameterMissing: param is missing or the value is empty: a
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#21
+class ActionController::ParameterMissing < ::KeyError
+ # @return [ParameterMissing] a new instance of ParameterMissing
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#24
+ def initialize(param, keys = T.unsafe(nil)); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#33
+ def corrections; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#22
+ def keys; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#22
+ def param; end
+end
+
+# == Action Controller \Parameters
+#
+# Allows you to choose which attributes should be permitted for mass updating
+# and thus prevent accidentally exposing that which shouldn't be exposed.
+# Provides two methods for this purpose: #require and #permit. The former is
+# used to mark parameters as required. The latter is used to set the parameter
+# as permitted and limit which attributes should be allowed for mass updating.
+#
+# params = ActionController::Parameters.new({
+# person: {
+# name: "Francesco",
+# age: 22,
+# role: "admin"
+# }
+# })
+#
+# permitted = params.require(:person).permit(:name, :age)
+# permitted # => #"Francesco", "age"=>22} permitted: true>
+# permitted.permitted? # => true
+#
+# Person.first.update!(permitted)
+# # => #
+#
+# It provides two options that controls the top-level behavior of new instances:
+#
+# * +permit_all_parameters+ - If it's +true+, all the parameters will be
+# permitted by default. The default is +false+.
+# * +action_on_unpermitted_parameters+ - Controls behavior when parameters that are not explicitly
+# permitted are found. The default value is :log in test and development environments,
+# +false+ otherwise. The values can be:
+# * +false+ to take no action.
+# * :log to emit an ActiveSupport::Notifications.instrument event on the
+# unpermitted_parameters.action_controller topic and log at the DEBUG level.
+# * :raise to raise an ActionController::UnpermittedParameters exception.
+#
+# Examples:
+#
+# params = ActionController::Parameters.new
+# params.permitted? # => false
+#
+# ActionController::Parameters.permit_all_parameters = true
+#
+# params = ActionController::Parameters.new
+# params.permitted? # => true
+#
+# params = ActionController::Parameters.new(a: "123", b: "456")
+# params.permit(:c)
+# # => #
+#
+# ActionController::Parameters.action_on_unpermitted_parameters = :raise
+#
+# params = ActionController::Parameters.new(a: "123", b: "456")
+# params.permit(:c)
+# # => ActionController::UnpermittedParameters: found unpermitted keys: a, b
+#
+# Please note that these options *are not thread-safe*. In a multi-threaded
+# environment they should only be set once at boot-time and never mutated at
+# runtime.
+#
+# You can fetch values of ActionController::Parameters using either
+# :key or "key".
+#
+# params = ActionController::Parameters.new(key: "value")
+# params[:key] # => "value"
+# params["key"] # => "value"
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#132
+class ActionController::Parameters
+ # Returns a new ActionController::Parameters instance.
+ # Also, sets the +permitted+ attribute to the default value of
+ # ActionController::Parameters.permit_all_parameters.
+ #
+ # class Person < ActiveRecord::Base
+ # end
+ #
+ # params = ActionController::Parameters.new(name: "Francesco")
+ # params.permitted? # => false
+ # Person.new(params) # => ActiveModel::ForbiddenAttributesError
+ #
+ # ActionController::Parameters.permit_all_parameters = true
+ #
+ # params = ActionController::Parameters.new(name: "Francesco")
+ # params.permitted? # => true
+ # Person.new(params) # => #
+ #
+ # @return [Parameters] a new instance of Parameters
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#247
+ def initialize(parameters = T.unsafe(nil), logging_context = T.unsafe(nil)); end
+
+ # Returns true if another +Parameters+ object contains the same content and
+ # permitted flag.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#255
+ def ==(other); end
+
+ # Returns a parameter for the given +key+. If not found,
+ # returns +nil+.
+ #
+ # params = ActionController::Parameters.new(person: { name: "Francesco" })
+ # params[:person] # => #"Francesco"} permitted: false>
+ # params[:none] # => nil
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#619
+ def [](key); end
+
+ # Assigns a value to a given +key+. The given key may still get filtered out
+ # when #permit is called.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#625
+ def []=(key, value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#223
+ def always_permitted_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#223
+ def always_permitted_parameters=(val); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def as_json(*_arg0, **_arg1, &_arg2); end
+
+ # Returns a new ActionController::Parameters instance with +nil+ values removed.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#795
+ def compact; end
+
+ # Removes all +nil+ values in place and returns +self+, or +nil+ if no changes were made.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#800
+ def compact!; end
+
+ # Returns a new ActionController::Parameters instance without the blank values.
+ # Uses Object#blank? for determining if a value is blank.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#806
+ def compact_blank; end
+
+ # Removes all blank values in place and returns self.
+ # Uses Object#blank? for determining if a value is blank.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#812
+ def compact_blank!; end
+
+ # Attribute that keeps track of converted arrays, if any, to avoid double
+ # looping in the common use case permit + mass-assignment. Defined in a
+ # method to instantiate it only if needed.
+ #
+ # \Testing membership still loops, but it's going to be faster than our own
+ # loop that converts values. Also, we are not going to build a new array
+ # object per fetch.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#384
+ def converted_arrays; end
+
+ # Returns a duplicate +ActionController::Parameters+ instance with the same permitted parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#897
+ def deep_dup; end
+
+ # Returns a new ActionController::Parameters instance with the
+ # results of running +block+ once for every key. This includes the keys
+ # from the root hash and from all nested hashes and arrays. The values are unchanged.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#746
+ def deep_transform_keys(&block); end
+
+ # Returns the same ActionController::Parameters instance with
+ # changed keys. This includes the keys from the root hash and from all
+ # nested hashes and arrays. The values are unchanged.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#755
+ def deep_transform_keys!(&block); end
+
+ # Deletes a key-value pair from +Parameters+ and returns the value. If
+ # +key+ is not found, returns +nil+ (or, with optional code block, yields
+ # +key+ and returns the result). This method is similar to #extract!, which
+ # returns the corresponding +ActionController::Parameters+ object.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#764
+ def delete(key, &block); end
+
+ # Removes items that the block evaluates to true and returns self.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#788
+ def delete_if(&block); end
+
+ # Extracts the nested parameter from the given +keys+ by calling +dig+
+ # at each step. Returns +nil+ if any intermediate step is +nil+.
+ #
+ # params = ActionController::Parameters.new(foo: { bar: { baz: 1 } })
+ # params.dig(:foo, :bar, :baz) # => 1
+ # params.dig(:foo, :zot, :xyz) # => nil
+ #
+ # params2 = ActionController::Parameters.new(foo: [10, 11, 12])
+ # params2.dig(:foo, 1) # => 11
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#663
+ def dig(*keys); end
+
+ # Convert all hashes in values into parameters, then yield each pair in
+ # the same way as Hash#each_pair.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#356
+ def each(&block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def each_key(*_arg0, **_arg1, &_arg2); end
+
+ # Convert all hashes in values into parameters, then yield each pair in
+ # the same way as Hash#each_pair.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#356
+ def each_pair(&block); end
+
+ # Convert all hashes in values into parameters, then yield each value in
+ # the same way as Hash#each_value.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#368
+ def each_value(&block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def empty?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#892
+ def encode_with(coder); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#263
+ def eql?(other); end
+
+ # Returns a new ActionController::Parameters instance that
+ # filters out the given +keys+.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.except(:a, :b) # => #3} permitted: false>
+ # params.except(:d) # => #1, "b"=>2, "c"=>3} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#692
+ def except(*keys); end
+
+ # Removes and returns the key/value pairs matching the given keys.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.extract!(:a, :b) # => #1, "b"=>2} permitted: false>
+ # params # => #3} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#701
+ def extract!(*keys); end
+
+ # Returns a parameter for the given +key+. If the +key+
+ # can't be found, there are several options: With no other arguments,
+ # it will raise an ActionController::ParameterMissing error;
+ # if a second argument is given, then that is returned (converted to an
+ # instance of +ActionController::Parameters+ if possible); if a block
+ # is given, then that will be run and its result returned.
+ #
+ # params = ActionController::Parameters.new(person: { name: "Francesco" })
+ # params.fetch(:person) # => #"Francesco"} permitted: false>
+ # params.fetch(:none) # => ActionController::ParameterMissing: param is missing or the value is empty: none
+ # params.fetch(:none, {}) # => #
+ # params.fetch(:none, "Francesco") # => "Francesco"
+ # params.fetch(:none) { "Francesco" } # => "Francesco"
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#642
+ def fetch(key, *args); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def has_key?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def has_value?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#269
+ def hash; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def include?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#874
+ def init_with(coder); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#861
+ def inspect; end
+
+ # Equivalent to Hash#keep_if, but returns +nil+ if no changes were made.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#775
+ def keep_if(&block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def key?(*_arg0, **_arg1, &_arg2); end
+
+ # :method: values
+ #
+ # :call-seq:
+ # values()
+ #
+ # Returns a new array of the values of the parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def keys(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def member?(*_arg0, **_arg1, &_arg2); end
+
+ # Returns a new ActionController::Parameters instance with all keys from
+ # +other_hash+ merged into current hash.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#824
+ def merge(other_hash); end
+
+ # Returns the current ActionController::Parameters instance with
+ # +other_hash+ merged into current hash.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#832
+ def merge!(other_hash); end
+
+ # Returns a new ActionController::Parameters instance that
+ # includes only the given +filters+ and sets the +permitted+ attribute
+ # for the object to +true+. This is useful for limiting which attributes
+ # should be allowed for mass updating.
+ #
+ # params = ActionController::Parameters.new(user: { name: "Francesco", age: 22, role: "admin" })
+ # permitted = params.require(:user).permit(:name, :age)
+ # permitted.permitted? # => true
+ # permitted.has_key?(:name) # => true
+ # permitted.has_key?(:age) # => true
+ # permitted.has_key?(:role) # => false
+ #
+ # Only permitted scalars pass the filter. For example, given
+ #
+ # params.permit(:name)
+ #
+ # +:name+ passes if it is a key of +params+ whose associated value is of type
+ # +String+, +Symbol+, +NilClass+, +Numeric+, +TrueClass+, +FalseClass+,
+ # +Date+, +Time+, +DateTime+, +StringIO+, +IO+,
+ # ActionDispatch::Http::UploadedFile or +Rack::Test::UploadedFile+.
+ # Otherwise, the key +:name+ is filtered out.
+ #
+ # You may declare that the parameter should be an array of permitted scalars
+ # by mapping it to an empty array:
+ #
+ # params = ActionController::Parameters.new(tags: ["rails", "parameters"])
+ # params.permit(tags: [])
+ #
+ # Sometimes it is not possible or convenient to declare the valid keys of
+ # a hash parameter or its internal structure. Just map to an empty hash:
+ #
+ # params.permit(preferences: {})
+ #
+ # Be careful because this opens the door to arbitrary input. In this
+ # case, +permit+ ensures values in the returned structure are permitted
+ # scalars and filters out anything else.
+ #
+ # You can also use +permit+ on nested parameters, like:
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # name: "Francesco",
+ # age: 22,
+ # pets: [{
+ # name: "Purplish",
+ # category: "dogs"
+ # }]
+ # }
+ # })
+ #
+ # permitted = params.permit(person: [ :name, { pets: :name } ])
+ # permitted.permitted? # => true
+ # permitted[:person][:name] # => "Francesco"
+ # permitted[:person][:age] # => nil
+ # permitted[:person][:pets][0][:name] # => "Purplish"
+ # permitted[:person][:pets][0][:category] # => nil
+ #
+ # Note that if you use +permit+ in a key that points to a hash,
+ # it won't allow all the hash. You also need to specify which
+ # attributes inside the hash should be permitted.
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # contact: {
+ # email: "none@test.com",
+ # phone: "555-1234"
+ # }
+ # }
+ # })
+ #
+ # params.require(:person).permit(:contact)
+ # # => #
+ #
+ # params.require(:person).permit(contact: :phone)
+ # # => ##"555-1234"} permitted: true>} permitted: true>
+ #
+ # params.require(:person).permit(contact: [ :email, :phone ])
+ # # => ##"none@test.com", "phone"=>"555-1234"} permitted: true>} permitted: true>
+ #
+ # If your parameters specify multiple parameters indexed by a number,
+ # you can permit each set of parameters under the numeric key to be the same using the same syntax as permitting a single item.
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # '0': {
+ # email: "none@test.com",
+ # phone: "555-1234"
+ # },
+ # '1': {
+ # email: "nothing@test.com",
+ # phone: "555-6789"
+ # },
+ # }
+ # })
+ # params.permit(person: [:email]).to_h
+ # # => {"person"=>{"0"=>{"email"=>"none@test.com"}, "1"=>{"email"=>"nothing@test.com"}}}
+ #
+ # If you want to specify what keys you want from each numeric key, you can instead specify each one individually
+ #
+ # params = ActionController::Parameters.new({
+ # person: {
+ # '0': {
+ # email: "none@test.com",
+ # phone: "555-1234"
+ # },
+ # '1': {
+ # email: "nothing@test.com",
+ # phone: "555-6789"
+ # },
+ # }
+ # })
+ # params.permit(person: { '0': [:email], '1': [:phone]}).to_h
+ # # => {"person"=>{"0"=>{"email"=>"none@test.com"}, "1"=>{"phone"=>"555-6789"}}}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#596
+ def permit(*filters); end
+
+ # Sets the +permitted+ attribute to +true+. This can be used to pass
+ # mass assignment. Returns +self+.
+ #
+ # class Person < ActiveRecord::Base
+ # end
+ #
+ # params = ActionController::Parameters.new(name: "Francesco")
+ # params.permitted? # => false
+ # Person.new(params) # => ActiveModel::ForbiddenAttributesError
+ # params.permit!
+ # params.permitted? # => true
+ # Person.new(params) # => #
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#410
+ def permit!; end
+
+ # Returns +true+ if the parameter is permitted, +false+ otherwise.
+ #
+ # params = ActionController::Parameters.new
+ # params.permitted? # => false
+ # params.permit!
+ # params.permitted? # => true
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#394
+ def permitted?; end
+
+ # Returns a new ActionController::Parameters instance with items
+ # that the block evaluates to true removed.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#783
+ def reject(&block); end
+
+ # Removes items that the block evaluates to true and returns self.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#788
+ def reject!(&block); end
+
+ # This method accepts both a single key and an array of keys.
+ #
+ # When passed a single key, if it exists and its associated value is
+ # either present or the singleton +false+, returns said value:
+ #
+ # ActionController::Parameters.new(person: { name: "Francesco" }).require(:person)
+ # # => #"Francesco"} permitted: false>
+ #
+ # Otherwise raises ActionController::ParameterMissing:
+ #
+ # ActionController::Parameters.new.require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # ActionController::Parameters.new(person: nil).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # ActionController::Parameters.new(person: "\t").require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # ActionController::Parameters.new(person: {}).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # When given an array of keys, the method tries to require each one of them
+ # in order. If it succeeds, an array with the respective return values is
+ # returned:
+ #
+ # params = ActionController::Parameters.new(user: { ... }, profile: { ... })
+ # user_params, profile_params = params.require([:user, :profile])
+ #
+ # Otherwise, the method re-raises the first exception found:
+ #
+ # params = ActionController::Parameters.new(user: {}, profile: {})
+ # user_params, profile_params = params.require([:user, :profile])
+ # # ActionController::ParameterMissing: param is missing or the value is empty: user
+ #
+ # Technically this method can be used to fetch terminal values:
+ #
+ # # CAREFUL
+ # params = ActionController::Parameters.new(person: { name: "Finn" })
+ # name = params.require(:person).require(:name) # CAREFUL
+ #
+ # but take into account that at some point those ones have to be permitted:
+ #
+ # def person_params
+ # params.require(:person).permit(:name).tap do |person_params|
+ # person_params.require(:name) # SAFER
+ # end
+ # end
+ #
+ # for example.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#471
+ def require(key); end
+
+ # This method accepts both a single key and an array of keys.
+ #
+ # When passed a single key, if it exists and its associated value is
+ # either present or the singleton +false+, returns said value:
+ #
+ # ActionController::Parameters.new(person: { name: "Francesco" }).require(:person)
+ # # => #"Francesco"} permitted: false>
+ #
+ # Otherwise raises ActionController::ParameterMissing:
+ #
+ # ActionController::Parameters.new.require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # ActionController::Parameters.new(person: nil).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # ActionController::Parameters.new(person: "\t").require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # ActionController::Parameters.new(person: {}).require(:person)
+ # # ActionController::ParameterMissing: param is missing or the value is empty: person
+ #
+ # When given an array of keys, the method tries to require each one of them
+ # in order. If it succeeds, an array with the respective return values is
+ # returned:
+ #
+ # params = ActionController::Parameters.new(user: { ... }, profile: { ... })
+ # user_params, profile_params = params.require([:user, :profile])
+ #
+ # Otherwise, the method re-raises the first exception found:
+ #
+ # params = ActionController::Parameters.new(user: {}, profile: {})
+ # user_params, profile_params = params.require([:user, :profile])
+ # # ActionController::ParameterMissing: param is missing or the value is empty: user
+ #
+ # Technically this method can be used to fetch terminal values:
+ #
+ # # CAREFUL
+ # params = ActionController::Parameters.new(person: { name: "Finn" })
+ # name = params.require(:person).require(:name) # CAREFUL
+ #
+ # but take into account that at some point those ones have to be permitted:
+ #
+ # def person_params
+ # params.require(:person).permit(:name).tap do |person_params|
+ # person_params.require(:name) # SAFER
+ # end
+ # end
+ #
+ # for example.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#471
+ def required(key); end
+
+ # Returns a new ActionController::Parameters instance with all keys
+ # from current hash merged into +other_hash+.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#839
+ def reverse_merge(other_hash); end
+
+ # Returns the current ActionController::Parameters instance with
+ # current hash merged into +other_hash+.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#848
+ def reverse_merge!(other_hash); end
+
+ # Returns a new ActionController::Parameters instance with only
+ # items that the block evaluates to true.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#770
+ def select(&block); end
+
+ # Equivalent to Hash#keep_if, but returns +nil+ if no changes were made.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#775
+ def select!(&block); end
+
+ # Returns a new ActionController::Parameters instance that
+ # includes only the given +keys+. If the given +keys+
+ # don't exist, returns an empty hash.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.slice(:a, :b) # => #1, "b"=>2} permitted: false>
+ # params.slice(:d) # => #
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#675
+ def slice(*keys); end
+
+ # Returns the current ActionController::Parameters instance which
+ # contains only the given +keys+.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#681
+ def slice!(*keys); end
+
+ # This is required by ActiveModel attribute assignment, so that user can
+ # pass +Parameters+ to a mass assignment methods in a model. It should not
+ # matter as we are using +HashWithIndifferentAccess+ internally.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#857
+ def stringify_keys; end
+
+ # Returns a safe ActiveSupport::HashWithIndifferentAccess
+ # representation of the parameters with all unpermitted keys removed.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_h
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name)
+ # safe_params.to_h # => {"name"=>"Senjougahara Hitagi"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#285
+ def to_h; end
+
+ # Returns a safe Hash representation of the parameters
+ # with all unpermitted keys removed.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_hash
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name)
+ # safe_params.to_hash # => {"name"=>"Senjougahara Hitagi"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#305
+ def to_hash; end
+
+ # Returns a string representation of the receiver suitable for use as a URL
+ # query string:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # params.to_query
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.to_query
+ # # => "name=David&nationality=Danish"
+ #
+ # An optional namespace can be passed to enclose key names:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.to_query("user")
+ # # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
+ #
+ # The string pairs "key=value" that conform the query string
+ # are sorted lexicographically in ascending order.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#335
+ def to_param(*args); end
+
+ # Returns a string representation of the receiver suitable for use as a URL
+ # query string:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # params.to_query
+ # # => ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hash
+ #
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.to_query
+ # # => "name=David&nationality=Danish"
+ #
+ # An optional namespace can be passed to enclose key names:
+ #
+ # params = ActionController::Parameters.new({
+ # name: "David",
+ # nationality: "Danish"
+ # })
+ # safe_params = params.permit(:name, :nationality)
+ # safe_params.to_query("user")
+ # # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
+ #
+ # The string pairs "key=value" that conform the query string
+ # are sorted lexicographically in ascending order.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#335
+ def to_query(*args); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def to_s(*_arg0, **_arg1, &_arg2); end
+
+ # Returns an unsafe, unfiltered ActiveSupport::HashWithIndifferentAccess
+ # representation of the parameters.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_unsafe_h
+ # # => {"name"=>"Senjougahara Hitagi", "oddity" => "Heavy stone crab"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#349
+ def to_unsafe_h; end
+
+ # Returns an unsafe, unfiltered ActiveSupport::HashWithIndifferentAccess
+ # representation of the parameters.
+ #
+ # params = ActionController::Parameters.new({
+ # name: "Senjougahara Hitagi",
+ # oddity: "Heavy stone crab"
+ # })
+ # params.to_unsafe_h
+ # # => {"name"=>"Senjougahara Hitagi", "oddity" => "Heavy stone crab"}
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#349
+ def to_unsafe_hash; end
+
+ # Returns a new ActionController::Parameters instance with the
+ # results of running +block+ once for every key. The values are unchanged.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#728
+ def transform_keys(&block); end
+
+ # Performs keys transformation and returns the altered
+ # ActionController::Parameters instance.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#737
+ def transform_keys!(&block); end
+
+ # Returns a new ActionController::Parameters instance with the results of
+ # running +block+ once for every value. The keys are unchanged.
+ #
+ # params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
+ # params.transform_values { |x| x * 2 }
+ # # => #2, "b"=>4, "c"=>6} permitted: false>
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#711
+ def transform_values; end
+
+ # Performs values transformation and returns the altered
+ # ActionController::Parameters instance.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#720
+ def transform_values!; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def value?(*_arg0, **_arg1, &_arg2); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#209
+ def values(*_arg0, **_arg1, &_arg2); end
+
+ # Returns values that were assigned to the given +keys+. Note that all the
+ # +Hash+ objects will be converted to ActionController::Parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#818
+ def values_at(*keys); end
+
+ # Returns a new ActionController::Parameters instance with all keys
+ # from current hash merged into +other_hash+.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#839
+ def with_defaults(other_hash); end
+
+ # Returns the current ActionController::Parameters instance with
+ # current hash merged into +other_hash+.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#848
+ def with_defaults!(other_hash); end
+
+ protected
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#912
+ def each_nested_attribute; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#908
+ def nested_attributes?; end
+
+ # Returns the value of attribute parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#904
+ def parameters; end
+
+ # Sets the attribute permitted
+ #
+ # @param value the value to set the attribute permitted to.
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#906
+ def permitted=(_arg0); end
+
+ private
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1053
+ def array_of_permitted_scalars?(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#940
+ def convert_hashes_to_parameters(key, value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#925
+ def convert_parameters_to_hashes(value, using); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#946
+ def convert_value_to_parameters(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#966
+ def each_element(object, filter, &block); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1065
+ def hash_filter(params, filter); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1124
+ def initialize_copy(source); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#919
+ def new_instance_with_inherited_permitted_status(hash); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1059
+ def non_scalar?(value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1109
+ def permit_any_in_array(array); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1092
+ def permit_any_in_parameters(params); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1024
+ def permitted_scalar?(value); end
+
+ # Adds existing keys to the params if their values are scalar.
+ #
+ # For example:
+ #
+ # puts self.keys #=> ["zipcode(90210i)"]
+ # params = {}
+ #
+ # permitted_scalar_filter(params, "zipcode")
+ #
+ # puts params.keys # => ["zipcode"]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#1038
+ def permitted_scalar_filter(params, permitted_key); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#960
+ def specify_numeric_keys?(filter); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#992
+ def unpermitted_keys(params); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#979
+ def unpermitted_parameters!(params); end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#135
+ def action_on_unpermitted_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#135
+ def action_on_unpermitted_parameters=(val); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#223
+ def always_permitted_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#223
+ def always_permitted_parameters=(val); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#865
+ def hook_into_yaml_loading; end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#226
+ def nested_attribute?(key, value); end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#133
+ def permit_all_parameters; end
+
+ # source://actionpack//lib/action_controller/metal/strong_parameters.rb#133
+ def permit_all_parameters=(val); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#1063
+ActionController::Parameters::EMPTY_ARRAY = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#1064
+ActionController::Parameters::EMPTY_HASH = T.let(T.unsafe(nil), Hash)
+
+# This is a list of permitted scalar types that includes the ones
+# supported in XML and JSON requests.
+#
+# This list is in particular used to filter ordinary requests, \String goes
+# as first element to quickly short-circuit the common case.
+#
+# If you modify this collection please update the one in the #permit doc
+# as well.
+#
+# source://actionpack//lib/action_controller/metal/strong_parameters.rb#1008
+ActionController::Parameters::PERMITTED_SCALAR_TYPES = T.let(T.unsafe(nil), Array)
+
+# Wraps the parameters hash into a nested hash. This will allow clients to
+# submit requests without having to specify any root elements.
+#
+# This functionality is enabled by default for JSON, and can be customized by
+# setting the format array:
+#
+# class ApplicationController < ActionController::Base
+# wrap_parameters format: [:json, :xml]
+# end
+#
+# You could also turn it on per controller:
+#
+# class UsersController < ApplicationController
+# wrap_parameters format: [:json, :xml, :url_encoded_form, :multipart_form]
+# end
+#
+# If you enable +ParamsWrapper+ for +:json+ format, instead of having to
+# send JSON parameters like this:
+#
+# {"user": {"name": "Konata"}}
+#
+# You can send parameters like this:
+#
+# {"name": "Konata"}
+#
+# And it will be wrapped into a nested hash with the key name matching the
+# controller's name. For example, if you're posting to +UsersController+,
+# your new +params+ hash will look like this:
+#
+# {"name" => "Konata", "user" => {"name" => "Konata"}}
+#
+# You can also specify the key in which the parameters should be wrapped to,
+# and also the list of attributes it should wrap by using either +:include+ or
+# +:exclude+ options like this:
+#
+# class UsersController < ApplicationController
+# wrap_parameters :person, include: [:username, :password]
+# end
+#
+# On Active Record models with no +:include+ or +:exclude+ option set,
+# it will only wrap the parameters returned by the class method
+# attribute_names.
+#
+# If you're going to pass the parameters to an +ActiveModel+ object (such as
+# User.new(params[:user])), you might consider passing the model class to
+# the method instead. The +ParamsWrapper+ will actually try to determine the
+# list of attribute names from the model and only wrap those attributes:
+#
+# class UsersController < ApplicationController
+# wrap_parameters Person
+# end
+#
+# You still could pass +:include+ and +:exclude+ to set the list of attributes
+# you want to wrap.
+#
+# By default, if you don't specify the key in which the parameters would be
+# wrapped to, +ParamsWrapper+ will actually try to determine if there's
+# a model related to it or not. This controller, for example:
+#
+# class Admin::UsersController < ApplicationController
+# end
+#
+# will try to check if Admin::User or +User+ model exists, and use it to
+# determine the wrapper key respectively. If both models don't exist,
+# it will then fallback to use +user+ as the key.
+#
+# To disable this functionality for a controller:
+#
+# class UsersController < ApplicationController
+# wrap_parameters false
+# end
+#
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#80
+module ActionController::ParamsWrapper
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::ParamsWrapper::ClassMethods
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#277
+ def _extract_parameters(parameters); end
+
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#299
+ def _perform_parameter_wrapping; end
+
+ # Returns the list of parameters which will be selected for wrapped.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#273
+ def _wrap_parameters(parameters); end
+
+ # Checks if we should perform parameters wrapping.
+ #
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#289
+ def _wrapper_enabled?; end
+
+ # Returns the list of enabled formats.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#268
+ def _wrapper_formats; end
+
+ # Returns the wrapper key which will be used to store wrapped parameters.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#263
+ def _wrapper_key; end
+
+ # Performs parameters wrapping upon the request. Called automatically
+ # by the metal call stack.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#257
+ def process_action(*_arg0); end
+
+ module GeneratedClassMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _wrapper_options; end
+ def _wrapper_options=(value); end
+ def _wrapper_options?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#188
+module ActionController::ParamsWrapper::ClassMethods
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#189
+ def _set_wrapper_options(options); end
+
+ # Sets the default wrapper key or model which will be used to determine
+ # wrapper key and attribute names. Called automatically when the
+ # module is inherited.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#244
+ def inherited(klass); end
+
+ # Sets the name of the wrapper key, or the model which +ParamsWrapper+
+ # would use to determine the attribute names from.
+ #
+ # ==== Examples
+ # wrap_parameters format: :xml
+ # # enables the parameter wrapper for XML format
+ #
+ # wrap_parameters :person
+ # # wraps parameters into +params[:person]+ hash
+ #
+ # wrap_parameters Person
+ # # wraps parameters by determining the wrapper key from Person class
+ # # (+person+, in this case) and the list of attribute names
+ #
+ # wrap_parameters include: [:username, :title]
+ # # wraps only +:username+ and +:title+ attributes from parameters.
+ #
+ # wrap_parameters false
+ # # disables parameters wrapping for this controller altogether.
+ #
+ # ==== Options
+ # * :format - The list of formats in which the parameters wrapper
+ # will be enabled.
+ # * :include - The list of attribute names which parameters wrapper
+ # will wrap into a nested hash.
+ # * :exclude - The list of attribute names which parameters wrapper
+ # will exclude from a nested hash.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#220
+ def wrap_parameters(name_or_model_or_options, options = T.unsafe(nil)); end
+end
+
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#83
+ActionController::ParamsWrapper::EXCLUDE_PARAMETERS = T.let(T.unsafe(nil), Array)
+
+# source://actionpack//lib/action_controller/metal/params_wrapper.rb#87
+class ActionController::ParamsWrapper::Options < ::Struct
+ include ::Mutex_m
+
+ # @return [Options] a new instance of Options
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#98
+ def initialize(name, format, include, exclude, klass, model); end
+
+ # Returns the value of attribute include
+ #
+ # @return [Object] the current value of include
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#108
+ def include; end
+
+ # source://mutex_m/0.1.2/mutex_m.rb#93
+ def lock; end
+
+ # source://mutex_m/0.1.2/mutex_m.rb#83
+ def locked?; end
+
+ # Returns the value of attribute model
+ #
+ # @return [Object] the current value of model
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#104
+ def model; end
+
+ # Returns the value of attribute name
+ #
+ # @return [Object] the current value of name
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#141
+ def name; end
+
+ # source://mutex_m/0.1.2/mutex_m.rb#78
+ def synchronize(&block); end
+
+ # source://mutex_m/0.1.2/mutex_m.rb#88
+ def try_lock; end
+
+ # source://mutex_m/0.1.2/mutex_m.rb#98
+ def unlock; end
+
+ private
+
+ # Determine the wrapper model from the controller's name. By convention,
+ # this could be done by trying to find the defined model that has the
+ # same singular name as the controller. For example, +UsersController+
+ # will try to find if the +User+ model exists.
+ #
+ # This method also does namespace lookup. Foo::Bar::UsersController will
+ # try to find Foo::Bar::User, Foo::User and finally User.
+ #
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#165
+ def _default_wrap_model; end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/params_wrapper.rb#90
+ def from_hash(hash); end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/permissions_policy.rb#4
+module ActionController::PermissionsPolicy
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::PermissionsPolicy::ClassMethods
+end
+
+# source://actionpack//lib/action_controller/metal/permissions_policy.rb#7
+module ActionController::PermissionsPolicy::ClassMethods
+ # Overrides parts of the globally configured +Feature-Policy+
+ # header:
+ #
+ # class PagesController < ApplicationController
+ # permissions_policy do |policy|
+ # policy.geolocation "https://example.com"
+ # end
+ # end
+ #
+ # Options can be passed similar to +before_action+. For example, pass
+ # only: :index to override the header on the index action only:
+ #
+ # class PagesController < ApplicationController
+ # permissions_policy(only: :index) do |policy|
+ # policy.camera :self
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/permissions_policy.rb#26
+ def permissions_policy(**options, &block); end
+end
+
+# source://actionpack//lib/action_controller/railtie.rb#11
+class ActionController::Railtie < ::Rails::Railtie; end
+
+# source://actionpack//lib/action_controller/railties/helpers.rb#4
+module ActionController::Railties; end
+
+# source://actionpack//lib/action_controller/railties/helpers.rb#5
+module ActionController::Railties::Helpers
+ # source://actionpack//lib/action_controller/railties/helpers.rb#6
+ def inherited(klass); end
+end
+
+# source://actionpack//lib/action_controller/metal/redirecting.rb#4
+module ActionController::Redirecting
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActiveSupport::Benchmarkable
+ include ::AbstractController::Logger
+ include ::ActionDispatch::Routing::UrlFor
+ include ::AbstractController::UrlFor
+ include ::ActionController::UrlFor
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::AbstractController::UrlFor::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#136
+ def _compute_redirect_to_location(request, options); end
+
+ # Soft deprecated alias for #redirect_back_or_to where the +fallback_location+ location is supplied as a keyword argument instead
+ # of the first positional argument.
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#101
+ def redirect_back(fallback_location:, allow_other_host: T.unsafe(nil), **args); end
+
+ # Redirects the browser to the page that issued the request (the referrer)
+ # if possible, otherwise redirects to the provided default fallback
+ # location.
+ #
+ # The referrer information is pulled from the HTTP +Referer+ (sic) header on
+ # the request. This is an optional header and its presence on the request is
+ # subject to browser security settings and user preferences. If the request
+ # is missing this header, the fallback_location will be used.
+ #
+ # redirect_back_or_to({ action: "show", id: 5 })
+ # redirect_back_or_to @post
+ # redirect_back_or_to "http://www.rubyonrails.org"
+ # redirect_back_or_to "/images/screenshot.jpg"
+ # redirect_back_or_to posts_url
+ # redirect_back_or_to proc { edit_post_url(@post) }
+ # redirect_back_or_to '/', allow_other_host: false
+ #
+ # ==== Options
+ # * :allow_other_host - Allow or disallow redirection to the host that is different to the current host, defaults to true.
+ #
+ # All other options that can be passed to #redirect_to are accepted as
+ # options, and the behavior is identical.
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#127
+ def redirect_back_or_to(fallback_location, allow_other_host: T.unsafe(nil), **options); end
+
+ # Redirects the browser to the target specified in +options+. This parameter can be any one of:
+ #
+ # * Hash - The URL will be generated by calling url_for with the +options+.
+ # * Record - The URL will be generated by calling url_for with the +options+, which will reference a named URL for that record.
+ # * String starting with protocol:// (like http://) or a protocol relative reference (like //) - Is passed straight through as the target for redirection.
+ # * String not containing a protocol - The current protocol and host is prepended to the string.
+ # * Proc - A block that will be executed in the controller's context. Should return any option accepted by +redirect_to+.
+ #
+ # === Examples:
+ #
+ # redirect_to action: "show", id: 5
+ # redirect_to @post
+ # redirect_to "http://www.rubyonrails.org"
+ # redirect_to "/images/screenshot.jpg"
+ # redirect_to posts_url
+ # redirect_to proc { edit_post_url(@post) }
+ #
+ # The redirection happens as a 302 Found header unless otherwise specified using the :status option:
+ #
+ # redirect_to post_url(@post), status: :found
+ # redirect_to action: 'atom', status: :moved_permanently
+ # redirect_to post_url(@post), status: 301
+ # redirect_to action: 'atom', status: 302
+ #
+ # The status code can either be a standard {HTTP Status code}[https://www.iana.org/assignments/http-status-codes] as an
+ # integer, or a symbol representing the downcased, underscored and symbolized description.
+ # Note that the status code must be a 3xx HTTP code, or redirection will not occur.
+ #
+ # If you are using XHR requests other than GET or POST and redirecting after the
+ # request then some browsers will follow the redirect using the original request
+ # method. This may lead to undesirable behavior such as a double DELETE. To work
+ # around this you can return a 303 See Other status code which will be
+ # followed using a GET request.
+ #
+ # redirect_to posts_url, status: :see_other
+ # redirect_to action: 'index', status: 303
+ #
+ # It is also possible to assign a flash message as part of the redirection. There are two special accessors for the commonly used flash names
+ # +alert+ and +notice+ as well as a general purpose +flash+ bucket.
+ #
+ # redirect_to post_url(@post), alert: "Watch it, mister!"
+ # redirect_to post_url(@post), status: :found, notice: "Pay attention to the road"
+ # redirect_to post_url(@post), status: 301, flash: { updated_post_id: @post.id }
+ # redirect_to({ action: 'atom' }, alert: "Something serious happened")
+ #
+ # Statements after +redirect_to+ in our controller get executed, so +redirect_to+ doesn't stop the execution of the function.
+ # To terminate the execution of the function immediately after the +redirect_to+, use return.
+ #
+ # redirect_to post_url(@post) and return
+ #
+ # === Open Redirect protection
+ #
+ # By default, Rails protects against redirecting to external hosts for your app's safety, so called open redirects.
+ # Note: this was a new default in Rails 7.0, after upgrading opt-in by uncommenting the line with +raise_on_open_redirects+ in config/initializers/new_framework_defaults_7_0.rb
+ #
+ # Here #redirect_to automatically validates the potentially-unsafe URL:
+ #
+ # redirect_to params[:redirect_url]
+ #
+ # Raises UnsafeRedirectError in the case of an unsafe redirect.
+ #
+ # To allow any external redirects pass allow_other_host: true, though using a user-provided param in that case is unsafe.
+ #
+ # redirect_to "https://rubyonrails.org", allow_other_host: true
+ #
+ # See #url_from for more information on what an internal and safe URL is, or how to fall back to an alternate redirect URL in the unsafe case.
+ #
+ # @raise [ActionControllerError]
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#84
+ def redirect_to(options = T.unsafe(nil), response_options = T.unsafe(nil)); end
+
+ # Verifies the passed +location+ is an internal URL that's safe to redirect to and returns it, or nil if not.
+ # Useful to wrap a params provided redirect URL and fallback to an alternate URL to redirect to:
+ #
+ # redirect_to url_from(params[:redirect_url]) || root_url
+ #
+ # The +location+ is considered internal, and safe, if it's on the same host as request.host:
+ #
+ # # If request.host is example.com:
+ # url_from("https://example.com/profile") # => "https://example.com/profile"
+ # url_from("http://example.com/profile") # => "http://example.com/profile"
+ # url_from("http://evil.com/profile") # => nil
+ #
+ # Subdomains are considered part of the host:
+ #
+ # # If request.host is on https://example.com or https://app.example.com, you'd get:
+ # url_from("https://dev.example.com/profile") # => nil
+ #
+ # NOTE: there's a similarity with {url_for}[rdoc-ref:ActionDispatch::Routing::UrlFor#url_for], which generates an internal URL from various options from within the app, e.g. url_for(@post).
+ # However, #url_from is meant to take an external parameter to verify as in url_from(params[:redirect_url]).
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#175
+ def url_from(location); end
+
+ private
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#181
+ def _allow_other_host; end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#195
+ def _enforce_open_redirect_protection(location, allow_other_host:); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#214
+ def _ensure_url_is_http_header_safe(url); end
+
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#185
+ def _extract_redirect_to_status(options, response_options); end
+
+ # @return [Boolean]
+ #
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#203
+ def _url_host_allowed?(url); end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/redirecting.rb#136
+ def _compute_redirect_to_location(request, options); end
+ end
+
+ module GeneratedClassMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+
+ module GeneratedInstanceMethods
+ def default_url_options; end
+ def default_url_options=(value); end
+ def default_url_options?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/redirecting.rb#7
+ActionController::Redirecting::ILLEGAL_HEADER_VALUE_REGEX = T.let(T.unsafe(nil), Regexp)
+
+# source://actionpack//lib/action_controller/metal/redirecting.rb#12
+class ActionController::Redirecting::UnsafeRedirectError < ::StandardError; end
+
+# source://actionpack//lib/action_controller/metal/exceptions.rb#14
+class ActionController::RenderError < ::ActionController::ActionControllerError; end
+
+# ActionController::Renderer allows you to render arbitrary templates
+# without requirement of being in controller actions.
+#
+# You get a concrete renderer class by invoking ActionController::Base#renderer.
+# For example:
+#
+# ApplicationController.renderer
+#
+# It allows you to call method #render directly.
+#
+# ApplicationController.renderer.render template: '...'
+#
+# You can use this shortcut in a controller, instead of the previous example:
+#
+# ApplicationController.render template: '...'
+#
+# #render allows you to use the same options that you can use when rendering in a controller.
+# For example:
+#
+# FooController.render :action, locals: { ... }, assigns: { ... }
+#
+# The template will be rendered in a Rack environment which is accessible through
+# ActionController::Renderer#env. You can set it up in two ways:
+#
+# * by changing renderer defaults, like
+#
+# ApplicationController.renderer.defaults # => hash with default Rack environment
+#
+# * by initializing an instance of renderer by passing it a custom environment.
+#
+# ApplicationController.renderer.new(method: 'post', https: true)
+#
+# source://actionpack//lib/action_controller/renderer.rb#36
+class ActionController::Renderer
+ # Accepts a custom Rack environment to render templates in.
+ # It will be merged with the default Rack environment defined by
+ # +ActionController::Renderer::DEFAULTS+.
+ #
+ # @return [Renderer] a new instance of Renderer
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#65
+ def initialize(controller, env, defaults); end
+
+ # Returns the value of attribute controller.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#37
+ def controller; end
+
+ # Returns the value of attribute defaults.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#37
+ def defaults; end
+
+ # Create a new renderer for the same controller but with a new env.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#53
+ def new(env = T.unsafe(nil)); end
+
+ # Renders a template to a string, just like ActionController::Rendering#render_to_string.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#72
+ def render(*args); end
+
+ # Renders a template to a string, just like ActionController::Rendering#render_to_string.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#72
+ def render_to_string(*args); end
+
+ # Create a new renderer for the same controller but with new defaults.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#58
+ def with_defaults(defaults); end
+
+ private
+
+ # source://actionpack//lib/action_controller/renderer.rb#86
+ def normalize_keys(defaults, env); end
+
+ # source://actionpack//lib/action_controller/renderer.rb#107
+ def rack_key_for(key); end
+
+ # source://actionpack//lib/action_controller/renderer.rb#111
+ def rack_value_for(key, value); end
+
+ class << self
+ # Create a new renderer instance for a specific controller class.
+ #
+ # source://actionpack//lib/action_controller/renderer.rb#48
+ def for(controller, env = T.unsafe(nil), defaults = T.unsafe(nil)); end
+ end
+end
+
+# source://actionpack//lib/action_controller/renderer.rb#39
+ActionController::Renderer::DEFAULTS = T.let(T.unsafe(nil), Hash)
+
+# source://actionpack//lib/action_controller/renderer.rb#99
+ActionController::Renderer::RACK_KEY_TRANSLATION = T.let(T.unsafe(nil), Hash)
+
+# source://actionpack//lib/action_controller/metal/renderers.rb#23
+module ActionController::Renderers
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::Renderers::ClassMethods
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#144
+ def _render_to_body_with_renderer(options); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#170
+ def _render_with_renderer_js(js, options); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#155
+ def _render_with_renderer_json(json, options); end
+
+ # source://actionpack//lib/action_controller/metal/renderers.rb#175
+ def _render_with_renderer_xml(xml, options); end
+
+ # Called by +render+ in AbstractController::Rendering
+ # which sets the return value as the +response_body+.
+ #
+ # If no renderer is found, +super+ returns control to
+ # ActionView::Rendering.render_to_body, if present.
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#140
+ def render_to_body(options); end
+
+ class << self
+ # source://actionpack//lib/action_controller/metal/renderers.rb#90
+ def _render_with_renderer_method_name(key); end
+
+ # Adds a new renderer to call within controller actions.
+ # A renderer is invoked by passing its name as an option to
+ # AbstractController::Rendering#render. To create a renderer
+ # pass it a name and a block. The block takes two arguments, the first
+ # is the value paired with its key and the second is the remaining
+ # hash of options passed to +render+.
+ #
+ # Create a csv renderer:
+ #
+ # ActionController::Renderers.add :csv do |obj, options|
+ # filename = options[:filename] || 'data'
+ # str = obj.respond_to?(:to_csv) ? obj.to_csv : obj.to_s
+ # send_data str, type: Mime[:csv],
+ # disposition: "attachment; filename=#{filename}.csv"
+ # end
+ #
+ # Note that we used Mime[:csv] for the csv mime type as it comes with Rails.
+ # For a custom renderer, you'll need to register a mime type with
+ # Mime::Type.register.
+ #
+ # To use the csv renderer in a controller action:
+ #
+ # def show
+ # @csvable = Csvable.find(params[:id])
+ # respond_to do |format|
+ # format.html
+ # format.csv { render csv: @csvable, filename: @csvable.name }
+ # end
+ # end
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#74
+ def add(key, &block); end
+
+ # This method is the opposite of add method.
+ #
+ # To remove a csv renderer:
+ #
+ # ActionController::Renderers.remove(:csv)
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#84
+ def remove(key); end
+ end
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
+
+# Used in ActionController::Base and ActionController::API to include all
+# renderers by default.
+#
+# source://actionpack//lib/action_controller/metal/renderers.rb#36
+module ActionController::Renderers::All
+ extend ::ActiveSupport::Concern
+ include GeneratedInstanceMethods
+ include ::ActionController::Renderers
+
+ mixes_in_class_methods GeneratedClassMethods
+ mixes_in_class_methods ::ActionController::Renderers::ClassMethods
+
+ module GeneratedClassMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+
+ module GeneratedInstanceMethods
+ def _renderers; end
+ def _renderers=(value); end
+ def _renderers?; end
+ end
+end
+
+# source://actionpack//lib/action_controller/metal/renderers.rb#94
+module ActionController::Renderers::ClassMethods
+ # Adds, by name, a renderer or renderers to the +_renderers+ available
+ # to call within controller actions.
+ #
+ # It is useful when rendering from an ActionController::Metal controller or
+ # otherwise to add an available renderer proc to a specific controller.
+ #
+ # Both ActionController::Base and ActionController::API
+ # include ActionController::Renderers::All, making all renderers
+ # available in the controller. See Renderers::RENDERERS and Renderers.add.
+ #
+ # Since ActionController::Metal controllers cannot render, the controller
+ # must include AbstractController::Rendering, ActionController::Rendering,
+ # and ActionController::Renderers, and have at least one renderer.
+ #
+ # Rather than including ActionController::Renderers::All and including all renderers,
+ # you may specify which renderers to include by passing the renderer name or names to
+ # +use_renderers+. For example, a controller that includes only the :json renderer
+ # (+_render_with_renderer_json+) might look like:
+ #
+ # class MetalRenderingController < ActionController::Metal
+ # include AbstractController::Rendering
+ # include ActionController::Rendering
+ # include ActionController::Renderers
+ #
+ # use_renderers :json
+ #
+ # def show
+ # render json: record
+ # end
+ # end
+ #
+ # You must specify a +use_renderer+, else the +controller.renderer+ and
+ # +controller._renderers+ will be nil, and the action will fail.
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#128
+ def use_renderer(*args); end
+
+ # Adds, by name, a renderer or renderers to the +_renderers+ available
+ # to call within controller actions.
+ #
+ # It is useful when rendering from an ActionController::Metal controller or
+ # otherwise to add an available renderer proc to a specific controller.
+ #
+ # Both ActionController::Base and ActionController::API
+ # include ActionController::Renderers::All, making all renderers
+ # available in the controller. See Renderers::RENDERERS and Renderers.add.
+ #
+ # Since ActionController::Metal controllers cannot render, the controller
+ # must include AbstractController::Rendering, ActionController::Rendering,
+ # and ActionController::Renderers, and have at least one renderer.
+ #
+ # Rather than including ActionController::Renderers::All and including all renderers,
+ # you may specify which renderers to include by passing the renderer name or names to
+ # +use_renderers+. For example, a controller that includes only the :json renderer
+ # (+_render_with_renderer_json+) might look like:
+ #
+ # class MetalRenderingController < ActionController::Metal
+ # include AbstractController::Rendering
+ # include ActionController::Rendering
+ # include ActionController::Renderers
+ #
+ # use_renderers :json
+ #
+ # def show
+ # render json: record
+ # end
+ # end
+ #
+ # You must specify a +use_renderer+, else the +controller.renderer+ and
+ # +controller._renderers+ will be nil, and the action will fail.
+ #
+ # source://actionpack//lib/action_controller/metal/renderers.rb#128
+ def use_renderers(*args); end
+end
+
+# A Set containing renderer names that correspond to available renderer procs.
+# Default values are :json, :js, :xml.
+#
+# source://actionpack//lib/action_controller/metal/renderers.rb#28
+ActionController::Renderers::RENDERERS = T.let(T.unsafe(nil), Set)
+
+# source://actionpack//lib/action_controller/metal/rendering.rb#4
+module ActionController::Rendering
+ extend ::ActiveSupport::Concern
+
+ mixes_in_class_methods ::ActionController::Rendering::ClassMethods
+
+ # Renders a template and assigns the result to +self.response_body+.
+ #
+ # If no rendering mode option is specified, the template will be derived
+ # from the first argument.
+ #
+ # render "posts/show"
+ # # => renders app/views/posts/show.html.erb
+ #
+ # # In a PostsController action...
+ # render :show
+ # # => renders app/views/posts/show.html.erb
+ #
+ # If the first argument responds to +render_in+, the template will be
+ # rendered by calling +render_in+ with the current view context.
+ #
+ # ==== \Rendering Mode
+ #
+ # [+:partial+]
+ # See ActionView::PartialRenderer for details.
+ #
+ # render partial: "posts/form", locals: { post: Post.new }
+ # # => renders app/views/posts/_form.html.erb
+ #
+ # [+:file+]
+ # Renders the contents of a file. This option should not be used
+ # with unsanitized user input.
+ #
+ # render file: "/path/to/some/file"
+ # # => renders /path/to/some/file
+ #
+ # [+:inline+]
+ # Renders an ERB template string.
+ #
+ # @name = "World"
+ # render inline: "
Hello, <%= @name %>!
"
+ # # => renders "
Hello, World!
"
+ #
+ # [+:body+]
+ # Renders the provided text, and sets the content type as +text/plain+.
+ #
+ # render body: "Hello, World!"
+ # # => renders "Hello, World!"
+ #
+ # [+:plain+]
+ # Renders the provided text, and sets the content type as +text/plain+.
+ #
+ # render plain: "Hello, World!"
+ # # => renders "Hello, World!"
+ #
+ # [+:html+]
+ # Renders the provided HTML string, and sets the content type as +text/html+.
+ # If the string is not +html_safe?+, performs HTML escaping on the string
+ # before rendering.
+ #
+ # render html: "
Hello, World!
".html_safe
+ # # => renders "
Hello, World!
"
+ #
+ # render html: "
Hello, World!
"
+ # # => renders "<h1>Hello, World!</h1>"
+ #
+ # [+:json+]
+ # Renders the provided object as JSON, and sets the content type as
+ # +application/json+. If the object is not a string, it will be converted
+ # to JSON by calling +to_json+.
+ #
+ # render json: { hello: "world" }
+ # # => renders "{\"hello\":\"world\"}"
+ #
+ # By default, when a rendering mode is specified, no layout template is
+ # rendered.
+ #
+ # ==== Options
+ #
+ # [+:assigns+]
+ # Hash of instance variable assignments for the template.
+ #
+ # render inline: "
Hello, <%= @name %>!
", assigns: { name: "World" }
+ # # => renders "
Hello, World!
"
+ #
+ # [+:locals+]
+ # Hash of local variable assignments for the template.
+ #
+ # render inline: "
Hello, <%= name %>!
", locals: { name: "World" }
+ # # => renders "
Hello, World!
"
+ #
+ # [+:layout+]
+ # The layout template to render. Can also be +false+ or +true+ to disable
+ # or (re)enable the default layout template.
+ #
+ # render "posts/show", layout: "holiday"
+ # # => renders app/views/posts/show.html.erb with the app/views/layouts/holiday.html.erb layout
+ #
+ # render "posts/show", layout: false
+ # # => renders app/views/posts/show.html.erb with no layout
+ #
+ # render inline: "
Hello, World!
", layout: true
+ # # => renders "
Hello, World!
" with the default layout
+ #
+ # [+:status+]
+ # The HTTP status code to send with the response. Can be specified as a
+ # number or as the status name in Symbol form. Defaults to 200.
+ #
+ # render "posts/new", status: 422
+ # # => renders app/views/posts/new.html.erb with HTTP status code 422
+ #
+ # render "posts/new", status: :unprocessable_entity
+ # # => renders app/views/posts/new.html.erb with HTTP status code 422
+ #
+ # --
+ # Check for double render errors and set the content_type after rendering.
+ #
+ # @raise [::AbstractController::DoubleRenderError]
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#137
+ def render(*args); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#157
+ def render_to_body(options = T.unsafe(nil)); end
+
+ # Similar to #render, but only returns the rendered template as a string,
+ # instead of setting +self.response_body+.
+ # --
+ # Override render_to_string because body can now be set to a Rack body.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#146
+ def render_to_string(*_arg0); end
+
+ private
+
+ # Normalize arguments by catching blocks and setting them on :update.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#199
+ def _normalize_args(action = T.unsafe(nil), options = T.unsafe(nil), &blk); end
+
+ # Normalize both text and status options.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#206
+ def _normalize_options(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#220
+ def _normalize_text(options); end
+
+ # Process controller specific options, as status, content-type and location.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#229
+ def _process_options(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#168
+ def _process_variant(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#174
+ def _render_in_priorities(options); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#182
+ def _set_html_content_type; end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#186
+ def _set_rendered_content_type(format); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#192
+ def _set_vary_header; end
+
+ # Before processing, set the request formats in current controller formats.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#163
+ def process_action(*_arg0); end
+end
+
+# source://actionpack//lib/action_controller/metal/rendering.rb#9
+module ActionController::Rendering::ClassMethods
+ # source://actionpack//lib/action_controller/metal/rendering.rb#21
+ def inherited(klass); end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#11
+ def render(*_arg0, **_arg1, &_arg2); end
+
+ # Returns a renderer instance (inherited from ActionController::Renderer)
+ # for the controller.
+ #
+ # source://actionpack//lib/action_controller/metal/rendering.rb#15
+ def renderer; end
+
+ # source://actionpack//lib/action_controller/metal/rendering.rb#17
+ def setup_renderer!; end
+end
+
+# source://actionpack//lib/action_controller/metal/rendering.rb#7
+ActionController::Rendering::RENDER_FORMATS_IN_PRIORITY = T.let(T.unsafe(nil), Array)
+
+# Controller actions are protected from Cross-Site Request Forgery (CSRF) attacks
+# by including a token in the rendered HTML for your application. This token is
+# stored as a random string in the session, to which an attacker does not have
+# access. When a request reaches your application, \Rails verifies the received
+# token with the token in the session. All requests are checked except GET requests
+# as these should be idempotent. Keep in mind that all session-oriented requests
+# are CSRF protected by default, including JavaScript and HTML requests.
+#
+# Since HTML and JavaScript requests are typically made from the browser, we
+# need to ensure to verify request authenticity for the web browser. We can
+# use session-oriented authentication for these types of requests, by using
+# the protect_from_forgery method in our controllers.
+#
+# GET requests are not protected since they don't have side effects like writing
+# to the database and don't leak sensitive information. JavaScript requests are
+# an exception: a third-party site can use a