大江戸r uby会 議 - rabbit slide show · 2020. 3. 24. · 大江戸r uby会 議 04 1年...

36
大江戸Ruby会議 04 1年かけて1つのgemを作りました 伊藤 邦彦 永和システムマネジメント

Upload: others

Post on 25-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

大江戸Ruby会議04

1年かけて1つのgemを作りました

伊藤 邦彦永和システムマネジメント

Page 2: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

はじめに

発表する機会をいただきありがとうございます

Page 3: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

自己紹介

Kunihiko Ito

@kunitoo

Asakusa.rb歴: 約1年半

rgitlog を作ってます

Page 4: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

今日話すこと

Asakusa.rb でやっていること

作ったgemのこと

Page 5: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Asakusa.rb でやっていること

上野会場のドアを開けたり

他の人の話を聞いたり

写経したり

gem を作ったり

Page 6: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

上野で会場のドアを開けたり

ドア番をお願いされたのが Meet up に参加するきっかけ

Page 7: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

他の人の話を聞いたり

会話の単語が分からない

調べながら会話を聞く

少しずつ慣れて話が分かるようになった

Page 8: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

写経したり

Rails Tutorial

Rails Guides

RubyGems Guides

Page 9: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

gem を作ったり

自己紹介するときに話せる代表作がほしい

なにを作るか考えるところから始めた

Page 10: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

作ったgem

Page 11: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rgitlog

rails アプリの git log をブラウザで見ることができます

Page 12: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Insatall

以下を変更するだけGemfile

config/routes.rb

Page 13: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Gemfile

gem 'rgitlog'

次に

% bundle

Page 14: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

config/routes.rb

mount Rgitlog::Engine, at: '/rgitlog'

Page 15: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Usage

Page 16: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rgitlogができるまで

やりたいこと探し

gitを扱うライブラリ探し

Page 17: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rgitlogができるまで

やりたいこと探し

gitを扱うライブラリ探し

Page 18: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

やりたいこと

開発中に以前のバージョンの見た目が気になることがあった

動作確認中はブラウザだけで完結したい

git checkout したくない

Page 19: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

これからやりたいこと

ブランチを選択して checkout したい

diff を見れるようにしたい

見た目をかっこよくしたい

Page 20: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rgitlogができるまで

やりたいこと探し

gitを扱うライブラリ探し

Page 21: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

最初のバージョン

mojombo/grit

mojombo/grit はRuby 2.0で動かなかった

gitlabhq/grit フォークを使用

Page 22: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

grit での git log 取得

Repo.new('path/to/my/repository').commits

Page 23: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

watchしていたらある日

“Grit is no longer maintained. Check out rugged”

Pull Request が 118 close された

Page 24: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rugged での git log 取得

Rugged::Repository.new('path/to/my/repository').head.log

Page 25: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rugged での git log 取得

Rugged::Repository.new('path/to/my/repository').head.log

reflog 取得されます

Page 26: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

正解

repo = Rugged::Repository.new('path/to/my/repository')repo.walk(repo.last_commit)

気付くのに数ヶ月かかりましたorz

Page 27: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rgitlog リリースまで

作りたいと思ってから約1年

実はとっても簡単に作れます

Page 28: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rgitlogの作り方

今から作ります!

時間ありますよね?

Page 29: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

rails plugin new

$ rails plugin new rgitlog --mountable -O -B$ cd rgitlog$ bundle --local

Page 30: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Add ruggedrgitlog.gemspec

s.add_dependency "rugged"

Page 31: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

generate controller

$ rails g controller rgitlog index

Page 32: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Controller

require_dependency "rgitlog/application_controller"require 'rugged'

module Rgitlog class RgitlogController < ApplicationController def index path = Rugged::Repository.discover(Dir.pwd) repo = Rugged::Repository.new(path) @commits = repo.walk(repo.last_commit).to_a end endend

Page 33: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

View

<h1>commits</h1><ul> <% @commits.each do |commit| %> <li><%= commit.message %></li> <% end %></ul>

Page 34: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

Routes

root to: 'rgitlog#index'

Page 35: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

完成

慣れると10分くらいで作れるようになる

Page 36: 大江戸R uby会 議 - Rabbit Slide Show · 2020. 3. 24. · 大江戸R uby会 議 04 1年 かけて1つ のg emを 作りました 伊藤 邦彦 永和システムマネジメント

まとめ

Asakusa.rbに通いこつこつと続けていれば、1年かかったことが20分でできるようになります