rails
※ドキュメントを読みながらこんなもんかな?とやってみたやつなので問題あるかもしれません。何かあればコメント頂けると嬉しいです。例えば、DBからデータを取り出して逐次メールを送信する場合。 よく知られているようにメールの送信はコネクションの確立…
FragmentCache等に比べ、活用されることの少ないActionCacheですが、正直よく理解してないという方も多いのではないだろうか。Rails 2.1のActionCacheのコードをざっと眺めて、簡単に特徴をまとめたいと思う。 「ActionCacheはフィルタ」 ActionCacheは、「…
パラメータ(クエリストリング)を考慮したアクションキャッシュが欲しい。 あるのかな? ないのならつくろうかな。
acts_as_versionedは、モデルのバージョニングを手軽に実現できるプラグイン。 acts_as_taggable_on_steroidsは、タグを手軽に実現できるプラグイン。 併用したとき、モデルのバージョンを戻すと同時にタグもその時点のものに戻したいと思うのが人情というも…
class SampleFilter def initialize(options) # オプションのせっていなどなど end def before(controller) end def after(controller) controller.response.body.gsub!(/hoge/, 'fuga') end end class ActionController::Base #:nodoc: def self.sample_bef…
id:darashiさんが開発している、Railsで携帯向けアプリケーションを構築する時に便利なRailsプラグイン「Jpmobile」の機能を拡張するプラグインです。Jpmobileにおいて、携帯の絵文字はUnicodeの私的領域にマッピングされます。そしてアクセスがあるとユーザ…
こういう方法もあるけど・・・ActionController::Caching::Pages#cache_page(caches_pageでafter_filgerに登録されるメソッド)を使えばurl_forで工夫したりする必要ないよ。(Rails 2.1.0でのみ確認) require 'qrcoder' class CodeController < ApplicationC…
変更点多いですね・・・。今つくってるの2.0.2から移行しようとおもったけど、使ってるプラグイン関連の挙動が怪しくなったのでやめました。
きっかけ ネットワーク越しだし、速度が出ないのはまぁいいんだけど、それにしたって遅い。 具体的にはXMLのパースが遅い、遅すぎる。 なんとかならぬか。どうやらXMLSimpleがボトルネックらしい。 JSON使った方がましかなぁ。 パーサの速度比較 同じデータ…
タイトルの通り。 たとえば、mongrel_clusterなんかをつかってて、 prefix: /railsとかやってて、アプリのURLが http://taslam.example.jp/sampleなんかになってると、javascript_include_tag(*, :cache => 'cache')の動作がおかしくなる。Railsのソースを追…
関連テーブルでカテゴリみたいな多対多の関連を実装したとき、一番安易なのはとのかくJOINで全部連結しちゃう方法だけど、これだと重そうだ。なるべく連結の規模が小さくて拡張しやすそうなSQLを考えてる。SQL素人の癖に。いろいろ試してみたけどこんな感じ…
そのままだとモデル毎に接続を設定することになるが、これでは複数のユーザがそれぞれのアカウントで接続して、それぞれの権限でエントリを編集するといったことはできない。コードを追ってみたところ、エントリの更新などの際にはActiveResource#connection…
to_xmlが遅いので適当に作ってみた。developmentモードではキャッシュ無効。 ただし memcache-clientが必要。 :builderオプションが渡されたときは、キャッシュを使わない。(Entry.find(:all).to_xml とか) Rails 2.0.2でしか試してない。 無保証。 インス…
やっぱり便利ですね。 既存のアプリにインストール script/plugin install acts_as_versionedモデルにacts_as_versionedを追記。 class Entry < ActiveRecord::Base acts_as_versioned end マイグレーションを追加。 require 'entry' class CreateEntryVersi…
Basic認証以外に対応させるの例として、WSSE認証。 require 'digest/sha1' require 'base64' class ActiveResource::Connection::WSSE < ActiveResource::Connection private def authorization_header if @site.user || @site.password { 'Accept' => 'appl…
HTTPリクエストヘッダに認証情報を付加する場合(WSSEとか)。 ソースを追ってみるとActiveResource::Connection#authorization_headerをオーバーライドしてやれば良い様だ。 # Sets authorization header; authentication information is pulled from crede…
RESTって? http://yohei-y.blogspot.com/2005/04/rest_23.html:REST入門 ActiveResourceって? RESTアーキテクチャでいうところのリソースをActiveRecordと同様のインタフェースで扱うためのマッパ。 TwitterAPIをActiveResourceで TwitterのAPIでRailsのAc…
Railsアプリでメールを受信して処理 ActionMailer::Base.receive(STDIN.read) とかやる 受信のたびに起動とか重いよ! SMTPサーバとRailsアプリのサーバが違うと面倒 ってことで、コントローラで処理させるための簡単なスクリプトを書いた。使うことに以下の…
これはなに? ActionMailer:Baseのサブクラス。 日本語のPC用のメール及び携帯電話用のメールを送る際に便利かなぁというもの。 動作環境 Ruby 1.8.6 ActionMailer 2.0.x gettext/railsと共存できません([http:/d.hatena.ne.jp/taslam/20080311/1205830007:…
gettext/rails.rb内で、ActionMailer::Base#create!を変更している影響でこのままでは正しいメールを送信できない。 とりあえず以下のように、メソッドチェインからgettext/rails.rbでの拡張を外せば動く。 require 'gettext/rails' class ActionMailer::Bas…
いろいろめんどくさいのでjpMobileプラグインを使う。 DOCTYPEやらがキャリア毎に違うのでキャリア毎に用意して、切り替える。 Content-typeは「application/xhtml+xml」にする。 携帯キャリア毎にlayout切り替え class Mobile::Base < ApplicationControlle…
るびまにも書いてあるし、さんざん既出だろうけど、ちょっとハマったので念のためメモ。 user.update_attributes(:name => '') # => false user.update_attribute(:name, '') # => true
HTTPレスポンスヘッダでキャッシュコントロールを指定してやればよい。 class ApplicationController < ActionController::Base before_filter :cache_control private def cache_control headers['Cache-Control'] = 'private, max-age:300' headers['Expir…
Rails 1.2.6 class RealEstate < ActiveRecord::Base validates_uniqueness_of :name end class Building < RealEstate end class Land < RealEstate end building1 = Building.new(:name => 'test') building1.save # => true building2 = Building.new(:na…
http://d.hatena.ne.jp/technohippy/20070807 を参考に、Railsでインストールした。cronのように定期的にワーカーを立ち上げ、処理させることもできる。config/backgroundrb_schedules.yml # ラベル(わかりやすい名前を) sample_runner: # 対象のワーカー…
非同期処理が必要になったところで、gihyo.jpに「AP4R,Rubyで非同期メッセージング」という記事をみつけた。 やってみた。でも、第3回 SAF機能とテストサポートによる安心非同期 (3/5)で、記事の通りに動かない・・・ class AsyncShopController < Application…
acts_as_cachedは便利だが、モデルで継承(STI)を使っている場合、扱いに注意必要。たとえば、 class RealEstate < ActiveRecord::Base acts_as_cached end class Land < RealEstate end class Building < RealEstate end ってモデルがあって、 # インスタ…
yoshitetsuの日記:acts_as_cachedを使うを参考に導入してみた。 @categories = Category.get_cache(:all) do Category.find(:all, :order => 'index') end ブロックを渡すと、ブロックの戻り値をキャッシュします。 # acts_as_cached.rb # key はget_cacheの…
Railsは重い! これは事実。大規模なフレームワーク、高度な抽象化は重いもの。 キャッシュを活用しないとやってられません。でも、キャッシュ使ってると思うのが、失効処理の複雑さ。 Sweeperを使うったって、モデルの変更で失効させないといけないところが…
Erubisは高速さがウリのeRuby処理系らしい。るびまを参考に導入してみた。 Erubis の Preprocessing 機能を使って Ruby on Rails の View 層を高速化するここにあったpartial展開ヘルパを少し書き換えて以下のようなヘルパを使っている。 # Erubis # render …