首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku Assets预编译

Heroku Assets预编译
EN

Stack Overflow用户
提问于 2013-05-31 04:03:12
回答 3查看 8K关注 0票数 2

今天我正在使用一个在Heroku上运行了几个月的应用程序,为了让一些东西正常工作,我在我的开发环境中运行了:

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

当我提交我的更改并推送到Heroku时,我的请求得到了500个错误:

代码语言:javascript
复制
ActionView::Template::Error (jquery.flexslider-min.js isn't precompiled):

我有点不知所措,我已经尝试了一些方法:

在生产环境中懒惰地编译(我真的不想这么做):

代码语言:javascript
复制
Bundler.require(:default, :assets, Rails.env)

具体列出需要“预编译”的所有文件(也不是真的想要这样做,似乎效率不是很高):

代码语言:javascript
复制
config.assets.precompile += ...

到目前为止,我只是简单地回滚到我的上一个工作版本。我现在卡住了,无法推送新的代码。将设置一个登台环境(就像我很久以前就应该做的那样),但是不确定下一步该做什么,或者什么可以解决这个问题?为什么之前没有抛出一个错误呢?

更新

代码语言:javascript
复制
rake assets:clean

似乎已经解决了这个问题,尽管我不明白为什么。有人能分享一下这方面的见解吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-31 04:23:04

我敢打赌,公共/assets文件夹中manifest.yml中的编译版本/文件名已过期/错误。

如果您对flexslider.js文件进行了更改,则需要使用rake assets:precompile重新编译,并将更新后的版本推送到github。我相信您可以在manifest.yml文件中设置资产的版本。

另外,我相信你可以运行heroku run rake assets:cleanheroku run rake assets:precompile

我不认为在heroku中预编译资源是一个好主意,因为版本和名称冲突/不存储在github中。

您可以清理heroku中的资源并再次推送repo,这样您就不需要在本地预编译并推送到github,除非本地编译中确实存在问题。

我还会花几分钟时间阅读http://guides.rubyonrails.org/asset_pipeline.html

另一种可能是您的文件名与链轮有关。为什么不使用flexslider.js的开发版本,将其重命名为更方便的名称,并允许链轮进行缩小。

票数 2
EN

Stack Overflow用户

发布于 2013-10-09 07:56:16

如果您运行的是Rails4.0或更高版本,那么已经用rake assets:clobber替换了rake assets:clean

然而,与永久删除资产相关的clean和clobber目前存在一些问题。你可以在这里关注这个问题。https://github.com/heroku/heroku-buildpack-ruby/issues/123

票数 3
EN

Stack Overflow用户

发布于 2014-05-23 17:43:22

在GitHub线程中找到了解决方案:

增加${project-root}/config/application.rb中的config.assets.version变量

在我的配置文件末尾添加了config.assets.version = '1.1‘之后,刷新了资产。

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

https://stackoverflow.com/questions/16844955

复制
相关文章

相似问题

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