Ruby 编程中拼写错误的救星:did_you_mean gem

经常我会在Ruby开发中遇到拼写错类名或方法名的时候,程序报错,但我不知道只是拼写错误,我会反复的咕噜:

“太奇怪了,看起来完全没问题呀…”

经常我会在这种事情上浪费大量的时间,而原因可能只是一个字符写错了。我痛恨这种事情。

这就是为什么我开发出 did_you_mean gem。使用它,每当你遇到NoMethodError 或 NameError 时,它会自动的寻找出你真正想调用的正确方法,并告诉你。

gem 'did_you_mean', group: [:development, :test]

那么,当年拼写错了 ActiveSupport 里的 Hash#with_indifferent_access 后,会发生什么事情呢?:

hash.with_inddiferent_access
# => NoMethodError: undefined method `with_inddiferent_access' for {}:Hash
#
#     Did you mean? #with_indifferent_access
#

看到了吧!现在,你只需要拷贝/粘贴 ‘did_you_mean’ 提示的正确名字,程序就不会有错了。

did_you_mean gem 会自动的把它推测出的信息显示在错误信息中。也就是说,“Did you mean?” gem 会在任何地方为你服务。下面是一个很典型的例子,是我在一个真实项目中它给出的错误提示:

你可以在GitHub的项目主页中找到更多的例子: yuki24/did_you_mean

赶快使用 did_you_mean gem 吧,不再为拼写错误发愁。Ruby将会读懂你的思想。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-10-24 06:16:03

Ruby 编程中拼写错误的救星:did_you_mean gem的相关文章

初步讲解Ruby编程中的多线程_ruby专题

每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程. Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码.创建 Ruby 线程 要启动一个新的线程,只需要调用 Thread.new 即可: # 线程 #1 代码部分 Thread.new { # 线程 #2 执行代码 } # 线程 #1 执行代码 实例 以下实例展示了如何在R

Ruby编程中的语法使用风格推荐_ruby专题

使用 :: 引用常量(包括类和模块)和构造器 (比如 Array() 或者 Nokogiri::HTML()).     永远不要使用 :: 来调用方法. # bad SomeClass::some_method some_object::some_method # good SomeClass.some_method some_object.some_method SomeModule::SomeClass::SOME_CONST SomeModule::SomeClass()     使用括

Ruby编程中的命名风格指南_ruby专题

用英语命名标识符.    # bad - identifier using non-ascii characters заплата = 1_000 # bad - identifier is a Bulgarian word, written with Latin letters (instead of Cyrillic) zaplata = 1_000 # good salary = 1_000     使用snake_case的形式给变量和方法命名.     # bad :'some sy

Ruby编程中关于中断和返回的用法教程_ruby专题

 return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用域的不同,因为有代码块则导致有一些地方需要格外注意.return常用方式 通常情况下的return语句和大家理解的意思是相同的. def m1 param if param == 1 return 'returned 1' end 'returned default value' # 根据Ruby语言规范,最后一条执行语句的结果将作为返回值返回,return是可选的

详解Ruby设计模式编程中对单例模式的运用_ruby专题

简介      单例模式是设计模式中最简单的形式之一.这一模式的目的是使得类的一个对象成为系统中的唯一实例.要实现这一点,可以从客户端对其进行实例化开始.因此需要用一种只允许生成对象类的唯一实例的机制,"阻止"所有想要生成对象的访问.使用工厂方法来限制实例化过程.这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义. 要点      显然单例模式的要点有三个:一是某个类只能有一个实例:二是它必须自行创建这个实例:三是它必须自行向整个系统提供这个实例.      

跨越边界: 活动记录和Java编程中特定于域的语言

DSL 是专门解决特定于域问题的语言.通过更接近问题的操作,DSL 可以提供在通用语言中可能找不 到的好处.Java 世界中充满了 DSL.属性文件.Spring 上下文.标注的某种用法以及 Ant 任务,都是 DSL 的示例. 在开始研究其他像 Ruby 这样的语言的时候,我开始理解到 Java 语言目前对于 DSL 还没有良好的把 握.在这篇文章中,将看到 Ruby 使用的四种集成干净的 DSL 的技巧.然后,将看到在 Java 语言中可 能存在的选项是什么. 隐藏语言的世界 虽然您可能不知

ruby:借助第三方类名如何查找第三方gem名称(zlib为例)

    rubygem中含有成千上万的第三方gem,网上书上扩展教程中都有指导如何使用第三方gem的例子.但是如果不幸这些例子都没有提及gem名称的话,如何只凭第三方类名或require名查找gem名称呢?换句话说,我怎么知道要intall神马gem呢?     举个例子来看<ruby之道>p60页有一个使用字符串压缩功能的第三方类,书上例子中有如下代码: require 'zlib' include Zlib 真难为人啊!?我用gem search zlib -r搜索的结果如下: apple

Ruby编程实践

命令 常量大写 类名和模块名首字母大写,驼峰法,MyClass,Person 方法名小写,ruby中末尾添加符号特殊含义:destroyMethod!表示这个方法具有破坏性:isPrime?表示返回bool类型 变量.参数小写 空格和括号,保证可读性 ,.;紧跟,后面加空格 操作副前后加空格 一元操作符不加空格 [] . :: 前后不加空格 return ruby最后一行如果是表达式,则自动返回:如果不是,则不返回 注释 #单行注释 =begin ... =end 多行注释 继承 attr_wr

java代码-关于CSDN英雄会挑战赛 java编程中的一些问题

问题描述 关于CSDN英雄会挑战赛 java编程中的一些问题 各位大神,我在挑战英雄会的题目的时候,在线下运行的没有问题,可是一提交就会提示,"挑战失败:你的程序正常编译,不过运行时发生错误,通常是代码有问题,如除数为零数组上下界溢出等" 我觉得可能是java输入数据时的问题,因为题目要求:输入多行数据,输出多行我是这样写的: Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do {