web-dev-qa-db-ja.com

新しいRuby gemを作成する方法は?

新しいRuby gemを作成するには、 Jeweler を使用するか、 Bundler の組み込みgemスケルトンを使用してベースを作成する必要があります宝石?重要な違いは何ですか?

35
Daniel Kehoe

Bundlerを使用

コマンドラインから:

bundle gem your_new_gem

これにより、your_new_gemというディレクトリが作成され、ファイルの基本セットとディレクトリ構造が作成されます。これらは現在、ベストプラクティスと見なされています。すばやく、簡単に、そして始めるのに最適な場所です。

56
Andrew

ジェムの作成はそれほど難しくありません。ツールを使用せずに、ジェムを最初から作成してみることをお勧めします。何が関係しているのか(gemspecを作成し、それをビルドしてrubygems.orgにプッシュする)を理解したら、ツールを使用してプロセスをスピードアップできます。私の推測では、宝石を作ることはほとんど問題ではないので、あなたはそうしないでしょう。

7
iain

ジュエラーと一緒に行きます。 Bundlerスケルトンはあなたに基本を与えるだけです。 Jewelerには、使用できるオプションがたくさんあり、バージョン管理、githubへのプッシュ、gemspecの作成、ビルド、インストールに役立つ多くのrakeタスクがあります。

Rails 3エンジンを使用している場合、アプリのスケルトンを生成してエンジンファイルを含めるジュエラーフォーク(間違いなく進行中の作業)があります。実行する必要があるのはオプションとして--Rails3-engineを使用したジュエラーコマンド。興味がある場合は、次のフォークを使用してください。
https://github.com/johnmcaliley/jeweler

3
johnmcaliley

組み込みのbundleコマンドを使用することをお勧めします。

bundle gem your_gem_name

宝石を作成するときに従うべきいくつかのルールがあります。命名規則やバージョン管理規則など。最近、netguruのブログにgemの作成に関する投稿を書きました。そこに必要なものが見つかると思います。

https://netguru.co/blog/posts/creating-a-gem-a-step-by-step-tutorial

お役に立てれば。

1
Alex Wdowinski

見る価値のある代替案は次のとおりです。 ore

BundlerはRuby gemsの単一のテンプレートを提供しますが、oreには複数の組み込みテンプレートに加えて、独自のテンプレートを作成する機能があります。Git、SVN(urgh)、Mercurialもサポートしています。

1
Jon Cairns

RubyMineでgemを作成することもできます。ファイル>新しいプロジェクト>新しい宝石。とても簡単です。しかし、私はこのアプローチについていくつかメモしたいと思います。

デバッグには、RubyMineはFastDebuggerのgemであるRuby-debug-ideを使用します。現在、ほとんどの人がPry with Byebugを使用していることは知っていますが、Ruby-debug-ideは、Ruby-debugをEclipse(RDT)、NetBeans、RubyMineなどのIDEに接着するインターフェイスです。

[実行]> [構成の編集]> +> [Ruby]で、次のドキュメントに従って、新しいデバッグ構成を追加します: https://www.jetbrains.com/help/Ruby/run-debug-configuration-gem-command .html#1

構成の下の「Rubyスクリプト」の下で、libの下のRuby gemファイルへのパスを追加します:lib/my_gem.rb構成の下の「RubySDK」の下で、RVMgemsetを指定しますI使用しています。Bundlerセクションで、「bundleのコンテキストでスクリプトを実行する」をチェックします。これはbundle execを使用し、プロジェクトのルートにあるGemfileの依存関係を読み取ります。gemの場合、Gemfileには「gemspec」というメソッド呼び出しが含まれています。 "、これはmy_gem.gemspecの依存関係の依存関係を読み取ります。そこで、依存関係がGem :: Specification.newブロックに渡されます。

  spec.add_development_dependency "bundler", "~> 1.7"
  spec.add_development_dependency "rake", "~> 10.0"
1
Donato