(この記事は Ruby Advent Calendar jp:2010 の 22 日目。前日は yuunachan さんでした)
# gem を一度も作ったことない人が gem を初めて作ってみる話です
# この記事を読んで、「gem って意外と簡単に作れるんだ〜」と思ってもらえれば幸いです
ということで、gem 作ってみましょー
まず、gem の生成に必要なファイルを全部一から書くとか気が遠くなる作業なので、ライブラリを使ってひな形をどかどか〜っと作ってしまいます。今だと jeweler っていうライブラリが良いようなのでさくっとインストール。
んで、さっそくひな形を作ってみます。--rspec って付けると、付属するテストを RSpec 仕様にしてくれます。指定しないと Test::Unit ですのでこれはお好みで。--create-repo を付けると github にリポジトリをあらかじめ作ってくれます。あ、最後の misawa っていうのがこの gem の名前です。地獄のミサワにハマっt
どかどか〜っと色んなファイルが生成されましたね。おめでとうございます。これで大体8割型完成です。github にもリポジトリが出来ましたよ☆
https://github.com/sasata299/misawa
そしたら bundle を使って必要なライブラリをがしがしっとインストールします。bundle が無くて動かないよーって人は gem install bundle しといて下さいね。
Rakefile の中の summary と description は要変更です。
では、次に gem の本体(lib以下)を作りましょう。これが無いと gem にする意味が無いですよね。lib/misawa.rb を以下のようにしてみました。適当です。
puts する感覚で misawa というメソッドを使うと、後ろに「ってそれどこ情報よー」っていう非常にウザい台詞を追加してくれます。
で、完成したので(実際はテストとかも書いてくださいね)、これを gem にして他の人もインストールできるようにしてみましょう。
おまじないを唱えて
変更のあったファイル達をコミットして…。そして!このコマンドで gem を生成します!!
キタ━━━━(゚∀゚)━━━━!!
ゴ、ゴクリ。そしてこのコマンドを打つと・・・
出来ました!!こんなんで全世界に公開!!何て簡単なのあなたは!!
ちなみに「rubygems.org のアカウント持ってなかったら http://rubygems.org/sign_up から作ってね」ってメッセージが表示されますがそこからは作れませんでした。。正しい URL は https://rubygems.org/users/new ですね、多分。
これで rubygems にさっきの misawa っていうへっぽこ gem が上がりました。あとは自由にインストールして使うことが出来ます。
https://rubygems.org/gems/misawa
↓のような感じで使えます。簡単でしたね♪
# gem を一度も作ったことない人が gem を初めて作ってみる話です
# この記事を読んで、「gem って意外と簡単に作れるんだ〜」と思ってもらえれば幸いです
ということで、gem 作ってみましょー
まず、gem の生成に必要なファイルを全部一から書くとか気が遠くなる作業なので、ライブラリを使ってひな形をどかどか〜っと作ってしまいます。今だと jeweler っていうライブラリが良いようなのでさくっとインストール。
gem install jeweler
んで、さっそくひな形を作ってみます。--rspec って付けると、付属するテストを RSpec 仕様にしてくれます。指定しないと Test::Unit ですのでこれはお好みで。--create-repo を付けると github にリポジトリをあらかじめ作ってくれます。あ、最後の misawa っていうのがこの gem の名前です。
[sasata299@localhost] $ jeweler --rspec --create-repo misawa create .gitignore create Rakefile create Gemfile create LICENSE.txt create README.rdoc create .document create lib create lib/misawa.rb create spec create spec/spec_helper.rb create spec/misawa_spec.rb create .rspec Jeweler has prepared your gem in misawa Jeweler has pushed your repo to http://github.com/sasata299/misawa
どかどか〜っと色んなファイルが生成されましたね。おめでとうございます。これで大体8割型完成です。github にもリポジトリが出来ましたよ☆
https://github.com/sasata299/misawa
そしたら bundle を使って必要なライブラリをがしがしっとインストールします。bundle が無くて動かないよーって人は gem install bundle しといて下さいね。
[sasata299@localhost] $ bundle Fetching source index for http://rubygems.org/ Using rake (0.8.7) Using bundler (1.0.7) Installing diff-lcs (1.1.2) Using git (1.2.5) Using jeweler (1.5.1) Installing rcov (0.9.9) with native extensions Installing rspec-core (2.1.0) Installing rspec-expectations (2.1.0) Installing rspec-mocks (2.1.0) Installing rspec (2.1.0)
Rakefile の中の summary と description は要変更です。
では、次に gem の本体(lib以下)を作りましょう。これが無いと gem にする意味が無いですよね。lib/misawa.rb を以下のようにしてみました。適当です。
class Object def misawa(msg) puts "#{msg} ってそれどこ情報よー" end end
puts する感覚で misawa というメソッドを使うと、後ろに「ってそれどこ情報よー」っていう非常にウザい台詞を追加してくれます。
で、完成したので(実際はテストとかも書いてくださいね)、これを gem にして他の人もインストールできるようにしてみましょう。
おまじないを唱えて
rake version:write # VERSION ファイルの生成(ちゃっかり 0.0.1 にしました) rake gemspec # misawa.gemspec ファイルの生成
変更のあったファイル達をコミットして…。そして!このコマンドで gem を生成します!!
[sasata299@localhost] $ rake build WARNING: no rubyforge_project specified WARNING: description and summary are identical Successfully built RubyGem Name: misawa Version: 0.0.1 File: misawa-0.0.1.gem
キタ━━━━(゚∀゚)━━━━!!
ゴ、ゴクリ。そしてこのコマンドを打つと・・・
[sasata299@localhost] $ rake release Committing misawa.gemspec Pushing master to origin Tagging v0.0.1 Pushing v0.0.1 to origin Generated: misawa.gemspec misawa.gemspec is valid. WARNING: no rubyforge_project specified Successfully built RubyGem Name: misawa Version: 0.0.1 File: misawa-0.0.1.gem Executing "gem push ./pkg/misawa-0.0.1.gem": gem push ./pkg/misawa-0.0.1.gem Enter your RubyGems.org credentials. Don't have an account yet? Create one at http://rubygems.org/sign_up Email: Password: Signed in. Pushing gem to RubyGems.org... Successfully registered gem: misawa (0.0.1)
出来ました!!こんなんで全世界に公開!!何て簡単なのあなたは!!
ちなみに「rubygems.org のアカウント持ってなかったら http://rubygems.org/sign_up から作ってね」ってメッセージが表示されますがそこからは作れませんでした。。正しい URL は https://rubygems.org/users/new ですね、多分。
これで rubygems にさっきの misawa っていうへっぽこ gem が上がりました。あとは自由にインストールして使うことが出来ます。
https://rubygems.org/gems/misawa
[sasata299@localhost] $ gem sources -a http://rubygems.org/ http://rubygems.org/ added to sources [sasata299@localhost] $ gem install misawa Successfully installed misawa-0.0.1 1 gem installed
↓のような感じで使えます。簡単でしたね♪
require 'rubygems' require 'misawa' misawa "ささたつです" # ささたつです ってそれどこ情報よー