In Rails 4 rails console
I can type history
and it will behave just like the history
command from the bash shell. E.g.:
[25] my_rails_project » history
1: Nomination
2: {:ad => "asdfsdasadf"}
3: Nomination.count
4: Nomination.count.to_sql
5: Nomination.all.class
6: Nomination.all.to_sql
...
Is there a way to search that history, e.g. history | grep Nomination
? How about tail?
Note: When I initially wrote this question I thought the history
command came from Rails itself, but it comes from the pry
gem which I have in my system (my Gemfile specifies the jazz_hands
gem which pulls in pry). Pry does in fact have a grep
feature, e.g. history --grep Nomination
will give me lines 1 and 3-6 above. It also has a tail
feature. These are documented here: https://github.com/pry/pry/wiki/History
You can use ~/.irb-history
for this purpose. So, the following can be used (you must be knowing how to do this, but this is only for reference):
tail -fn0 ~/.irb-history # for tailing
cat ~/.irb-history | grep something # for searching
Note that, you might have both the files: ~/.irb-history
and ~/.irb_history
, and any one of them can be more up to date than the other. I have not been able to resolve this mystery yet. So, use the one you find more suitable for yourself.
UPDATE: You can access history in a variable using the following logic (it took me a while to read the code Pry uses, try edit history
inside pry):
def pry_history
arr = []
history = Pry::History.new
history.send(:read_from_file) do |line|
arr.push line.chomp
end
arr
end
Now, you can simply call pry_history
to get an array of pry's history. You can further save it inside your .pryrc
configuration file and use it whenever you want in pry.
Go to rails console
press <ctrl> + r
and type few letters of the command.
use <ctrl> + r
to choose other commands that match the search
use <ctrl> + <shift> + r
to choose the command in the reverse direction
Exactly like the <ctrl> + r
in bash shell
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With