4

より大きなプロジェクトの主要な機能をrubygemに抽出しようとしています。

私が作成した小さなフレームワークは、さまざまなインポート/エクスポートオプションのために、いくつかの追加のgemを使用しています。つまり。

  • csvインポート/エクスポート用のFasterCSV(ruby 1.8の場合)
  • csvインポート/エクスポート用のノコギリ
  • グラフのGraphViz..。
  • PDF
  • ..。

gemのユーザーが、必要のないときにすべてのgemをインストールしてロードすることは望ましくありません。

それは可能ですか?

4

1 に答える 1

0

初期化子のコードは単なるコードです... gem-user に一連の構成オプションを渡し、それらのオプションが存在する場合にのみ config.gem 依存関係をロードすることができます。これを行う 1 つの方法は、構成環境 (config/environment.rb など) でグローバル値を設定することです。

CSV_EXPORTS = XML_EXPORTS = true
PDF_EXPORTS = false

次に、独自の gem に次のように記述します。

config.gem 'fastercsv' if defined?(CSV_EXPORTS)
config.gem 'nokogiri'  if defined?(XML_EXPORTS)
if defined?(PDF_EXPORTS)
  config.gem 'prawn' 
  config.gem 'prawn-layout'
end
# etc 

「定義された?」を使用します。何も設定しない場合、gem はロードを試みません。また、デフォルトで好きなように設定できることも意味します。

于 2010-09-14T11:29:59.590 に答える