MySQLのScoket位置を指定してannotateを使う
Cloud9でannotateを使うときに、この問題にぶち当たったので書きます。
annotateとは
テーブルのスキーマ(図とか)をファイルの先頭に書いてくれる優秀なGemです。 基本的なことは、下記の記事がおすすめ。
エラー
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
完璧です。