QA@IT
«回答へ戻る

シンタクスハイライトを設定しました。

217
 
 テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。
 
-    $: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
-    require "pebbles/compgacha"
-    
-    require "minitest/unit"
-    MiniTest::Unit.autorun
-    
-    class TestPebblesCompgacha < MiniTest::Unit::TestCase
-      def test_to_resopond_method
-        assert Pebbles::Compgacha.respond_to?(:complete)
-      end
-    end
+```ruby
+$: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
+require "pebbles/compgacha"
+
+require "minitest/unit"
+MiniTest::Unit.autorun
+
+class TestPebblesCompgacha < MiniTest::Unit::TestCase
+  def test_to_resopond_method
+    assert Pebbles::Compgacha.respond_to?(:complete)
+  end
+end
+```
 
 変更点としては…
  * Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。

rubygems.org にgemファイルをpushすることで公開できます。gemコマンドを適切に使うことで可能なのですが、いろいろとコツが必要なのでツールに頼るのが近道です。いくつか種類がありますが、ここではrubygemのテンプレートから作成してくれる hoe を使った方法を紹介します。

ここでは「pebbles-compgacha」というプロジェクトを作成し、rubygems.orgで公開するまでの流れを見てみましょう。

hoeのインストール

$ gem install hoe

プロジェクトの作成

新規作成

sowコマンドでテンプレートを作成します。

$ sow pebbles-compgacha

erbコマンドでテンプレートが展開されたあと、自分で修正すべき箇所が「FIX」として表示されます。これらを埋めてから次に進みましょう。

... done, now go fix all occurrences of 'FIX':

  pebbles-compgacha/Rakefile:18:  # developer('FIX', 'FIX@example.com')
  pebbles-compgacha/README.txt:3:* FIX (url)
  pebbles-compgacha/README.txt:7:FIX (describe your package)
  pebbles-compgacha/README.txt:11:* FIX (list of features or problems)
  pebbles-compgacha/README.txt:15:  FIX (code sample of usage)
  pebbles-compgacha/README.txt:19:* FIX (list of requirements)
  pebbles-compgacha/README.txt:23:* FIX (sudo gem install, anything else)
  pebbles-compgacha/README.txt:38:Copyright (c) 2012 FIX

Rakefileにはいろんなコメントがありますが、不要なものは全部消しましょう。rubyforge_nameも通常は設定する必要はありません。

$ cd pebbles-compgacha
$ rake -T

rakeタスクの一覧が表示されることを確認しましょう。

コードの実装

gem自体がどんなものかはここでは本質ではないので、githubのコード をご覧ください。

test/test_pebbles_compgacha.rb

テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。

$: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
require "pebbles/compgacha"

require "minitest/unit"
MiniTest::Unit.autorun

class TestPebblesCompgacha < MiniTest::Unit::TestCase
  def test_to_resopond_method
    assert Pebbles::Compgacha.respond_to?(:complete)
  end
end

変更点としては…

  • Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。
  • テストクラス名が「TestPebbles::Compgacha」と名前空間を含んでしまうため、「::」を削除しました。

.autotestも生成されているため、ZenTestをインストールすればファイルの変更を監視してテストを実行してくれます。

$ gem install ZenTest
$ autotest

rubygemsに登録

アカウントを取得

RubyGems.org の 「Sign up」からアカウントを作成します。

パッケージを生成

rakeタスクでパッケージを作ります。

$ rake package

しかし、今回の手順そのままで作成していると失敗するでしょう。rakeコマンドに「--trace」オプションをつけて実行し、失敗の原因を特定しましょう。

ちなみに今回は、テンプレートが作成したファイル名と、Manifest.txtに記述されたパッケージに含めるファイル名が違っているのが原因でした。Manifest.txtを修正し、pkg/pebbles-compgacha-0.1.0.gem が生成されたら準備OKです。

rubygems.orgにリリース

問題なさそうならリリース作業を行いましょう。

$ rake release_to_gemcutter VERSION='0.1.0'

バージョン番号をつけるのは「最終チェック」の意味があるそうです。lib/pebbles/compgacha.rbのクラス定数「VERSION」と同じものを入力しましょう。History.txtの記述ともそろえておいた方がいいでしょう。

また、初回はrubygemsアカウントのメールアドレスとパスワードを聞かれます。普通に入力しても構いませんし、Edit Profile の「API Access」に書いてある手順でAPI Keyを取得しておけば省略することもできます。API Keyは~/.gem/credentialsに保存されます。

確認

しばらく待つとgemコマンドでインストールできるようになります。確認してみましょう。

$ gem search -r pebbles-compgacha

*** REMOTE GEMS ***

pebbles-compgacha (0.1.0)

おめでとう!多くの人に使ってもらえるといいですね。

その他

rubygemsのネーミングルールについて

RubyGemsの開発者であるEric Hodel氏が推奨しているのは…

  • - (ハイフン) : パスの区切り
  • _ (アンダースコア) : 単語の区切り

というネーミングルールです。特別な理由がない限り従うべきでしょう。具体例はブログエントリを参考にしてください。

そもそもpebblesってなによ?

pebblesとは、rubygemsにおけるジョーク用名前空間として回答者が個人的に提唱しているネーミングルールで、RubyKaigi2011でLightning Talksとして提案してきました。よろしければお使いください。

[rubygems.org](https://rubygems.org/) にgemファイルをpushすることで公開できます。gemコマンドを適切に使うことで可能なのですが、いろいろとコツが必要なのでツールに頼るのが近道です。いくつか種類がありますが、ここではrubygemのテンプレートから作成してくれる [hoe](http://docs.seattlerb.org/hoe/) を使った方法を紹介します。

ここでは「pebbles-compgacha」というプロジェクトを作成し、rubygems.orgで公開するまでの流れを見てみましょう。

# hoeのインストール
    $ gem install hoe

# プロジェクトの作成

## 新規作成

sowコマンドでテンプレートを作成します。

    $ sow pebbles-compgacha

erbコマンドでテンプレートが展開されたあと、自分で修正すべき箇所が「FIX」として表示されます。これらを埋めてから次に進みましょう。

    ... done, now go fix all occurrences of 'FIX':
    
      pebbles-compgacha/Rakefile:18:  # developer('FIX', 'FIX@example.com')
      pebbles-compgacha/README.txt:3:* FIX (url)
      pebbles-compgacha/README.txt:7:FIX (describe your package)
      pebbles-compgacha/README.txt:11:* FIX (list of features or problems)
      pebbles-compgacha/README.txt:15:  FIX (code sample of usage)
      pebbles-compgacha/README.txt:19:* FIX (list of requirements)
      pebbles-compgacha/README.txt:23:* FIX (sudo gem install, anything else)
      pebbles-compgacha/README.txt:38:Copyright (c) 2012 FIX

Rakefileにはいろんなコメントがありますが、不要なものは全部消しましょう。rubyforge_nameも通常は設定する必要はありません。

    $ cd pebbles-compgacha
    $ rake -T

rakeタスクの一覧が表示されることを確認しましょう。

## コードの実装

gem自体がどんなものかはここでは本質ではないので、[githubのコード](https://github.com/kwappa/pebbles-compgacha) をご覧ください。

### test/test_pebbles_compgacha.rb

テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。

```ruby
$: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
require "pebbles/compgacha"

require "minitest/unit"
MiniTest::Unit.autorun

class TestPebblesCompgacha < MiniTest::Unit::TestCase
  def test_to_resopond_method
    assert Pebbles::Compgacha.respond_to?(:complete)
  end
end
```

変更点としては…
 * Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。
 * テストクラス名が「TestPebbles::Compgacha」と名前空間を含んでしまうため、「::」を削除しました。

.autotestも生成されているため、ZenTestをインストールすればファイルの変更を監視してテストを実行してくれます。

    $ gem install ZenTest
    $ autotest


# rubygemsに登録

## アカウントを取得

[RubyGems.org](https://rubygems.org) の 「[Sign up](https://rubygems.org/users/new)」からアカウントを作成します。

## パッケージを生成

rakeタスクでパッケージを作ります。

    $ rake package

しかし、今回の手順そのままで作成していると失敗するでしょう。rakeコマンドに「--trace」オプションをつけて実行し、失敗の原因を特定しましょう。

ちなみに今回は、テンプレートが作成したファイル名と、Manifest.txtに記述されたパッケージに含めるファイル名が違っているのが原因でした。Manifest.txtを修正し、pkg/pebbles-compgacha-0.1.0.gem が生成されたら準備OKです。

## rubygems.orgにリリース

問題なさそうならリリース作業を行いましょう。

    $ rake release_to_gemcutter VERSION='0.1.0'

バージョン番号をつけるのは「最終チェック」の意味があるそうです。lib/pebbles/compgacha.rbのクラス定数「VERSION」と同じものを入力しましょう。History.txtの記述ともそろえておいた方がいいでしょう。

また、初回はrubygemsアカウントのメールアドレスとパスワードを聞かれます。普通に入力しても構いませんし、[Edit Profile](https://rubygems.org/profile/edit) の「API Access」に書いてある手順でAPI Keyを取得しておけば省略することもできます。API Keyは~/.gem/credentialsに保存されます。

## 確認

しばらく待つとgemコマンドでインストールできるようになります。確認してみましょう。

    $ gem search -r pebbles-compgacha
    
    *** REMOTE GEMS ***
    
    pebbles-compgacha (0.1.0)

おめでとう!多くの人に使ってもらえるといいですね。

# その他

## rubygemsのネーミングルールについて

RubyGemsの開発者である[Eric Hodel](http://blog.segment7.net/)氏が推奨しているのは…

 * - (ハイフン) : パスの区切り
 * _ (アンダースコア) : 単語の区切り

というネーミングルールです。特別な理由がない限り従うべきでしょう。具体例は[ブログエントリ](http://blog.segment7.net/2010/11/15/how-to-name-gems)を参考にしてください。

## そもそもpebblesってなによ?

pebblesとは、rubygemsにおけるジョーク用名前空間として回答者が個人的に提唱しているネーミングルールで、[RubyKaigi2011](http://rubykaigi.org/2011)でLightning Talksとして[提案](http://www.slideshare.net/kwappa/pebbles-a-namespace-for-joke-gems)してきました。よろしければお使いください。

typo修正

217
 
 gem自体がどんなものかはここでは本質ではないので、[githubのコード](https://github.com/kwappa/pebbles-compgacha) をご覧ください。
 
-### test/test_pebblec_compgacha.rb
+### test/test_pebbles_compgacha.rb
 
 テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。
 

rubygems.org にgemファイルをpushすることで公開できます。gemコマンドを適切に使うことで可能なのですが、いろいろとコツが必要なのでツールに頼るのが近道です。いくつか種類がありますが、ここではrubygemのテンプレートから作成してくれる hoe を使った方法を紹介します。

ここでは「pebbles-compgacha」というプロジェクトを作成し、rubygems.orgで公開するまでの流れを見てみましょう。

hoeのインストール

$ gem install hoe

プロジェクトの作成

新規作成

sowコマンドでテンプレートを作成します。

$ sow pebbles-compgacha

erbコマンドでテンプレートが展開されたあと、自分で修正すべき箇所が「FIX」として表示されます。これらを埋めてから次に進みましょう。

... done, now go fix all occurrences of 'FIX':

  pebbles-compgacha/Rakefile:18:  # developer('FIX', 'FIX@example.com')
  pebbles-compgacha/README.txt:3:* FIX (url)
  pebbles-compgacha/README.txt:7:FIX (describe your package)
  pebbles-compgacha/README.txt:11:* FIX (list of features or problems)
  pebbles-compgacha/README.txt:15:  FIX (code sample of usage)
  pebbles-compgacha/README.txt:19:* FIX (list of requirements)
  pebbles-compgacha/README.txt:23:* FIX (sudo gem install, anything else)
  pebbles-compgacha/README.txt:38:Copyright (c) 2012 FIX

Rakefileにはいろんなコメントがありますが、不要なものは全部消しましょう。rubyforge_nameも通常は設定する必要はありません。

$ cd pebbles-compgacha
$ rake -T

rakeタスクの一覧が表示されることを確認しましょう。

コードの実装

gem自体がどんなものかはここでは本質ではないので、githubのコード をご覧ください。

test/test_pebbles_compgacha.rb

テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。

$: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
require "pebbles/compgacha"

require "minitest/unit"
MiniTest::Unit.autorun

class TestPebblesCompgacha < MiniTest::Unit::TestCase
  def test_to_resopond_method
    assert Pebbles::Compgacha.respond_to?(:complete)
  end
end

変更点としては…

  • Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。
  • テストクラス名が「TestPebbles::Compgacha」と名前空間を含んでしまうため、「::」を削除しました。

.autotestも生成されているため、ZenTestをインストールすればファイルの変更を監視してテストを実行してくれます。

$ gem install ZenTest
$ autotest

rubygemsに登録

アカウントを取得

RubyGems.org の 「Sign up」からアカウントを作成します。

パッケージを生成

rakeタスクでパッケージを作ります。

$ rake package

しかし、今回の手順そのままで作成していると失敗するでしょう。rakeコマンドに「--trace」オプションをつけて実行し、失敗の原因を特定しましょう。

ちなみに今回は、テンプレートが作成したファイル名と、Manifest.txtに記述されたパッケージに含めるファイル名が違っているのが原因でした。Manifest.txtを修正し、pkg/pebbles-compgacha-0.1.0.gem が生成されたら準備OKです。

rubygems.orgにリリース

問題なさそうならリリース作業を行いましょう。

$ rake release_to_gemcutter VERSION='0.1.0'

バージョン番号をつけるのは「最終チェック」の意味があるそうです。lib/pebbles/compgacha.rbのクラス定数「VERSION」と同じものを入力しましょう。History.txtの記述ともそろえておいた方がいいでしょう。

また、初回はrubygemsアカウントのメールアドレスとパスワードを聞かれます。普通に入力しても構いませんし、Edit Profile の「API Access」に書いてある手順でAPI Keyを取得しておけば省略することもできます。API Keyは~/.gem/credentialsに保存されます。

確認

しばらく待つとgemコマンドでインストールできるようになります。確認してみましょう。

$ gem search -r pebbles-compgacha

*** REMOTE GEMS ***

pebbles-compgacha (0.1.0)

おめでとう!多くの人に使ってもらえるといいですね。

その他

rubygemsのネーミングルールについて

RubyGemsの開発者であるEric Hodel氏が推奨しているのは…

  • - (ハイフン) : パスの区切り
  • _ (アンダースコア) : 単語の区切り

というネーミングルールです。特別な理由がない限り従うべきでしょう。具体例はブログエントリを参考にしてください。

そもそもpebblesってなによ?

pebblesとは、rubygemsにおけるジョーク用名前空間として回答者が個人的に提唱しているネーミングルールで、RubyKaigi2011でLightning Talksとして提案してきました。よろしければお使いください。

[rubygems.org](https://rubygems.org/) にgemファイルをpushすることで公開できます。gemコマンドを適切に使うことで可能なのですが、いろいろとコツが必要なのでツールに頼るのが近道です。いくつか種類がありますが、ここではrubygemのテンプレートから作成してくれる [hoe](http://docs.seattlerb.org/hoe/) を使った方法を紹介します。

ここでは「pebbles-compgacha」というプロジェクトを作成し、rubygems.orgで公開するまでの流れを見てみましょう。

# hoeのインストール
    $ gem install hoe

# プロジェクトの作成

## 新規作成

sowコマンドでテンプレートを作成します。

    $ sow pebbles-compgacha

erbコマンドでテンプレートが展開されたあと、自分で修正すべき箇所が「FIX」として表示されます。これらを埋めてから次に進みましょう。

    ... done, now go fix all occurrences of 'FIX':
    
      pebbles-compgacha/Rakefile:18:  # developer('FIX', 'FIX@example.com')
      pebbles-compgacha/README.txt:3:* FIX (url)
      pebbles-compgacha/README.txt:7:FIX (describe your package)
      pebbles-compgacha/README.txt:11:* FIX (list of features or problems)
      pebbles-compgacha/README.txt:15:  FIX (code sample of usage)
      pebbles-compgacha/README.txt:19:* FIX (list of requirements)
      pebbles-compgacha/README.txt:23:* FIX (sudo gem install, anything else)
      pebbles-compgacha/README.txt:38:Copyright (c) 2012 FIX

Rakefileにはいろんなコメントがありますが、不要なものは全部消しましょう。rubyforge_nameも通常は設定する必要はありません。

    $ cd pebbles-compgacha
    $ rake -T

rakeタスクの一覧が表示されることを確認しましょう。

## コードの実装

gem自体がどんなものかはここでは本質ではないので、[githubのコード](https://github.com/kwappa/pebbles-compgacha) をご覧ください。

### test/test_pebbles_compgacha.rb

テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。

    $: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
    require "pebbles/compgacha"
    
    require "minitest/unit"
    MiniTest::Unit.autorun
    
    class TestPebblesCompgacha < MiniTest::Unit::TestCase
      def test_to_resopond_method
        assert Pebbles::Compgacha.respond_to?(:complete)
      end
    end

変更点としては…
 * Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。
 * テストクラス名が「TestPebbles::Compgacha」と名前空間を含んでしまうため、「::」を削除しました。

.autotestも生成されているため、ZenTestをインストールすればファイルの変更を監視してテストを実行してくれます。

    $ gem install ZenTest
    $ autotest


# rubygemsに登録

## アカウントを取得

[RubyGems.org](https://rubygems.org) の 「[Sign up](https://rubygems.org/users/new)」からアカウントを作成します。

## パッケージを生成

rakeタスクでパッケージを作ります。

    $ rake package

しかし、今回の手順そのままで作成していると失敗するでしょう。rakeコマンドに「--trace」オプションをつけて実行し、失敗の原因を特定しましょう。

ちなみに今回は、テンプレートが作成したファイル名と、Manifest.txtに記述されたパッケージに含めるファイル名が違っているのが原因でした。Manifest.txtを修正し、pkg/pebbles-compgacha-0.1.0.gem が生成されたら準備OKです。

## rubygems.orgにリリース

問題なさそうならリリース作業を行いましょう。

    $ rake release_to_gemcutter VERSION='0.1.0'

バージョン番号をつけるのは「最終チェック」の意味があるそうです。lib/pebbles/compgacha.rbのクラス定数「VERSION」と同じものを入力しましょう。History.txtの記述ともそろえておいた方がいいでしょう。

また、初回はrubygemsアカウントのメールアドレスとパスワードを聞かれます。普通に入力しても構いませんし、[Edit Profile](https://rubygems.org/profile/edit) の「API Access」に書いてある手順でAPI Keyを取得しておけば省略することもできます。API Keyは~/.gem/credentialsに保存されます。

## 確認

しばらく待つとgemコマンドでインストールできるようになります。確認してみましょう。

    $ gem search -r pebbles-compgacha
    
    *** REMOTE GEMS ***
    
    pebbles-compgacha (0.1.0)

おめでとう!多くの人に使ってもらえるといいですね。

# その他

## rubygemsのネーミングルールについて

RubyGemsの開発者である[Eric Hodel](http://blog.segment7.net/)氏が推奨しているのは…

 * - (ハイフン) : パスの区切り
 * _ (アンダースコア) : 単語の区切り

というネーミングルールです。特別な理由がない限り従うべきでしょう。具体例は[ブログエントリ](http://blog.segment7.net/2010/11/15/how-to-name-gems)を参考にしてください。

## そもそもpebblesってなによ?

pebblesとは、rubygemsにおけるジョーク用名前空間として回答者が個人的に提唱しているネーミングルールで、[RubyKaigi2011](http://rubykaigi.org/2011)でLightning Talksとして[提案](http://www.slideshare.net/kwappa/pebbles-a-namespace-for-joke-gems)してきました。よろしければお使いください。

回答を投稿

rubygems.org にgemファイルをpushすることで公開できます。gemコマンドを適切に使うことで可能なのですが、いろいろとコツが必要なのでツールに頼るのが近道です。いくつか種類がありますが、ここではrubygemのテンプレートから作成してくれる hoe を使った方法を紹介します。

ここでは「pebbles-compgacha」というプロジェクトを作成し、rubygems.orgで公開するまでの流れを見てみましょう。

hoeのインストール

$ gem install hoe

プロジェクトの作成

新規作成

sowコマンドでテンプレートを作成します。

$ sow pebbles-compgacha

erbコマンドでテンプレートが展開されたあと、自分で修正すべき箇所が「FIX」として表示されます。これらを埋めてから次に進みましょう。

... done, now go fix all occurrences of 'FIX':

  pebbles-compgacha/Rakefile:18:  # developer('FIX', 'FIX@example.com')
  pebbles-compgacha/README.txt:3:* FIX (url)
  pebbles-compgacha/README.txt:7:FIX (describe your package)
  pebbles-compgacha/README.txt:11:* FIX (list of features or problems)
  pebbles-compgacha/README.txt:15:  FIX (code sample of usage)
  pebbles-compgacha/README.txt:19:* FIX (list of requirements)
  pebbles-compgacha/README.txt:23:* FIX (sudo gem install, anything else)
  pebbles-compgacha/README.txt:38:Copyright (c) 2012 FIX

Rakefileにはいろんなコメントがありますが、不要なものは全部消しましょう。rubyforge_nameも通常は設定する必要はありません。

$ cd pebbles-compgacha
$ rake -T

rakeタスクの一覧が表示されることを確認しましょう。

コードの実装

gem自体がどんなものかはここでは本質ではないので、githubのコード をご覧ください。

test/test_pebblec_compgacha.rb

テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。

$: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
require "pebbles/compgacha"

require "minitest/unit"
MiniTest::Unit.autorun

class TestPebblesCompgacha < MiniTest::Unit::TestCase
  def test_to_resopond_method
    assert Pebbles::Compgacha.respond_to?(:complete)
  end
end

変更点としては…

  • Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。
  • テストクラス名が「TestPebbles::Compgacha」と名前空間を含んでしまうため、「::」を削除しました。

.autotestも生成されているため、ZenTestをインストールすればファイルの変更を監視してテストを実行してくれます。

$ gem install ZenTest
$ autotest

rubygemsに登録

アカウントを取得

RubyGems.org の 「Sign up」からアカウントを作成します。

パッケージを生成

rakeタスクでパッケージを作ります。

$ rake package

しかし、今回の手順そのままで作成していると失敗するでしょう。rakeコマンドに「--trace」オプションをつけて実行し、失敗の原因を特定しましょう。

ちなみに今回は、テンプレートが作成したファイル名と、Manifest.txtに記述されたパッケージに含めるファイル名が違っているのが原因でした。Manifest.txtを修正し、pkg/pebbles-compgacha-0.1.0.gem が生成されたら準備OKです。

rubygems.orgにリリース

問題なさそうならリリース作業を行いましょう。

$ rake release_to_gemcutter VERSION='0.1.0'

バージョン番号をつけるのは「最終チェック」の意味があるそうです。lib/pebbles/compgacha.rbのクラス定数「VERSION」と同じものを入力しましょう。History.txtの記述ともそろえておいた方がいいでしょう。

また、初回はrubygemsアカウントのメールアドレスとパスワードを聞かれます。普通に入力しても構いませんし、Edit Profile の「API Access」に書いてある手順でAPI Keyを取得しておけば省略することもできます。API Keyは~/.gem/credentialsに保存されます。

確認

しばらく待つとgemコマンドでインストールできるようになります。確認してみましょう。

$ gem search -r pebbles-compgacha

*** REMOTE GEMS ***

pebbles-compgacha (0.1.0)

おめでとう!多くの人に使ってもらえるといいですね。

その他

rubygemsのネーミングルールについて

RubyGemsの開発者であるEric Hodel氏が推奨しているのは…

  • - (ハイフン) : パスの区切り
  • _ (アンダースコア) : 単語の区切り

というネーミングルールです。特別な理由がない限り従うべきでしょう。具体例はブログエントリを参考にしてください。

そもそもpebblesってなによ?

pebblesとは、rubygemsにおけるジョーク用名前空間として回答者が個人的に提唱しているネーミングルールで、RubyKaigi2011でLightning Talksとして提案してきました。よろしければお使いください。

[rubygems.org](https://rubygems.org/) にgemファイルをpushすることで公開できます。gemコマンドを適切に使うことで可能なのですが、いろいろとコツが必要なのでツールに頼るのが近道です。いくつか種類がありますが、ここではrubygemのテンプレートから作成してくれる [hoe](http://docs.seattlerb.org/hoe/) を使った方法を紹介します。

ここでは「pebbles-compgacha」というプロジェクトを作成し、rubygems.orgで公開するまでの流れを見てみましょう。

# hoeのインストール
    $ gem install hoe

# プロジェクトの作成

## 新規作成

sowコマンドでテンプレートを作成します。

    $ sow pebbles-compgacha

erbコマンドでテンプレートが展開されたあと、自分で修正すべき箇所が「FIX」として表示されます。これらを埋めてから次に進みましょう。

    ... done, now go fix all occurrences of 'FIX':
    
      pebbles-compgacha/Rakefile:18:  # developer('FIX', 'FIX@example.com')
      pebbles-compgacha/README.txt:3:* FIX (url)
      pebbles-compgacha/README.txt:7:FIX (describe your package)
      pebbles-compgacha/README.txt:11:* FIX (list of features or problems)
      pebbles-compgacha/README.txt:15:  FIX (code sample of usage)
      pebbles-compgacha/README.txt:19:* FIX (list of requirements)
      pebbles-compgacha/README.txt:23:* FIX (sudo gem install, anything else)
      pebbles-compgacha/README.txt:38:Copyright (c) 2012 FIX

Rakefileにはいろんなコメントがありますが、不要なものは全部消しましょう。rubyforge_nameも通常は設定する必要はありません。

    $ cd pebbles-compgacha
    $ rake -T

rakeタスクの一覧が表示されることを確認しましょう。

## コードの実装

gem自体がどんなものかはここでは本質ではないので、[githubのコード](https://github.com/kwappa/pebbles-compgacha) をご覧ください。

### test/test_pebblec_compgacha.rb

テンプレートから作成したテストコードは、Ruby1.9系ではそのまま動きません。とはいえ放置したままだと膝に矢を受けてしまいますので、最低限のテストを書いて動くようにしておきます。

    $: << File.join(File.dirname(File.expand_path(__FILE__)), %w(.. lib))
    require "pebbles/compgacha"
    
    require "minitest/unit"
    MiniTest::Unit.autorun
    
    class TestPebblesCompgacha < MiniTest::Unit::TestCase
      def test_to_resopond_method
        assert Pebbles::Compgacha.respond_to?(:complete)
      end
    end

変更点としては…
 * Ruby1.9にはtest/unitが添付されていません。標準添付のminitest/unitを使うようにしました。
 * テストクラス名が「TestPebbles::Compgacha」と名前空間を含んでしまうため、「::」を削除しました。

.autotestも生成されているため、ZenTestをインストールすればファイルの変更を監視してテストを実行してくれます。

    $ gem install ZenTest
    $ autotest


# rubygemsに登録

## アカウントを取得

[RubyGems.org](https://rubygems.org) の 「[Sign up](https://rubygems.org/users/new)」からアカウントを作成します。

## パッケージを生成

rakeタスクでパッケージを作ります。

    $ rake package

しかし、今回の手順そのままで作成していると失敗するでしょう。rakeコマンドに「--trace」オプションをつけて実行し、失敗の原因を特定しましょう。

ちなみに今回は、テンプレートが作成したファイル名と、Manifest.txtに記述されたパッケージに含めるファイル名が違っているのが原因でした。Manifest.txtを修正し、pkg/pebbles-compgacha-0.1.0.gem が生成されたら準備OKです。

## rubygems.orgにリリース

問題なさそうならリリース作業を行いましょう。

    $ rake release_to_gemcutter VERSION='0.1.0'

バージョン番号をつけるのは「最終チェック」の意味があるそうです。lib/pebbles/compgacha.rbのクラス定数「VERSION」と同じものを入力しましょう。History.txtの記述ともそろえておいた方がいいでしょう。

また、初回はrubygemsアカウントのメールアドレスとパスワードを聞かれます。普通に入力しても構いませんし、[Edit Profile](https://rubygems.org/profile/edit) の「API Access」に書いてある手順でAPI Keyを取得しておけば省略することもできます。API Keyは~/.gem/credentialsに保存されます。

## 確認

しばらく待つとgemコマンドでインストールできるようになります。確認してみましょう。

    $ gem search -r pebbles-compgacha
    
    *** REMOTE GEMS ***
    
    pebbles-compgacha (0.1.0)

おめでとう!多くの人に使ってもらえるといいですね。

# その他

## rubygemsのネーミングルールについて

RubyGemsの開発者である[Eric Hodel](http://blog.segment7.net/)氏が推奨しているのは…

 * - (ハイフン) : パスの区切り
 * _ (アンダースコア) : 単語の区切り

というネーミングルールです。特別な理由がない限り従うべきでしょう。具体例は[ブログエントリ](http://blog.segment7.net/2010/11/15/how-to-name-gems)を参考にしてください。

## そもそもpebblesってなによ?

pebblesとは、rubygemsにおけるジョーク用名前空間として回答者が個人的に提唱しているネーミングルールで、[RubyKaigi2011](http://rubykaigi.org/2011)でLightning Talksとして[提案](http://www.slideshare.net/kwappa/pebbles-a-namespace-for-joke-gems)してきました。よろしければお使いください。