Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未服务Rails Cloudfront资产_Ruby On Rails_Heroku_Amazon Cloudfront - Fatal编程技术网

Ruby on rails 未服务Rails Cloudfront资产

Ruby on rails 未服务Rails Cloudfront资产,ruby-on-rails,heroku,amazon-cloudfront,Ruby On Rails,Heroku,Amazon Cloudfront,我与Heroku一起为Rails设置了Cloudfront,一开始它运行良好。在过去的几天里,我注意到cloudfront.net不再提供这些资产 Production.rb 我可以访问cloudfront地址下的所有资产,在chrome中,我可以看到应用程序5deb6995ce9b984d469b27c58cc92a095d19cd13e0acd622ffe426c41826e055.js从cloudfront服务器获得服务。但是,页面上的所有静态图像,例如/assets/shop/banne

我与Heroku一起为Rails设置了Cloudfront,一开始它运行良好。在过去的几天里,我注意到cloudfront.net不再提供这些资产

Production.rb

我可以访问cloudfront地址下的所有资产,在chrome中,我可以看到应用程序5deb6995ce9b984d469b27c58cc92a095d19cd13e0acd622ffe426c41826e055.js从cloudfront服务器获得服务。但是,页面上的所有静态图像,例如/assets/shop/banners/2.jpg,都没有

这似乎与预编译有关,因为它不查找文件的指纹版本,或者

在我的gem文件中,我包含以下内容:

group :production, :staging do
      gem 'rails_12factor'
      gem 'pg'
 end

正如tegon所指出的,需要使用image_标签或image_url来服务cloudfront的资产。我的代码中有一个通常的“imgsrc”引用,它不会被识别


将img src更改为image_标记或image_url,并且它正在工作。谢谢

正如tegon指出的,需要使用image_标签或image_url来服务cloudfront的资产。我的代码中有一个通常的“imgsrc”引用,它不会被识别


将img src更改为image_标记或image_url,并且它正在工作。谢谢

下面是一个使用CloudFront的Rails 5.2应用程序示例:

除了asset_主机之外,您还应该为您的资产配置
缓存控制
头。这就是CloudFront几乎永远缓存不可变的
应用程序-5deb6995ce9b984d469b27c58cc92a095d19cd13e0acd622ffe426c41826e055.js
命名资产的原因

Rails.application.configure do
  config.action_controller.asset_host = "https://d372g5jsa84e2.cloudfront.net"
  config.public_file_server.headers = {
    'Cache-Control' => 'public, max-age=31536000'
  }
end
如上所述,使用资产管道
url
helpers。下面是SCC
font-url
helper的一个示例:

@font-face {
  font-family: 'Inconsolata';
  src: font-url('Inconsolata-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

body {
  font-family: "Inconsolata";
}

下面是一个使用CloudFront的Rails 5.2应用程序示例:

除了asset_主机之外,您还应该为您的资产配置
缓存控制
头。这就是CloudFront几乎永远缓存不可变的
应用程序-5deb6995ce9b984d469b27c58cc92a095d19cd13e0acd622ffe426c41826e055.js
命名资产的原因

Rails.application.configure do
  config.action_controller.asset_host = "https://d372g5jsa84e2.cloudfront.net"
  config.public_file_server.headers = {
    'Cache-Control' => 'public, max-age=31536000'
  }
end
如上所述,使用资产管道
url
helpers。下面是SCC
font-url
helper的一个示例:

@font-face {
  font-family: 'Inconsolata';
  src: font-url('Inconsolata-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}

body {
  font-family: "Inconsolata";
}

你是在使用helpers
image\u标签
还是
image\u url
来显示你的图像?我想我需要这样做?是的,如果你使用图像helpers,rails会在你的图像前面加上
config.action\u controller.asset\u host
中定义的值。有关更多信息,请参阅。您是在使用helpers
image\u标记
还是
image\u url
来显示图像?我想我需要这样做?是的,如果您使用图像helpers,rails将使用
config.action\u controller.asset\u host
中定义的值作为图像的前缀。有关更多信息,请参阅。