diff --git a/activesupport/lib/active_support/evented_file_update_checker.rb b/activesupport/lib/active_support/evented_file_update_checker.rb index f54f88eb0a..4b09206e59 100644 --- a/activesupport/lib/active_support/evented_file_update_checker.rb +++ b/activesupport/lib/active_support/evented_file_update_checker.rb @@ -74,7 +74,11 @@ def updated? def execute @updated.make_false - @block.call + if @block.nil? + raise ArgumentError, "no block given: #{self.inspect}, please pass a block when you initialize #{self.class}" + else + @block.call + end end def execute_if_updated diff --git a/activesupport/lib/active_support/file_update_checker.rb b/activesupport/lib/active_support/file_update_checker.rb index 2dbbfadac1..1af18541e3 100644 --- a/activesupport/lib/active_support/file_update_checker.rb +++ b/activesupport/lib/active_support/file_update_checker.rb @@ -74,7 +74,11 @@ def updated? def execute @last_watched = watched @last_update_at = updated_at(@last_watched) - @block.call + if @block.nil? + raise ArgumentError, "no block given: #{self.inspect}, please pass a block when you initialize #{self.class}" + else + @block.call + end ensure @watched = nil @updated_at = nil diff --git a/activesupport/test/file_update_checker_shared_tests.rb b/activesupport/test/file_update_checker_shared_tests.rb index 48cd387196..de8796bf06 100644 --- a/activesupport/test/file_update_checker_shared_tests.rb +++ b/activesupport/test/file_update_checker_shared_tests.rb @@ -273,4 +273,11 @@ def run(*args) assert checker.execute_if_updated assert_equal 2, i end + + test "execute raises an ArgumentError if no block given" do + checker = new_checker([]) + assert_raise ArgumentError do + checker.execute + end + end end