Rspec returns "unexpected '{', expecting keyword_end" 的语法错误

Rspec returns syntax error of "unexpected '{', expecting keyword_end"

这适用于 Ruby 的一台机器,但不适用于另一台机器。

代码:

describe 'testing reverse string different ways' do

  let :thing {'cba321'}

  it 'the system method' do
    source = '123abc'
    result = source.reverse
    expect(result).to eq 'cba321'
  end 
end

错误:

SyntaxError:                                                                                                             
  /home/michael/Dropbox/90_2019/work/code/ruby__rails/ruby/reverse_string_tests_timing/test_spec.rb:12: syntax error, une
xpected '{', expecting keyword_end                                                                                       
    let :thing {'cba321'}                                                                                                
               ^                                                                                                         
  /home/michael/Dropbox/90_2019/work/code/ruby__rails/ruby/reverse_string_tests_timing/test_spec.rb:12: syntax error, une
xpected '}', expecting end-of-input                                                                                      
    let :thing {'cba321'}  

在 Ruby 2.4.1 中允许没有括号,但在 Ruby 2.5.1 中不允许。

因此解决方法是向 let 添加括号,例如

改变

let :source {'cba321'}

let (:source) {'cba321'}