Rails 3.1中的Mapstraction预编译错误

时间:2012-10-29 02:29:34

标签: ruby-on-rails heroku ruby-on-rails-3.1 mapstraction

我有一个Rails 3.1应用程序,其资产设置为在生产中预编译(在本例中为Heroku)。这包括jQuery,jQueryUI和Mapstraction。但是,运行heroku logs会发现映射JS库Mapstraction可能无法成功预编译:

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可能无法处理该地址。它可以在开发环境中本地工作,无需预编译。关于为什么预编译会在这种情况下失败的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以手动包含必要的文件,以使Mapstraction与Rails资产管道一起使用:

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