rspec-puppet with ruby 1.8.7 给出 "unexpected ')'" 错误,但所有其他 ruby 版本都有效
rspec-puppet with ruby 1.8.7 gives "unexpected ')'" error but all other ruby versions work
在为 Puppet 模块开发规范测试时,TravisCI 会针对各种 Ruby/Gem/Puppet 版本进行测试。通常所有测试都适用于所有版本,除了 Ruby 1.8.7。那里的测试甚至没有开始。相反,您会收到一条错误消息,其中提到 configuration.rb:1105
和 syntax error, unexpected ')'
.
这是一个 example:
/home/travis/.rvm/gems/ruby-1.8.7-p374/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load': /home/travis/build/puppetlabs/puppetlabs-haproxy/spec/classes/haproxy_spec.rb:347: syntax error, unexpected ')' (SyntaxError)
/home/travis/build/puppetlabs/puppetlabs-haproxy/spec/classes/haproxy_spec.rb:355: syntax error, unexpected kDO_BLOCK, expecting kEND
/home/travis/build/puppetlabs/puppetlabs-haproxy/spec/classes/haproxy_spec.rb:364: syntax error, unexpected $end, expecting kEND
我在多个项目中看到过这个。
如何解决这个问题?
问题是 ruby-1.8.7 对多余的逗号不太宽容。如果您查看带有 configuration.rb:1105
的行之后的行,它会提到一个文件。那是有额外逗号或其他问题的文件。在上面的例子中,问题是haproxy_spec.rb:355
;在较旧的 Ruby 中,散列的最后一行必须省略逗号。
这是触发错误的版本与修复错误的版本之间的差异:
it 'should create directory /etc/haproxy' do
subject.should contain_file('/etc/haproxy').with(
- 'ensure' => 'directory',
+ 'ensure' => 'directory'
)
end
end
正如您将在下一个 TravisCI build 中看到的那样,这解决了它。
在为 Puppet 模块开发规范测试时,TravisCI 会针对各种 Ruby/Gem/Puppet 版本进行测试。通常所有测试都适用于所有版本,除了 Ruby 1.8.7。那里的测试甚至没有开始。相反,您会收到一条错误消息,其中提到 configuration.rb:1105
和 syntax error, unexpected ')'
.
这是一个 example:
/home/travis/.rvm/gems/ruby-1.8.7-p374/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load': /home/travis/build/puppetlabs/puppetlabs-haproxy/spec/classes/haproxy_spec.rb:347: syntax error, unexpected ')' (SyntaxError)
/home/travis/build/puppetlabs/puppetlabs-haproxy/spec/classes/haproxy_spec.rb:355: syntax error, unexpected kDO_BLOCK, expecting kEND
/home/travis/build/puppetlabs/puppetlabs-haproxy/spec/classes/haproxy_spec.rb:364: syntax error, unexpected $end, expecting kEND
我在多个项目中看到过这个。
如何解决这个问题?
问题是 ruby-1.8.7 对多余的逗号不太宽容。如果您查看带有 configuration.rb:1105
的行之后的行,它会提到一个文件。那是有额外逗号或其他问题的文件。在上面的例子中,问题是haproxy_spec.rb:355
;在较旧的 Ruby 中,散列的最后一行必须省略逗号。
这是触发错误的版本与修复错误的版本之间的差异:
it 'should create directory /etc/haproxy' do
subject.should contain_file('/etc/haproxy').with(
- 'ensure' => 'directory',
+ 'ensure' => 'directory'
)
end
end
正如您将在下一个 TravisCI build 中看到的那样,这解决了它。