在Rails 4中rails console
我可以输入history
,它的行为就像bash shell中的history
命令一样。 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
...
有没有办法搜索该历史记录,例如history | grep Nomination
?尾巴怎么样?
注意:当我最初写这个问题时,我认为history
命令来自Rails本身,但它来自我系统中的pry
gem(我的Gemfile指定{{1}宝石,它拉入撬)。事实上,Pry确实具有jazz_hands
功能,例如grep
会给我上面第1和第3-6行。它还具有history --grep Nomination
功能。这些记录在此处:https://github.com/pry/pry/wiki/History
答案 0 :(得分:5)
您可以将~/.irb-history
用于此目的。因此,可以使用以下内容(您必须知道如何执行此操作,但这仅供参考):
tail -fn0 ~/.irb-history # for tailing
cat ~/.irb-history | grep something # for searching
请注意,您可能同时拥有这两个文件:~/.irb-history
和~/.irb_history
,其中任何一个文件都可以比其他文件更新。我还没能解决这个谜团。所以,使用你觉得更适合自己的那个。
更新:您可以使用以下逻辑访问变量中的历史记录(我花了一些时间阅读Pry使用的代码,在pry中尝试edit history
):
def pry_history
arr = []
history = Pry::History.new
history.send(:read_from_file) do |line|
arr.push line.chomp
end
arr
end
现在,您只需致电pry_history
即可获得一系列撬的历史记录。您可以进一步将其保存在.pryrc
配置文件中,并在需要时随时使用它。
答案 1 :(得分:3)
转到rails控制台
按<ctrl> + r
并输入命令的几个字母。
使用<ctrl> + r
选择与搜索匹配的其他命令
使用<ctrl> + <shift> + r
以反方向选择命令
与bash shell中的<ctrl> + r
完全相同
答案 2 :(得分:0)
这可能就是你要找的东西:
def search_history(filter)
puts `cat ~/.irb-history | grep "#{filter}"`
end