若干古い記事、かつbundleを使うような記事しか見当たらなかったので、もう少し簡単にできる方法を書く。
といっても、公式の以下のページをなぞるだけ。
https://guides.rubygems.org/make-your-own-gem/
まずはクラス化するなりモジュール化するなり、ライブラリとして使えそうな状態のツールを作成する。
拙作だが、以下のようなイメージ。
https://github.com/syamoji/getInstagram
この中の
getInstagramDataWithTag.rbをリネームしてgem化する。
今回は、 instagram-tag-searchとした。
ツールができたら、gem化する作業に入る。
ライブラリ名としたいディレクトリを作り、その中に
とする。
ライブラリ名は、他のgemとバッティングしていないか、予め検索しておくこと。
プロジェクトフォルダのイメージ
gemspecファイルを以下のように編集する。
Gem::Specification.new do |s|
s.name = 'ライブラリ名'
s.version = '0.0.1'
s.date = '2018-07-24'
s.summary = "gemの要約"
s.description = "gemの説明"
s.authors = ["作者の名前"]
s.email = 'メールアドレス'
s.files = ["lib/ライブラリ名.rb"]
s.homepage =
'Webページのアドレス。githubページなどにしても良い。'
s.license = 'MIT'
s.add_runtime_dependency '依存ライブラリ', '~> 1.5', '>= 1.5.6'
# バージョンは依存ライブラリのものに合わせること
end
準備はできたので、gemファイルを作る。
$ gem build ライブラリ名.gemspec
Successfully built RubyGem
Name: ライブラリ名
Version: 0.0.1
File: ライブラリ名-0.0.1.gem
gemファイルができたので、試しにローカルでインストールする。
環境によってはsudoが必要かもしれない。
$ gem install ./ライブラリ名-0.0.1.gem
Successfully installed
ライブラリ名
-0.0.1
Parsing documentation for
ライブラリ名
-0.0.1
Done installing documentation for
ライブラリ名
after 0 seconds
1 gem installed
ローカルでインストールできたかは、irbなどで試すと良い。
$ irb
> require 'ライブラリ名'
=> true
gem公開の準備は以上。
次はrubygem上の準備を行う。
https://rubygems.org/ こちらで登録を済ませておく。
認証メールが届くので、リンクをクリックしたら登録完了。
サインイン後のページで、右上のユーザ名とアイコンが有るエリアをクリックする。
遷移後のページで、Edit Profileをクリックする。
ページの真ん中あたりに API ACCESS の項目があるので、そこの curl コマンドをコピーし、ターミナルで実行する。
rubygemのパスワードが求められるので入力すると、
以下のような表示が出て、終了する。
Enter host password for user 'syamoji':
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 56 0 56 0 0 115 0 --:--:-- --:--:-- --:--:-- 115
先程ローカルで作ったgemがアップロードできるようになるので、アップロードする。
$ gem push ライブラリ名-0.0.1.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: ライブラリ名 (0.0.1)
rubygemsのプロファイルページにgemが増えていると思うが、コマンドでも確認する。
プロファイルページの表示例。
$ gem list -r instagram-tag(ライブラリ名の一部)
*** REMOTE GEMS ***
instagram-tag-search (0.0.1)
検索可能なことを確認できたら、実際にインストールしてみる。
ローカルからインストールしたものがまだ残っているかもしれないので、念の為uninstallしておくこと。
$ gem uninstall ライブラリ名
通常のgemと同じくインストールする。
$ gem install instagram-tag-search
Fetching: mini_portile2-2.3.0.gem (100%)
Successfully installed mini_portile2-2.3.0
Fetching: nokogiri-1.8.4.gem (100%)Fetching: nokogiri-1.8.4.gem
Building native extensions. This could take a while...
Successfully installed nokogiri-1.8.4
Fetching: instagram-tag-search-0.0.1.gem (100%)
Successfully installed instagram-tag-search-0.0.1
3 gems installed
自作gemが公開できた。
当然本来はテストコードなどを書くべき(公式でも In short:
TEST YOUR GEM! Please! と悲痛な叫びが書かれている)だが、 最もお手軽にする方法は以上。