monolog

2015年10月の投稿

Programming

sinatra-activerecord で seed_fu を使ってみた

Sinatra で、sinatra-activerecord を使っているときに、$ rake db:seed すると、既に存在するレコードが重複登録される。

これ、とても一般的な問題で、 Rails だと、seed_fu というのを使って解決したりするらしい。

Rails (ActiveRecord 4.x) で動くなら Sinatra (sinatra-activerecord) でも問題なく動くとおもいきや、$ rake -T しても db:seed_fu が表示されない……

ソースやらなんやら見ながら唸っていたら、どうも Rake のタスク追加を、 Railtie を使ってやろうとしているところを発見した。
どうやら Rails だと、初期化時にここのコードが走るらしいのだけれど、Sinatra にそんなものはないので当然タスクは追加されない。

というわけで、Rakefile にベタ書きしてみる。
メインのアプリケーションソースが ./app.rb にあるということになっています。(適宜書き換えてください)
あと、なぜか <<< < に置き換えられたので修正してください。

コードとしては、seed_fu の rakeファイル を元に、sinatra-activerecord から、データベースの接続設定を拾ってくる部分を参考にしたりした。

の部分がミソで、これでアプリケーションを通してデータベースに接続する必要がある。ここで2時間ぐらいハマった。

Programming

non-root な環境で UTF-8 対応の nano をビルドする

Ubuntu なレンタルサーバーで、 GNU nano を使おうとしたらそもそも nano が入ってなくて、適当にソースを拾ってきて野良ビルドしたら日本語が打てなくてつらくなった。
つらくなったので、--with-utf8 を付けてビルドしようとしたら、 configure で以下のエラーが出てつらくなって結構ハマったので備忘録。

これを non-root な環境で以下の方法にて解決した。
とてもシンプルではあるんだけど、 –enable-widec とか忘れるねん……

バージョンは執筆時点のものです。

追記 (2015/10/14)

とのことなので、Gehirn RS2 では non-root でも何もしなくても nano が使えるようになるらしい。ありがたい……。

Programming

Gehirn DNS を DDNS っぽく使えるようにする gddns2 を作った

皆さん Gehirn DNS 使ってますか? 僕は使ってます!

Gehirn DNS というのは、エイリアスやらマイグレーションやら機能が充実している DNSサービスです。
Web インターフェースもモダンで結構使いやすいのですが、もちろん API も叩けるので CLI でアップデートできて便利。
ステマっぽいですが、使ったところで僕には1円も入りません……

そんな Gehirn DNS を、gddns を使って DDNS っぽく使っていたのですが、Gehirn Infrastructure Service の開始に伴い API体型もガラッと変わりました。

新しい Gehirn DNS でも DDNS っぽく使いたいですよね。
というわけで gddns2 を作りました。

read more »