标签: ruby

42
推荐指数
2
解决办法
5万
查看次数

Rspec存根方法仅适用于特定参数

有没有办法只针对特定参数的存根方法.像这样的东西

boss.stub(:fire!).with(employee1).and_return(true)
Run Code Online (Sandbox Code Playgroud)

如果任何其他员工被传递给boss.fire!方法,我会得到boss received unexpected message错误,但我真正想要的只是覆盖特定参数的方法,并留给所有其他人.

有什么想法可以做到这一点?

ruby rspec

42
推荐指数
1
解决办法
9990
查看次数

如何在Ruby中定义[方括号]方法?

我正在编写Ruby编程 - 一个实用的程序员指南,并且偶然发现了这段代码:

class SongList
  def [](key)
    if key.kind_of?(Integer)
      return @songs[key]
    else
      for i in 0...@songs.length
        return @songs[i] if key == @songs[i].name
      end
    end
    return nil
  end
end
Run Code Online (Sandbox Code Playgroud)

我不明白定义[]方法是如何工作的?

为什么键在[]之外,但是当调用方法时,它在[]里面?

键可以没有括号吗?

我知道有更好的方法来写这个,并知道如何编写我自己的方法,但这个[]方法只是让我感到困惑...任何帮助非常感谢,谢谢

ruby methods

42
推荐指数
3
解决办法
2万
查看次数

什么是匹配不在行尾的字符串的正则表达式?

正则表达式/abc$/将匹配abc在行尾出现的正则表达式.我该怎么办?

我希望匹配abc不在一行的末尾.

此外,我将使用正则表达式来替换字符串,因此我只想捕获abc字符串之后的任何内容,因此/abc.+$/不起作用,因为它不仅会替换,而且还会替换abc任何内容abc.

使用正确的正则表达式是什么?

ruby regex

42
推荐指数
1
解决办法
2万
查看次数

Ruby中的每个块都可以有一行吗?

是否有一种在Ruby中编写每个块的单行方法?

cats.each do |cat|
   cat.name
end
Run Code Online (Sandbox Code Playgroud)

我正在尝试缩短项目中的代码量.我正在使用Ruby 1.9.2.

谢谢!

ruby

42
推荐指数
3
解决办法
5万
查看次数

如何将Ruby字符串强制为n个字符

如何使用putsn个字符强制使用Ruby字符串变量输出,这样如果变量更长,它将被截断,如果更短,它将通过尾随或前导空格扩展?

有没有一些标准的方法来做到这一点?

ruby string variables string-length

42
推荐指数
4
解决办法
3万
查看次数

RSpec:我如何在期望语法中使用数组包含匹配器

我使用新的rspec语法(expect而不是should),我想测试一个数组是否包含另一个数组的元素.在旧的语法中它将是:

array1.should include(array2)
Run Code Online (Sandbox Code Playgroud)

在我尝试编写的新语法中:

expect(array1).to include(array2)
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误(这是非常合理的):

TypeError: wrong argument type Array (expected Module)
Run Code Online (Sandbox Code Playgroud)

然后我写道:

expect(array1).to be_include(array2)
Run Code Online (Sandbox Code Playgroud)

但它很难看;-) UPDATE:它不起作用:显然它是cheks如果array2是array1的元素,如果array2的所有元素都包含在array1中.

最后我写道:

expect(array1 & array2).to eq(array2)
Run Code Online (Sandbox Code Playgroud)

但这不是最漂亮的解决方案.你还知道更好吗?

ruby unit-testing rspec

42
推荐指数
3
解决办法
2万
查看次数

在适合任何地方的Rails应用程序中放置类的指南

我想知道是否有任何关于在Rails应用程序中放置非标准Ruby文件的最佳实践,哪些不适合任何默认目录(controllers/ models等).

我说的是控制器/模型等使用的类,但不是任何Rails基类的子类.包含从模型中提取的功能的类,以减少它们的负担.其中一些看起来像模型,但不是AR模型,其中一些看起来更像"服务",有些是介于两者之间或其他东西.

一些随机的例子:

  • 通过facebook等处理密码验证的"策略"类.
  • 封装params或"XCreator"对象的"XParams"对象处理params的处理以执行一些复杂的动作,最终导致创建一些AR模型
  • 向外部API发出请求或封装这些请求和响应的类
  • 可替代真实AR模型的假模型(例如访客用户)
  • Resque工作
  • 存储和读取Redis信息的类
  • 执行某些特定操作的类,如处理数据,生成报告等,并从Resque作业或rake任务调用

我现在已经有了很多这些,其中一些被添加到lib最后作为一堆随机类和模块,一些潜入app/models.我想以某种方式组织这个,但我不知道从哪里开始.

只应该进入AR车型app/models吗?或者也可以放置任何域或帮助模型?你如何决定某件事是模特?

如果不适合的一切都app进入lib?或许我应该添加一些新的自定义子目录app?什么子目录,以及如何划分自定义类?

你如何在你的项目中处理这个?我知道每个项目都有点不同,但必须有一些相似之处.

ruby directory ruby-on-rails organization models

42
推荐指数
2
解决办法
2万
查看次数

在RSpec测试期间抑制控制台输出

我正在测试在控制台上放置一些消息的类(带有puts,p警告等).我只是想知道在RSpec测试期间是否有能力抑制此输出?

ruby rspec

42
推荐指数
7
解决办法
2万
查看次数

42
推荐指数
3
解决办法
2万
查看次数