
Lokka はデフォルトだと Akismet が有効になっていてコメントが承認制になっていると思うのですが、なかなかコメントに気がつかないことが多いので、コメントが投稿されたときに im.kayac.com 経由で iPhone に通知が届くようにしました。 im.kayac.com 、初めて使ったけど便利ですね。
足りない機能とかあったらご連絡・ pull request いただけると幸いです。

Lokka はデフォルトだと Akismet が有効になっていてコメントが承認制になっていると思うのですが、なかなかコメントに気がつかないことが多いので、コメントが投稿されたときに im.kayac.com 経由で iPhone に通知が届くようにしました。 im.kayac.com 、初めて使ったけど便利ですね。
足りない機能とかあったらご連絡・ pull request いただけると幸いです。
このサイトはさくらVPSで動いてたんですけど(Herokuにデプロイするとなぜか Application Error が出るのでHeroku使うのはやめました)、3月にさくらVPSの新プランが発表されて、旧プランからメモリとディスク容量が100GBに増えた新プランに引っ越した(借りかえた)ので、旧プランの契約が終わる5/31までにサイトをどっかに移動させないといけませんでした。新さくらVPSで動かそうかとも思いましたが、EC2のマイクロインスタンスが一年間ただで使えるのでEC2を使ってみることにしました。
EC2とは言えインスタンスを立ち上げたらあとは普通のLinuxなので必要なパッケージをインストールして環境構築しました。Lokkaを bundle install するときに、このサイトでは必要ない PostgreSQL がないとかでエラーが出るのがだるかったけど、デプロイを Capistrano で自動化していたので思ったよりあっさりと移行できました。よかったよかった。
昨日のやつ(Ruby の Enumerable#inject() - portal shit!)、「使い方間違ってるだけだろwww」みたいな感じの言及があったのでもうちょっと調べてみた。やりたかったのは以下のようなこと。日付の範囲をレシーバーにした Enumerable オブジェクトをつくって、日付をキーにグルーピングされたハッシュを作りたかった。
Date.today.beginning_of_month.upto(Date.today.end_of_month).inject({}) do |result, date|
result[date] = Document.where(:created_at.gt => date).and(:created_at.lt => date)
endこれを実行しようとすると
NoMethodError: undefined method `[]=' for Tue, 01 May 2012:Dateと言われる。
しかし以下のようにしたら意図した通りのハッシュを作ってくれた。
Date.today.beginning_of_month.upto(Date.today.end_of_month).inject({}) do |result, date|
result[date] = Document.where(:created_at.gt => date).and(:created_at.lt => date)
result
endふむふむ〜、ナルホディウスですぞ〜〜〜〜〜。Enumerable#inject の引数がハッシュではなく配列のときは最後の result はいらないのだけど、ハッシュのときはいるらしい。
ルbyーーー1.9.2-p290 + レールズ 3.2.2 での現象です。
Ruby の Enumerable#inject 、引数にハッシュ指定するとループの一回目はハッシュとして処理するけど二回目以降 Integer として処理しようとして死ぬ。
ルby−−−−−−−−−1.9.2-p290 での現象です。
旧ブログのタグが引き継げていないのでタグを引き継ぐ(なぜか失敗する。DataMapper の挙動怪しい)
Production でも SQLite で動いているので変える
仕事で勉強したことを趣味グラミングに生かして、趣味グラミングで学んだことを仕事に反映できたらいいと思う。
ポータルシットを AutoPagerizable にしました。
pager のない theme だったら単純に theme をいじって次のページへのリンクに rel="next" とか rel="prev" とかつけて、AutoPagerize させたい HTML エレメントに class=" autopagerize_page_element" とか書くだけで AutoPagerizable になるけど、自分で使ってる theme は yayugu/dm-pagination に依存してるので、プラグインをつくってモンキーパッチした。
こんな感じ。
module Lokka
module AutoPagerize
def self.registered(app); end
end
end
module DataMapper
class Pager
private
def link_to(page, contents=nil, rel={})
%(<a href="#{uri_for(page)}" rel="#{rel[:rel]}">#{contents || page}</a>)
end
def previous_link
li 'previous jump', link_to(previous_page, option(:previous_text), {:rel => "prev"}) if previous_page
end
def next_link
li 'next jump', link_to(next_page, option(:next_text), {:rel => "next"}) if next_page
end
end
endついでに LDRizable になるように hentry と hfeed の設定もしといた。
Amazon へのリンクを生成する Lokka Plugin を作りました。テストがないのでまだ単独のリポジトリとしては公開していないけど、以下でコードは取得できます。
lokka/public/plugin/lokka-amazon_associate at portalshit · morygonzalez/lokka
いつまで経っても全部テスト書けそうにないのでテストほぼないけどとりあえず単独のリポジトリとして公開しました。
使い方ですが、プラグインを LOKKA_ROOT/public/plugin/ に入れた後、ブラウザで www.example.com/admin/plugins/amazon_associate にアクセスしてご自身の Associate Tag と Access Key ID と Secret Key を入れます。
お使いの Lokka の theme を開いて、本文を表示している部分を associate_link() というヘルパーメソッドに渡します。たとえば entry.haml が
.body
= @entry.bodyとなっているなら、
.body
= associate_link @entry.bodyというようにします。
そんで本文中で以下のように書きます。(P_BLOG の頃に使っていた ISBN/ASIN 変換プラグインと同じように使えるようにしました)
<!-- ISBN=PRODUCTID -->
そのうち画像のサイズとか選べるようにしたいですね。
24時間キャッシュするようにしてるけど、 Earthquake.gem で Growl するプラグインの画像をキャッシュするコードを真似てます。
マジで感謝。