2012-10-29 30 views
0

我有一个Rails 3.1应用程序,其资源设置为在生产中预编译(本例中为Heroku)。这包括jQuery,jQueryUI和Mapstraction。运行heroku logs,然而,揭示了Mapstraction,映射JS库,可能无法成功预编译:Rails 3.1中的映射预编译错误

2012-10-25T05:13:11+00:00 app[web.1]: ActionView::Template::Error (mxn.js?(googlev3) isn't precompiled): 
2012-10-25T05:13:11+00:00 app[web.1]:  8: <%= javascript_include_tag :application %> 
2012-10-25T05:13:11+00:00 app[web.1]:  9: <%= csrf_meta_tag %> 
2012-10-25T05:13:11+00:00 app[web.1]:  11: <%= javascript_include_tag "mxn.js?(googlev3)" %> 
2012-10-25T05:13:11+00:00 app[web.1]:  12: <script type="text/javascript"> 
2012-10-25T05:13:11+00:00 app[web.1]:  10: <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> 

我怀疑是因为Mapstraction(mxn.js)正在建设一个地理数据服务提供商名称为Rails可能无法处理的参数。它可以在开发环境中在本地工作,不需要预编译。在这种情况下,为什么预编译会失败?

+0

不熟悉的Heroku但javascript_include_tab文档页面上此评论可帮助:http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/javascript_include_tag#949-When-scripts-don-t-end-in-js – dez

+0

谢谢;在这种情况下,问题并不在于它在资产预编译过程中,它似乎不支持除静态文件名之外的任何其他选项来选择要预编译的JS资产。 – huertanix

回答

0

您可以手动包括必要的文件,以使与Rails资产管道Mapstraction工作:

curl https://raw.github.com/mapstraction/mxn/master/source/mxn.js > vendor/assets/javascripts/mxn.js 
curl https://raw.github.com/mapstraction/mxn/master/source/mxn.core.js > vendor/assets/javascripts/mxn.core.js 
curl https://raw.github.com/mapstraction/mxn/master/source/mxn.openlayers.core.js > vendor/assets/javascripts/mxn.openlayers.core.js 

那么你就把

//= require mxn 
//= require mxn.core 
//= require mxn.openlayers.core