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
柏.rb #9 公開できないものもgemにする
Search
hana-da
March 17, 2025
Technology
0
34
柏.rb #9 公開できないものもgemにする
hana-da
March 17, 2025
Tweet
Share
More Decks by hana-da
See All by hana-da
柏.rb #5 マインスイーパーのテストを書いてみた
hana_da
0
50
柏.rb #1 hana-daのご紹介
hana_da
0
51
Other Decks in Technology
See All in Technology
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
Agile Leadership Summit Keynote 2026
m_seki
1
680
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
340
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
220
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
Cosmos World Foundation Model Platform for Physical AI
takmin
0
980
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
Context Engineeringの取り組み
nutslove
0
380
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
740
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
70
Balancing Empowerment & Direction
lara
5
900
My Coaching Mixtape
mlcsv
0
50
Faster Mobile Websites
deanohume
310
31k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
From π to Pie charts
rasagy
0
130
Transcript
2025-03-17 ദ.rb #9 hana-da ެ։Ͱ͖ͳ͍ͷ""gemʹ͢Δ Private gemͷεεϝ
Rails ͷ libσΟϨΫτϦʹԿΛೖΕͯΔ? (ॾઆ͋Δͱࢥ͍·͕͢...) • ͦͷΞϓϦέʔγϣϯ͔ΒΓग़ͯ͠ಈ͘ʮϥΠϒϥϦʯͳͲ • ଞͰ͑Δڞ௨ॲཧͱ͔ • ൿͷϥΠϒϥϦͱ͔
• ศརϥΠϒϥϦͱ͔
libσΟϨΫτϦͷཧͰ͖ͯ·͔͢? (ϞδϡʔϧԽͯ͠ڞ௨ԽͷϝϦοτ͋Δͷͷ...) • ʮappԼʹஔ͖͕ͳ͍ͷʯͷΑ͏ͳ͍ํΛ͍ͯ͠ΔͱࡶʹͳΓ͕ͪ • ྫ͑ଞ͔Β͖࣋ͬͯͨڞ௨ॲཧϥΠϒϥϦͷ՝ • όʔδϣϯͷཧ? • Ͳ͔͜Β͖࣋ͬͯͨ?
• bugमਖ਼Ͳ͏͢Δ? • ಠࣗ࿏ઢΛาΈग़ͪ͠Ό͏ͱ...
gemʹͪ͠Ό͓͏ (git submoduleͱ͍͏ख͋Δ͕...) • gemͱͯ͠ύοέʔδϯά͢Εཧָ͕ • gem໊લversionใɺґଘؔͳͲͷใΛ࣋ͯΔ • υΩϡϝϯτςετ·ͱΊͯཧͰ͖Δ •
ΞϓϦέʔγϣϯຊମͱͯ͠ཧͰ͖Δ
gemʹ͢Δࣄͷোน • gem ͷ࡞Γํ͕Θ͔Βͳ͍ • gem ͍͢͝ਓ͕࡞Δͷͱ͍͏ޡղ • ެ։͢ΔΑ͏ͳߴঘͳͷͰͳ͍ •
ͦͦެ։Ͱ͖Δ༰Ͱͳ͍ • ͦ͠ΕΛোนͱײ͍ͯ͡ΔͳΒɺͦΕΛղফ͍ͨ͠ ↓
ಥવͰ͕͢ΫΠζͰ͢
gempush(ެ։)͠ͳ͍ͱ͑ͳ͍? ⭕ or ❌
gemެ։͠ͳͯ͑͘Δͷ͔? (ͦΓΌɺެ։ͨ͠ํ͕͍͍ͱࢥ͏͚Ͳ͞) • ී௨gemʹ͢Δखॱͱݴ͑ gem build && gem push •
gem build Ͱ gemύοέʔδ Λੜ • gem push Ͱ rubygems.org ʹొ/ެ։ • build ͚ͩͯ͠ push ͤͣʹɺͦͷ gem Λ͑Δͷ͔? • Ͱ͖ΔͷͳΒɺͲ͏ͬͯ?
ී௨ʹ gem build (rake build Ͱ ok)
ී௨ʹ gem install (ී௨ͱ?) • build ͰͰ͖ͨ .gem ϑΝΠϧΛ install
͢Δ • ͪΌΜͱೖͬͨ
ී௨ʹಈ͘!!! (Θʔ͍) • rubygems.orgͰެ։(push)͠ͳͯ͑ͨ͘
BundlerΛ͍͍ͨ (ͦΕͦ͏) • pathΦϓγϣϯ gitΦϓγϣϯͰgemͷιʔεΛࢦఆ͢Δ • ಈ͘
Bundler ͰόʔδϣϯݻఆͰ͖Δʁ (ݻఆ͍ͨ࣌͋͠ΔΑͶ) • gemͷversion্͕ͬͨޙɺlatestҎ֎ͷversionΛ͍͍ͨ • ͕ɺͦΕͰ͖ͳ͍
gitΦϓγϣϯͳΒ... (ҰԠͰ͖ͳ͘ͳ͍͕) • tag, ref, branch Λ͑͋ΔఔͰ͖Δ͕... • ͋͘·ͰgitతʹιʔεͷcommitΛࢦఆ͍ͯ͠Δ͚ͩ •
'< 1.0' ͷΑ͏ͳࣄͰ͖ͳ͍
͜͜·Ͱࢼͨ͠ࣄ (؆୯ʹͰ͖ΔͷͰͪΐͬͱࢼ͢ʹ͍͍ํ๏) • gemίϚϯυͰbuildͨ͠gemύοέʔδΛࢦఆͯ͠install • bundlerͰιʔεϑΝΠϧ(ϦϙδτϦ)Λࢦఆͯ͠install • ͲͪΒ؆୯ʹͰ͖ΔͷͰͪΐͬͱͨ͠ࣄʹศརͦ͏ • Ͱɺ࣮Ͱ͏ʹެ։͞Ε͍ͯΔgemͷѻ͍ͱҧͬͯෆศ͕͋Γͦ͏
• Γpush͠ͳ͍ͱԸܙΛड͚ΒΕͳ͍? ↓
ࣗઐ༻ͷrubygems.orgΛ࡞Γ͍ͨ (ͭ·ΓgemύοέʔδͷϦϙδτϦ) • buildͨ͠gemύοέʔδΛ1ͭͷσΟϨΫτϦʹूΊͯΈΔ • gemίϚϯυͳΒׂͱ͍͚Δ
sourceΦϓγϣϯΛͬͯΈΔ (path෦ΛԿճଧͭͷ͕໘) • Bundler ͱಉ༷ʹ gemίϚϯυʹsourceͱ͍͏֓೦͕͋Δ • Կࢦఆ͠ͳ͚Ε https://rubygems.org/ •
--source fi le:///tmp/gem_repo/gems Λࢦఆͯ͠ΈΔ • μϝͰͨ͠
sourceͰࢦఆ͢Δઌʹspecs.4.8.gz͕ඞཁ (index܈͕ඞཁ) • ΤϥʔϝοηʔδΛΑ͘ݟΔͱ • specs.4.8.gz ͱ͍͏ϑΝΠϧͳ͍ࣄ͕ • ࣮؆୯ʹ࡞ΕΔͷͰ࡞Δ
gemͷindex܈Λੜ͢Δ (؆୯ʹ࡞ΕΔΑ) • gems σΟϨΫτϦʹgemΛೖΕͯɺͦͷ্ҐͰ gem generate_index ͢Δ • ৭ʑ࡞͞ΕΔ(specs.4.8.gzੜ͞Ε͍ͯΔ)
➔ ➔
gem install ࠶ઓ (--source Λఴ͑ͯ) • --source /tmp/gem_repo ʹͯ͠ 0.1.0,
0.2.0, 1.0.0 ͷ͏ͪ 0.2.0 Λࢦఆ • ͏͘͝!
gem update ʹઓ (ͪ͜Β --source Λఴ͑ͯ) • ࠷৽(1.0.0) ʹ update
Ͱ͖ͨ!
ϓϥΠϕʔτgem "ϦϙδτϦ" ͷ (gem pushͰ͖ͳ͍͚ͲͶ) • ϩʔΧϧͰ͚͕ࣗͩ͏ͷͰ͋Ε·͊͑Δ • gem source
--add fi le:///tmp/gem_repo ͢Ε --source লུՄೳ • gemΛՃ͢Δ࣌ • gems σΟϨΫτϦʹgemύοέʔδΛஔ͘ • gem generate_index --update
BundlerͰ͑Δ (࣮༻త!)
ϓϥΠϕʔτgem "αʔόʔ" ʹ͍ͨ͠ (ؒͰgemΛڞ༗͍ͨ͠) • ࣮index܈͕͋ΔσΟϨΫτϦҎԼΛHTTPͰެ։͢Ε͍͍͚ͩ • ͋ͱ source Λ
http Ͱࢦఆ
gem push ड͚ΒΕΔ? (ؒʹgemΛొͯ͠΄͍͠) • gem push POST /api/v1/gems
ͯ͘͠Δ • ͦΕʹର͍͍ͯ͠ײ͡ʹॲཧ͢ΔΑ͏ʹ࡞ΓࠐΊOK • ͰɺͨͿΜࣗͰ࡞ΔΑΓSaaSͳΓOSSͳΓΛ͏ํ͕खܰͩͱࢥ͏
gem server ͷ SaaS (ͪΐͬͱ͋·Γৄ͘͠ͳ͍ͷ͚ͩͲ) • GitHub Packages • Ͱ͖ΔΒ͍͠
• GitLab Package registry • (but not ready for production use. ͬͯॻ͍ͯ͋ͬͨ) • Gemfury • ศརͦ͏
gem server ͷ OSS (Gem in a Box͕͓खܰ) • Gemstash
• https://github.com/rubygems/gemstash/ • ࠷ۙίϨ͕ओྲྀͳͷ͔ • rubygems.orgͷcacheͰ͖Δ • Gem in a Box • https://github.com/geminabox/geminabox • ͦΜͳʹ৭ʑػೳ͕ͳ͓ͯ͘खܰ
·ͱΊ • gemެ։͠ͳͯ͑͘Δ! • ΧδϡΞϧʹgemΛ࡞Ζ͏! • ࣾͰgemΛڞ༗͢Εཧָ͕ʹͳΔ! • ͪΖΜɺެ։Ͱ͖ΔͳΒ rubygems.org
Ͱެ։͠Α͏!