0

我在这里阅读并尝试了资产管道指南:http: //guides.rubyonrails.org/asset_pipeline.html

...它显示了如何在手动创建和更新的列表中包含特定文件,--或-- Proc 包含一个(或多个目录)但随后排除了 Rails 通常包含的所有其他文件。

我想 += 我的文件文件夹到通常包含的文件。

我已经尝试了答案:

Rails config.assets.precompile 设置处理 app/assets 中的所有 CSS 和 JS 文件

config.assets.precompile 的目的是什么?

rails config.assets.precompile 用于特定子文件夹

...最后一个似乎显示了一个解决方案:

config.assets.precompile += ["*external/calendars*"]

我改为:

    config.assets.precompile += %w["*javascript*"]

或 config.assets.precompile += [" javascript "] (以及大约 20 种其他变体。)

...获取我的 assets/javascript 文件夹。但该目录不包括在内,如错误“...未预编译”所证明的那样。

第三种方法,就是给它

 config.assets.precompile += %w( *.js )

...这可行,但会导致非常非常长的编译,我假设在任何地方都能找到它可以发现的每个 JS 文件。

不用说,将文件添加到手动更新的列表不适合正在进行的应用程序 - 并且丢失 Rails 使用排除性 Proc 预编译的任何未知内容也不会削减它(但这是文档中仅有的两个示例) .

是否没有简单的通配符解决方案来“+-=”一个文件夹 - 或者只是关闭这个“功能”,为每个视图指定我的 JS,并且仍然可以在 Heroku 上工作?

----编辑-我越看越不合理。本质上,解决方案是“加载 Rails 在开发模式下发现 A-OK 的所有内容”。然而这样的选择不存在吗?

引用预编译行的 production.rb 文件说:

  # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)

...和 ​​application.js 有:

//= require_tree .

...所以应该加载该目录下的所有文件 - 但它没有。为什么?我挖掘得越深,这就越没有意义。

4

1 回答 1

1

处理要添加到资产管道的多个 CSS/JS 文件时,一个好的做法是简单地为这些文件创建一个新清单:

假设您有一些 JS 文件,lib/assets/javascripts/external/calendars并且您想通过资产管道加载它们。

您想创建一个index.js包含以下内容的清单文件:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require_tree .

这样external/calendars,由于该require_tree .指令,您添加到目录中的所有 JS 文件都将默认包含在内。

现在,在您的app/assets/javascripts/application.js文件中添加以下行:

//= require calendars

这应该会找到您的“日历清单索引文件”并加载所有相关的 JS 文件。无需在资产管道中添加任何东西,它就可以工作。

于 2013-08-16T07:31:02.193 回答