Upgrade to Pro — share decks privately, control downloads, hide ads and more …

gem入門

6094c91088af5e8ea5094aa750d13570?s=47 cottondesu
December 19, 2016

 gem入門

簡単なgemの作り方の説明

6094c91088af5e8ea5094aa750d13570?s=128

cottondesu

December 19, 2016
Tweet

Transcript

  1. gem 入門 kanazawa.rb meetup#52 2016年12月17日

  2. @cotton_desu

  3. gem作ったことある?

  4. 難易度が高い?

  5. それは思い込みです

  6. gemは簡単に作れる

  7. gemとは

  8. • パッケージ化されたRubyアプリケーション • rubyライブラリ • gemコマンドを使って簡単にinstallやremove 等ができる gemとは

  9. CLI系gem作成手順

  10. CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.

    lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
  11. CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.

    lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
  12. bundle gem コマンド bundle gem <gem໊> -b ҎԼͷίϚϯυΛ࣮ߦ͢Δ

  13. bundle gem コマンド % bundle gem exsample_gem -b Creating gem

    'exsample_gem'... MIT License enabled in config Code of conduct enabled in config create exsample_gem/Gemfile create exsample_gem/.gitignore create exsample_gem/lib/exsample_gem.rb create exsample_gem/lib/exsample_gem/version.rb create exsample_gem/exsample_gem.gemspec create exsample_gem/Rakefile create exsample_gem/README.md create exsample_gem/bin/console create exsample_gem/bin/setup create exsample_gem/LICENSE.txt create exsample_gem/CODE_OF_CONDUCT.md create exsample_gem/exe/exsample_gem Initializing git repo in /tmp/exsample_gem ࣮ߦྫ
  14. CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.

    lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
  15. gemspecファイル追記 spec.add_dependency 'thor' HFNTQFDʹҎԼΛ௥ه͢Δ UIPS3VCZͷ$-*πʔϧͷ࡞੒Λࢧԉ͢ΔHFN

  16. gemspecファイル追記 FYTBNQMF@HFNHFNTQFD௥هྫ # coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib)

    unless $LOAD_PATH.include?(lib) require 'exsample_gem/version' Gem::Specification.new do |spec| spec.name = "exsample_gem" spec.version = ExsampleGem::VERSION —————-লུ—————- spec.add_development_dependency "bundler", "~> 1.11" spec.add_development_dependency "rake", "~> 10.0" spec.add_dependency 'thor' end ˡ௥ه
  17. CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.

    lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
  18. exe/<gem名>ファイル追記 <※1>::CLI.start ҎԼΛ௥ه͢Δ ※1 gem໊ͷ಄ɺ_ͷޙͷจࣈΛେจࣈʹ_Λ࡟আ͢Δ ྫ) exsample_gem " ExsampleGem

  19. exe/<gem名>ファイル追記 FYFFYTBNQMF@HFN௥هྫ #!/usr/bin/env ruby require "exsample_gem" ExsampleGem::CLI.start ˡ௥ه

  20. CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.

    lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
  21. lib/<gem名>.rb追記 require "<gem໊>/cli" ҎԼΛ௥ه͢Δ

  22. lib/<gem名>.rb追記 FYFFYTBNQMF@HFNSC௥هྫ require "exsample_gem/version" require "exsample_gem/cli" module ExsampleGem # Your

    code goes here... end ˡ௥ه
  23. CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.

    lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
  24. lib/<gem名>/cli.rb作成 def hoge puts "Hello world" end DMJSCΛ৽ن࡞੒͠ɺػೳΛ௥Ճ͢Δ ࠓճ͸IPHFίϚϯυͰ)FMMPXPSMEΛ දࣔ͢Δػೳͱ͢Δ

    ίϚϯυ͸ϝιουͱͯ͠ఆٛ͢Δ
  25. lib/<gem名>/cli.rb作成 MJCʻHFN໊ʼDMJSC require 'exsample_gem' require 'thor' module ExsampleGem class CLI

    < Thor desc "hoge", "Hello world print." #ίϚϯυͷ࢖༻ྫͱɺ֓ཁ def hoge #ίϚϯυ͸ϝιουͱͯ͠ఆٛ͢Δ puts "Hello world" end end end
  26. gem実行 $ bundle install # Thor ͳΜ͔ΛΠϯετʔϧ͢ΔͨΊʹ $ % bundle

    exec exe/exsample_gem hoge Hello world HFNΛ࣮ߦ͢ΔલʹCVOEMFJOTUBMM͕ඞཁ
  27. 作ったgemのDemo

  28. • bundle gemコマンドでほぼ必要な ファイルの雛形が作成される • gemを作るのは難しくない • 気軽にgemを作りましょう 総括