7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

食べログAdvent Calendar 2018

Day 19

rubyに大和魂を注入するgemを作成

Last updated at Posted at 2018-12-18

rubyを初めて3年くらい経つが、プライベートではgemを作ったことがなかったのでお試しでgemを作成してみた。

仕様

rubyは日本で開発されたプログラムということなので、構文自体を日本語化してしまうgemです。
今回はifを実装します。
具体的には下記のように書けるようになります。

# before
if xxx
  'if'
elsif yyy
  'elsif1'
elsif zzz
  'elsif2'
else
  'else'
end

# after
もし(xxx).だったら{'if'}
.または(yyy).だったら{'elsif1'}
.または(zzz).だったら{'elsif2'}
.それ以外だったら{'else'}
.

gem作成

gem、bundlerをアップデート

まずはgemとbundlerをアップデートしておきます。

$ gem update --system
$ gem update bundler

テンプレートを生成

テストはrspec、ライセンスはMIT、CODE_OF_CONDUCT生成はYESを選択

$ bundle gem yamatodamashii
Creating gem 'yamatodamashii'...
Do you want to generate tests with your gem?
Type 'rspec' or 'minitest' to generate those test files now and in the future. rspec/minitest/(none): rspec
Do you want to license your code permissively under the MIT license?
This means that any other developer or company will be legally allowed to use your code for free as long as they admit you created it. You can read more about the MIT license at https://choosealicense.com/licenses/mit. y/(n): y
MIT License enabled in config
Do you want to include a code of conduct in gems you generate?
Codes of conduct can increase contributions to your project by contributors who prefer collaborative, safe spaces. You can read more about the code of conduct at contributor-covenant.org. Having a code of conduct means agreeing to the responsibility of enforcing it, so be sure that you are prepared to do that. Be sure that your email address is specified as a contact in the generated code of conduct so that people know who to contact in case of a violation. For suggestions about how to enforce codes of conduct, see https://bit.ly/coc-enforcement. y/(n): y
Code of conduct enabled in config
      create  yamatodamashii/Gemfile
      create  yamatodamashii/lib/yamatodamashii.rb
      create  yamatodamashii/lib/yamatodamashii/version.rb
      create  yamatodamashii/yamatodamashii.gemspec
      create  yamatodamashii/Rakefile
      create  yamatodamashii/README.md
      create  yamatodamashii/bin/console
      create  yamatodamashii/bin/setup
      create  yamatodamashii/.gitignore
      create  yamatodamashii/.travis.yml
      create  yamatodamashii/.rspec
      create  yamatodamashii/spec/spec_helper.rb
      create  yamatodamashii/spec/yamatodamashii_spec.rb
      create  yamatodamashii/LICENSE.txt
      create  yamatodamashii/CODE_OF_CONDUCT.md
Initializing git repo in ~/Documents/git/yamatodamashii
Gem 'yamatodamashii' was successfully created. For more information on making a RubyGem visit https://bundler.io/guides/creating_gem.html

gemspecのTODOを修正

yamatodamashii.gemspec
-  spec.summary       = %q{TODO: Write a short summary, because RubyGems requires one.}
-  spec.description   = %q{TODO: Write a longer description or delete this line.}
-  spec.homepage      = "TODO: Put your gem's website or public repo URL here."
+  spec.summary       = %q{This injects Yamato Damashii into ruby.}
+  spec.description   = %q{This injects Yamato Damashii into ruby.}
+  spec.homepage      = "https://github.com/ham0215/yamatodamashii"
   spec.license       = "MIT"

-  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
-  # to allow pushing to a single host or delete this section to allow pushing to any host.
-  if spec.respond_to?(:metadata)
-    spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
-
-    spec.metadata["homepage_uri"] = spec.homepage
-    spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
-    spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
-  else
-    raise "RubyGems 2.0 or newer is required to protect against " \
-      "public gem pushes."
-  end

実装

libとspecを実装。
下記がPUSHしたリポジトリです。
https://github.com/ham0215/yamatodamashii

# spec実行
bundle exec rspec

gemファイル作成

$ gem build yamatodamashii.gemspec
WARNING:  description and summary are identical
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: yamatodamashii
  Version: 0.1.0
  File: yamatodamashii-0.1.0.gem

rubygemsのアカウントを作成

rubygemsで公開するにはアカウントが必要なので作成する。
https://rubygems.org/

API Key登録

リリース前にAPIKeyを登録しておく

$ curl -u [user_name] https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials

リリース

$ rake release
yamatodamashii 0.1.0 built to pkg/yamatodamashii-0.1.0.gem.
Tagged v0.1.0.
Pushed git commits and tags.
Pushed yamatodamashii 0.1.0 to rubygems.org

感想

初めてgemを公開してみましたが、公開方法は様々な記事があるため特に詰まることもなく簡単にできました。
肝心のgemですが、今回はifしか作る時間がなかったので暇な時にもう少し追加すると思います(たぶん)

明日は@kamina_zzzさんの「Rancher のはなし」です。お楽しみに!!

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?