Ruby - 语法错误,意外的tLABEL

时间:2016-03-18 11:51:32

标签: ruby calabash-ios

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

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

我不懂Ruby。我尝试过很少的事情,比如替换':'用' ='或者在{}中加入nil但似乎没有任何效果。

我的红宝石版本是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知识!

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

谢谢

2 个答案:

答案 0 :(得分:2)

这不适用于ruby 1.9(如果事实上JRuby将你限制为1.9),因为如果它是第一个参数,那么splat预计会紧跟在它后面。[/ p>

您可以这样做:

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

唯一的问题是,如果你想把东西传递给args [],你必须明确传递一些东西(甚至是nil)才能超时。

答案 1 :(得分:0)

Calabash iOS和Android 需要 ruby​​> = 2.0。

建议使用最新发布的ruby版本。

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

  

Travis build

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

enter image description here

我相信你已经安装了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