如何在没有生成器的Gem for Rails 3.1中打包CSS/JS文件?

dan*_*neu 16 gem ruby-on-rails ruby-on-rails-3.1

我想写一个gem,一旦捆绑到Rails 3.1 Gemfile,包含一些样板CSS和JS文件.

我知道生成器,但是如果没有它们我怎么能这样做,这样可以添加和删除gem的效果而不需要在Rails Gemfile中编辑一行?

理想情况下,我希望gem在安装时包含其默认的CSS/JS,然后让用户使用生成器生成CSS/JS文件,如果他们想要进行任何修改.


这是我从jquery-rails复制的示例gem ,其中包含没有生成器的javascript文件.

css_gem/
  lib/
    css_gem.rb       {1}
    css_gem/
      engine.rb      {2}
  app/
    assets/
      stylesheets/
        css_gem/
          index.css  {3}
          base.css   {4}
Run Code Online (Sandbox Code Playgroud)

{1} lib/css_gem.rb

module CssGem
  require "css_gem/engine"
end
Run Code Online (Sandbox Code Playgroud)

{2} lib/css_gem/engine.rb

module CSSGem
  class Engine < Rails::Engine
  end
end
Run Code Online (Sandbox Code Playgroud)

{3} app/assets/stylesheets/css_gem/index.css

/*
 *= require base
 */
Run Code Online (Sandbox Code Playgroud)

{4} app/assets/stylesheets/css_gem/base.css

.custom { color: red; }
Run Code Online (Sandbox Code Playgroud)

Rails Gemfile

gem 'css_gem', :path => 'path_to_my_local_gem'
Run Code Online (Sandbox Code Playgroud)

这对我不起作用,Rails没有看到CSS文件.我究竟做错了什么?


解决方案:谢天谢地,我找到了一个视频来握住我的手:http://house9.blogspot.com/2011/06/rails-31-asset-gem.html

我不得不手动添加*= require css_gem到我的Rails样式表清单(app/assets/stylesheets/application.css).咄.

小智 7

Zurb有一篇很棒的文章介绍了他们如何将基础资产打包为gem:

"为你的铁路做好准备:新的基础宝石以及如何使自己的资产变得更加美好"


ffo*_*oeg 2

免责声明 - 我还没有尝试过这个。您可以利用 Rails 3.1 中的资产管道,使客户端应用程序可以使用 gem 中的资产,而无需使用生成器。

尚未找到实际使用的示例,但这里是早期文档的链接

http://edgeguides.rubyonrails.org/asset_pipeline.html http://edgeguides.rubyonrails.org/asset_pipeline.html#adding-assets-to-your-gems