Ruby - 语法错误,意外的 tLABEL

Ruby - syntax error, unexpected tLABEL

我在下面的 Ruby 代码中遇到 语法错误,意外的 tLABEL。错误描述指向 'timeout'.

之后的“:”
def self.run(*args, timeout: nil, environment: {})
  # ...
end

我不知道 Ruby。我尝试了一些方法,例如用“=”替换“:”或将 nil 放入 {},但似乎没有任何效果。

我的 ruby 版本是 2.1.5。

IUQ-mini:~ IUQ$ rbenv versions
system
* 2.1.5 (set by /Users/IUQ/.ruby-version)
2.1.7
2.2.3

可以找到特定代码here at line #38

关于 SO 的几个问题指出,这可能是由于大括号放错了位置而发生的,但我没有看到错误 - 又是我缺乏 Ruby 知识!

请帮助我了解此错误的原因以及如何解决此问题?

谢谢

这在 ruby 1.9 中不起作用(如果实际上 JRuby 将您限制为 1.9),因为如果它是第一个参数,预计 splat 后面会紧跟一个散列。

你可以这样做:

def self.run (environment = {}, timeout = nil, *args)
end

唯一的麻烦是,如果你想将内容传递给 args[],​​你必须显式地传递一些东西(甚至是 nil)以达到超时。

Calabash iOS 和 Android 要求 ruby >= 2.0。

推荐ruby最新发布的版本。

目前不支持任何版本的JRuby。

Travis build

如果您查看该版本的信息,您会发现它失败了,因为它是 运行 在 ruby 1.9.3 上。

我相信您已经安装了 ruby 2.0。我不认为你在使用它。

$ rbenv versions
  system
  1.8.7-p375
  1.9.3-p484
  2.0.0-p481
  2.1.5
  2.2.2
  2.2.3
* 2.3.0 (set by /Users/moody/.rbenv/version)  <== Active ruby in this dir
  jruby-1.7.18

 $ rbenv version # Active ruby in this directory
 2.3.0

您从未提及您使用的 run_loop 版本。您应该更新到最新的稳定版本。

https://github.com/calabash/calabash-ios/wiki/Updating-your-run-loop-version