dokku-alt の謎2
正確には、dokkuが使っているHeroku buildpacksの謎
Railsのデータベースアダプタとして、mysql2を使っているのに、何故かdokku-altにデプロイすると、mysqlをrequireして起動の時に死ぬ。なんでだ!?
Heroku buildpacks
Herokuにアプリをデプロイすると、自動的にビルドを実行してくれるすごいやつ。オープンソースなので、dokkuも使っている。
で、こいつは恐ろしいことに、Railsアプリをデプロイすると、dokkuのコンテナ単位の設定を元にconfig/database.ymlを書き換える。便利だけど恐ろしい。
Railsの場合、Railsのコンテナに設定しているDATABASE_URLの設定を読み込み、それをURIとしてパースする。その後、スキーマを取得して、そのスキーマをadapterとして設定する。だいたいの場合は、MySQLを使うならDATABASE_URLはこんな感じの設定になると思う。
mysql://user:pass@db.domain.tld/database_name
普通なら別に良いのだが、Railsのadapterはそのまま起動時にrequireされるgem名として使用するので、mysqlの部分がそのままadapterにセットされて、mysql2を使いたいのに使えない状況になる。
解決策は、単にスキーマ部分をmysql2にすれば良い
mysql2://user:pass@db.domain.tld/database_name
良いのだが、非常に気持ち悪い気がする……
dokku-alt の謎
デプロイ出来ない
dokku-alt のサーバーは以前に作ったが、何故かしばらくデプロイしないうちに、デプロイが出来なくなっていた
調べていると、どうもsshでdokkuユーザーに繋げていないことが分かったので、解決策を探す
YAPC::Asia Day2 行ってきたよ
行ってきたよ
毎度おなじみ、ブログを書くまでがYAPCだと骨の髄までたたき込まれたので書くよ。
訂正:所々スピーカーの方の名前を間違えていたので修正しました
YAPC::Asia Day1 行ってきたよ
行ってきたよ
YAPC::Asiaは今年で最終回らしいので、行ってきた。去年も行ったけど。
YAPC::Asiaに参加すると、毎回セッションの最初と最後に「ブログを書け、介錯してやる」と脅しを掛けられる。もっぱら坊主やひげで体格の良いおっさんが多い。怖いから書くことにしよう。
本当は前夜祭にも行きたかったけど、仕事終わらなかったよね。懇親会も参加したかったけど、いつの間にか登録終わってた。
聞いてきたセッション
UbuntuでMySQLの通信をSSL化するときは、証明書のディレクトリが重要らしい
またDBサーバーを移動させる必要が生じたので、以前の経験を元に新しくDBサーバーを作った。
前回はCentOSだったが、こんどはUbuntuのLTSに変えてみたところ、前回と同じ方法ではMySQLのSSL化が有効にならなかったので、メモしておく。
最初は、証明書の権限とか、作り方に問題があるのかと思っていたが、どうにも手詰まりになって検索したところ、次のようなフォーラムを見つけた。
Enabling SSL in MySQL - Ask Ubuntu
どうやら、UbuntuでMySQLのSSL化を有効にするときは、証明書ファイルとかを全部/etc/mysql の下に置かなくてはいけないらしい。
そんな馬鹿なと思ったけど、実際に/etc/mysql-ssl というディレクトリに作っていた証明書を/etc/mysql に移動してみたところ、何度やってもDISABLEだったSSLのステータスが、YESに変わった。
わけがわからんが、忘れないようにメモしておく。
追記
Wordpressから、MYSQL_CLIENT_SSLフラグをオンにしても動かなかった理由も解決した
鍵を作った直後にこれをやろう
ただ、何故かファイルに差分は生まれなかったのだが……謎い
やったーキルミーベイベーの画像ジェネレーター作ったよー
エクセレントなフォント
TopPage
http://kill-me-baby.tolarian-academy.net/
Usage
http://kill-me-baby.tolarian-academy.net/キルミー体操
http://kill-me-baby.tolarian-academy.net/ここに好きな文字
Framework
Sinatra + RMagick
単一ページのアプリを作るなら、やっぱりSinatra最高
Railsは最初にActiveRecordを除外する設定とかやらなきゃいけないから、こういう一発ネタに向かない
Sourcecode
https://github.com/YasuhiroKinoshita/kill-me-baby-image-generator
ConoHaとさくらのVPSにdokku-altを入れて、ブログと開発環境を柔軟に
Dokku-alt をConoHaVPSに入れて、個人PaaS環境を充実させた話
このブログは、今のところさくらVPSのWebインスタンスと、ConoHaVPSのDBインスタンスで動いている。動いてはいるが、さくらVPSの方が3年くらい前に右も左もよく分かってない状態で立ち上げたNginx+Apache+Wordpress構成で、いい加減メンテが不可能な状態に陥っており、Wordpressのバージョンを上げることすらままならなくなっていた。
そこで、さくらVPSのインスタンスを一回全部消して、Ubuntu+Dokku-altを立てて、そこでブログをはじめとするいろんな開発環境を集約してしまおうと考えた。
まずはConoHaVPSで予行練習
ConoHaVPSの素晴らしいところは、このはちゃんがあざとい清楚可愛いだけじゃなくて、VPSを簡単に立てたり落としたり出来る、まるでさくらクラウドのような使い勝手にある。そのため、一個インスタンスを立てるためになんだか面倒なさくらVPSでなにかする前に、ConoHaVPSを使って予行演習を行った
psコマンドをStructの配列として扱うRubyのクラスを適当に書いた
既にそういうgemがありそうだとはわかってて書いた。
このところ、家の録画サーバーが、おそらくハードウェア的な理由で不安定だったので、定期的にプロセスを監視するスクリプトを書く過程でこんな感じのものが必要になり、とりあえずgistにあげておいた。
Forwardableモジュールとかの知見はEffectiveRubyという本から得たものなので、そのうちまとめたい。
とりあえず、ProcessListクラスをnewすると、newした瞬間のps aux をStruct化したものの配列を得ることが出来る。
$ pry
[1] pry(main)> require './ps_test'; ps = ProcessList.new
[2] pry(main)> ps.first.command
=> "/usr/lib/systemd/systemd --switched-root --system --deserialize 23"
Fedora20で動作確認はしたが、他の環境で動くのかどうかは全くわからない。
Raspberry Pi 2 に通電
**
Raspberrypi2
買ったは買ったけど、色々時間がつらくてしばらく放置していたので、3週間越しでやっと通電できた。
NOOBS
raspberrypi.orgのヘルプに従い、NOOBSを使ってRaspbianを導入。なんかよくわからないテンションアゲアゲのおばちゃんが丁寧に説明してくれるので、特につまづく点はなし
Raspbian
ラズパイ用にカスタムされたDebianらしい。だったらとりあえず
sudo aptitude update
sudo aptitude upgrade
まあ当たり前だけど、普通のPCよりかなり遅い
Wi-Fi
無線でつなげれば多分最強な気がして、テキトーにやすかったBuffaloの無線LANアダプタを買ってきた。普通にデバイスとして認識するし、ちゃんと繋がるのも確認した。が、何故かケータイのテザリングのAPは見えるのに、ステルスモードにしてある自宅のルーターのAPには繋げない。追々調べるとしても、とりあえず今は有線接続で我慢。
何をしよう
さあ、このラズパイは何に使おう。とりあえず、会社の人に色々おすすめしてもらったセンサ類を買ってきてつないでみよう。
Homebrewのbundleコマンドが終わっていたことに初めて気づいた
久々にMacをクリーンにして、環境構築
自分の環境構築系は、全部Githubにあげてある。だから、その中においてあるシェルスクリプトをたたくだけで、終わるはずだったのに、恐ろしいメッセージが出た。
Error: Unknown command: budle
ない。マジでか。
最後に環境構築をやったのは、仕事で新しいMacをもらった去年の6月。正確にいつなくなったのかはわからないけれど、その直後のリリースあたりから消えたらしい。
brew bundleが使えなくなったのでとりあえず使えるようにした
なんか、メンテできなくなったらしい。なら仕方ない。
急場をしのぐ
こんなエントリを見つけた
このエントリに書いてあった、BrewfileをShellScriptに変換するスクリプトで、とりあえず一名をとりとめる。しかし、どうしたものか。
代替手段
Ciderというものがあるらしい
brew bundleできなくなったのでciderに乗り換えた
ただ、よく調べていない点と、Pythonが必要になる点が気になって、今のところすぐに置き換えてみるつもりはない。
ただですらHomebrewはRubyで書かれていて、さらにそれを動かすためにPythonとpipが必要となると、それらを管理するシェルスクリプトのメンテがまためんどくさいことになりそうだから。
そのうち本気出して調べてなんとかする。