首页 > 解决方案 > Sprockets 在推送到 Heroku 时抛出 NoMethodError

问题描述

我正在将我的应用程序升级到 ruby​​ 2.6.5,似乎 sprockets 4.0.2 是问题的原因。我发现的大多数答案都涉及降级到 sprockets 3.7.2(我在本地使用),但是当在 Heroku 推送期间编译资产时,我收到以下错误:

remote:        NoMethodError: undefined method `start_with?' for #<Regexp:0x00005582ab94a790>
remote:        /tmp/build_f56a8b75/vendor/bundle/ruby/2.6.0/gems/sprockets-4.0.2/lib/sprockets/uri_utils.rb:78:in `valid_asset_uri?'
remote:        /tmp/build_f56a8b75/vendor/bundle/ruby/2.6.0/gems/sprockets-4.0.2/lib/sprockets/resolve.rb:27:in `resolve'
remote:        /tmp/build_f56a8b75/vendor/bundle/ruby/2.6.0/gems/sprockets-4.0.2/lib/sprockets/base.rb:79:in `find_asset'
remote:        /tmp/build_f56a8b75/vendor/bundle/ruby/2.6.0/gems/sprockets-4.0.2/lib/sprockets/base.rb:88:in `find_all_linked_assets'
remote:        /tmp/build_f56a8b75/vendor/bundle/ruby/2.6.0/gems/sprockets-4.0.2/lib/sprockets/manifest.rb:125:in `block (2 levels) in find'

我已修改config/initializers/assets.rb为:

# Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/
Rails.application.config.assets.precompile << ["*.svg", "*.eot", "*.woff", "*.ttf"]

但错误仍在发生。知道如何解决这个问题吗?

标签: ruby-on-railsherokusprockets

解决方案


推荐阅读