【问题标题】:Rails asset pipeline and serving static files from nginxRails 资产管道和从 nginx 提供静态文件
【发布时间】:2014-04-01 23:50:58
【问题描述】:

我正在尝试从我的 rails 应用程序访问文件 logo.png。在部署过程中,/app/assets 中的所有内容都会被编译并放入 /public/assets。例如,我的名为 logo.png 的文件如下所示:

/public/assets/logo-e66eddecdb08ac2b7fe349da2a065d87.png

当我尝试访问该完整文件名时,nginx 直接成功地提供了它,因为 /etc/sites-enabled/myapp 中有这些行:

try_files $uri/index.html $uri @unicorn;
root /home/deployer/apps/myapp/current/public

所以我可以浏览到 myserverhost.com/assets/logo-e66eddecdb08ac2b7fe349da2a065d87.png 并且加载正常。但是,当然在我的应用程序中,我将该文件简称为“logo.png”,当我加载我的主页时,我在 logo.png 上找不到 404。

nginx 应该如何知道文件名已在末尾与哈希混合在一起?

编辑:我在我的 scss 文件中引用了这样的徽标文件:

#sidebar .logo-div {
  border-bottom: 2px solid#ddd;
  width:100%;
  height:80px;
  text-align:center;
  background-image:url('logo.png');
  background-position:center;
  background-repeat:no-repeat;
  margin-bottom:20px;
}

【问题讨论】:

  • 您认为logo.png 的引用情况如何?
  • 用这些信息编辑了我的问题

标签: ruby-on-rails nginx unicorn


【解决方案1】:

您必须使用 url 助手。

background-image: url(image-path("logo.png"));

asset-url("logo.png", image)

Rails 会在生产环境中自动添加哈希。

【讨论】:

    【解决方案2】:

    如果您的文件是css 文件:

    background-image: url(/assets/logo.png);
    

    如果你的文件是sass 文件可以使用helper:

    background-image: image-url("logo.png");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2018-06-06
      • 2014-01-13
      • 1970-01-01
      • 2015-07-25
      • 2015-09-14
      相关资源
      最近更新 更多