Ruby 2.4.1使用smarter_csv gem遇SyntaxError问题求助
解决Ruby 2.4.1中smarter_csv gem的语法错误问题
问题现象
在Ruby 2.4.1环境下运行CLI脚本,引入smarter_csv gem(尝试过1.7.4、1.7.3、1.7.1等版本)时,触发如下语法错误:
/Users/macbook/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:54:in `require': /Users/macbook/.rvm/gems/ruby-2.4.1/gems/smarter_csv-1.7.4/lib/smarter_csv.rb:549: syntax error, unexpected keyword_rescue, expecting keyword_end (SyntaxError) rescue EOFError # short files ^ /Users/macbook/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:54:in `require' from csv_analysis_script.rb:16:in `<main>'
问题原因
smarter_csv 1.7.x及以上版本引入了Ruby 2.5+才支持的语法特性,Ruby 2.4.1无法正确解析这些语法,导致出现rescue与end不匹配的语法错误。即使降级到1.7.x系列的旧版本,也可能存在同样的语法兼容问题。
解决方案
安装兼容Ruby 2.4.1的smarter_csv版本
选择1.6.0版本,该版本完全兼容Ruby 2.4.x:gem install smarter_csv -v 1.6.0如果使用Bundler管理依赖,在Gemfile中锁定版本:
gem 'smarter_csv', '~> 1.6.0'然后执行:
bundle install验证修复
重新运行你的CLI脚本,确认语法错误消失。长期解决方案
Ruby 2.4.1已在2020年4月停止官方维护,建议升级到Ruby 2.5或更高版本,这样可以正常使用smarter_csv的最新版本,同时获得更好的安全性和性能。
内容的提问来源于stack exchange,提问作者Mubarra Naz
相关产品推荐
相关产品推荐

