Techioz Blog

と はどう違いますか?

概要

Bundle exec rake release を使用して gem を公開する場合の違いを知りたいです。 rake が実行時エラーをキャッチするという点で、gem プッシュよりも利点はありますか?

具体的には、irb とは独立して端末上で実行される実行可能 gem のコンテキストでこれを尋ねます。

例: 私の /bin/my_gem が次の場合:

#!/usr/bin/env ruby
require '../lib/my_gem'

.gemspec には以下が含まれます

s.bindir = "bin"#or even "exe"
s.executables = ["my_gem"]#or s.files.grep(%r{^bin/}) { |f| File.basename(f) }
s.require_paths = ["lib"]

バンドル実行の rake release は、gem プッシュが見逃してしまう設定ミスをキャッチする可能性があるでしょうか?

解決策

私がリリースを気に入っているのは、ベストプラクティスのリリースアクション (タグ付け/タグの検証は重複ではない/ジェムのビルド/プッシュではない) がパッケージ化されているためです。最後にジェムプッシュを使用したとき、イライラするほど面倒だったことを思い出します。 gem のリポジトリで Bundle exec Rails –tasks を実行すると、各タスク (リリースを含む) の説明が表示され、GemHelper のソース コードを読んで詳細を確認できます。

gemspec は、タスクを介してリリースをサポートすることを目的としたメタデータ [‘allowed_push_host’] を設定する必要があります。 Github のレジストリを使用してプライベート gem をホストしている場合は、BUNDLE_GEM__PUSH_KEY=github を設定して、arg –key github で gem がホストに確実にプッシュされるようにし、ホストでの認証に必要な認証情報の設定を定義する必要があります (確認してください)。詳細については、バンドラーのマニュアルと Github ドキュメントを参照してください)。