Rails

まとめた!

AP4RにPostgreSQLサポートが入ったようなので、実際に試してみました。 まだgem化されてはいないので、頭の悪い方法ですが強引にtrunk headを放り込みます。 要はgemでインストールされたAP4Rをごそっとtrunkに差し替えればいいので、 $ cd /opt/local/lib/r…

要らない物は持ってこない。

Fooモデルがid, title, bodyを持っているとする。idだけ使いたいときに、 foo=Foo.find(:all)とすると、idしか使わないんだけどtitleとbodyもおまけで付いてくる。メモリとかもったいないので、 foo=Foo.find_by_sql("select id from foos")とfind_by_sqlで…

触るな。

acts_as_searchableの検索対象に入ってるテーブルに対して、手動で*1deleteなんかやると拙い。Hyper Estraier側で持ってるレコードとDB側のレコードが食い違うので、Model#fulltext_searchで例外が発生する可能性がある。消したいときはscript/consoleからfi…

一本化、出来るかな。

優先度設定が効いていないようなので、なんでかなと思いつつAP4Rのサイトを見てみると、「Added PostgreSQL support.」の文字が。6時間前にコミットされたばかりみたい。これはうれしい。メッセージストアにMySQLを使う代わりに、アプリケーションが使ってる…

結局。

アプリケーション側のバックエンドをSQLiteからPostgreSQLに切り替えたところ、Rails側ではToo many open filesは出なくなった。しかし、一度に大量にキューへ突っ込むとやはりAP4R用のMongrel側でToo many open filesが出る。 結局メッセージストアはMySQL…

開きすぎ。

昨日の記事の"Too many open files"問題、AP4R自体が原因じゃないみたい。アクティビティモニタで見てるとRailsを動かしてるRubyのプロセスがSQLiteのデータベースファイルを開いてるんだけど、アクションを一つ実行するごとに一つ、開いたDBファイルが増え…

追記。

MySQLを入れて試したところ、例外は出なくなった。やはりdisk storeだとキューに入れすぎると落ちるらしい。

複数使いたくはないんだけど。

AP4Rをdisk storeモードで動かしていて、調子に乗ってap4r.async_toで大量の処理をキューに放り込むと「Too many open files - hogehoge.msg (Errno::EMFILE)」が発生する。ファイル開きすぎ、ってことなのでメッセージストアにMySQLを使えばおそらく解決す…

全文検索、より早く、簡単に。

Railsで全文検索と言えば有名なのがacts_as_searchable。加えて、acts_as_ludiaも登場。この二つを軽く見比べてみる。 acts_as_searchable 全文検索エンジンはHyper Estraier 導入はPorts一発 メリット RDBMSに依存しない DBサーバと検索サーバの分離が可能…

rb-gslとRailsは同時に使えない?

GSLのRubyバインディング、rb-gslとRails、と言うかRubyGemsを同時に使おうとすると落ちる。こんな感じ。 $ irb irb(main):001:0> require 'gsl' => true irb(main):002:0> require 'rubygems' TypeError: superclass mismatch for class Rational from /opt…

ところで、本題は。

HTML::ContentExtractorが使いたかったんだけど、移植するとなると大仕事なので標準入出力経由でPerlを叩くという暴挙。 まず準備。 $ sudo cpan (省略) cpan> install HTML::ContentExtractor (省略) cpan> exit $ 続いてPerl側を準備。 (content_extractor…

あとで。

AP4Rを使って、非同期処理の実験。RSSリーダのOPMLインポート機能みたいな感じで、時間がかかる処理をやりたいとき、これを使えば処理が間に合わずタイムアウトって事をなくせる。また、これはサーバ負荷の平滑化もやってくれるそう。 ところが困ったことに…

結論、じゃなくて終了!

想摩灯 - 雨上がりの青空を探して。 ようやくうちのサイトにもコメントspamが来襲するように。想磨灯はspam対策機構を持たないから、このまま使い続けるにはコメント制限するか、spam対策をちゃんと施す必要がある。 なんだけど、この対策にも結構コストがか…

そろそろ、次へ。

カケラの樹の臨時メンテナンスを行って、いくつか新機能を実装しました。これで大きな不具合が出なければ近いうちに正式サービスへと移行したいな。中身は変わることなく、BETAの文字が外れるだけだけど。改修内容はこんな感じ。 利用開始までの動線短縮 従…

そうじゃなくて、さあ……。

RDBMSにSQLite3を使ってる環境で、rake db:migrateの定義に add_column :foo, :bar, :string, :default => '' とかやってると、デフォルト値が''になってしまうような気がする。空文字列じゃなくて、シングルクォーテーション二つ。なんだこれ。

これでいいのかな。

require_gem 'activerecord' とやってたところを、 require 'active_record' とやれば直った。 gem 'activerecord' だとuninitialized constant ActiveRecord (NameError)が出て落ちる。

消えるので、新しくしてね。

Warning: require_gem is obsolete. Use gem instead.と言われるので、require_gemをgemに単に置き換えたんだけど、落っこちるスクリプトがある。まだ詳しくは調べてない。メッセージ出るだけで今のところ害はないんだけど、気持ち悪いので原因突き止めてさ…

机をよりよく使う。

NetBeansを使用すべく、インストール。RubyとRailsは既存の物を使いたいので、GUIアプリケーションでもMacPortsからインストールした物が使えるようにパス設定。~/MacOSX/environment.plistにProperty List EditorでPATHに/opt/local/binなどを追加。 そして…

続・Rails1.2.1+GetText1.9.0

やっぱりどうもGetTextを組み込むとActionWebServiceで作ったXML-RPC APIがおかしくなるみたい。 実験内容 環境は次の通りです。 Mac OS X 10.4.8 ruby 1.8.5 (2006-08-25) [powerpc-darwin8.8.0] Rails 1.2.1 Ruby-GetText-Package 1.9.0 新規Railsアプリケ…

Rails1.2.1+GetText1.9.0で。

最新の組み合わせで、何故かActionWebServiceで組んだXML-RPC APIが動かなくなる。Rails1.1.6+GetText1.8.0なら大丈夫なので、どっちかの更新で引っかかったんだろうと思うけど。他の部分はちゃんと動いてるし、ブラウザからxmlrpc/invokeを叩いたときも正常…

新しくなって。

1.2.1にアップデートしたんですが、2.0で削除される古い機能について警告が出るようになったようです。 今日気づいた点はこれ。 rake migrateコマンドについて、rake db:migrateを使おう

巨大なJSON。

prototype.jsのAjax.Requestとかでは、X-JSONヘッダがあるとその内容をJSONとみなして解釈した上でonCompleteとかの第二引数に渡してくれる。しかしこれ、容量制限無い? 2KB程度ならちゃんと動いたんだけど、120KBくらい渡すとリクエストが失敗したと見なさ…

見渡せるように。

RadRailsの最新版、RHTMLファイルの構造もアウトライン表示されるようになりました。今までも.rbソースは表示されてたんだけど、RHTMLでの表示はなかった。文書構造が楽に見渡せるので、これは便利。

Text::Hatena

私が開発したサービスではテキストフォーマッタにRuby版のText::Hatenaを採用してるんですが、カケラの樹でこれを正式リリース版*1からtrunkに入れ替えました。かなり強力になってて、ASIN記法とかfotolife記法なんかも通ります。id記法も通るんですけど、カ…

後でやっておいて。

スラッシュドット ジャパン | Ruby on Rails に非同期処理を追加するためのライブラリが公開 BackgrounDRbみたいな物?と思ったけど、マシンが空いている時を見計らって処理を走らせてくれるみたいな話が。賢い。 これ使えば、RSSリーダに対してOPMLインポー…

うるさい、帰れ。

Rails Plugin: DNSBL Check 幸いなことにMNはまだ大丈夫だけど、各種CMSとかにとって、spam対策は頭の痛い問題。そこでこれ。 DNSBLを参照して、spamを弾いてくれるプラグイン。 標準でlist.dsbl.org、bl.spamcop.net、sbl-xbl.spamhaus.orgを見に行くけど、…

同じ事を二度繰り返すな。

app/controllers/application.rbにある処理を書いて、各Controllerで使い回し。 そして、XML-RPC APIをapp/apis/xmlrpc_api.rbで作って、この中でさっき書いたapplication.rbの処理を使いたい。 ……つかえないよ! どうしよう。当座の用として、コピーしちゃ…

Locomotive日本語リソース(Japanese resource for Locomotive)

ついかっとなって訳した。今は公開している。 OS XでRailsを手軽に使える、Locomotiveの日本語リソースを作ってみました。大部分が日本語化されます。 所々英語が残ってますが。ローカライズが十分考慮されてないのかな。 使い方は次の通り。 ダウンロードし…

たぶきんし。

RadRailsが0.7になって、Ruby Editorでタブが使えなくなった。タブキーを押すとスペースが二個入ります。 今までは設定にUse Tabsって言うのがあったんだけど、これもなくなった。 インデントは一般的にスペース推奨、おまけにRubyのコーディング規約でもそ…

小さいので手の込んだことを。

ARでは、なんとか.transaction{}でトランザクションが使える。で、SQLiteはトランザクション対応。 なのに、transactionメソッドを使ったコードを走らせてログを見ると、どうもbegin; commit; が発行されてる気配が見えない。 PostgreSQLで走らせるとちゃん…