2017-12-14 10 views
-2

私はRubyに変換したいbashコマンドラインツールを作った。 私はプログラムを書くのにOptionParserとstuffを使わなければならないことを知っていますが、rakeのようなプログラムを見て、宝石をインストールすると即座に使う準備ができています。どうしてこれなの? optparseを使ってプログラムを作成すると、それを私のbinに入れてアクセス権を与えなければなりません。gemインストール時にすぐにRubyコマンドラインツールを使用する

私はそれを宝石にする場合、どのようにユーザーがmacやwindowsでそれをそのまま使うことができますか?

+0

ruby​​のようなruby(https://github.com/leejarvis/slop)(もっと軽量)や['thor'](http: //whatisthor.com/)(もっと詳しく)。 – engineersmnky

答えて

2

宝石は宝石をインストールする際にRubyGemsによって、ユーザーのPATHに追加された実行可能ファイルを含むことができ、ありがとうございました。

通常、これらのスクリプトは、宝石のbinディレクトリ(または現在はexe)に置かれています。あなたは、スクリプト自体については

Gem::Specification.new do |spec| 
    spec.name  = 'my_awesome_gem' 
    spec.version  = '0.0.1' 

    spec.bindir  = 'bin' 
    spec.executables = ['my_script'] 

    # ... 
end 

必要があります:あなたは、このように、このような何かを置くことができ、あなたのgemspecファイルで

:あなたは、このディレクトリ内のスクリプトが実行ファイルとして扱われるべきであるあなたのgemspecに指定することができますそれが実行可能(Linux/Macではchmod +x bin/my_script)であることを確認し、最初の行として正しいシバンがあることを確認してください。通常、それは次のようになります。

#!/usr/bin/env ruby 

puts 'Hello World' 

あなたはRubyGems guideであなたの宝石に実行可能ファイルを追加する方法についての詳細を学ぶことができます。

最後に、bundle gem my_awesome_gemコマンドを使用して基本的なgem構造を作成する場合、合理的なgemspecファイルと基本構造が自動的に作成されます。あなたのスクリプトをexeディレクトリに入れれば、すべてがうまくいくはずです。

+0

私はこれを行い、 'spec.bindir'として' exe'を指定する必要がありました。 'bin'が正しいと確信していますか? –

+1

伝統的に、 'bin'ディレクトリに置かれていたgemで公開される実行可能なスクリプトです。現在(そして現在の 'bundler'バージョンでは)、これらのスクリプトは' exe'ディレクトリに置かれる傾向があります。binのスクリプトは、宝石の開発中に内部目的でのみ使用されます。しかし、これはまさに慣習です。 gemspecの設定と一致する限り、あなたの好きなディレクトリに名前をつけることができます:) –

+0

助けてくれてありがとう!私はすべてが働いている。この記事でも役立ちました:http://robdodson.me/how-to-write-a-command-line-ruby-gem/ – gazayas

関連する問題