rubygemを作る
256インターンの課題で 「rubygemを作る」 なるものが。
作るっても知識ほぼ0だったもんで中身ほぼコピペですが、とりあえずrubygemsにアップロードして なんとか公開までこぎつけました。
詳しい説明は参照URLをみていただくとして、今回は実際に行った手順をば。
bundler をインストール
bundlerという最強のバージョン管理システム(?) をインストールしてませんで、まずはそこからです。
手順
rubygem をアップデートする
$ gem update --system
bundler をインストール
$ gem install bundler
現段階(2014/4/1)でインストールできたのはBundler version 1.6.0
でした。
これでbundlerのインストールが完了。
事前準備
こっからrubygemを作っていきますが、その前に事前準備がちょこっと必要。
Bundler で gem を作り RubyGems で公開する方法 - 君の瞳はまるでルビー - Ruby 関連まとめサイト
手順
githubにユーザーを登録していない人はアカウントを作る
Rubygemsにユーザー登録していない人はアカウントを作り、API key の設定をする
- ログイン(Sign up)し、画面上部のユーザ名からプロフィールページに移動する
- Edit Profileをクリックし、下部に表示されている curl コマンドを使って設定を行う
rubygem を作る
いよいよ作り始めます。
今回は参照URLに倣い gotatestlorem というダミーテキストを生成するgemを例で作っていくことにします。
ASCIIcasts - “Episode 245 - Bundlerでgemを作る”
手順
1. 任意の作業ディレクトリに移動し、gemの元を作る
今回はデスクトップ上で実行しました。
$ bundle gem gotatestlorem create gotatestlorem/Gemfile create gotatestlorem/Rakefile create gotatestlorem/LICENSE.txt create gotatestlorem/README.md create gotatestlorem/.gitignore create gotatestlorem/gotatestlorem.gemspec create gotatestlorem/lib/gotatestlorem.rb create gotatestlorem/lib/gotatestlorem/version.rb Initializing git repo in /Users/Username/Desktop/gotatestlorem
2. gotatestlorem.gemspec ファイルをいじる
デフォルトだとこんな感じ。
# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'gotatestlorem/version' Gem::Specification.new do |spec| spec.name = "gotatestlorem" spec.version = Gotatestlorem::VERSION spec.authors = ["<gotagotagoat>"] spec.email = ["<gotagotagoat@gmail.com>"] spec.summary = %q{TODO: Write a short summary. Required.} spec.description = %q{TODO: Write a longer description. Optional.} spec.homepage = "" spec.license = "MIT" spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] spec.add_development_dependency "bundler", "~> 1.6" spec.add_development_dependency "rake" end
この TODO って書かれてる部分をいい感じに修正。
# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'gotatestlorem/version' Gem::Specification.new do |spec| spec.name = "gotatestlorem" spec.version = Gotatestlorem::VERSION spec.authors = ["<gotagotagoat>"] spec.email = ["<gotagotagoat@gmail.com>"] spec.summary = %q{Lorem ipsum generator [test program]} spec.description = %q{test program to practice making gem} spec.homepage = "" spec.license = "MIT" spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] spec.add_development_dependency "bundler", "~> 1.6" spec.add_development_dependency "rake", '~> 0' end
こんな感じ。
まあ適当。
3. 作成された lib ディレクトリにある、gotatestlorem.rb に実際のコードを入力する
module Lorem def self.ipsum "Lorem ipsum dolor sit amet, consectetur adipisicing ...." end end
これがダミーテキストを生成してくれるコード。
4. 手順1.で作成されたディレクトリ上でgem build
コマンドを実行し .gemファイルを生成する
$ gem build gotatestlorem.gemspec WARNING: no homepage specified WARNING: See http://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: gotatestlorem Version: 0.0.1 File: gotatestlorem-0.0.1.gem
何やら色々警告されてますが問題なさそうなのでそのままいきます。
ディレクトリの中に gotatestlorem-0.0.1.gem
なるファイルが生成されました。
5. 手順1.で作成されたディレクトリの中身をgitのリモートリポジトリに送る
Githubを利用します。
事前にGithub上でリポジトリを作っておいてください。
今回はgotatestloremという名前で作成しました。
念のため一回git initで初期化してから始めます。(<-これやらないとうまくいかなかった・・・orz )
$ git init $ git add . $ git commit -m "first commit" $ git remote add origin git@github.com:gotagotagoat/gotatestlorem.git $ git push -u origin master
6. Rubygems.org にアップロードし公開する
$ gem push gotatestlorem-0.0.1.gem Pushing gem to https://rubygems.org... Successfully registered gem: gotatestlorem (0.0.1)
成功しやした。
7. 本当にアップロードされてるか確認する
$ gem search -r gotatestlorem
これで出てきたら本当に成功です。
おわり
細々とした設定はいろいろあるにはあるけれど、今回は省略。
思い出しながら書いてるのでどこか間違ってるかもしれませんが。。。