最初の宝石を書く

gemを書いた私の経験をお伝えしたいと思います。 私はこのアイデアを長い間持っていましたが、実装には至りませんでした。 すべては平凡な怠lazと十分なモチベーションの欠如にかかっていました。 しかし、1週間前、メール配信サーバーに関連するプロジェクトを手に入れました。



発電機を選択してください


最初の段階では、ライブラリをどのように作成するかを決定する必要がありました。ゼロから作成するか、何らかのジェネレーターを使用します。 私の意見では、最初から最初から書くのは非常に難しく、長いので、よく知られているジェネレーターを検討します。 ちょっとした検索で次の宝石が見つかりました:hoe、newgem、bunlder。 個人的には、newgemとbundlerの2つが好きでした。 1つ目は、多くのケースをカバーするテンプレートの完全なセットです。 しかし、そのシンプルさ、生成されたファイルの最小限のセット、およびパッケージを作成して後で公開するためのrakeタスクのセットのために、Bundlerを選択しました。



中身は何ですか


したがって、テンプレートを作成するには、ターミナルでコマンドを実行します。



bundle gem foogem







このコマンドは、libフォルダーとgemfile、Rakefileおよびfoogem.gemspecファイルを含むfoogemディレクトリーを作成します。 それぞれ別々に考えてみましょう。 gemfileは、バンドル互換フレームワークと同様に、必要なすべてのgemを含んでいます。 また、geofspec行もあり、foofem.gemspecファイルに宣言された依存関係をロードします。 多くのリソースおよびファイル自体で、gemfileに入力し、.gemspecファイルで必要なgemを指定することをお勧めします。 そこで、開発者はコードの機能に必要な依存関係だけでなく、開発段階で必要なものも指定できます。 add_dependencyメソッドはグローバルな依存関係を示すために使用され、add_development_dependencyは開発モードに使用されます。 さらに、ファイルには開発者に関する情報、簡単な説明、ライブラリのバージョンも保存されます。 Rakefileでは、通常の機能に必要なrakeタスクを指定できます。



libフォルダーは、コンポーネントの主要部分です。 foogem.rbファイルと同じ名前のフォルダーが含まれています。 vesion.rbのバージョンを指定するファイルが含まれています。 foogem.rbファイルに、Bundlerは親切に次のコードを追加します。



require 'foogem/version'

module Foogem

#code place here

end








その後、アイデアを実現します。



書面の検証


gemの開発が終了したら、検証用のテストを作成するとよいでしょう。 個人的に、私は他のテスト環境よりもrspecを好みます。 これを行うには、foogem.specに依存関係を追加します



gem.add_development_dependency 'rspec'







次に、すべてのテストを保存するspecフォルダーを作成します。 すべてのテストには多くの依存関係を含めることができるため、それらを個別のspec_helper.rbファイルで選択し、それを含めます。 すべてのテストはサブディレクトリに配置されます。 自動化を強化するには、次のrakeタスクを追加します。



desc 'Spec all functionality of gem'

task :spec_all do

system("rspec spec/*/")

end








rake spec_all



を使用して、すべての仕様を実行します。



最後のステップは、gemを公開することです。 まず、githubとrubygemにいくつかのアカウントを作成する必要があります(アカウントが存在しない場合)。 その後、githubに空のリポジトリを作成します。 ローカルgitリポジトリのリモートに追加します。 そして、コマンドを実行します:



rake build # gem

rake release # github & rubygems








その後、コマンドを使用してインストールできます



gem install foogem #

rake install #








将来、開発を継続するには、lib / foogem / version.rbのgemのバージョンを変更し、公開手順を繰り返すだけです。



All Articles