Skip to content

Puma caught this error: undefined method `body' for Rack::Files::Iterator #21

@raihanM99

Description

@raihanM99

In my Rails project, I encountered an issue related to handling attachments. Specifically, when accessing a page that invokes an attachment from Active Storage using (e.g <%= user.avatar %>), an error occurred.

Puma caught this error: undefined method `body' for #<Rack::Files::Iterator:0x00007a6444b5d0b0 @path="/app/storage/up/0j/up0jdccu1cxhetiqc4esuczuufde", @ranges=[0..13031], @options={:mime_type=>"text/plain", :size=>13032}>

      @stream.body
             ^^^^^ (NoMethodError)
/gems/ruby/3.1.0/gems/actionpack-7.0.4/lib/action_dispatch/http/response.rb:305:in `body'
/gems/ruby/3.1.0/gems/debugbar-0.2.2/lib/debugbar/request.rb:94:in `response_hash'
/gems/ruby/3.1.0/gems/debugbar-0.2.2/lib/debugbar/request.rb:60:in `to_h'
.
.
.

This issue arose due to Rails generating a URL every time it accesses the Active Storage attachment.

"GET /uploads/disk/active_storage_long_key/avatar1.jpg"

To resolve this, I modified the configuration in the config/initializers/debugbar.rb file to ignore /uploads, which successfully resolved the issue

Debugbar.configure do |config|
  config.ignore_request = -> (env) { env['PATH_INFO'].start_with? '/uploads' }
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions