Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
gem入門
Search
cottondesu
December 19, 2016
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
gem入門
簡単なgemの作り方の説明
cottondesu
December 19, 2016
More Decks by cottondesu
See All by cottondesu
ヨシケイの撮り忘れを対策したPart2/measures-were-taken-to-prevent-forgetting-to-pick-up-yoshikei-part2
cottondesu
0
49
ヨシケイの取り忘れ対策した / Measures were taken to prevent forgetting to pick up Yoshikei
cottondesu
0
290
開発環境公開ハード編 / Development environment public hardware version
cottondesu
0
180
開発環境公開ソフト編 / Development environment public software edition
cottondesu
0
170
正規表現で心が折れた/Regular expressions broke my heart
cottondesu
0
180
オレオレGASからMakeへの移行を検討してみた / Considering the transition from Ore Ore GAS to Make
cottondesu
0
720
Kanazawa.rb 10周年KPT / Kanazawa.rb 10th Anniversary KPT
cottondesu
0
840
Kanazawa.rb 9周年KPT / Kanazawa.rb 9th Anniversary KPT
cottondesu
0
480
Mac Book Proのバッテリー交換してみた / I replaced the battery in my Mac Book Pro.
cottondesu
0
600
Other Decks in Technology
See All in Technology
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
490
知らん間に、回ってる
ming_ayami
0
370
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
150
NDIAS CTF 2026 問題解説会資料
bata_24
0
180
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
4.8k
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
0
2.3k
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
0
110
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
120
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.2k
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
150
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
250
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
770
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Visualization
eitanlees
152
17k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.5k
Speed Design
sergeychernyshev
33
1.9k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Leo the Paperboy
mayatellez
8
1.9k
Typedesign – Prime Four
hannesfritz
42
3.1k
Building Applications with DynamoDB
mza
96
7.1k
Side Projects
sachag
455
43k
Transcript
gem 入門 kanazawa.rb meetup#52 2016年12月17日
@cotton_desu
gem作ったことある?
難易度が高い?
それは思い込みです
gemは簡単に作れる
gemとは
• パッケージ化されたRubyアプリケーション • rubyライブラリ • gemコマンドを使って簡単にinstallやremove 等ができる gemとは
CLI系gem作成手順
CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.
lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.
lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
bundle gem コマンド bundle gem <gem໊> -b ҎԼͷίϚϯυΛ࣮ߦ͢Δ
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 ࣮ߦྫ
CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.
lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
gemspecファイル追記 spec.add_dependency 'thor' HFNTQFDʹҎԼΛه͢Δ UIPS3VCZͷ$-*πʔϧͷ࡞Λࢧԉ͢ΔHFN
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 ˡه
CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.
lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
exe/<gem名>ファイル追記 <※1>::CLI.start ҎԼΛه͢Δ ※1 gem໊ͷ಄ɺ_ͷޙͷจࣈΛେจࣈʹ_Λআ͢Δ ྫ) exsample_gem " ExsampleGem
exe/<gem名>ファイル追記 FYFFYTBNQMF@HFNهྫ #!/usr/bin/env ruby require "exsample_gem" ExsampleGem::CLI.start ˡه
CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.
lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
lib/<gem名>.rb追記 require "<gem໊>/cli" ҎԼΛه͢Δ
lib/<gem名>.rb追記 FYFFYTBNQMF@HFNSCهྫ require "exsample_gem/version" require "exsample_gem/cli" module ExsampleGem # Your
code goes here... end ˡه
CLI系gem作成手順 1. bundle gem コマンド実行 2. gemspecファイルに追記 3. exe/<gem名>ファイルに追記 4.
lib/<gem名>.rbに追記 5. lib/<gem名>/cli.rbを作成
lib/<gem名>/cli.rb作成 def hoge puts "Hello world" end DMJSCΛ৽ن࡞͠ɺػೳΛՃ͢Δ ࠓճIPHFίϚϯυͰ)FMMPXPSMEΛ දࣔ͢Δػೳͱ͢Δ
ίϚϯυϝιουͱͯ͠ఆٛ͢Δ
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
gem実行 $ bundle install # Thor ͳΜ͔ΛΠϯετʔϧ͢ΔͨΊʹ $ % bundle
exec exe/exsample_gem hoge Hello world HFNΛ࣮ߦ͢ΔલʹCVOEMFJOTUBMM͕ඞཁ
作ったgemのDemo
• bundle gemコマンドでほぼ必要な ファイルの雛形が作成される • gemを作るのは難しくない • 気軽にgemを作りましょう 総括