21
Rails 7 introduces a new debugging gem
We commonly use byebug for debugging our code which is an easy-to-use, feature-rich ruby debugger. This gem is introduced in Rails 5. It offers features like Stepping
, Breaking
, Evaluating
and Tracking
.
We can easily control the execution of a program and the debug inspector for call stack navigation. It allows us to control and the execution flow.
We can found this documentation for installing byebug with ruby's most popular framework ruby on rails which was marged in this pull request
But Rails 7 is replacing byebug with ruby's own gem debug which was merged in this pull request on Sep 8, 2021.
So, to adjust Rails with Ruby debug
has been introduced in Rails 7.
Let's compare some example of debugging with byebug
and new debug
gem.
Let's assume we have a controller named UserController
. Inside any Rails application, we can call the debugger by calling the byebug
method.
# app/controllers/user_controller.rb
class UserController < ApplicationController
def index
name = "Hasan Tanbir"
byebug # Call to debugger
country = "Bangladesh"
end
end
Invoked debugger results will be:
[1, 7] in app/controllers/user_controller.rb
1: class UserController < ApplicationController
2: def index
3: name = "Hasan Tanbir"
4: byebug # Call to debugger
=> 5: country = "Bangladesh"
6: end
7: end
(byebug) name # variable call
"Hasan Tanbir"
When we use debug
in Rails 7, we will have to use binding.break
method instead of byebug
method.
# app/controllers/user_controller.rb
class UserController < ApplicationController
def index
name = "Hasan Tanbir"
binding.break # Call to debugger
country = "Bangladesh"
end
end
Invoked debugger results will be:
[1, 7] in app/controllers/user_controller.rb
1: class UserController < ApplicationController
2: def index
3: name = "Hasan Tanbir"
4: byebug # Call to debugger
=> 5: country = "Bangladesh"
6: end
7: end
>#0 UserController#index at ~/demo_app/app/controllers/user_controller.rb:5
(rdbg) name # variable call
"Hasan Tanbir"
You can check out the pull request for more details and for commands or features of Ruby/debug.
21