0

新的 Mac OS 更新将系统 Ruby 升级到 2.0,这很棒,但现在我在很多脚本中看到了我不知道如何修复的错误。具体来说,我的代码使用 mdfind 调用文件然后读取它们,如下所示:

files = %x{mdfind -onlyin /Users/Username/Dropbox/Tasks 'kMDItemContentModificationDate >= "$time.today(-1)"'}
files.each do |file|

现在我收到一条错误消息

undefined method `each' for #<String:0x007f83521865c8> (NoMethodError)"

似乎每个人现在都需要一个限定符。我尝试了 each_line 但这会产生额外的错误。我忽略了这个有一个简单的替代品吗?

4

1 回答 1

6

Ruby 1.8 曾经String#each做过隐式拆分。

每个(分隔符=$/){|substr| 块} => str

使用提供的参数作为记录分隔符(默认为 $/)拆分 str,将每个子字符串依次传递给提供的块。如果提供了长度为零的记录分隔符,则字符串将分成由多个连续换行符分隔的段落。

我相信,显式拆分应该适用于现代红宝石。

files.split($/).each do |file|

$/换行符在哪里。您可以使用显式字符,因为您的脚本无论如何都不可移植。

files.split("\n").each do |file|

更新

或者您可以只使用 now-extinct 的别名each

files.each_line do |file|
于 2013-10-24T15:12:38.977 回答