我想将一些常见资产(如css,js和icon图像)打包成一个宝石供我个人使用。
我可以直接使用gem内部的资源,还是必须让生成器将它们移动到主应用程序中?
答案 0 :(得分:3)
您需要做的是:
制作铁路:
module MyGemName
module Rails
class Engine < ::Rails::Engine
end
end
end
将它们放在一个原本属于正确资产路径的目录中,例如lib/assets/stylesheets
。
使用sprockets包含javascripts:
//= require "foobar"
使用sass包含样式表:
@import "foobar";
如果您参考样式表中的图片,请使用sass函数image-url
:
.widget {
background-image: image-url("widget-icon.png");
}
assets目录的行为与在您自己的应用程序中的行为完全相同。
您可以在formalize-rails中找到一个示例,其中包含样式表,javascripts和图像。
答案 1 :(得分:0)
使用Rails 3.2,您可以创建引擎并将资产放在资产目录中,以便自动获取它们。但要注意,如果使用生成器创建可安装引擎,它将在javascripts,images和stylesheets下创建命名空间目录。不要将您的东西放在这些子目录中,否则父应用程序将找不到它们。只需将它们直接放在javascripts,图像或样式表中即可。