【问题标题】:Why getting empty CSS files in Production?为什么在生产环境中获取空的 CSS 文件?
【发布时间】:2015-09-19 21:59:58
【问题描述】:

我在 active_admin.css.scss 文件中放了很多 css 文件:

// Active Admin's got SASS!
@import "active_admin/mixins";
@import "active_admin/base";
@import "admin/plugins/*";
@import "admin/calendar";
@import "jquery-ui.css";
@import "admin/jquery.datepick.css";

但是文件"jquery-ui.css""admin/jquery.datepick.css" 正在产生问题。我在浏览器控制台中收到 404 Not Found 错误:

http://staging.xxx.com/assets/jquery-ui.css
http://staging.xxx.com/assets/admin/jquery.datepick.css

我还检查了浏览器中的资产,这两个文件存在,但它们里面没有内容。我在 Ec2 中使用 Nginx 作为我的网络服务器。一切都在开发中,但不是在生产中。

我的 Ngnix 配置如 this answer 中所述。我正在使用Capistrano 进行部署。一切正常,但不是这 2 个文件。

我在 production.rb 中也有以下设置:

config.assets.compile = true
config.assets.precompile += %w[active_admin.css active_admin.js]

但它仍然没有工作。我从here找到了上述建议。

【问题讨论】:

  • 你预编译过它们吗?
  • 是的..我做到了..但我看到服务器current/public目录中不存在这些文件..我也读了post..
  • 你有登台服务器的链接吗?
  • @ArupRakshit 我不是故意用未找到记录错误问题来踩你的答案。你是SO的好人之一。我发现提问者如此粗鲁,最终我最终删除了我的答案。
  • @ValAsensio 你在说哪个答案? :) 我好像忘记了

标签: ruby-on-rails nginx capistrano


【解决方案1】:

去掉 @import 声明中的文件扩展名。应该是:

@import "jquery-ui";
@import "admin/jquery.datepick";

【讨论】:

    【解决方案2】:

    我不知道这是否是一个完整的答案,但我不能发布格式化的代码 sn-p,除非它在“答案”部分,所以我们开始吧。

    我的理论是您丢失的文件没有包含在您的预编译中,也许这会有所帮助。我的 assets .precompile 语句不在 production.rb 中,而是在 assets.rb 中,如下所示:

    # assets.rb
    # Be sure to restart your server when you modify this file.
    
    # Precompile additional assets.
    # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
    Rails.application.config.assets.precompile += %w( mapworkers.js )
    Rails.application.config.assets.precompile += %w( prototype.js )
    

    production.rb

    # production.rb
    # Disable Rails's static asset server (Apache or nginx will already do this).
    config.serve_static_files = false
    
    # Compress JavaScripts and CSS.
    config.assets.js_compressor = :uglifier
    
    # Do not fallback to assets pipeline if a precompiled asset is missed.
    config.assets.compile = false
    
    # Generate digests for assets URLs.
    config.assets.digest = true
    

    其他调试想法: 作为一个拥有 65k 代表的人,我怀疑您是否需要我的调试建议,但特别是我自己的 Rails 服务器设置是 Nginx 和 Unicorn。我一直在手动部署,因为我是第一次部署,我希望以最直接的方式启动应用程序,然后使用 Capistrano 等组件增加复杂性。如果您发现这个问题难以解决,请完全删除 Capistrano 并手动部署,看看您是否将文件放在需要它的地方,然后将 Cap 回滚,看看它是否破坏了任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2012-09-04
      • 2022-10-26
      相关资源
      最近更新 更多