Shortcut for prepend-ing Module. Maybe useful for debugging.
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install predef
Example: Collect All Queries Executed in a Test
Given you're using some third-party database client library like this...
class HogeSQL::Connection def execute query # ... end # ... end
Imagine you want to see all
SELECT queries and the stacktrace when executed, without any change of
require 'predef' Predef.predef HogeSQL::Connection, :execute do|query| if query.include? 'SELECT' puts query pp caller end super # call the original query method. end # ... your app or some test code ...
Then you'd get...
SELECT * from your_apps_table WHERE ... ["/path/to/your_app/app/models/foo.rb:355:in `some_method_in_model'", "/path/to/your_app/app/controllers/foo_controller.rb:355:in `some_action_in_controller'", ...] ...
This is just a shortcut for:
module SomeWrapper def execute if query.include? 'SELECT' puts query pp caller end super # call the original execute method. end end HogeSQL::Connection.__send__(:prepend, SomeWrapper)
So you can more quickly inspect code you don't want to change directly!
More Ruby-ish Way
Or would you like
using this way?
Though it's a bit more verbose to prepend only one method.
using Predef::Refinements HogeSQL::Connection.predef :execute do|query| # same here with the last example... end
For more methods:
See and/or execute test/example.rb:
$ git clone email@example.com:igrep/predef.git $ cd predef $ bundle $ bundle exec ruby test/example.rb
- Fork it ( https://github.com/igrep/predef/fork )
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create a new Pull Request