16

これで、Ruby ライブラリが作成されました。

rubygem をどのように作成して公開しますか? また、rubygem の作成と公開に関してよくある落とし穴や落とし穴にはどのようなものがありますか?

4

6 に答える 6

6

独自の gem を作成するのに役立つツールがいくつかあります。hoenewgemが最もよく知られており、多くの優れた品質を備えています。ただし、hoe は gem への依存関係として追加され、newgem は非常に大きなツールになり、gem をすばやく作成してデプロイしたい場合には扱いにくくなります。

私のお気に入りのツールは、Tim Peaseの Mr Bonesです。軽量で機能が豊富で、プロジェクトに依存関係を追加しません。bones <my_project_name>それを使用してプロジェクトを作成するには、コマンド ラインで実行するだけでlib、コード用のbinディレクトリ、ツール用のディレクトリ、およびテスト ディレクトリを備えたスケルトンが構築されます。構成は にありRakefile、明確かつ簡潔です。数か月前に行ったプロジェクトの構成は次のとおりです。

load 'tasks/setup.rb'

ensure_in_path 'lib'
require 'friend-feed'

task :default => 'test'

PROJ.name = 'friend-feed'
PROJ.authors = 'Clinton R. Nixon'
PROJ.email = 'crnixon@gmail.com'
PROJ.url = 'friend-feed.rubyforge.org'
PROJ.rubyforge_name = 'friend-feed'
PROJ.dependencies = ['json']
PROJ.version = FriendFeed::VERSION
PROJ.exclude = %w(.git pkg)

Mr Bones には、あなたが期待する標準的な機能セットがあります。これを使用して、ライブラリの gem と tarfile をパッケージ化したり、RubyForge でリリースしてそこにドキュメントをデプロイしたりできます。ただし、そのキラー機能は、ホーム ディレクトリでスケルトンをフリーズする機能です。を実行するbones --freezeと、 という名前のディレクトリ.mrbonesがホーム ディレクトリにコピーされます。そこにあるファイルを編集して、自分のやり方で動作する gem のスケルトンを作成できます。それ以降、ボーンを実行して新しい gem を作成すると、個人の gem スケルトンが使用されます。実行bones --unfreezeして Mr Bones を解凍すると、スケルトンがバックアップされ、デフォルトのスケルトンが再び使用されます。

(編集者注: 私はこれについて数か月前にブログ記事を書きました。この記事のほとんどはそこからコピーされています。)

于 2008-09-23T18:40:05.237 に答える
3

特にオープンソースプロジェクトの場合は、開始する場所としてgithubをお勧めします。

于 2008-09-23T11:22:09.563 に答える
3

そして、グーグル検索も試してみてください...私にとって最初の検索結果...

于 2008-09-23T11:26:46.497 に答える
3

また、宝石の作成プロセスを自動化できるHoegemをチェックアウトすることもできます。

参照: http: //nubyonrails.com/articles/tutorial-publishing-rubygems-with-hoe

于 2008-09-23T11:31:03.630 に答える
1

私は実際にこれについてのチュートリアルを書きました、そして私は学びながらそれを書きました。ライブラリよりも、私が書いたゲームに焦点を当てています。また、自分でではなく、rakeを介してgemを構築することを前提としています。

  • 宝石の作成方法に関するパート1 。
  • ジェムによってインストールされたバイナリを実行し、リソースにアクセスする方法についてのパート2 。
于 2008-09-27T20:32:43.957 に答える
1

hoe は ruby​​gems 1.2 から依存関係として追加されなくなりました。その rake タスクは、rubyforge への ruby​​gem のデプロイに焦点を当てています。github から gem を提供したいだけなら、役立ついくつかの新しい鍬風のレーキ タスク ツールがあると思います。

于 2008-12-30T04:30:04.433 に答える