查找ruby方法(以rails为例)

Ruby与Rails开发实践30例 本文总结了30个与Ruby编程语言及Ruby on Rails框架相关的开发实践案例,涵盖数组操作、哈希表构建、递归函数设计、模块与类的定义、Web应用控制器与视图交互、表单处理、数据库配置、路由设置、Cookie管理、JavaScript特效实现、数据验证等多个技术点,并提供了具体的代码示例和操作步骤。 阅读详情

我们知道ruby使用动态方法,还有一些mixin等功能,所以查找ruby的方法变得比一般的语言更困难,高富帅可以用textmate,屌丝没得。主要的想法是使用grep。


grep [options] [patten] [files]


在使用linux命令查找ruby方法时,更多的时候需要使用-rn的参数就足够,r表示recursive, n表式行号


可以先clone一份最新版本的rails代码作为实验:git@github.com:rails/rails.git


首先进入到rails/activereocrd目录下,我们知道ActiveRecord类提供了如find_by这个方法,我们就查找find_by这个方法。得到结果:

kiwi@kiwi-K43SV:~/rails/activerecord$ grep -rn "def find_by" .

./lib/active_record/associations/collection_association.rb:569: def find_by_scan(*args)

./lib/active_record/querying.rb:37: def find_by_sql(sql, binds = [])

./lib/active_record/relation/finder_methods.rb:47: def find_by(*args)

./lib/active_record/relation/finder_methods.rb:53: def find_by!(*args)


这样就能够找到find_by方法了。这种是最容易的情况。


另一种情况是我们想查找被delegate的方法:假设我们要查找的是ActiveRecord中的last方法

kiwi@kiwi-K43SV:~/rails/activerecord$ grep -rn "delegate.\+:last" .

./lib/active_record/querying.rb:4: delegate :find, :take, :take!, :first, :first!, :last, :last!, :exists?, :any?, :many?, :to => :all


即找出来被delegate了:all

这样再使用define的搜索方式就能找到all是怎么是实现的了



Ruby on Rails 在 new 动作中加入 @article = Article.new 的原因是,如果不这么做,在视图中 @article 的值就是 nil,调用 @article.errors.any?在这些文件中,最重要的当然是控制器,位于 app/controllers/welcome_controller.rb,以及视图,位于 app/views/welcome/index.html.erb。这时,提交一个没有标题的文章,Rails 会退回这个页面,但这种处理方法没多少用,你要告诉用户哪儿出错了。 阅读详情

相关推荐

Ruby on Rails开发实践与技巧

本文详细讲解了Ruby on Rails开发中的多个实用技巧,包括数据库表扩展、视图条件渲染、字符串方法调用、异常处理机制、自定义类方法、模型比较与模块混入、迁移与模型命名规范、数据库操作、自定义查找器、Rails视图优化、数据验证、日志优化、异常通知插件配置、多实例部署及跨平台部署等内容,适用于希望提升Rails开发能力的开发者。

Pepper的专栏 961

find与grep的用法和区别

find与grep的用法和区别 find和grep区别 find:相当于windows中的搜索,用来搜索文件 grep:用来搜索文本,搜索文件内部中的文字内容 find的用法 语法: 格式: find [path] [-options] [操作的expression] path 默认的是当前目录, 在当前目录下查找文件 -options 选项,是指 搜索条件 expression 搜索表达式 1.按照文件名查找 find / -name httpd.con

weixin_43936711的博客 4225

grepmate:极快速地搜索Rails项目或ruby源代码。 支持以textmate,浏览器(html)或文本形式打开搜索结果-Search source code

Grepmate 极快速地搜索Rails项目或ruby源代码。 支持以textmate,浏览器(html)或文本形式打开搜索结果。 用法 NAME grepmate SYNOPSIS grepmate [what_to_search_for*] [dir=dir] [options]+ PARAMETERS what_to_search_for (-1 ~> what_to_search_for) Search terms. Enclose in quotes to search for phrase. use with -e or --regex option for regular expression support dir=dir (-1 ~> dir) Directories to search. Defaul

ruby之方法查找

ruby的方法和ruby的对象一样,也是很神奇的,跟C/C++、java等静态语言不一样,ruby的方法可以是动态生成的,本篇主要讲解一个ruby的方法以及其调用过程。 我们先讲调用过程,然后逐步深入解析。

feigeswjtu的专栏 1411

Redis中什么是Big Key(大key)问题?如何解决Big Key问题?

通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大); ● 一

weixiaohuai的博客 3万+

电工电子实验——3BIT延时电路的设计与实现

设计一个 3BIT延时电路。 设计分析: Ⅰ.根据触发器的特性,只有来两个触发脉冲时才能恢复到原来的状态。也就是说触发器的输出信号比触发信号延迟了一个触发脉冲周期即1bit。据此3bit就需要3个触发器。 Ⅱ.输出要可控就要加一控制器,可用选择器实现。 Ⅲ.为便于观察输出信号的延迟,可设计一个F1信号。

qq_55543315的博客 1127

如何获取ruby的安装路径

require "rbconfig" puts File.join(Config::CONFIG["bindir"], Config::CONFIG["ruby_install_name"])

素年小事 3093

从零到一:构建嵌入式Nginx的模块化架构与跨平台部署实战

本文详细介绍了在ARM32架构的RV1126嵌入式设备上,通过交叉编译技术构建模块化Nginx服务器的完整实战流程。涵盖环境配置、依赖库编译、Nginx核心与http_ssl_module等模块集成、性能优化及部署调试,为嵌入式开发提供高效可靠的Web服务器解决方案。

rock5的博客 202

mac 查找ruby位置_Ruby程序查找矩形区域

mac 查找ruby位置 矩形的查找区域 (Finding area of the rectangle) Given "length" and "breadth" and we have to find the area of the rectangle. 给定“长度”和“宽度”,我们必须找到矩形的面积。 The general formula to find the area of rec...

cumt30111的博客 972

5分钟搞定!用OpenCV实现全景图像柱面展开的保姆级教程(附完整代码)

本文提供了一份使用OpenCV实现全景图像柱面展开的详细教程。通过清晰的数学原理讲解和分步代码演示,指导读者快速掌握从等距柱状投影全景图到平面展开图的核心转换方法,并涵盖性能优化、参数调整及透视视图扩展等实用技巧,适合图像处理爱好者和开发者实践。

sony5的博客 571

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 394

ruby如何查找一个方法属于哪个类

这是一个看似简单,实际不那么直接的问题。一种方法是先直接看当前对象的类是神马东东: puts self.class 或者 self.class.name 不过在某些情况下上述代码返回不了具体的名称,前者返回一个<Class:xxx>后者返回nil;这是咋回事呢?原因是你在元类或称为单例类中,比如下面的情况: class A; end...

weixin_34112208的博客 212

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

银行信息系统应用架构详解 883

在Ubuntu 16.04上使用rbenv安装Ruby on Rails的方法

Ruby on Rails 是开发人员创建网站和 Web 应用程序时最受欢迎的应用程序堆栈之一。Ruby 编程语言与 Rails 开发框架相结合,使应用程序开发变得简单。您可以使用命令行工具rbenv轻松安装 Ruby 和 Rails。使用 rbenv 将为您提供一个稳定的环境,用于开发 Ruby on Rails 应用程序,因为它可以让您轻松切换 Ruby 版本,保持整个团队使用相同的版本。该项目存储库位于 [GitHub] (https://github.com/rbenv/rbenv)。

rubys007的博客 2510

一般无穷积分的收敛判别法

文章目录积分里的狄屎判别法证明阿贝尔判别法总结补充:级数中的狄屎和Abel 积分里的狄屎判别法 F(u)=∫auf(x)dx在[a,+∞)F(u)=\int_a^uf(x)dx在[a,+\infty)F(u)=∫au​f(x)dx在[a,+∞)有界 x→+∞时,g(x)单减→0x\to+\infty时,g(x)单减\rightarrow0x→+∞时,g(x)单减→0 ⇒\Rightarrow⇒ ...

universe_1207的博客 1万+

基于matlab的形态学的权重自适应图像去噪

数学形态学以图像的形态特征为研究对象,通过设计一套独特的数字图像处理方法和理论来描述图像的基本特征和结构,通过引入集合的概念来描述图像中元素与元素、部分与部分的关系运算。因此,数学形态学的运算由基础的集合运算(并、交、补等)来定义,并且所有的图像矩阵都能被方便地转换为集合。随着集合理论研究的不断深入和实际应用的拓展,图像形态学处理也在图像分析、模式识别等领域起着重要的应用。实验结果表明,如果仅通过串联滤波器去噪,则往往具有一定的局限性,在结果图像中也保留着较为明显的噪声。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 757

在CentOS 6上安装Ruby on Rails的方法

前些天发现了一个巨牛的,通俗易懂,风趣幽默,忍不住分享一下给大家。。

rubys007的博客 1660

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

在 CentOS 7 上使用 rbenv 安装 Ruby on Rails 的方法

Ruby on Rails 是一个非常流行的开源 Web 框架,它提供了一个很好的方式来使用 Ruby 编写 Web 应用程序。本教程将向您展示如何在 CentOS 7 上使用 rbenv 安装 Ruby on Rails。这将为您提供一个稳定的环境,用于开发 Ruby on Rails 应用程序。rbenv 提供了一种简单的方式来安装和管理各种版本的 Ruby,它比 RVM 更简单、更少侵入性。这将帮助您确保您正在开发的 Ruby 版本与您的生产环境匹配。

rubys007的博客 1759

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

在Ubuntu 18.04上使用rbenv安装Ruby on Rails的方法

Ruby on Rails 是开发人员创建网站和 Web 应用程序的最流行的应用程序堆栈之一。Ruby 编程语言与 Rails 开发框架相结合,使应用程序开发变得简单。您可以使用命令行工具 rbenv 轻松安装 Ruby 和 Rails。使用 rbenv 将为您提供一个稳定的环境,用于开发 Ruby on Rails 应用程序,因为它可以让您轻松切换 Ruby 版本,保持整个团队使用相同的版本。

rubys007的博客 1547

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Ruby Rails入门——windows下搭建Ruby Rails Web开发环境

Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架。2015年10月编程语言排行榜 Ruby进入TIOBE排行榜前十,可见其流行程序如此之高。本文就帮你打开Ruby on Rails Web开发的大门,助你进入Ruby on Rails的世界,感受不一样的风景。Ruby on Rails完整安装包下载地址:http://railsinstaller.org/

无知人生,记录点滴 2万+

什么是Ruby on Rails?

图片来源: RubyonRails.org 纯粹主义者的Web开发框架 早在1995年,松本行弘(Yukihiro Matsumoto)发行了Ruby 0.95,它是一种纯的,面向对象(OO)的通用编程语言: 作为一名语言狂热者和面向对象的粉丝,有15年的历史了,我真的想要一种真正的面向对象,易于使用的脚本语言。 我寻找了,但是找不到。 所以我决定做到这一点。 — Y. Matsumo...

代码教主 8452

提升Rails开发体验:ruby-lsp-rails与VS Code集成教程

ruby-lsp-rails是一款专为Rails应用打造的Ruby LSP插件,它能够显著提升Rails开发者在VS Code中的编码体验,提供丰富的编辑器增强功能。本文将详细介绍如何安装、配置并充分利用这款强大的开发工具。 ## 为什么选择ruby-lsp-rails? 作为Rails开发者,你是否常常需要在复杂的项目结构中快速定位模型、控制器或视图文件?是否希望编辑器能够智能提示Rails

gitblog_01148的博客 888

Rails模型关联智能提示:ruby-lsp-rails新功能详解

ruby-lsp-rails作为Ruby LSP的Rails专用扩展,为Rails开发者带来了强大的模型关联智能提示功能。这项功能让开发者在编写关联代码时获得实时反馈,显著提升开发效率和代码质量。 ## 核心关联类型全覆盖 该扩展支持Rails所有主流模型关联类型,包括: - **belongs_to**:一对一关联的从属方 - **has_many**:一对多关联的主导方 - **has_

gitblog_00516的博客 976

ruby-lsp-rails:提升Rails开发效率的终极Ruby LSP插件

ruby-lsp-rails是一款专为Rails开发者打造的Ruby LSP插件,它作为[Ruby LSP](https://github.com/Shopify/ruby-lsp)的扩展组件,提供了丰富的Rails编辑器增强功能,能够显著提升Rails应用的开发效率和代码质量。 ## 快速安装指南 如果你尚未设置Ruby LSP,请先按照[官方指南](https://shopify.gith

gitblog_00952的博客 668
上一篇: ruby中的Enumerable的使用
下一篇: 视频网站:一炷香后即将为您播放精彩内容
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值