mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Move the deprecation call after the new class has been defined:
- If we create the deprecation before the new class is defined this creates an issue in case you use a `TracePoint`. The `Tracepoint#return_value` will try to get the new class constant resulting in a uninitialized constant Rails::SourceAnnotationExtractor The problem can be reproduced like this: ```ruby @defined = Set.new ANONYMOUS_CLASS_DEFINITION_TRACEPOINT = TracePoint.new(:c_return) do |tp| next unless @defined.add?(tp.return_value) end ANONYMOUS_CLASS_DEFINITION_TRACEPOINT.enable require 'rails' require "rails/source_annotation_extractor" ```
This commit is contained in:
parent
9ad8068870
commit
426d2f2502
1 changed files with 5 additions and 5 deletions
|
@ -2,11 +2,6 @@
|
||||||
|
|
||||||
require "active_support/deprecation"
|
require "active_support/deprecation"
|
||||||
|
|
||||||
# Remove this deprecated class in the next minor version
|
|
||||||
#:nodoc:
|
|
||||||
SourceAnnotationExtractor = ActiveSupport::Deprecation::DeprecatedConstantProxy.
|
|
||||||
new("SourceAnnotationExtractor", "Rails::SourceAnnotationExtractor")
|
|
||||||
|
|
||||||
module Rails
|
module Rails
|
||||||
# Implements the logic behind <tt>Rails::Command::NotesCommand</tt>. See <tt>rails notes --help</tt> for usage information.
|
# Implements the logic behind <tt>Rails::Command::NotesCommand</tt>. See <tt>rails notes --help</tt> for usage information.
|
||||||
#
|
#
|
||||||
|
@ -160,3 +155,8 @@ module Rails
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Remove this deprecated class in the next minor version
|
||||||
|
#:nodoc:
|
||||||
|
SourceAnnotationExtractor = ActiveSupport::Deprecation::DeprecatedConstantProxy.
|
||||||
|
new("SourceAnnotationExtractor", "Rails::SourceAnnotationExtractor")
|
||||||
|
|
Loading…
Reference in a new issue