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

Rails7安装stimulus-rails后报Stimulus::Rails找不到application方法错误

问题现象

Rails 7 应用安装 stimulus-rails gem 后启动应用抛出如下错误:

Uncaught exception: undefined method `application' for Stimulus::Rails:Module
问题根因

gem 内 lib/stimulus/engine.rb 文件中的 Rails 常量被 Ruby 常量查找规则错误解析为当前命名空间下的 Stimulus::Rails 模块,而非根命名空间的顶层 ::Rails 类,调用 application 方法时找不到对应定义触发报错。

完整错误回溯栈:

=> Booting WEBrick
=> Rails 7.0.2.4 application starting in development http://0.0.0.0:3002
=> Run `bin/rails server --help` for more startup options
Exiting
Uncaught exception: undefined method `application' for Stimulus::Rails:Module
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/stimulus-rails-1.0.0/lib/stimulus/engine.rb:4:in `block in <class:Engine>'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/initializable.rb:32:in `instance_exec'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/initializable.rb:32:in `run'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/initializable.rb:61:in `block in run_initializers'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:347:in `each'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:347:in `call'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
    /Users/jae/.rvm/rubies/ruby-3.0.4/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/initializable.rb:60:in `run_initializers'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/application.rb:372:in `initialize!'
    /Users/jae/src/reiance2/config/environment.rb:5:in `<main>'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/zeitwerk-2.6.0/lib/zeitwerk/kernel.rb:35:in `require'
    config.ru:3:in `block in <main>'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/builder.rb:116:in `eval'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/builder.rb:116:in `new_from_string'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/builder.rb:105:in `load_file'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/builder.rb:66:in `parse_file'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/server.rb:349:in `build_app_and_options_from_config'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/server.rb:249:in `app'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/rack-2.2.4/lib/rack/server.rb:422:in `wrapped_app'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/commands/server/server_command.rb:36:in `start'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/commands/server/server_command.rb:143:in `block in perform'
    <internal:kernel>:90:in `tap'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/commands/server/server_command.rb:134:in `perform'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/command/base.rb:87:in `perform'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/command.rb:48:in `invoke'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/railties-7.0.2.4/lib/rails/commands.rb:18:in `<main>'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    /Users/jae/.rvm/gems/ruby-3.0.4/gems/bootsnap-1.12.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
    /Users/jae/src/reiance2/bin/rails:9:in `<top (required)>'

Process finished with exit code 0
可行解决方案

按优先级从高到低选择处理:

  • 优先升级 stimulus-rails 到修复版本:该常量命名空间bug在1.0.1及以上版本已经官方修复,在项目根目录执行如下命令升级gem即可:
    bundle update stimulus-rails
    
    升级完成后重启 Rails 服务,错误会直接消失。
  • 临时应急修复:如果受项目依赖限制暂时无法升级gem,可找到本地gem安装路径下的 stimulus-rails-1.0.0/lib/stimulus/engine.rb 文件,将第4行的 Rails.application 修改为显式指定根命名空间的写法 ::Rails.application,保存后重启应用即可正常启动。注意该修改属于本地gem补丁,gem重装或版本切换后会失效,后续有条件还是要走官方升级方案。
  • 冲突排查:如果升级后问题仍然存在,检查项目业务代码中是否自定义过 Stimulus::Rails 同名模块,若存在重名定义,调整自定义模块的命名空间,避免和gem内部常量查找逻辑冲突即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:48:16