2016-06-11 6 views
0

別のGemと同じ実行可能ファイルを持つRuby Gemを使いたいと思っています。同じ名前の実行可能ファイルでRuby gemを作成していますか?

command argsと呼ばれると、何かをするか、コマンドを他のGemに渡します。

最初の問題は、2つの同じ名前の実行可能ファイルを実行できないことです。このエラーが発生します:

Bundlerは別の宝石用に作成されたbinstubを使用しています。これは非推奨です。将来のバージョンでは、システム/バンドルの競合を回避するためにbundle binstub yourgemが必要な場合があります。

どのようにして同じ名前の実行可能ファイルを持つGemを作成し、ターゲットファイルが実行されるようにすることができますか?

答えて

1

これを管理するためにBundlerやRubygemsに依存することはできません。それはあなたのgem specで指定した実行ファイルをそのディレクトリのbin/にコピーします。

最初に問題になるのは、実行可能な実行ファイルが、宝石がインストールされた順序に依存する可能性があります。これは保証できません。

あなたが持つもう1つの問題は、gemのインストールでコードを実行できないため、gemをインストールした人にこの設定を自動化しようとするコードを実行できなくなることです。

あなたの宝石は、矛盾しない実行可能ファイルを提供する必要があります。宝石をインストールするユーザ、README、ブログ投稿などに表示されるpost install instructionsをあなたの宝石のスペックに提供することができます。実行可能ファイルを指し示すエイリアスを設定する必要があることをユーザに伝えることができます。私がエイリアスを認識しているすべてのシェルでは、ファイルシステムの実行可能ファイルの前に実行されます。

エイリアスをバイパスして元の実行可能ファイルを実行したいときには、コマンドをエスケープするように人々に指示することができます。 \original-gem。これは、ほとんどのシェルでエイリアスと関数の検索をバイパスし、ユーザがデフォルト(スーパーエイリアスを介して)としてあなたの超素晴らしいバージョンと簡単にオリジナルにアクセスする方法を与えることができます。

関連する問題