RAILS

Making PStore reaaaally fast (and stable)

http://izumi.plan99.net/blog/index.php/2008/03/26/making-pstore-reaaaally-fast/とりあえず、あとで読む。

UNIXドメインソケットとdRubyを使ってRailsをリモートでいじる

environment.rbとか適当なファイルに以下のコードを追加する。 require 'drb/drb' unless $DRUBY_SERVER $DRUBY_SERVER = DRb.start_service("drbunix:/var/tmp/mongrel.#{Process.pid}.sock", Module.new) end あとはirbでいじり放題。 ポート番号を気にす…

ActiveRecord: IS NULL

:conditionsのnilを含む条件を自動的に「IS NULL」に変換してくれないものかと思っていたら、条件をHashで渡した場合はきちんと変換してくれた。 activerecord-1.15.6/lib/active_record/base.rb # Sanitizes a hash of attribute/value pairs into SQL cond…

Merb

マルチスレッドを強くアピールしてたと思ったんだけど、あんまり話題になっていないような。(Merbの話題自体少ないけど) だれかスループット計ってくんないかな?

The Dependencies system isn't thread safe

http://dev.rubyonrails.org/ticket/9155 Railsのスレッドまわりはもういやぁぁぁ… …というか、Railsでマルチスレッドやってるのが変なんだ。うん。 Railsを採用する前にマルチプロセスでどれだけスケールアウトできるか、よくよく考えたほうがいいと思う。…

AoR: ふりかえり

賞は頂いたけど、反省点も多いので振り返り。 正直、ShootingStarを使った作品が少なかったのが、受賞の要因じゃないかなぁ…と思う。講評でも今後に期待とのことだったし。 もっぱら一人で作ってて、ぜんぜんフィードバックを受けなかったのはイクナイ! 他…

AoR: Comet賞・審査員賞

http://rails.drecom.jp/award2007 AoRでComet賞と審査員賞を頂いた。わーい。 目録と副賞。 部屋がちょっと洗剤臭い。。。

明示的にロールバックする。

transaction do |transaction| david.withdrawal(100) mary.deposit(100) transaction.rollback! # rolls back the transaction that was otherwise going to be successful end

BackgrounDRbのスレッドまわり

new_worker()はBackgrounDRb側のプロセスで実行される。 ぱっと見る限り、スレッドが並列して動くように見える。 各ワーカはスレッドセーフになるように気をつける必要があるのかな? def new_worker(opts={}) @mutex.synchronize { job_key = opts[:job_key…

rails_async_callback: データベースに触る

以下のような感じで、データベースに触ることは出来た。 Bookをクロージャ内で評価するとワケワカなことに。。。 class FooController < ApplicationController def index AsyncCallback.invoke(Book) do |book_class| book_class.find(:all).each do |book|…

plugin: rails_async_callback

http://www.railsify.com/plugins/88-rails_async_callback とりあえず、こっちもリリース。追記 DBアクセスがうまくいってないっぽい、、、直さないと。 インストール ~/foo$ ruby script/plugin install http://railsasynccallb.rubyforge.org/svn/trunk/r…

シンプルに処理を非同期にする

この程度で事足りる処理も多いと思う。 AsyncCallbackはenvironment.rbとかてきとーなトコで生成。 controller class BarController < ApplicationController def index ASYNC_CALLBACK.invoke('あれあれ', 'しょりが', 'おくれて', 'はしるよ?') {|*args| …

シンプルに処理を非同期にする その2

Railsっぽく、スレッドセーフじゃない感じにしてみる。 async_callback.rbはLoadingModuleが勝手に読んでくれるとこに置いとく。 developmentモードだと何度も読み込まれるのが微妙な感じ… async_callback.rb class AsyncCallback @@queue = Queue.new Threa…

Railsify!のCAPTCHA

画像はランダムで選択されるっぽい。 登録しようとして、しばらく頭をひねってしまった。。。

テーブルの一覧を取得する

ActiveRecord::Base.connection.tables ActiveRecord::SchemaDumperを読んで。

更新系のSQLを直接実行する

ActiveRecord::Base.connection.execute('DROP ...')

データベースを切り替える

MySQLで同インスタンス限定。 ActiveRecord::Base.connection.execute("use #{dbname}")

rhtmlでeRubyを評価する

そんな状況はまずないと思うけど… eRubyの評価箇所を部分テンプレート等に切り出して、こんな感じ。 <% ERB.new(@eruby_content).result(binding) %> テンプレートの呼び出し元で「ERB.new(...).result(binding)」とやると、出力が入れ替わるので注意。*1 *1…

ActionでContent-Typeを設定する

「render_to_string :update ..」したら、text/javascriptになってしまったので。 headers['Content-Type'] = '...' 専用のメソッドがあるような気もする。

任意のテーブルを見に行くモデル

とりあえず1.2では一見うまく動いているように見える。 class Foo < ActiveRecord::Base set_table_name 'my_database.my_table' end なんか罠がありそう。 追記 一応、更新もできた。

Award on Rails ライトニングトークの様子

http://cookpad.typepad.jp/lt/ こないだ参加したAward on Rails ライトニングトークの様子が公開されてる。 帰ったら、見てみよう。

ShootingStar: 3.2.3にアップデートしてみた…が

http://rails.office.drecom.jp/takiuchi/archive/212 3.2.3がリリースされていたので、とりあえずアップデートしたら、夜が明けた…orz なんか、いろいろと問題が。環境のせいかもしれないけど、いろいろひと段落したら、作者さんかMLに報告するかな… IEでな…

ShootingStar: urlにプリフィックスを付けるためのパッチ

diff -ru shooting_star-3.2.3.orig/lib/shooting_star/server.rb shooting_star-3.2.3/lib/shooting_star/server.rb --- shooting_star-3.2.3.orig/lib/shooting_star/server.rb 2007-09-19 00:43:58.656250000 +0900 +++ shooting_star-3.2.3/lib/shooting…

urlのカラムをVARCHAR→TEXTに変更

amazonのページに付箋紙を貼ろうとしたら、urlが255文字以内に収まらなくて、変な表示に。 VARCHARのサイズを増やそうと思ったけど、どうもMySQL4だと255が最長のよう。なので、型をVARCHARからTEXTに変更した。今のところ、体感的な速度の低下は見られない…

acts_as_searchableとMySQL4.0と順序

どうも、HyperEstraierでとってきた順序が保証されていないっぽい。 find([1, 2, 3…])でも順序がばらばらになるのかなぁ? > MySQL 4.0 とりあえずパッチ。 Index: acts_as_searchable.rb ===============================================================…

link_to_if

http://railsapi.masuidrive.jp/module/ActionView%3A%3AHelpers%3A%3AUrlHelper/link_to_if こんなんあったんだ。知らなかった。

Award on Rails ライトニングトークに行ってきた

http://railsblog.drecom.jp/support/archive/14 人見知り全開で参加。Sticky Plus!についてプレゼンしてきた。最近は会社と家の往復生活なので久々に他の人々に会った気がする。非コミュ度がアップしてたんでやたら緊張してしまった。発表の順番が回ってく…

Sticky Plus!: 楽天検索機能を付けました

http://storehouse.quickvps.net/sticky_plus/sticky/board?url=http%3A%2F%2Fd.hatena.ne.jp%2Fwinebarrel 適当な言葉で検索(楽天)すると、写真がぺたぺたぺたぺた…楽天検索のコードはこんな感じ。 require 'cgi' require 'json' require 'open-uri' requir…

Session_path not set automatically, contrary to API docs

http://dev.rubyonrails.org/ticket/7203 「CGI::Sessionが自動的にsession path(Cookieのパス)を設定するんだから、デフォルト値は'/'じゃなくてnilにしろよ」という話みたい。 追記 ちょっと試したけど自動的にはならないなぁ…なんか間違ってるのかな?

Sticky Plus!: Flickr検索機能を付けました

http://storehouse.quickvps.net/sticky_plus/sticky/board?url=http%3A%2F%2Fd.hatena.ne.jp%2Fwinebarrel 適当な言葉で検索(Flickr)すると、写真がぺたぺたぺたぺた…flikrのコードはこんな感じ。 require 'cgi' require 'open-uri' require 'rexml/documen…