pry-rails icon indicating copy to clipboard operation
pry-rails copied to clipboard

before_session hook failed: NoMethodError: undefined method `chomp' for nil:NilClass

Open ctrlaltdylan opened this issue 5 years ago • 4 comments

I'm using rails-pry to create a breakpoint with a binding.pry statement. This has worked just fine for just about ever. However now there's this fun new error message I'm not even sure how to being debugging the debugger:

before_session hook failed: NoMethodError: undefined method `chomp' for nil:NilClass
usr/local/bundle/gems/pry-0.12.2/lib/pry/pager.rb:116:in `block in write'
(see _pry_.hooks.errors to debug)

The result is the binding.pry statement is ignored and the code I intent to inspect continues to run.

ctrlaltdylan avatar Feb 15 '19 15:02 ctrlaltdylan

I got a similar error message

before_session hook failed: NoMethodError: undefined method each' for nil:NilClass`

samiggapps avatar Mar 26 '20 12:03 samiggapps

+1

From: /concierge-render/app/controllers/api/v1/files_controller.rb @ line 3 API::V1::FilesController#destroy:

     2: def destroy
 =>  3:   binding.pry
     4:   file_name = params[:id]
     5:   type = file_params[:type] || 'uploads'
     6:   if type == 'outputs'
     7:     # Only admins can delete outputs they do not own directly.
     8:     job_id = file_params.require(:job_id)
     9:     job = Job.find(job_id)
    10:     unless current_user == job.owner || current_user.admin?
    11:       return not_found_error(file_name)
    12:     end
    13:     full_path = File.join(job.owner.data_dir, type, file_name)
    14:   else
    15:     full_path = File.join(current_user.data_dir, type, file_name)
    16:   end
    17:
    18:   if File.exists? full_path
    19:     if File.file? full_path
    20:       File.delete full_path

<page break> --- Press enter to continue ( q<enter> to break ) --- <page break>
before_session hook failed: NoMethodError: undefined method `chomp' for nil:NilClass
/usr/local/bundle/gems/pry-0.12.2/lib/pry/pager.rb:116:in `block in write'
(see _pry_.hooks.errors to debug)
[1] pry(#<API::V1::FilesController>)> F

Failures:

  1) API::V1::FilesController DELETE #destroy when the file can be found from the file name param when the file name represents a file removes the file from the user's uploads directory
     Failure/Error: expect { subject }.to change { File.exists?(file_path) }.from(true).to(false)
       expected `File.exists?(file_path)` to have changed from true to false, but did not change
     # ./spec/controllers/api/v1/files_controller_spec.rb:240:in `block (5 levels) in <top (required)>'
     # ./spec/rails_helper.rb:111:in `block (3 levels) in <top (required)>'
     # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/generic/base.rb:16:in `cleaning'
     # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/configuration.rb:87:in `block (2 levels) in cleaning'
     # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/configuration.rb:88:in `cleaning'
     # ./spec/rails_helper.rb:110:in `block (2 levels) in <top (required)>'

Finished in 1.01 seconds (files took 1.98 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/controllers/api/v1/files_controller_spec.rb:239 # API::V1::FilesController DELETE #destroy when the file can be found from the file name param when the file name represents a file removes the file from the user's uploads directory

mecampbellsoup avatar Jul 23 '20 22:07 mecampbellsoup

Still getting the same error and the execution never stops. Any lead on this?

<page break> --- Press enter to continue ( q<enter> to break ) --- <page break> before_session hook failed: NoMethodError: undefined method 'chomp' for nil:NilClass /usr/local/bundle/gems/pry-0.12.2/lib/pry/pager.rb:116:in 'block in write' (see _pry_.hooks.errors to debug)

Additional info: I'm using it with docker

as-rikoouu avatar Aug 05 '21 16:08 as-rikoouu

Hey folks - sorry for necro'ing a 2 year old thing here, but the fix for this issue is to allow a psuedo-tty and to keep stdin open on Docker when running your containers. If you're running via docker-compose, make sure to add these lines to your Ruby/Rails service:

stdin_open: true
tty: true

SparkusK avatar Nov 25 '23 16:11 SparkusK