config.assets.precompile - 包括一个文件文件夹?还是完全杀死预编译"功能"?



我已经阅读并尝试了此处的资产管道指南:http://guides.rubyonrails.org/asset_pipeline.html

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

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

我已经尝试了答案:

Rails config.assets.precompile设置以处理应用程序/资产中的所有CSS和JS文件

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

rails config.assets.为特定子文件夹重新编译

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

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在开发模式下找到的所有东西。"然而这样的选项并不存在?

production.rb文件,指的是预编译行,上面写着:

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

而application.js有:

//= require_tree .

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

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

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

您想要创建一个包含以下内容的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 .

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

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

//= require calendars

这应该找到你的"日历清单索引文件"并加载所有依赖的JS文件。不需要在资产管道中添加任何内容,它只会起作用。

最新更新