$30 off During Our Annual Pro Sale. View Details »

gem入門

cottondesu
December 19, 2016

 gem入門

簡単なgemの作り方の説明

cottondesu

December 19, 2016
Tweet

More Decks by cottondesu

Other Decks in Technology

Transcript

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

    View Slide

  2. @cotton_desu

    View Slide

  3. gem作ったことある?

    View Slide

  4. 難易度が高い?

    View Slide

  5. それは思い込みです

    View Slide

  6. gemは簡単に作れる

    View Slide

  7. gemとは

    View Slide

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

    View Slide

  9. CLI系gem作成手順

    View Slide

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

    View Slide

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

    View Slide

  12. bundle gem コマンド
    bundle gem -b
    ҎԼͷίϚϯυΛ࣮ߦ͢Δ

    View Slide

  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
    ࣮ߦྫ

    View Slide

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

    View Slide

  15. gemspecファイル追記
    spec.add_dependency 'thor'
    HFNTQFDʹҎԼΛ௥ه͢Δ
    UIPS3VCZͷ$-*πʔϧͷ࡞੒Λࢧԉ͢ΔHFN

    View Slide

  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
    ˡ௥ه

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. lib/.rb追記
    require "/cli"
    ҎԼΛ௥ه͢Δ

    View Slide

  22. lib/.rb追記
    FYFFYTBNQMF@HFNSC௥هྫ
    require "exsample_gem/version"
    require "exsample_gem/cli"
    module ExsampleGem
    # Your code goes here...
    end
    ˡ௥ه

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  26. gem実行
    $ bundle install # Thor ͳΜ͔ΛΠϯετʔϧ͢ΔͨΊʹ
    $ % bundle exec exe/exsample_gem hoge
    Hello world
    HFNΛ࣮ߦ͢ΔલʹCVOEMFJOTUBMM͕ඞཁ

    View Slide

  27. 作ったgemのDemo

    View Slide

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

    View Slide