1

Intro : 私は、デフォルトで、いくつかの XML データから情報を引き出し、ドキュメントに対して何らかの処理を行う gem に取り組んでいます。XML の解析には nokogiri を使用しています。ただし、ユーザーが nokogiri をインストールしたくない場合、または既に XML を解析した場合に備えて、ユーザーが XML を自分で解析し、データ処理メソッドを実行するために必要な情報を渡すことを許可したいと考えています。

質問: gem のインストール中に、nokogiri 依存関係をインストールしたくないことをユーザーが指定できるようにする方法はありますか? たとえば(ここでは非常に手を振る)、

gem install crazy_gem --no-nokogiri

そしてgemspecではおそらく次のようなものです

Gem::Specification.new do |s|
  ...
  s.add_dependency 'nokogiri' unless Proc.new { install_flags('no-nokogiri') }
  ...
end

[編集] 上記の gemspec コードにはあまり焦点を当てたくありません。それが機能しないことはわかっているからです。これは、私がやりたいことの例にすぎません。[/編集]

gem install crazy_gem --ignore-dependencies追加の依存関係があるまでうまく機能します。

4

2 に答える 2

3

あなたが求めていることを正確に実行できるとは思いませんが、宝石の機能を再構成すれば、解決策が考えられます。デフォルトで一部の XML を解析してデータを処理するが、オプションで事前に解析されたデータを渡すことができる gem ではなく、主に処理に関係しているがオプションで XML を解析する gem はどうでしょうか (あなたはノコギリを持っています)。

これを行うには、Nokogiri を gemspec の依存関係から除外します (開発の依存関係または要件として追加できます)。

コード内require 'nokogiri'では、 a を含むbegin..endブロックのみを呼び出し、rescue LoadError適切に処理するようにしてください。

于 2011-05-26T23:30:47.390 に答える
0

Gemspec はビルド時に静的ファイルに変換されるため、機能しません。-f依存関係チェックをバイパスするを使用してみてください。

于 2011-05-26T00:42:08.420 に答える