Reputation: 9742
I am currently in the process of upgrading my rails 6 app to 7, and when I've run into issues, I have been trying to debug, and keep running into this weird issue where binding.pry
does not seem to be stopping execution... For example, I have an active model validation callback which calls a dynamically defined method:
29 define_method "#{subclass}_include?" do |id|
30 binding.pry
31 puts "pry should have been called"
32 find_by_id(subclass, id).present?
33 end
And I am trying to trigger this from an rspec spec file:
[1] pry(#<RSpec::ExampleGroups::Share::WhenShareTemplateIdIsNotAValidShareTemplate>)> subject.valid?
pry should have been called
pry should have been called
pry should have been called
NoMethodError: undefined method `find' for "translation missing: en.foo.bar":String
The binding.pry
command is getting completely ignored...
*** UPDATE ***
It happened again.. I have an ActiveJob spec which is doing:
after_perform :enqueue_next_job
...
def enqueue_next_job
self.class.set(:wait_until => 30.seconds.from_now).perform_later
end
running this spec, I see:
SystemStackError:
stack level too deep
# ./app/jobs/my_job.rb:20:in `enqueue_next_job'
# ./app/jobs/my_job.rb:20:in `enqueue_next_job'
# ./app/jobs/my_job.rb:20:in `enqueue_next_job'
# ./app/jobs/my_job.rb:20:in `enqueue_next_job'
# ..etc (forever)
So I put a pry in my enqueue_next_job:
[1] pry(#<MyJob>)> job = self.class.set(:wait_until => 30.seconds.from_now)
=> #<ActiveJob::ConfiguredJob:0x000000012ff33128 @job_class=MyJob, @options={:wait_until=>Wed, 21 Aug 2024 23:15:51.479173000 UTC +00:00}>
[2] pry(#<MyJob>)> edit job.perform_later
added to the perform_later code:
14 def perform_later(...)
15 binding.pry
16 puts "binding.pry should be happening"
17 @job_class.new(...).enqueue @options
18 end
exited, and called perform_later on the job and I get:
[3] pry(#<BulkIndexAssetItemsJob>)> job.perform_later
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
binding.pry should be happening
SystemStackError: stack level too deep
Upvotes: 0
Views: 67