0

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

  • 包含特定版本的 gems,如 bootstrap-sass
  • 声明几种常见的 CSS 样式,在适当的地方使用 bootstrap 中的 mixin
  • 还提供其他资产。

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

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

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

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

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

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

4

1 回答 1

0

请参阅问题中的警告,这可能是解决此问题的一种非常糟糕的方法

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

To work around this, just require the root file from the other gem in your root file. So in lib/company-common-ui.rb, I have the following:

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"
于 2012-09-07T19:49:39.730 回答