Weitere ähnliche Inhalte
Ähnlich wie How to make gem (16)
Kürzlich hochgeladen (11)
How to make gem
- 2. 最初に必要なもの
Ruby
$ ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin13.0.0]
gem (Ruby標準添付)
$ gem -v
2.1.11
bundler
$ gem install bundler
$ bundle –v
Bundler version 1.5.2
Git
$ git –-version
git version 1.8.3.4 (Apple Git-47)
- 4. ひな形の作成
以下のコマンドでライブラリのひな形を作成
$ bundle gem sample
create sample/Gemfile
create sample/Rakefile
create sample/LICENSE.txt
create sample/README.md
create sample/.gitignore
create sample/sample.gemspec
create sample/lib/sample.rb
create sample/lib/sample/version.rb
- 6. gemspecの編集2
ライブラリの設定を入力する。(以下はsample.gemspecの一部)
今回は変更しない。
Gem::Specification.new do |spec|
# snip
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"]
# snip
end
files : 全てのファイルの配列。
executables : 実行ファイル名の配列。bin以外の場所に配置する場合は変更。
test_files : テスト用ファイルの配列。test,spec,features以外に配置する場合は変更
require_paths : $:(Rubyのライブラリ探索パス)に追加するディレクトリ。
- 8. 依存ライブラリのインストール
ライブラリのルートディレクトリに移動して以下のコマンドを実行する。
$ bundle install --path .bundle
.bundleというディレクトリが作成される。
.bundle/configはbundleの設定ファイルで2回目以降はオプションの指定が不要。
.bundle/rubyに依存関係のライブラリがインストールされる。
.bundle/rubyにインストールされたライブラリは他のシステムに影響を与えない。
.bundle/rubyにインストールされたライブラリのコマンドはbundle execを付け
る事で実行する事が可能。(rspecは例)
$ bundle exec rspec
- 12. テストの実行
テストを実行してみる。
$ bundle exec rake spec
/path/to/ruby -S rspec ./spec/sample/foo_spec.rb -c –fs
/path/to/sample/spec/sample/foo_spec.rb:3:in `<top (required)>': uninitialized constant
Sample::Foo (NameError)
Sample::Fooクラスが定義されていない為、NameErrorがthrowされる。
rakeタスクでなくrspecコマンドでも実行可能。
$ bundle exec rspec
/Users/iiboshiken/work/sample/spec/sample/foo_spec.rb:3:in `<top (required)>':
uninitialized constant Sample::Foo (NameError)
- 14. テストの再実行
テストを再度実行する。
$ bundle exec rake spec
/path/to/ruby -S rspec ./spec/sample/foo_spec.rb -c -fs
Sample::Foo
#greet
returns greeting message
Finished in 0.00252 seconds
1 example, 0 failures
「1 example, 0 failures」なのでテスト成功。
- 17. コマンドの実行
インストールしていない場合
$ ruby -I lib bin/sample
Hello World
rake installした場合
$ bundle exec sample
Hello World
gem install -l sampleした場合
$ sample
Hello World