【问题标题】:Rails App Assets Not Being Loaded on Development EnvironmentRails 应用程序资产未加载到开发环境中
【发布时间】:2017-05-23 05:33:32
【问题描述】:

每次我在本地启动我的 Rails 应用程序时,都没有显示任何 CSS。浏览器中的调试器显示了对所有带有指纹的资产文件的get 请求,但由于找不到文件,它们都失败了。以下是其中一个请求的样子:

GET http://localhost:3000/assets/announcements.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1

在 Rails 服务器控制台中,我收到 Rack App Error,以及 undefined method 'Silence'NoMethodError。以下是其中一个错误的样子:

2017-01-08 17:24:49 -0800: Rack app error handling request { GET /assets/normalize.self-cadbbf81015902777c37852b3ea54398335fd421c6c76891c077ec5954211bb4.css }

NoMethodError: undefined method 'silence' for #<Logger:0x007fe1062c1c78

两个错误日志(浏览器控制台和本地主机服务器控制台)都包含同一错误的多个再现,都指向资产(*.js 和 *.css)。

我搜索了无数 StackOverflow 帖子,但无济于事。出于某种原因,这也仅影响这一应用程序;我所有的其他 Rails 应用程序都运行良好。这是我的规格:

Rails 版本:5.0.1

Ruby 版本:2.3.1p112

我尝试过的事情:

assets:cleanassets:precompilerm -rf /tmp/public/assetsdirectpories,所有之前的开发环境,从 github 重新克隆存储库并捆绑安装。

【问题讨论】:

    标签: ruby-on-rails rack nomethoderror activesupport rails-assets


    【解决方案1】:

    您似乎遇到了这个问题:https://github.com/rails/sprockets-rails/issues/376

    在您进行此配置更改的地方,您应该改用ActiveSupport::Logger。如果您有Logger.new,请改用ActiveSupport::Logger

    【讨论】:

    • 您是说用ActiveSupport::Logger 替换Logger.new 的实例吗?如果是这样,我的 development.rb 文件中没有 Logger.new 的实例。我的问题似乎与您链接的问题相匹配,但我似乎无法在其中找到解决方案。
    【解决方案2】:

    检查 Rails 5 中的 Sprockets 4 清单

    http://eileencodes.com/posts/the-sprockets-4-manifest/

    也许对你有帮助。

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但在尝试解决同样的问题时偶然发现了这个问题。

      我发现和 Ryan Bigg 的回答一样,我需要在 development.rb 中注释掉以下行,以阻止 Sprockets 在 Rails 5.2.2 中轰炸:

        # Suppress logger output for asset requests.
        # config.assets.quiet = true
      

      【讨论】:

        猜你喜欢
        • 2013-03-14
        • 1970-01-01
        • 2015-08-29
        • 2013-07-28
        • 1970-01-01
        • 2017-05-09
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        相关资源
        最近更新 更多