You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails创建新应用遇语法错误,寻求解决办法

Rails 7.1.x 创建项目时的语法错误解决

问题详情

执行命令创建Rails项目:

rails new abc -d mysql

环境信息:

  • Ruby版本:2.7.0
  • 尝试的Rails版本:7.1.3.2、7.1.5.1

错误触发前控制台输出:

rails importmap:install

完整错误信息:

bin/rails aborted!
SyntaxError: /var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record/attribute_methods.rb:482: syntax error, unexpected (...
...   def method_missing(name, ...)
...                            ^~~
/var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record/attribute_methods.rb:491: unexpected ...
/var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record/attribute_methods.rb:495: syntax error, unexpected ')'
...  return public_send(name, ...)
...                              ^
/var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record/attribute_methods.rb:551: syntax error, unexpected end-of-input, expecting `end'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record.rb:128:in `<module:ActiveRecord>'
/var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record.rb:38:in `<main>'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/activerecord-7.1.5.1/lib/active_record/railtie.rb:3:in `<main>'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/all.rb:20:in `block in <main>'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/all.rb:18:in `each'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/all.rb:18:in `<main>'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/home/akanksha/Work/Projects/materials_generator/abc/config/application.rb:3:in `<main>'
/home/akanksha/Work/Projects/materials_generator/abc/Rakefile:4:in `require_relative'
/home/akanksha/Work/Projects/materials_generator/abc/Rakefile:4:in `<main>'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/commands/rake/rake_command.rb:43:in `block in with_rake'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/commands/rake/rake_command.rb:41:in `with_rake'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/command.rb:156:in `invoke_rake'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/command.rb:73:in `block in invoke'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/command.rb:149:in `with_argv'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/command.rb:69:in `invoke'
/var/lib/gems/2.7.0/gems/railties-7.1.5.1/lib/rails/commands.rb:18:in `<main>'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/lib/gems/2.7.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:4:in `<main>'
(See full trace by running task with --trace)

错误原因

Rails 7.1.x 版本引入了Ruby 3.0+专属的省略号参数语法(...),比如def method_missing(name, ...)这种写法,而Ruby 2.7.0并不支持该语法,导致ActiveRecord代码加载时触发语法错误。

解决方法

  • 方案一:升级Ruby版本(推荐)
    Rails 7.1官方要求最低Ruby版本为3.0.0,将Ruby升级到3.0或更高版本(如3.1、3.2)即可解决该兼容性问题。

  • 方案二:降级Rails版本
    如果暂时无法升级Ruby,可将Rails版本降级到7.0.x系列(该系列兼容Ruby 2.7.0),创建项目时指定版本:

    rails _7.0.8_ new abc -d mysql
    

内容的提问来源于stack exchange,提问作者Akanksha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:42:35