Ruby on rails 3.1 rails 3.1维护页面资源
在启用资产管道的情况下,如何访问rails 3.1中维护页面上的资产 启用资产管道后,所有资产的文件名中都有一个哈希。然而,维护页面是普通的HTML,apache配置绕过了rails/passenger,因此无法生成正确的资产路径 我需要application.css和一个图像文件。如果是旧的就好了 我能想到一些乱七八糟的东西,但它们都是蹩脚的:Ruby on rails 3.1 rails 3.1维护页面资源,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,在启用资产管道的情况下,如何访问rails 3.1中维护页面上的资产 启用资产管道后,所有资产的文件名中都有一个哈希。然而,维护页面是普通的HTML,apache配置绕过了rails/passenger,因此无法生成正确的资产路径 我需要application.css和一个图像文件。如果是旧的就好了 我能想到一些乱七八糟的东西,但它们都是蹩脚的: 在每次部署时,将我需要的资产符号链接到我在维护文件中使用的通用名称 使我的维护页面动态,生成它,并将标记转储到某个地方-然后修改我的维护“部署”脚本
- 在每次部署时,将我需要的资产符号链接到我在维护文件中使用的通用名称
- 使我的维护页面动态,生成它,并将标记转储到某个地方-然后修改我的维护“部署”脚本
为了方便大家,我在项目中采用了Richard的解决方案,并创建了一个简单的ruby脚本来替换静态HTML错误/维护页面中的资产链接。这是一个深思熟虑的任务,不是一个rake任务,所以它是尽可能快的。它没有Rails依赖性,只是必须从Rails根目录运行
#!/usr/bin/env ruby
require 'yaml'
GLOBS = %w(public/errors_source/*.html)
MANIFEST = "public/assets/manifest.yml"
manifest = YAML::load(File.open(MANIFEST))
GLOBS.each do |glob|
Dir.glob(glob).each do |file|
next unless File.file?(file)
contents = File.read(file)
manifest.each do |asset, compiled_asset|
contents.gsub!(asset, "/assets/#{compiled_asset}")
end
File.open(file.gsub('errors_source/',''), 'w') do |outfile|
outfile.write(contents)
end
end
end
脚本希望静态HTML错误/维护页面位于errors\u source
目录下,并将它们(用哈希版本替换资产)复制到rails根目录
示例维护页面可能如下所示(注意CSS资产链接和徽标图像-这些资产仅与rails主代码共享):
...
...
...
如果你在Heroku上,有一个叫做Trackman的插件。
您可以链接所有资产,它会在S3上部署页面和资产。
实际上,您没有代码。
您还可以使用gem中的实用程序,使开发成为小菜一碟
<html>
<head>
...
<link href="application.css" media="screen" rel="stylesheet" type="text/css"/>
</head>
<body>
...
<a href="/"><img src="logo.png" width="161" height="61"/></a>
...
</body>
</html>