Skip to content

Commit 5bee14f

Browse files
committed
move MissingHelperError out of the ClassMethods module.
1 parent d864dcd commit 5bee14f

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

actionpack/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
* Move `MissingHelperError` out of the `ClassMethods` module.
2+
3+
*Yves Senn*
4+
15
* Fix an issue where rails raise exception about missing helper where it
26
should throw `LoadError`. When helper file exists and only loaded file from
37
this helper does not exist rails should throw LoadError instead of

actionpack/lib/abstract_controller/helpers.rb

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,24 @@ module Helpers
1212
self._helper_methods = Array.new
1313
end
1414

15+
class MissingHelperError < LoadError
16+
def initialize(error, path)
17+
@error = error
18+
@path = "helpers/#{path}.rb"
19+
set_backtrace error.backtrace
20+
21+
if error.path =~ /^#{path}(\.rb)?$/
22+
super("Missing helper file helpers/%s.rb" % path)
23+
else
24+
raise error
25+
end
26+
end
27+
end
28+
1529
module ClassMethods
30+
MissingHelperError = ActiveSupport::Deprecation::DeprecatedConstantProxy.new('AbstractController::Helpers::ClassMethods::MissingHelperError',
31+
'AbstractController::Helpers::MissingHelperError')
32+
1633
# When a class is inherited, wrap its helper module in a new module.
1734
# This ensures that the parent class's module can be changed
1835
# independently of the child class's.
@@ -134,7 +151,7 @@ def modules_for_helpers(args)
134151
begin
135152
require_dependency(file_name)
136153
rescue LoadError => e
137-
raise MissingHelperError.new(e, file_name)
154+
raise AbstractController::Helpers::MissingHelperError.new(e, file_name)
138155
end
139156
file_name.camelize.constantize
140157
when Module
@@ -145,20 +162,6 @@ def modules_for_helpers(args)
145162
end
146163
end
147164

148-
class MissingHelperError < LoadError
149-
def initialize(error, path)
150-
@error = error
151-
@path = "helpers/#{path}.rb"
152-
set_backtrace error.backtrace
153-
154-
if error.path =~ /^#{path}(\.rb)?$/
155-
super("Missing helper file helpers/%s.rb" % path)
156-
else
157-
raise error
158-
end
159-
end
160-
end
161-
162165
private
163166
# Makes all the (instance) methods in the helper module available to templates
164167
# rendered through this controller.

actionpack/test/abstract/helper_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def test_controller_raise_error_about_real_require_problem
113113
end
114114

115115
def test_controller_raise_error_about_missing_helper
116-
e = assert_raise(Helpers::ClassMethods::MissingHelperError) { AbstractInvalidHelpers.helper(:missing) }
116+
e = assert_raise(AbstractController::Helpers::MissingHelperError) { AbstractInvalidHelpers.helper(:missing) }
117117
assert_equal "Missing helper file helpers/missing_helper.rb", e.message
118118
end
119119
end

0 commit comments

Comments
 (0)