ruby-on-rails – 资源在预编译时说“不预编译”

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 资源在预编译时说“不预编译”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,当我尝试使用资产管道时,我收到这个错误.我不明白是什么原因造成的.
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Photos#show

Showing .../app/views/photos/_photo_view.html.haml where line #2 raised:

jquery.autocomplete isn't precompiled

Extracted source (around line #2):

1: - content_for :scripts do
2:  = javascript_include_tag 'jquery.autocomplete'

但是,这是预编译的.我运行rake资产:预编译RAILS_ENV =在启动服务器之前的生产,在我的公共/资产目录中,我有以下文件:jquery-5550a245a55b28927b5552cac182e612.autocomplete.js以及.js.gz,它准确地反映在清单中:

#manifest.yml
---
application.js: application-4277323e3f7506b71f45c71e8a3a7c8f.js
jquery.autocomplete.js: jquery-5550a245a55b28927b5552cac182e612.autocomplete.js
jquery.cycle.all.min.js: jquery-183ef696b43944deaee5778d3094dbdd.cycle.all.min.js
jquery.fancybox.js: jquery-e52e44b2b4fb349bade9beb91461a810.fancybox.js
jquery.plupload.queue.js: jquery-f2e7f6ad7d2e5ca50235ed21f8d573cc.plupload.queue.js
jquery.tools.js: jquery-c53e304240fa56767fe0f2a00cb4bceb.tools.js
plupload.full.js: plupload-5dd26ee3fff6b627c19f196e9d1429dd.full.js
application.css: application-ce5217e1714cbc4e9c3ff6c5dfc9b221.css
fancybox.css: fancybox-9ee9c36f391086e4b0629b7df4042390.css
jquery.plupload.queue.css: jquery-661fbf3f503aa32ff11c004838c0820b.plupload.queue.css
jquery.js: jquery-4d23f0cfea862f56deb04f0a8ab1fcee.js
jquery.min.js: jquery-8a50Feed8d29566738ad005e19fe1c2d.min.js

有关的javascript文件没有加载到我的application.js文件中,因为我只需要在一个视图中,不要在应用程序的其他任何地方使用它.为了解决这个问题(并修复链接尝试编译sass partials),我配置了我的预编译正则表达式:

#environments/production.rb
config.assets.precompile = [/^[a-zA-Z]*\..*/]

(上述正则表达式预编译以字母开头的任何文件,并忽略以非字母字符开头的文件,如下划线).

有谁有任何洞察到什么导致这个和如何可以解决?资产管道正在让我拉出我的头发!

UPDATE

刚刚发现,Rails.configuration.assets.digests在生产中返回零.也许问题在于,由于某些原因,链轮没有找到manifest.yml.

我可能错了,但是在查找manifest.yml时,似乎在链接中没有使用asset_host在config中.

https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/sprockets/railtie.rb#L38

解决方法

我自己一直在摔跤的问题,尽管config.assets.compile = false设置,我怀疑上面的例子是将标志设置为true.

Cannot configure assets via pipeline on local production rails 3.1.3 server

我的观察结果是UberNeet建议的Sprockets 2.0.3错误.解决方法是从资产名称删除期间,或将其作为清单的一部分,而不是直接链接到该清单.

错误报告在这里是:https://github.com/rails/rails/issues/3398

看看上面的问题,并根据我过去两天的经验来统计它,我怀疑当config.assets.compile = true设置时,资产命名有一个相关的问题.这个问题可能源自资产命名 – 您的清单将jquery.autocomplete库编译为:

jquery-5550a245a55b28927b5552cac182e612.autocomplete.js

但是,当您使用耙子资源通过耙子预编译这些资产:预编译时,我相信它们实际上是编译为:

jquery.autocomplete-5550a245a55b28927b5552cac182e612.js

这可能是这个差异导致你提到的问题.可能值得提出另一个github问题,虽然上面列出了解决方法,我知道Rails 3.2将使用Sprockets 2.1.0,它可能包含此问题的修复程序.

猜你在找的Ruby相关文章