主に、RubyGemsがこれを処理します。実行可能ファイルをfiles
リストに含めexecutables
、gemspecのに入れる必要があります。実行可能ファイルをディレクトリに配置するのが一般的ですbin
。例:
$ ls
bin/ myapp.gemspec lib/ Rakefile
$ ls bin
bin/myapp
gemspecは次のようになります。
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
この時点で、ユーザーがRubyGemsを介してアプリをインストールするmyapp
と、パスに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