一週間のカリキュラム 1週間で、Ruby 〜 Ruby on Railsまでを学ぶ
シリーズの2日目、ライブラリの仕組みについて学び、自身でGEMを作ってみます。
2日目の内容
自分でライブラリを作成してみる。
単純に足し算を行うだけの sumというGemパッケージを作成してみましょう。
その前に・・・
同じディレクトリ内で sum.rb main.rb をそれぞれ作成してテストしてみましょう。
#sum.rb
# a,bを足すだけの関数
def sum(a,b)
puts a.to_i + b.to_i
end
#main.rb
require "./sum"
sum(1,3)
main.rbを実行すれば、足し算の関数が利用できてるのがわかります。 この簡単な関数をGemパッケージにしてみます。
Gemパッケージ作成の準備
#パッケージを作成するディレクトリを作成
$ mkdir SumProject
$ cd SumProject
#gem作成に必要な gemspecファイルを作成
$ touch sum_gem.gemspec
#libディレクトリを作り中にプログラム用のファイルを作成
$ mkdir lib
$ cd lib
$ touch sum_gem.rb
それぞれのファイルの中身は下記の通りです。
#./lib/sum_gem.rb
# a,bを足すだけの関数
def SumGem(a,b)
puts a.to_i + b.to_i
end
#./sum_gem.gemspec
Gem::Specification.new do |s|
s.name = 'sum_gem'
s.version = '0.0.1'
s.date = '2022-02-06'
s.summary = "Simple Add Function"
s.description = "Test Gem"
s.authors = ["gp-standard"]
s.email = 'dev@gp-standard'
s.homepage = 'https://gp-standard.com'
s.license = 'MIT'
s.files = ["lib/sum_gem.rb"]
end
準備が出来たらビルドコマンドを叩きます。
$ gem build sum_gem.gemspec
Successfully built RubyGem
Name: sum_gem
Version: 0.0.1
File: sum_gem-0.0.1.gem
無事成功すると、ディレクトリに sum_gem-0.0.1.gem というファイルが出来上がってるのがわかります。
Gemファイルを使うには?
さきほど requireで同じディレクトリにあるファイルからsumを呼び出しましたが、今回は作成したGemファイルをインストールして SumGem関数を再利用したいと思います。
さきほど作成された sum_gem-0.0.1.gem ファイルを使ってまずはPC自体にインストールしてみます。
$ gem install sum_gem-0.0.1.gem
Successfully installed sum_gem-0.0.1
Parsing documentation for sum_gem-0.0.1
Installing ri documentation for sum_gem-0.0.1
Done installing documentation for sum_gem after 0 seconds
1 gem installed
これで、自分の作成したライブラリがインストールされてるわけですが、本当に入ってるかどうかを listコマンドで確認します。
$ gem list -d sum
*** LOCAL GEMS ***
sum_gem (0.0.1)
Author: gp-standard
Homepage: https://gp-standard.com
License: MIT
Installed at: /Users/admin/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0
Simple Add Function
無事、入ってるのが確認できますね。
作成したパッケージを再利用する。
完全に別のディレクトリを作って下記のように requireしてみてください。 動作が確認できるはずです。
# main.rb
require "sum_gem"
SumGem(1,3)
自作したGemをアンインストール
今回のライブラリはよほど使う事は無いはずなのでアンインストールしときましょう。
$ gem uninstall sum_gem
Successfully uninstalled sum_gem-0.0.1
Gemを作成して公開も可能です。
[参照](https://qiita.com/harashoo/items/1284fd5362c1a4f6c8a8)
今後、役に立つパッケージなどが出来た場合に、是非公開してみましょう。