私の:santa:アイコンと、おすすめのクリスマスの過ごし方、あるいは新しいrubyのリリースを祝いつつgitのbranch名に:santa:をつける風習とそのせいでCapistranoでのデプロイに失敗するという事象

この記事は[フィードフォースエンジニア Advent Calendar 2015](http://www.adventar.org/calendars/906) 24日目の記事です。

前日は [tmd45](http://www.adventar.org/users/2076) 氏による「[受付システムつくってみた（仮）](http://blog.tmd45.jp/entry/2015/12/23/112220)」でした(早く使ってみたい!)。

今日は私とクリスマスにちなんだ3つのことについて話したいと思います。

1. 私([hoshinotsuyoshi](https://github.com/hoshinotsuyoshi))の:santa:アイコン
1. おすすめのクリスマス :christmas_tree:  の過ごし方
1. 新しいrubyのリリースを祝いつつ:santa:をブランチ名にしよう・あるいは:santa:とCapistranoとの相性の悪さ

### 第一部：私の:santa:アイコンについて

クリスマスは大好きです。アドベントカレンダーで12/24を担当ということで、とても光栄です。

![santa.jpeg](https://qiita-image-store.s3.amazonaws.com/0/30715/7ae0c052-2d32-e994-aa7a-23182083624f.jpeg)

年がら年中、このアイコンで頑張っています。嫁さんが描いてくれました。いいだろ。

#### 第一部：完


### 第二部：おすすめのクリスマス :christmas_tree:  の過ごし方について

私が好きなクリスマスソングはピチカート・ファイヴの[12月24日](http://www.amazon.co.jp/%E3%83%9F%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%83%E3%82%AF-12%E6%9C%8824%E6%97%A5-%E3%83%94%E3%83%81%E3%82%AB%E3%83%BC%E3%83%88%E3%83%BB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%B4/dp/B000056H8Q)です。これを聞きながら酒に酔いつつ大江戸線に乗って帰ると、東京のキラキラした師走の夜感とアップテンポの曲があいまって、なんともいえない高揚感に包まれるのでおすすめです。あと同じ歌手の[メッセージ・ソング](http://www2.nhk.or.jp/minna/search/index.cgi?id=MIN199612_01)も冬っぽくて好きです。


#### 第二部：完

### 第三部：新しいrubyのリリースを祝いつつgitのbranch名に:santa:をつける風習とそのせいでCapistranoでのデプロイに失敗するという事象

rubyの新しいバージョンは、毎年クリスマス付近でリリースされることが多いので、そのrubyのアップグレードを含むトピックブランチ名に:santa:をつけることは多いと思います(*要出典*)。 [^1]

こんな感じ。

#### chrome

![santa-chrome.png](https://qiita-image-store.s3.amazonaws.com/0/30715/c714d4ed-551e-73a6-7db2-58f6c92a2c63.png)


#### firefox

![santa-firefox.png](https://qiita-image-store.s3.amazonaws.com/0/30715/85740e6a-1029-e9eb-9103-76babea281ac.png)


ときに同僚がgit fetchした時に気分が和むという副効果をもたらします。 [^2]


![santa.git.gif](https://qiita-image-store.s3.amazonaws.com/0/30715/b5a20079-ef5a-ab65-30a4-5474c35abd2c.gif)

これで職場が明るくハッピー、rubyのバージョンも最新になって皆さん楽しいでしょうが、私の環境では1点問題がありました。

このブランチをVMにcap deployしようとすると、sshkitなんたらなんたらというエラーを吐いてしまうのです。

```
SSHKit::Runner::ExecuteError UTF-8 in conversion from ASCII-8BIT to UTF-8 to US-ASCII
```

capistranoのバージョンは3.4.0。
どうすればよいかということについて、すぐにはわかりませんでした(大して調べてない)。

[この記事](http://qiita.com/osd/items/a8d47b6a66f24856f014) と同じように、**実体参照で文字を与えてしのぎ**ました。こんな感じです。

```diff.diff
diff --git a/config/deploy/vm.rb b/config/deploy/vm.rb
index a0a8ffe..0b97b66 100644
--- a/config/deploy/vm.rb
+++ b/config/deploy/vm.rb
@@ -5,15 +5,18 @@
 
 set :slack_run_starting,     -> { false }
 set :slack_run_finished,     -> { false }
 set :slack_run_failed,       -> { false }
 set :log_level, :info
 #ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }.call
+
+# 🎅U+1F385 FATHER CHRISTMAS
+# 🎅ruby2.3.0としたかったが、そのまま渡すとsshkitのエラーが起きるんで数値実体参照に変換する
+# さらにアンパサンドがシェルとして解釈されてしまうのを防ぐため余分に引用符で囲む
+set :branch, -> { '"&#127877ruby2.3.0"' } 
 
 # Extended Server Syntax

```

トピックブランチ名に:santa:をつける、みたいなのはよくやると思うんで(*要出典*)、こうすればクールだよ！みたいなの知ってたら教えてください！でもやっぱりブランチ名は英数字だけにするのが無難だと思います！！


#### 第三部：完

## まとめ

メリークリスマス！！！

## 

明日は [yukiyan_w](http://www.adventar.org/users/7201)さんのいい話です！

[^1]: [git-check-ref-format(1)](https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html)にgitのブランチ名に使える文字が書いてある。
[^2]: [反応例](https://twitter.com/task1010243/status/553129737929752576)