QuartzNetwork開発者ブログ

なんか、その辺の企業がやってそうな名前にしてみた。

MySQLのScoket位置を指定してannotateを使う

f:id:kuwasa:20160223160606p:plain

Cloud9でannotateを使うときに、この問題にぶち当たったので書きます。

annotateとは

テーブルのスキーマ(図とか)をファイルの先頭に書いてくれる優秀なGemです。 基本的なことは、下記の記事がおすすめ。

techracho.bpsinc.jp

エラー

annotateをインストールしてコマンドを実行してみると、socketがつながらないと言われました。

$ bundle exec annotate 
Unable to annotate app/models/hoge.rb: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Model files unchanged.

どうやら、Cloud9の環境では /var/run/mysqld/ にsocketは無いようです。

ソケットの位置を指定する

Cloud9のドキュメント(Setting Up MySQL · Cloud9)を読んでみると ~/lib/mysql/socket/mysql.sockにあるようなので、これをconfig/database.ymlに設定してあげます。

cloud9:
  <<: *default
  socket: ~/lib/mysql/socket/mysql.sock
  database: c9
  username: <%=ENV['C9_USER']%>
  host: <%=ENV['IP']%>

あとは環境を指定して、実行してあげます。

$ RAILS_ENV=cloud9 bundle exec annotate
Annotated (1): app/models/hoge.rb

完璧です。