gem ebi を公開しました


Ruby gems

先日、どあらー というblogを読んでいたら bundle gem doalaという秀逸な記事がPOSTされていました。

モジュールを作って、いつでもドアラに会える!
という、Fantasticな記事でした。 もう、大変な感銘をうけましてですね。
さっそく、私もやってみたい! と。
blogTOPはこちらです→どあらー

doalaに対抗して、何がいいだろう。。 koalaかな・・ とか色々考えたのですが、やっぱりebiにしました。

さっそく作るのです

作り方は、全部将軍の記事(え、将軍?)に書いてあります。
ここです→ bundle gem doala

これに沿ってやっていくのです。 さぁ、まずはbundle コマンドから。

$ bundle gem ebi
Creating gem 'ebi'...
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. For suggestions about how to enforce codes of conduct, see bit.ly/coc-enforcement. y/(n):

・・・これは一体・・
聞いてた話と違いますよ。 怖い怖い。。
オレオレ詐欺みたいなの出てきました。 これ “y” ってタイプすると、1000万円俺の口座から引き落とされるんでしょ?
そんな預金うちにはありません(`;ω;´)

と、いうわけで調べてみると
Contributor Code of Conduct という崇高なものでした。
http://qiita.com/nstoym/items/ca711287117074a810aa

> Contributor Code of Conduct
コントリビュータ行動規範

> As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
本プロジェクトのコントリビュータおよびメンテナとして、
問題の報告、機能の要望、ドキュメントの更新、プルリクエストの要求やパッチを提供、その他の活動を通じて
貢献してくれる人に敬意を払うことを誓います。

だって。
Githubとかで公開したりする場合は必須と思った方がいいのかな?
たぶん誰からもプルリク来ないと思うけど、添付しておくのが無難かと思われましたので 入れました。

と、いうわけでこれでやっとgem開発に没頭できるね。ワクワクしちゃう。
yと入力して、Enterぽちっと・・

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 choosealicense.com/licenses/mit. y/(n):

ん・・? 
えー・・と・・ MIT?
「あなたの出身地は、三重(M)、茨城(I)、栃木(T)のどれかですか??」 
という質問ですね。きっと。 
いいえ、私は長野(N) なので (n) をポt

MIT License(エム・アイ・ティー ライセンス)は、マサチューセッツ工科大学を起源とする代表的なソフトウェアライセンスである。 X11 LicenseまたはX Licenseと表記されることもある。 MIT LicenseはGPLなどとは異なり、コピーレフトではなく、オープンソースであるかないかに関わらず再利用を認めている。 BSDライセンスをベースに作成されたBSDスタイルのライセンスの一つである。

引用:Wikipedia

だ、そうです。
再利用を認めるという意味ではそのとおりです。 Yesと答えます。

よし、やっと開発だーー!!
ポチっっと・・・

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):

まだ質問あるんかい!
どあらー さんの記事を見ると、「テストをかこう」の欄に、minitestを使う旨の記述があります。
将軍が規範になりますので、minitest使ってみました。

と、いうわけで最終的にこんな感じでbundle コマンドが完了

$bundle gem ebi
Creating gem 'ebi'...
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. For suggestions about how to enforce codes of conduct, see bit.ly/coc-enforcement. y/(n): y
Code of conduct enabled in config
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 choosealicense.com/licenses/mit. y/(n): y
MIT License enabled in config
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): minitest
      create  ebi/Gemfile
      create  ebi/.gitignore
      create  ebi/lib/ebi.rb
      create  ebi/lib/ebi/version.rb
      create  ebi/ebi.gemspec
      create  ebi/Rakefile
      create  ebi/README.md
      create  ebi/bin/console
      create  ebi/bin/setup
      create  ebi/CODE_OF_CONDUCT.md
      create  ebi/LICENSE.txt
      create  ebi/.travis.yml
      create  ebi/test/test_helper.rb
      create  ebi/test/ebi_test.rb
Initializing git repo in /Users/kitamura/dev/ebi

さっそく実装するぞ

require "ebi/version"

module Ebi
  def face
    '<゜))))彡'
  end

  def fry
    <<-EOS
   ,.、,、,..,、、.,、,、、..,_       /i
  ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
  '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
    EOS
  end

  def fry_double
    <<-EOS
 .    /ヘミミミ/  ``'ー-.、,ヽ丶)ヽ、
  、. レ"ヾヘミミ/        ヽソノ;、ヾi
  _ヽlヾミミミン  -zュ、、     ´ ';ソ:|
  i A;ヽミミゾ   ,__,.、,、,..,、、.,、,、、..,_       /i
  | | iミミソ     ヽ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
  | ヽiミソ       ''、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄    /i
  ゙iー:ソ           ,、-'  |ヽ,;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
 ノソ         ` = _, |  '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
.  "!      ,.r===;-、, ` '′  ,'
  ハ.      / ヽ、  ヽ,)   ノ
,r'イ ',     l!、   ゙i ./   ,.'
. i |  ',      iゝヽ..ノ,イ   /
. !│ ヽ    ゝ.二 '´ /.│
. ! |   ヽ      /   !、
. | |     >‐‐ァ"     | \
 | |  ,、r'" ,、r''"      /   \
    EOS
  end
  module_function :face, :fry, :fry_double
end

テストをかきます

どあらさん、この辺もちゃんと解説付きでありがたいです。
ちなみに最初のbundle コマンドのオプションで ‘minitest’ を指定したから、.gemspecにデフォで設定入っていました。

spec.add_development_dependency "minitest"
require 'test_helper'

class EbiTest < Minitest::Test
  def test_that_it_has_a_version_number
    refute_nil ::Ebi::VERSION
  end

  def test_it_does_something_useful
    assert false
  end

  def test_face
    assert_equal '<゜))))彡', Ebi.face
  end
end

あと、真ん中の辺にかかれていた
def test_it_does_something_usefulは消さないと、普通にFailedしたので消したけど・・ いいですよね?

続きまして、$vi ebi.gemspec で TODO と書かれた所を適宜修正していきます。
今回はgithubで公開しようと思うので、自分のリポジトリのURLをつっこみました

 spec.homepage      = "https://github.com/shrimp78/ebi"

なお、、、

 # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
  # delete this section to allow pushing this gem to any host.
  if spec.respond_to?(:metadata)
    spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
  else
    raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
  end

この部分けしてruby gemsにpushしてよいものなのでしょうか?
こんなebiがどうたら っていうgemで誰か救われる人がいるのか疑問ですが、とりあえず doalaも入ってるから、ebiもいいよね・・ っていう謎の気概でrelaseしました。

あとの作業

・README.md を編集しました。
・Githubにpushしました。

git remote add origin git@github.com:shrimp78/ebi.git
git push -u origin master

使ってみる

使ってみると、分かるのですが。
これは、Stringの性質の勉強にとてもよいgemですね。。(苦し紛れ)

投稿の編集_‹_東京伊勢海老通信_—_WordPress

あと、やっぱり全角スペースの扱いは難しいですね。 これ、どうしよう。

投稿の編集_‹_東京伊勢海老通信_—_WordPress 2

まとめ

どあらー を読むと、だれでもgemが作れる。
・今回のebiのリポジトリはこちら shrimp78/ebi
・けっこう簡単に作れるけど、知らないことが多々あっていちいちつまづく。
・この勉強を土台に、今後はもっと世の中社会に役立つ有意義なgemを開発する所存であります。

 

2015-08-09 | Posted in RubyNo Comments » 


関連記事

Comment





Comment



*