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

执行padrino start启动服务器时触发FrozenError报错求助

Padrino启动时FrozenError报错排查与解决

报错信息

C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/padrino-core-0.15.1/lib/padrino-core/application.rb:32:in `concat': can't modify frozen Array:
[/\\/sinatra(\\/(base|main|show_exceptions))?\\.rb$/,
/lib\\/tilt.*\\.rb$/, /^\\(.*\\)$/,
/rubygems\\/(custom|core_ext\\/kernel)_require\\.rb$/,
/active_support/, /bundler(\\/(?:runtime|inline))?\\.rb/,
/<internal:/] (FrozenError)

项目Gemfile配置

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

# Padrino supports Ruby version 2.2.2 and later
ruby '2.7.0'

# Distribute your app as a gem
# gemspec

# Server requirements
# gem 'thin' # or mongrel
# gem 'trinidad', :platform => 'jruby'

# Optional JSON codec (faster performance)
# gem 'oj'

# Project requirements
gem 'rake'
gem 'bcrypt'
gem 'activesupport'
# Component requirements
gem 'erubi', '~> 1.6'
gem 'activerecord', '>= 3.1', :require => 'active_record'
gem 'sqlite3'

# Test requirements

# Padrino Stable Gem
gem 'padrino', '0.15.1'

解决方案

原因说明

Padrino 0.15.1版本与Ruby 2.7+环境存在兼容性问题:代码尝试修改Sinatra已冻结的ignore_patterns数组,而Ruby 2.7及以上版本对冻结对象的修改操作做了严格限制,因此抛出FrozenError。

具体解决办法

  • 优先推荐:升级Padrino版本
    修改Gemfile中的Padrino版本约束为>= 0.15.2(该版本已修复此兼容性问题):

    gem 'padrino', '>= 0.15.2'
    

    执行命令更新依赖:

    bundle update padrino
    
  • 应急方案:修改Padrino源码(不推荐长期使用)
    找到报错文件C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/padrino-core-0.15.1/lib/padrino-core/application.rb的第32行,将原有的concat操作改为先复制数组再修改:
    原代码:

    Sinatra::Application.ignore_patterns.concat(IGNORE_PATTERNS)
    

    修改为:

    Sinatra::Application.ignore_patterns = Sinatra::Application.ignore_patterns.dup.concat(IGNORE_PATTERNS)
    

    或等价写法:

    Sinatra::Application.ignore_patterns += IGNORE_PATTERNS
    
  • 备选方案:降级Ruby版本
    将Ruby版本降至2.6及以下,避开Ruby 2.7+对冻结对象的严格限制,但这是临时退阶方案,不建议长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39