Del*_*ero 9 apache ruby-on-rails thin ruby-on-rails-3 asset-pipeline
我的问题类似于这个带有乘客无尽错误的Rails 3.2资产管道,除了当我尝试实际去的时候
<link href="/assets/application-eed7996ee9017637f923133371ab3e92.css" media="all" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
我得到了404.这是我不明白的事情.它正在查看/ assets /,但是当我查看部署的代码时,资产只在/ public/assets中,这实际上是/ var/www/myapp/shared/assets的符号链接.那么世界上有什么责任告诉应用程序,查看/资产会产生正确的结果?
我正在使用Rails 3.2.0,ruby-1.9.3-p125,部署到Ubuntu,Apache和Thin.
我应该澄清一下:我的资产确实已部署到服务器上.一切都很好,直到他们需要服务,在这种情况下,production.log告诉我它正在/assets/application-eed7996ee9017637f923133371ab3e92.css中寻找它们,这是404的.
对于每个请求,我的thin.log说
cache: [GET /] miss
Run Code Online (Sandbox Code Playgroud)
和production.log说
ActionController::RoutingError (No route matches [GET] "/assets/application-abecf2e096af9ee80697fd49e79a55e7.js"):
Run Code Online (Sandbox Code Playgroud)
更新
@Brandan感谢您的帮助.我的资产确实在RAILS_ROOT/public/assets.我把它放在我的Apache vhost文件中:
DocumentRoot /var/rails/myappname/current/public
RewriteEngine On
XSendFile On
XSendFilePath /var/rails/myappname #not even sure if this line is needed
<LocationMatch "^/assets/.*$">
Header unset ETag
FileETag None
ExpiresActive On
ExpiresDefault "access plus 1 year"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
我的RAILS_ROOT/config/environments/production.rb设置:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
Run Code Online (Sandbox Code Playgroud)
我已经有这个问题好几天了。认为这是 capistrano 或 ruby 版本的问题,但我很确定它也与权限相关。
尽管我也使用 Unicorn,但我的配置与您的配置几乎相同。
这是我所做的排序:
暂时删除以下部分,因为我认为这导致了故障排除问题:
<LocationMatch "^/assets/.*$">
Header unset ETag
FileETag None
ExpiresActive On
ExpiresDefault "access plus 1 year"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)也许让一切正常工作,然后将其重新添加回去。我不认为这是问题的原因,但是,在诊断此类问题时,最好尽可能删除以找到罪魁祸首。
在公共目录上运行 chown -R xxx.xxx(将 xxx 替换为您的应用程序用户或 Web 用户)。当我这样做时,css 又出现了。
(我做了什么,但可能不是必需的)您可能还想在没有上限的情况下进行本地安装。以防万一出现问题。这对我也有用。
完全清除 tmp/cache 和 public/* 以防万一。
重新启动您的 apache 服务器几次。
你可以看到我的会议要点。这里
| 归档时间: |
|
| 查看次数: |
5962 次 |
| 最近记录: |