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
120
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
在庫管理・買い物メモを作成中/creating-inventory-management-shopping-list
cottondesu
0
18
ヨシケイの撮り忘れを対策したPart2/measures-were-taken-to-prevent-forgetting-to-pick-up-yoshikei-part2
cottondesu
0
52
ヨシケイの取り忘れ対策した / Measures were taken to prevent forgetting to pick up Yoshikei
cottondesu
0
350
開発環境公開ハード編 / Development environment public hardware version
cottondesu
0
190
開発環境公開ソフト編 / Development environment public software edition
cottondesu
0
180
正規表現で心が折れた/Regular expressions broke my heart
cottondesu
0
190
オレオレGASからMakeへの移行を検討してみた / Considering the transition from Ore Ore GAS to Make
cottondesu
0
780
Kanazawa.rb 10周年KPT / Kanazawa.rb 10th Anniversary KPT
cottondesu
0
900
Kanazawa.rb 9周年KPT / Kanazawa.rb 9th Anniversary KPT
cottondesu
0
490
Other Decks in Technology
See All in Technology
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
330
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
190
書籍『生成AIの安全性入門』の入門
wataoka
0
210
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
0
320
少人数データチームのDevin活用実践事例
runandy16
2
440
振り返りこそエンジニアの本領
negima
0
290
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
3
1.5k
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
350
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
150
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
140
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
350
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
230
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
800
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Between Models and Reality
mayunak
4
450
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
A designer walks into a library…
pauljervisheath
211
25k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Technical Leadership for Architectural Decision Making
baasie
3
550
The World Runs on Bad Software
bkeepers
PRO
72
12k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
The browser strikes back
jonoalderson
0
1.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Prompt Engineering for Job Search
mfonobong
0
440
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を作りましょう 総括