📜  rails 获取源方法 - Ruby (1)

📅  最后修改于: 2023-12-03 15:19:42.213000             🧑  作者: Mango

Rails 获取源方法

在 Rails 中,有时我们需要查看某个方法的源码,以便更好地理解其实现或进行定制。这篇文章将介绍在 Rails 中获取源码的几种方法。

方法一:查看 Ruby Doc

Ruby 官方文档中提供了大量的 API 文档,可以在其中查看类和方法的源码实现。访问 http://docs.ruby-lang.org,使用搜索框搜索想要查看的类或方法即可在文档中找到它的源码实现。

例如,我们想查看 Rails 中 ActiveRecord::Base 类的源码实现,可以在 Ruby Doc 上搜索 ActiveRecord::Base,定位到 它的 API 文档页面,在文档中的「Class Method Summary」或「Method Summary」处找到对应方法的链接,点击即可查看其源码实现。

方法二:使用 Pry

Pry 是一个强大的 Ruby REPL 工具,与 Ruby 的标准 REPL 相比,它支持更多的功能并提供了更好的交互体验。其中一个功能就是可以查看方法的源码。

首先,需要在项目中添加 Pry 依赖,并执行 bundle install 安装:

gem 'pry'

然后,在需要查看源码的地方加上 binding.pry,即可进入 Pry 的 REPL 环境。在 Pry 中使用 show-source 命令,加上要查看的方法名即可查看该方法的源码实现。

下面是查看 ActiveRecord::Base 类的 create 方法源码实现的示例:

class User < ApplicationRecord
  def create_with_pry
    binding.pry
    User.create(name: 'test')
  end
end

在 Pry 中执行:

[1] pry(#<User>)> show-source User.create

From: /Users/xxx/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/core.rb @ line 101:
Owner: ActiveRecord::Base
Visibility: public
Number of lines: 8

def create(attributes = nil, &block)
  if attributes.is_a?(Array)
    attributes.collect { |attr| create(attr, &block) }
  else
    object = new(attributes, &block)
    object.save
    object
  end
end

可见,Pry 格式化显示了该方法的源码实现,并标注了实现所在的源文件和行数。

方法三:使用 VSCode 的 Ruby 插件

在 VSCode 中,安装 Ruby 插件后,可以使用快捷键 shift+cmd+pctrl+shift+p 打开命令面板,输入「Ruby: Show Ruby Document」,选择「Show Ruby Document for Current Word」即可在侧边栏或弹出窗口中查看当前词语的文档,包括源码实现。同时,该插件还支持直接跳转到方法定义处的功能。

方法四:使用 Rails 内置路由页面

在开发环境中,可以访问 Rails 中内置的路由页面(一般路径为 /rails/info/routes)查看项目中的路由信息。在该页面中,可以点击路由中的方法名链接,跳转到源码实现所在的文件和行数。

总结

以上介绍了在 Rails 中获取方法源码的几种方式。根据实际情况选择合适的方法可以帮助我们更好地理解和定制代码。