Rails Asset Gem

今天心血來潮想說來練習怎樣替自己寫的 CSS / JavaScript 包成 Gem ,上網後找到了 xdite 寫的這兩篇文與範例:

  1. 如何打包一個 Asset Gem
  2. 如何打包一個 Gem
  3. ggs-rails 範例

這三個看完其實就會用了,但是我來做一個步驟敘述好了

  1. 先執行 bundle gem PROJECT_NAME ,這個 PROJECT_NAME 請自己取,我在範例中使用的是 HeChienCss
  2. 進入到產生出來的 HeChienCss 資料夾內,然後新增兩個資料夾: vendor/assets/javascriptsvendor/assets/stylesheets。不過如果你只需要 JavaScript 就不需要新增 stylesheets 資料夾,反之亦然。
  3. lib/PROJECT_NAME 資料夾底下新增 engine.rbrailtie.rb 兩個檔案,內容如下述
  4. 編輯 lib/PROJECT_NAME.rb ,內容如下述
  5. 把你要包起來的 CSS / JavaScript 扔到 vendor/assets 資料夾下相對應的目錄,就像你在寫 Rails project 時那樣。
  6. 編輯 PROJECT_NAME.gemspec ,把一些資料改一改,拿掉 TODO, FIXME 字樣
  7. 如果是需要安裝其他 Gem 的話,請編輯 Gemfile 並且寫進去,譬如如果需要 compass 的話就在 Gemfile 內寫 gem 'compass'
# engine.rb

module PROJECT_NAME
  module Rails
    class Engine < ::Rails::Engine
    end
  end
end
# railtie.rb

module PROJECT_NAME
  module Rails
    class Railtie < ::Rails::Railtie; end
  end
end
# PROJECT_NAME.rb


require "PROJECT_NAME/version"

module PROJECT_NAME
  module Rails
    if ::Rails.version < "3.1"
      require "PROJECT_NAME/railtie"
    else
      require "PROJECT_NAME/engine"
    end
  end
end

這樣一來就可以執行 rake build ,然後開一個新的 Rails Project (或用原有的也可以) ,然後在該 Project 內編輯 Gemfile ,寫上 gem 'xxxx', :path => "/path/to/your/asset/project" 後執行 bundle 應該就可以正常了。

如果執行 rake build 會噴 Error 是跟 FIXMETODO 有關的話可以看看這篇底下的解法(其實很簡單就是了)

Comments

comments powered by Disqus