我正在尝试构建一个“管理后端”Rails引擎。假设引擎具有以下资产:
ENGINE/app/assets
├── javascripts
│ └── railsyard
│ ├── admin.js.coffee
│ ├── admin_customizations.js.coffee
...
admin.js.coffee
需要admin_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
gem modernizr-rails
是托管应用程序的依赖项,而不是引擎。
请注意,如果我尝试从资产文件中要求modernizr
而不是某个引擎资产文件的覆盖,那么一切都会再次起作用。
有没有办法解决这种情况?
答案 0 :(得分:0)
我相信我已经完成了你所描述的内容而没有你说你有的问题。
你确定没有其他事情发生吗?获取忽略的需求行没有多大意义 - 链接器应该包含所需的文件,如果找不到它则引发。只是默默无所事事似乎并不合适。
你可能会在链轮或轨道资产管道中使用它来触发错误 - 但更有可能的是,还有其他事情正在发生。
你确定你没有在本地应用程序和/或引擎中意外地提供了你自己的空白'modernizr.js`文件,意外地覆盖了你想要从modernizr gem那里获得的文件吗?
sprockets require
行确实需要位于文件中任何代码之前的注释中,它们必须位于初始的前置注释块中。可能会让你?
或者其他可能实际上并不是你认为的东西。
我自己并没有实际使用coffeescript,某种方式与coffeescript有些奇怪?