创建一个共同的风格宝石

时间:2012-09-07 19:49:40

标签: ruby-on-rails rubygems twitter-bootstrap gem

我们正在公司创建多个应用程序(新开发)。为了尝试在这些应用程序之间建立一个共同的外观,我想创建一个宝石:

  • 合并特定版本的宝石,例如bootstrap-sass
  • 声明几种常见的CSS样式,在适当的情况下使用bootstrap中的mixins
  • 也提供其他资产。

我希望我们开发的应用程序只需要包含我的common-ui gem,它们不应该直接包含bootstrap之类的东西。

从gem中暴露scss的模式非常简单(只需看一下bootstrap-sass项目);事情变得有趣的地方是我的scss需要访问bootstrap。当一个应用程序包含我的scss时,管道会抱怨它无法找到bootstrap并且一切都停止了。

创建符合我所描述的宝石的最佳方法是什么?

=============================================== =============================

为了更好地遵循SO的格式,我将回答我提出的问题(以及为什么我认为它有效)。我对rails很新,所以我的回答绝不是权威的。随意评论或提出更好的做事方式。

=============================================== =============================

1 个答案:

答案 0 :(得分:0)

请参阅问题中的警告,这可能是解决此问题的极其糟糕的方法

到目前为止,这是什么工作。对于gem将资产公开给应用程序的资产管道,必须将其初始化为引擎。一个宝石使用另一个资产的问题是另一个宝石的引擎可能尚未初始化,因此管道不知道其他宝石资产。

要解决此问题,只需要根文件中其他gem的根文件。所以在lib / company-common-ui.rb中,我有以下内容:

require "company-common-ui/version"

module Company
  module Common
    module Ui
      # We don't really need anything here
    end
  end
end

require "company-common-ui/engine"
require "bootstrap-sass"