2016年10月9日日曜日

$ brew install hoge で Error: Empty installation

El Capitanにrbenvをinstallしようと思って $ brew install rbenv を打つも以下のエラー

==> Installing dependencies for rbenv: ruby-build
==> Installing rbenv dependency: ruby-build
==> Using the sandbox
Error: Empty installation

エラーでググっても大した情報は出てこない。 手順を間違えているようにも思えない。

そこで –verbose オプションを付けて実行してみる

$ brew install --verbose rbenv
==> Installing dependencies for rbenv: ruby-build
==> Installing rbenv dependency: ruby-build
==> Using the sandbox
/usr/bin/sandbox-exec -f /tmp/homebrew20160929-18347-1b0zrum.sb nice /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -W0 -I /usr/local/Homebrew/Library/Homebrew -- /usr/local/Homebrew/Library/Homebrew/build.rb /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ruby-build.rb --verbose
Error: Empty installation

うーん、なにもおかしいところは見当たらな、、、い!?!?
と思ったら実行されているコマンド nice に心当たりが。

なんと僕は nice というコマンドが存在していることを知らずに同名のコマンドを自作してしまっていた。

削除後もう一度実行すると無事完了した

🍺 /usr/local/Cellar/rbenv/1.0.0: 36 files, 62.0K

なんともマヌケな理由でハマってしまったがniceコマンドを知るキッカケになった。
niceは、優先順位を指定してコマンドを実行するというコマンドらしい。

もう一つ教訓。自作コマンドは引数チェックをしっかりやろう。

Docker for Macのimagesの保管場所を別のパスに変えたい!

※2016年9月24日時点での情報です。古くなっているかもしれません。

いつの間にかDocker for Macのstableが出ていたのでインストールしてみた。
がしかし問題が。

僕が使っているMacBook Airは64GBのやつで、データは基本的に外付けのなにかに保存しておかないとやってられない。
こんなマシンを選んだ自分をいままで100回くらい呪った。
でも仕方ないね。他のやつは高かったからね。

Dockerのimageが一つで1GBとか持っていくからもうシャレにならないので、
imagesの置き場のパスを変える方法を調べてみたんだけどどうやら公式ではサポートされていない様子。
(ただ、困ってる人たくさんいたからそのうちサポートされるかも)

↓以下ワークアラウンド的な対処↓

一回Dockerを止めて、’com.docker.driver.amd64-linux’を移動させる。

$ mv ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux /path/to/your/new_dir/

そしてシンボリックリンク張る
$ ln -s /path/to/your/new_dir/com.docker.driver.amd64-linux/ ~/Library/Containers/com.docker.docker/Data/

そのあとDockerを起動すればOK

Gem textsnatcher の紹介

Gem作ったお

textsnatcherというGemを作ってみたので紹介。
URL: https://github.com/kenta-s/textsnatcher

使い方

まずはrequire

require 'textsnatcher'

そして

Textsnatcher::Snatch.exec(url, xpath)

で指定されたページの対象DOMのテキストを返す。

例としては以下のような感じ

Textsnatcher::Snatch.exec('https://github.com/rails/rails/releases', '//*[@id="js-repo-pjax-container"]/div[2]/div[1]/div[2]/ul/li[1]/div/div/h3/a/span')
# => "v3.2.22.5"

なにが嬉しいの?

Railsのリリース状況を監視して変更があったらメールを飛ばす、みたいなことをやることを想定して作ったけど、シンプルにテキストを返すだけだから他にもいろいろ使えるかも?

IssueやPRもらえると喜びます
https://github.com/kenta-s/textsnatcher

Ruby技術者認定試験Goldに合格し、仲間とともに涙を流したあの日

当時を振り返る

この記事を書いているのが2016年9月、合格したのは2015年の1月。
もうすぐ二年が経とうとしていて記憶が薄れかけている。
完全に忘れてしまうまえに振り返っておこうと思う。

勉強期間

試験対策に使ったのは一ヶ月くらい。2015年の12月に受験を決意し勉強開始。
タイミング的に年末年始の休みを全部コレの勉強に充てることができた。
この一ヶ月は寝ても冷めてもRubyのことを考えていた。
ちなみに当時すでに仕事でRubyを使っていたので、まったくのイチから勉強を始めたわけではない。

勉強方法

ピンクの本*1 を全部。とりあえず理解できないところはゼロにした。
$'だとか$$だとかの丸暗記系はツラいが、幸いGoldではSilverに比べてこういった丸暗記問題が少ないようなのであまり本気ではやらなかった。
後ろのほうに載っている問題は、本番でもそっくりな問題がいくつか出るのですべて自信を持って正解できる状態にする。
継承やモジュールのinclude, excludeは死ぬほど大事なので徹底的に頭に叩き込んでおく。

本番の試験内容

1問目を目にした瞬間から感じたが、問題文が長い!
ピンクの本の問題のなかにもincludeや継承関係などがどうなっているかしっかり読み込んだうえで回答しなければならない「めんどくさい」ものがいくつかあったが、本番の試験ではすべてがこのようなめんどくさい問題だと思ったほうが良い。

あと、1問「これは問題作成ミスなのでは…」というものがあった。
勘違いかもしれないが、、、うーん。

結果

76/100のギリギリ合格だった。
配点は1問2点、合格ラインは75点以上なのであと一問でも間違えていたら死んでいた。

めでたく合格したわけだがSilverを持っていないので残念ながら認定証は発行してもらえていない。

Ruby Association Certified Ruby Programmer Gold認定要件として 『Ruby技術者認定試験の「Silver(RY0-100)試験」と「Gold(RY0-200)試験」の2試験に合格すると Ruby Association Certified Ruby Programmer Goldに認定されます。受験する順番はどちらからでも構いません。』 とあります。
kenta-s様は、Gold試験において合格判定となっておりますが、Silver試験合格の確認が とれていないため、現状ではGoldの認定となっておりません。

Silverはたぶん受けないだろうなぁ。受験料高すぎる、、、

*1 ピンクの本 https://www.amazon.co.jp/Ruby%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-Silver-Gold%E5%AF%BE%E5%BF%9C-Ruby%E5%85%AC%E5%BC%8F%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-%E5%A2%97%E4%BA%95%E9%9B%84%E4%B8%80%E9%83%8E-ebook/dp/B016B877OG/ref=dp_kinw_strp_1