首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails部署-运行资产:每个已部署的环境预编译一次,还是每个构建只预编译一次?

Rails部署-运行资产:每个已部署的环境预编译一次,还是每个构建只预编译一次?
EN

Stack Overflow用户
提问于 2012-10-17 04:21:11
回答 2查看 304关注 0票数 3

TL;DR:运行资产:预编译会将生产资产主机注入到为非生产环境生成的资产中。

背景:我们当前部署Rails应用程序的方式是CI服务器将每个成功的构建作为tarball部署到集成环境中。这个tarball一直被提升到prod env。但即使在我们对应用程序进行tar以推广到不同的环境之前,我们也会运行

代码语言:javascript
运行
复制
rake assets:precompile

在压缩之前运行此命令后,我们最终将编译后的资源作为tarball的一部分,这节省了单个环境的部署时间(预编译是sloow)。

问题:在我们在生产环境中引入asset_host属性之前,这种安排工作得很好。因为在默认情况下,assets:precompile在生产环境中运行,并且sass文件使用image-url标记引用图像资产,所以资产主机开始被预编译器选取,并且生成的资产开始具有到生产环境的直接URL引用。显然,这是不可接受的。

在互联网上搜索得到了这个Github Issue,这是对我所遇到的问题的一个非常接近的描述。看到gem维护者的反应,这似乎是在运行资产:为所有环境预编译一次,而不是每个环境预编译一次似乎不是一个好主意。但考虑到预编译时间很慢,这似乎是我们唯一的方法。

那么其他Rails部署是如何处理这个问题的呢?

EN

回答 2

Stack Overflow用户

发布于 2012-10-26 04:19:27

我正在解决非常相似的问题。我们的解决方案是为每个单独的环境运行预编译-在我们的例子中,这些环境是登台和生产环境。原因是相同的-不同的资产主机。

如果可以,请仅在需要和真正需要资产的环境中运行预编译。

我们使用Capistrano与capistrano-ext gem一起进行部署。这允许我们指定不同的阶段,并为每个阶段指定特定于该阶段的设置和方法(如果是stage ==环境,则为环境)。

票数 0
EN

Stack Overflow用户

发布于 2013-04-05 17:21:27

将public/assets/manifest.yml签入源代码控制

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12922782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档