【问题标题】:Teaspoon fails hard after Rails update 4.2.9 to 4.2.10在 Rails 将 4.2.9 更新到 4.2.10 后 Teaspoon 严重失败
【发布时间】:2018-10-11 20:52:22
【问题描述】:

在将 Rails 从 4.2.9 更新到 4.2.10 后,Teaspoon 已损坏。项目没有其他任何变化。

这是测试套件达到茶匙时的失败:

Starting the Teaspoon server...
[33337] Puma starting in cluster mode...
[33337] * Version 3.10.0 (ruby 2.3.3-p222), codename: Russell's Teapot
[33337] * Min threads: 5, max threads: 5
[33337] * Environment: test
[33337] * Process workers: 2
[33337] * Preloading application
[33337] * Listening on tcp://127.0.0.1:63120
[33337] Use Ctrl-C to stop
[33337] - Worker 0 (pid: 33351) booted, phase: 0
[33337] - Worker 1 (pid: 33352) booted, phase: 0
Teaspoon running default suite at http://127.0.0.1:63120/teaspoon/default
Error: ActionView::Template::Error: Asset was not declared to be precompiled in production.
Add `Rails.application.config.assets.precompile += %w( support/bind-poly.self.js )` to `config/initializers/assets.rb` and restart your server
/Users/meltemi/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:363:in `raise_unless_precompiled_asset'

使用 rake teaspoon 运行 Teaspoon(而不是 rake 用于默认套件,default [:teaspoon] 是其中的一部分)它的失败有点不同:

...
Teaspoon running default suite at http://127.0.0.1:63120/teaspoon/default
Failed to load: http://127.0.0.1:63120/teaspoon/default?reporter=Console
rake teaspoon failed
[33352] ! Detected parent died, dying

这是来自lib/sprockets/rails/helper.rb 的线路,它被绊倒了:

def raise_unless_precompiled_asset(path)
  raise Helper::AssetNotPrecompiled.new(path) if @check_precompiled_asset && !precompiled?(path)
end

Rails 4.2.9...4.2.10 之间的差异不大。希望你们中的一个更聪明的人能抓住可能引发这种情况的原因。似乎它可能与资产管道或供应宝石的路线有关......但这只是一个猜测!?! https://github.com/rails/rails/compare/v4.2.9...v4.2.10

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rspec sprockets teaspoon


    【解决方案1】:

    (到目前为止)我对建议的猴子补丁 here 很幸运。

    我将此添加到我的taspoon_env.rb 文件的底部:

    # https://github.com/modeset/teaspoon/issues/443
    module RaiseUnlessPrecompiledFixer
      def raise_unless_precompiled_asset(path)
        super unless path.split('.')[-2] == 'self'
      end
    end
    Sprockets::Rails::HelperAssetResolvers::Environment.send(:prepend,RaiseUnlessPrecompiledFixer)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多