« Redmineでphpをリポジトリ表示すると文字化けする | トップページ | クラスメソッドをインスタンスメソッドから呼び出す黒魔術 »

2012年12月16日 (日)

Centos6でgemパッケージを作ってrubygems.orgで公開してみた

ちょっとRubyスクリプトを共有したくて、gemパッケージの作り方を調べたのでメモ。

パッケージを作る方法として、newgemやjeweler, bundlerがあり、どれを使うの良いのかなかなか解らなかったのだが、最近は bundler が新しいらしい。
 
そして、公開方法もrubyforgeに登録する方法、githubを使って公開する方法、rubygems.orgに登録する方法が検索結果に出てきて大いに混乱したが、rubygems.orgに登録する方法が最近の本流っぽい。
 
そして、bundlerを使った場合、バージョン管理がgitになるのだが、githubとの連携でもはまった。pushでエラーが出て、さんざん調べた結果gitのバージョンが古いとダメなことが解ったのだが、Centos6でyumをつかってgitをインストールするとVer1.7.1しか入らず、rpmパッケージを探して入れなおす必要があった。
 
今回作ったのは yggdrasil というもの。現状はHello Worldのみ。今後作りこむ予定。
レアな単語でキーワードとして識別しやすいと思うので、以下、コマンド等でそのまま使います。
 
 
● まず、gitのバージョンアップのメモ(Centos6)
 
# git --version              ←バージョン確認
# yum erase git
# yum update perl
# yum install subversion-perl
# yum install perl-YAML
# wget http://pkgs.repoforge.org/git/perl-Git-1.7.11.3-1.el6.rfx.x86_64.rpm
# wget http://pkgs.repoforge.org/git/git-1.7.11.3-1.el6.rfx.x86_64.rpm
# rpm -Uvh perl-Git-1.7.11.3-1.el6.rfx.x86_64.rpm git-1.7.11.3-1.el6.rfx.x86_64.rpm
 
● gemパッケージを作る手順
 
$ gem install bundler              ← Redmine(Rails)の環境を作る時に入れてあった

$ bundle gem yggdrasil           ← yggdrasilディレクトリが出来て雛形が作られる
$ cd yggdrasil

$ vi yggdrasil.gemspec            ← TODOが書かれている箇所等適当に変更

$ vi lib/yggdrasil/version.rb     ← リリースする前にバージョンを変える

$ midir bin
$ vi bin/yggdrasil                  ← 実行コマンドを作るときはbinの下にコマンドを作る
$ cat bin/yggdrasil                ← まずはHello Worldでお試し
#!/usr/bin/env ruby
puts 'Hello World!'

$ git add .

$ git commit -a -m 'initial commit'  ← コミットしないとパッケージに含められないみたい

$ rake build    ← これでpkg/yggdrasil-0.0.0.gem が作られる

# gem install ~/yggdrasil/pkg/yggdrasil-0.0.0.gem  ← gemインストールの動作確認

# yggdrasil     ← インストールされたコマンドの動作確認
Hello World!

# gem uninstall yggdrasil  ←  消しておく

● githubでのコード管理
予めgithubでユーザ登録をして、空のgitリポジトリを用意しておく必要があります。

$ git remote add origin https://github.com/tkusukawa/yggdrasil.git  ← 作ったリポを指定
$ git push -u origin master   ← ここでgithubのID/PWを聞かれます

● rubygems.orgで世界公開
こちらも予めrubygems.orgでユーザ登録しておく必要があります。
 
$ rake release     ← githubのID/PWの後、下記のように失敗する
yggdrasil 0.0.0 built to pkg/yggdrasil-0.0.0.gem
Tagged v0.0.0
Username for 'https://github.com': tkusukawa
Password for 'https://tkusukawa@github.com':
Username for 'https://github.com': tkusukawa
Password for 'https://tkusukawa@github.com':
Pushed git commits and tags
Untagged v0.0.0 due to error
rake aborted!
Your rubygems.org credentials aren't set. Run `gem push` to set them.
Tasks: TOP => release
(See full trace by running task with --trace)
 
$ gem push       ← エラーに従ってやってみるが、これもエラーになる
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at http://rubygems.org/sign_up
   Email:   t.kusukawa@gmail.com
Password:   
Pushing gem to https://rubygems.org...
Signed in.
ERROR:  While executing gem ... (Gem::CommandLineError)
    Please specify a gem name on the command line (e.g. gem build GEMNAME)
 
$ rake release          ← もう一回やってみたらうまく行った。
yggdrasil 0.0.0 built to pkg/yggdrasil-0.0.0.gem
Tagged v0.0.0
Username for 'https://github.com': tkusukawa
Password for 'https://tkusukawa@github.com':
Username for 'https://github.com': tkusukawa
Password for 'https://tkusukawa@github.com':
Pushed git commits and tags
Pushed yggdrasil 0.0.0 to rubygems.org
 
● 公開gem動作確認
 
# gem install yggdrasil
# yggdrasil
# gem uninstall yggdrasil
 
こんな感じでプロジェクトのベースがようやくできたが、まる1日かかった。とほほ。

|

« Redmineでphpをリポジトリ表示すると文字化けする | トップページ | クラスメソッドをインスタンスメソッドから呼び出す黒魔術 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Centos6でgemパッケージを作ってrubygems.orgで公開してみた:

« Redmineでphpをリポジトリ表示すると文字化けする | トップページ | クラスメソッドをインスタンスメソッドから呼び出す黒魔術 »