0

弊社では複数のアプリケーション(新規開発)を作成しております。これらのアプリ間で共通のルック アンド フィールを確立するために、次のような gem を作成したいと考えています。

  • bootstrap-sass のような特定のバージョンの gem を組み込む
  • 必要に応じてブートストラップのミックスインを使用して、いくつかの一般的な CSS スタイルを宣言します
  • 他のアセットも提供します。

私たちが開発するアプリケーションには、私の common-ui gem を含めるだけでよいようにしたいと考えています。bootstrap などを直接含めるべきではありません。

gem から scss を公開するパターンは非常に単純です (bootstrap-sass プロジェクトを見てください)。興味深いのは、scss がブートストラップにアクセスする必要がある場合です。アプリケーションに私の scss が含まれていると、パイプラインはブートストラップを見つけることができず、すべてが停止するというエラーを出します。

私が説明したことを行う宝石を作成するための最良のアプローチは何ですか?

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

SO の形式によりよく従うために、私が思いついたこと (およびなぜそれが機能すると思うのか) で質問に答えます。私はレールに少し慣れていないので、私の答えは決して信頼できるものではありません。コメントしたり、物事を行うためのより良い方法を提案したりしてください。

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

4

1 に答える 1

0

質問の警告を参照してください。これは、この問題を解決するための非常に悪い方法である可能性があります

これがこれまでの作業です。gem がアセットをアプリケーションのアセット パイプラインに公開するには、エンジンとして初期化する必要があります。1 つの gem が別のアセットを使用する場合の問題は、他の gem のエンジンが初期化されていない可能性があるため、パイプラインが他の 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"
于 2012-09-07T19:49:39.730 に答える