mirror of https://github.com/rails/rails
Merge pull request #32418 from urbanautomaton/disable-template-finalizer-in-test
Disable ActionView::Template finalizers in test environment
This commit is contained in:
commit
9facd9a903
|
@ -1,3 +1,12 @@
|
|||
* Disable `ActionView::Template` finalizers in test environment
|
||||
|
||||
Template finalization can be expensive in large view test suites.
|
||||
Add a configuration option,
|
||||
`action_view.finalize_compiled_template_methods`, and turn it off in
|
||||
the test environment.
|
||||
|
||||
*Simon Coffey*
|
||||
|
||||
* Extract the `confirm` call in its own, overridable method in `rails_ujs`.
|
||||
Example :
|
||||
Rails.confirm = function(message, element) {
|
||||
|
|
|
@ -10,6 +10,7 @@ module ActionView
|
|||
config.action_view.embed_authenticity_token_in_remote_forms = nil
|
||||
config.action_view.debug_missing_translation = true
|
||||
config.action_view.default_enforce_utf8 = nil
|
||||
config.action_view.finalize_compiled_template_methods = true
|
||||
|
||||
config.eager_load_namespaces << ActionView
|
||||
|
||||
|
@ -45,6 +46,13 @@ module ActionView
|
|||
end
|
||||
end
|
||||
|
||||
initializer "action_view.finalize_compiled_template_methods" do |app|
|
||||
ActiveSupport.on_load(:action_view) do
|
||||
ActionView::Template.finalize_compiled_template_methods =
|
||||
app.config.action_view.delete(:finalize_compiled_template_methods)
|
||||
end
|
||||
end
|
||||
|
||||
initializer "action_view.logger" do
|
||||
ActiveSupport.on_load(:action_view) { self.logger ||= Rails.logger }
|
||||
end
|
||||
|
|
|
@ -9,6 +9,9 @@ module ActionView
|
|||
class Template
|
||||
extend ActiveSupport::Autoload
|
||||
|
||||
mattr_accessor :finalize_compiled_template_methods
|
||||
self.finalize_compiled_template_methods = true
|
||||
|
||||
# === Encodings in ActionView::Template
|
||||
#
|
||||
# ActionView::Template is one of a few sources of potential
|
||||
|
@ -307,7 +310,9 @@ module ActionView
|
|||
end
|
||||
|
||||
mod.module_eval(source, identifier, 0)
|
||||
ObjectSpace.define_finalizer(self, Finalizer[method_name, mod])
|
||||
if finalize_compiled_template_methods
|
||||
ObjectSpace.define_finalizer(self, Finalizer[method_name, mod])
|
||||
end
|
||||
end
|
||||
|
||||
def handle_render_error(view, e)
|
||||
|
|
|
@ -600,6 +600,13 @@ Defaults to `'signed cookie'`.
|
|||
|
||||
* `config.action_view.default_enforce_utf8` determines whether forms are generated with a hidden tag that forces older versions of Internet Explorer to submit forms encoded in UTF-8. This defaults to `false`.
|
||||
|
||||
* `config.action_view.finalize_compiled_template_methods` determines
|
||||
whether the methods on `ActionView::CompiledTemplates` that templates
|
||||
compile themselves to are removed when template instances are
|
||||
destroyed by the garbage collector. This helps prevent memory leaks in
|
||||
development mode, but for large test suites, disabling this option in
|
||||
the test environment can improve performance. This defaults to `true`.
|
||||
|
||||
### Configuring Action Mailer
|
||||
|
||||
There are a number of settings available on `config.action_mailer`:
|
||||
|
|
|
@ -47,4 +47,7 @@ Rails.application.configure do
|
|||
|
||||
# Raises error for missing translations
|
||||
# config.action_view.raise_on_missing_translations = true
|
||||
|
||||
# Prevent expensive template finalization at end of test suite runs.
|
||||
config.action_view.finalize_compiled_template_methods = false
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue