我有一些非标准资产(即不是图像/ javascript文件/样式表的文件,例如json和二进制文件),它们位于isolate_namespace
中的可安装引擎(没有app/assets/data
)内。我希望这些成为资产管道的一部分(与图像相同)。
我可以将它们添加到资产路径集合中,例如
class Engine < ::Rails::Engine
config.after_initialize do
Rails.application.config.assets.paths << root.join("app", "assets", "data")
end
end
我可以在Rails控制台中看到资产对资产管道可见(例如,通过Rails.application.assets[]
和ActionController::Base.helpers.asset_path
)。例如,对于文件app/assets/data/foo.json
,托管应用程序的rails控制台中的asset_path
帮助程序为我提供了路径assets/foo.json
,但是该路径不起作用,我得到了
ActionController::RoutingError (No route matches [GET] "/assets/foo.json")
错误。
如何让托管Rails应用程序提供这些文件?
答案 0 :(得分:0)
事实证明,这是json文件具有特定名称的一些奇怪行为。有问题的文件名为schema-[UUID].json
。 Rails似乎认为这些是对某些控制器的调用(即使没有这样的路由,也没有schema
控制器)需要json格式的数据。当我将文件重命名为[UUID]-schema.json
时,它们突然工作。