2016-09 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2016-09-29 (木)

ローカルとGistを同期する gist_updater gem を作った [Ruby][Gem][GitHub]

必要に迫られて Ruby のスクリプトを作ったら、汎用化できたので
Gem にしてみました。

gist_updater | RubyGems.org | your community gem host

RubyGems.org is the Ruby community's gem hosting service. Instantly publish your gems and install them. Use the API to interact and find out more information about available gems. Become a contributor and enhance the site with your own changes.




何ができるか?


このような YAML ファイルを用意し、gist_updater コマンドを実行する
と、ローカルの .emacs.d/init.el によって
https://gist.github.com/masutaka/8177244 がアップデートされます。

-
  - 8177244
  - .emacs.d/init.el



Gist は差分がなくても、更新するとリビジョンが増えてしまいますが、
gist_updater は差分がなければアップデートしません。

複数の Gist をアップデート対象にすることも出来ますし、1つの Gist
の複数ファイルにも対応しています。YAML なのでコメントも書けますね。

-
  # https://gist.github.com/masutaka/8177244
  - 8177244
  - .emacs.d/init.el
-
  # https://gist.github.com/masutaka/f7ce8b3c71e995c20e48
  - f7ce8b3c71e995c20e48
  - circle.yml
  - tasks/pushover.rake



ライブラリとして使うことも出来ます。詳しくは GitHub の README.md
をご覧ください。

masutaka/gist_updater

Updates your Gist files defined in YAML



なぜ作ったか?


私はいわゆる dotfiles を GitHub に置いていますが、諸般の事情により
それは private repository です。ただ、たまに人に見せたいことがある
ので、一部のファイルを Gist に置いています。

~/.emacs.d/init.el
~/.zshenv
~/.zshrc
~/bin/my-brew-bundle

https://masutaka.net からリンクを張っています。

今まではまめに手動で Gist を更新していましたが、さすがに時間のムダ
だと思ったので、gist_updater を作りました。

現在は GitHub に push すると CircleCI が走り、必要に応じて Gist が
自動アップデートされます。

雑感とか


タイミングよく『オブジェクト指向設計実践ガイド』を読んだ
[2016-09-22-1] 直後で良かったです。単一責任のクラスや DI などを意
識して設計しました。ただしテストはありません(キリッ

rubocop 先生にはだいぶ助けられました。長いメソッドは設計が間違って
いる啓示だと思い、メソッドやクラスを分けて短くしました。でもまだ全
然だと思う...。

学びがあった gem でした。

追記(2016-10-08):
全クラスのテストを追加しました。意識して普段と違うテストにしたけど、
これで良いのだろうか...。

2016-09 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

最終更新時間: 2017-03-24 14:34

検索
最近の話題
- 2017-03-21
  ローカル環境を出来るだけ Dockerize した
- 2017-03-12
  JAWS UG 2017 に行ってきた #jawsdays
- 2017-03-02
  DynamoDB で TTL が実装されたので、Rails4 から使ってみた
- 2017-02-26
  git-hyper-blame のセットアップ方法と使い方
- 2017-02-25
  18 年 4 カ月使った au を解約して IIJmio に乗り換えた
- 2017-02-21
  第18回Elasticsearch勉強会に参加してきた #elasticsearchjp
- 2017-01-27
  同じ Ajax 処理を Vue.js と jQuery で書いてみた
最近追記された記事
- 2017-03-02-1 (21日前)
- 2017-02-25-1 (26日前)
- 2017-02-21-1 (30日前)
- 2015-06-07-1 (36日前)
- 2016-10-19-1 (45日前)
- 2016-01-01-1 (57日前)
- 2015-01-04-1 (66日前)
- 2015-06-07-1 (86日前)
- 2016-12-10-1 (104日前)
- 2016-11-05-1 (112日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (17)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (85)
- Boxen (2)
- Bugsnag (1)
- C (26)
- capistrano (3)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (7)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (2)
- E-mail (8)
- elasticsearch (4)
- Emacs (219)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (19)
- Gem (5)
- Git (9)
- GitHub (15)
- Go (5)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (2)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (15)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Langrich (7)
- LDAP (6)
- Life (18)
- Linux (5)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (1)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (11)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- Rspec (1)
- Ruby (48)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (14)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+