Ruby on rails 为什么要在生产中获取空CSS文件?

Ruby on rails 为什么要在生产中获取空CSS文件?,ruby-on-rails,nginx,capistrano,Ruby On Rails,Nginx,Capistrano,我在active_admin.css.scss文件中放置了许多css文件: 但是文件“jqueryui.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 我还检查了浏览器中的资源,这两个文件都存在,但里面

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

但是文件
“jqueryui.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
我还检查了浏览器中的资源,这两个文件都存在,但里面没有内容。我正在使用Nginx作为Ec2中的web服务器。一切都在发展中,但不是在生产中

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

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


但它仍然不起作用。我从中找到了上述建议。

我不知道这是否是一个完整的答案,但我无法发布格式化的代码片段,除非它位于“答案”部分,所以我们开始吧

我的理论是,您丢失的文件没有包含在预编译中,这可能会有所帮助。我的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 )
制作中.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服务器设置是使用Unicorn的Nginx。我一直在手动部署,因为我第一次部署时希望以最直接的方式启动应用程序,然后使用Capistrano等组件增加复杂性。如果您发现这个问题很难解决,请完全删除Capistrano并手动部署,然后查看您的文件是否在没有它的情况下处于需要的位置,然后回滚Cap并查看它是否会破坏任何东西

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

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

你预编译过吗?是的。。是的。。但是我不知怎的发现那些文件不在server
current/public
目录中。。我也读了这篇文章。你有到登台服务器的链接吗?@ArupRakshit我不是有意用“未找到记录”错误问题来回答你的问题的。你是这么一个好人。我发现提问者太粗鲁了,我最终还是删除了我的答案。@ValAsensio你说的是哪一个答案?:)我忘了它看起来
# 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
@import "jquery-ui";
@import "admin/jquery.datepick";