在我的Rails项目中,我看到link_to
中已覆盖config/initializers/extend_action_view.rb
module ActionView
module Helpers
def link_to(name, options = {}, html_options = nil)
...
end
end
end
我在linux grep -r 'def link_to' *
中找到了着名的命令行。
我的问题是:有没有办法在rails console
找到它?是否有本机功能rails或ruby可以给我们文件的路径?类似.ancestors
的对象。
ps:我的IDE是vi
答案 0 :(得分:2)
如果您使用pry gem,则可以使用Method#source_location
找到它。
在视图中传递binding.pry
并进行渲染。然后写:
method(:link_to).source_location
=> ["path_to_helper.rb", 124]
答案 1 :(得分:1)
在$
gem
pry
命令
在代码中插入binding.pry
,设置断点,然后在Pry命令行中使用$
命令
[1] pry(#<AdminController>)> $ Person.find
From: /Users/joe_example/.rvm/gems/ruby-1.9.3-p551/gems/composite_primary_keys-8.1.0/lib/composite_primary_keys/core.rb @ line 21:
Owner: ActiveRecord::Core::ClassMethods
Visibility: public
Number of lines: 38
def find(*ids) # :nodoc:
# We don't have cache keys for this stuff yet
return super unless ids.length == 1
...
$
命令确实值得美元。它显示了定义方法的位置以及源代码。