【问题标题】:Mapstraction Precompilation Error in Rails 3.1Rails 3.1 中的 Mapstraction 预编译错误
【发布时间】:2012-10-29 02:29:33
【问题描述】:

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

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

【问题讨论】:

  • 不熟悉 Heroku,但 javascript_include_tab 文档页面上的这条评论可能会有所帮助:apidock.com/rails/ActionView/Helpers/AssetTagHelper/…
  • 谢谢;在这种情况下,问题不在视图中,而是在资产预编译过程中,它似乎不支持除了静态文件名之外的任何东西来选择要预编译的 JS 资产。

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


【解决方案1】:

您可以手动包含必要的文件以使 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

【讨论】:

    猜你喜欢
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2012-07-01
    相关资源
    最近更新 更多