Ruby で記述された小さなコマンドライン アプリケーションをデプロイしようとしています。アプリケーションが依存する gem の多くは、私の github アカウントでホストされています。それらの場所をGemfile
適切に指定しました。デプロイ マシンでリポジトリのクローンを作成しbundle install
、ルートから実行すると、すべてがスムーズに進みます。次に、コマンド ライン アプリ (「hippo」という名前) をbin/hippo
. $PATH
アプリをシステムにインストールして、実行可能ファイルを使用するためにパッチを適用したり、実行可能ファイルへのパスを指定したりする必要がないようにしたいと考えています。
を実行するgem install /path/to/my/.gem/file
と、インストールが失敗し、Github アカウントでホストされている個人の gem への依存関係を解決できないと表示されます。これは、gem install
コマンドが を読み取らずGemfile
、 のみを読み取りgemspec
(バンドラーの人々は、なぜファイルGemfile
の代わりにBundleFile
または何かの名前を付けたのですか?)、gem の場所が で指定されているためGemfile
です (ポイントする方法はありません)。 gemspec の github gem ですよね?)。rake install
bundle-scaffolded gem に付属するタスクを使用すると、同じ問題が発生します。ただし、実行するとbundle exec gem install /path/to/my/gemfile
これは、バンドラーによって変更されたロード パスで私の gem を確認し、それらが既にインストールされていると判断するためだと思います。しかし、実行可能ファイルを実行しようとすると、必要なときに依存関係が見つからないため失敗します。require bundler/setup
(実行可能ファイルには、シバンの後の最初の行があることに注意してください)。
だから私は尋ねます:bundlerを使って、rubygemsでホストされていないgemに依存するコマンドラインアプリケーションをデプロイする良い方法は何ですか?