6

我正在尝试构建一个“管理后端”Rails 引擎。假设引擎有以下资产:

ENGINE/app/assets
├── javascripts
│   └── railsyard
│       ├── admin.js.coffee
│       ├── admin_customizations.js.coffee
...

需要的地方,admin.js.coffeeadmin_customizations.js.coffee准备被托管 Rails 应用程序覆盖的空文件。

[ENGINE/app/assets/javascripts/my_engine/admin.js.coffee]
#= require admin_customizations
# ...some code...

[ENGINE/app/assets/javascripts/my_engine/admin_customizations.js.coffee]
# Override this empty file to add custom JS behaviour!

一切都很好,直到我尝试要求一些来自次要宝石的资产:

[APP/app/assets/javascripts/my_engine/admin_customizations.js.coffee]
#= require modernizr # this line gets ignored
alert "Foobar"       # this line works

gemmodernizr-rails是托管应用程序而不是引擎的依赖项。请注意,如果我尝试modernizr从不是某些引擎资产文件的覆盖的资产文件中请求,一切都会再次起作用。

有没有办法解决这种情况?

4

1 回答 1

0

我相信我已经完全按照您的描述做了,而没有遇到您所说的问题。

你确定没有别的事情发生?被忽略的 require 行没有多大意义—— sprockets 应该包含所需的文件,或者如果找不到它则引发。只是默默地什么都不做似乎不对。

您可能会触发 sprockets 或 rails 资产管道使用它的错误 - 但更有可能的是,还有其他事情正在发生。

你确定你没有不小心在本地应用程序和/或引擎中提供了你自己的空白“modernizr.js”文件,不小心覆盖了你想要从modernizr gem 中需要的文件?

sprocketsrequire行确实需要位于文件中任何代码之前的注释中,它们必须位于初始的前言注释块中。那会得到你吗?

或者可能不是你认为的其他东西。

我自己实际上并没有使用coffeescript,coffeescript有点奇怪吗?

于 2012-08-21T03:32:58.293 回答