大部分、RubyGemsがこれを処理します。実行可能ファイルをfiles
のリストに含めて、gemspecのexecutables
に入れておく必要があります。例えば、あなたのディレクトリにbin
であなたの実行可能ファイルを置くために、共通のそれをです:
$ ls
bin/ myapp.gemspec lib/ Rakefile
$ ls bin
bin/myapp
あなたgemspecはその後、次のようになります。ユーザーはRubyGemsのを経由してあなたのアプリをインストールする際、myapp
はなり、この時点で
Gem::Specification.new do |s|
s.name = 'myapp'
# whatever else is in your gemspec
s.files = ["bin/myapp","lib/myapp.rb"] # or whatever other files you want
s.executables = ["bin/todo"]
end
彼らのパスに、そしてあなたの実行可能ファイルが、単純に始めることができるようにlib
は、あなたのアプリケーションのロードパスになります。
#!/usr/bin/env ruby
require 'myapp'
# whatever other requires
これは唯一の問題は、開発中にbin/myapp
を実行してアプリを実行させることができないことです。いくつかの開発者は$:
または$LOAD_PATH
経由でロード・パスを操作しますが、これは悪い形とみなされます。
もしあなたがbundlerを使用しているのなら、アプリケーションをローカルでbundle exec
で実行するのが一番簡単です。 bundle exec bin/myapp
。代わりに、RUBYLIB
という環境変数を使用することもできます。 RUBYLIB=lib bin/myapp
、これはlib
をロード・パスに入れます。
"ソースが利用可能"の方が良いかもしれません。ソースコードが「オープンソース」のソフトウェアであるとは限りません。 –
ありがとう、私はそれらを見てみましょう!私は日々ルビー開発者ではないので、私は良い足場を得るために苦労しています。 – tarnfeld
私は意図的に難読化されているものはわからないので、もっと「オープンソース」を意味しました。これは、「オープンソース」と「フリーのオープンソース」が異なるところです。それでも、宝石の大半は何らかのオープンソースライセンスで公開されています。 – tadman