rails

validationエラー時にdivで囲わない

今はerror_message_onにhtml_tagというオプションが追加されて、好きなtagで囲めるようになりました。以下の記事のような対応は必要ありません。コメント感謝railsのデフォのvalidationエラーはdivタグを使用する。通常時 <%= error_message_on "post", "tit…

force_quotes

通常、FasterCSVではき出されるCSVでは数字は、""で囲われない。 csv_str = FasterCSV.generate do |csv| csv << %w[1, 2] csv << %w[3, 4] csv << %w[5, 6] end puts csv_str #=> 1,2 #=> 3,4 #=> 5,6 FasterCSVには渡せるオプションがいくつかあって、forc…

polymorphic association で Eager Loading

polymorphic association使おうとしたらEagerLoadできないでやんの。 いろいろ探してたら、http://software.haruska.com/2007/08/eager-loading-polymorphic-associations.htmlこのページ見つけたのだけど、ネストした:includeが使えない。 おしい。非常にお…

radio_button_tagでobserve_fieldが使えない

ラジオボタンの選択で、フォームに入力する項目を切り替えようとしたのだけど、ぜんぜんうまくいかない。 ググったら出てきた。やはりradio_button_tagでobserve_fieldが使えないらしい。 This is what I had and it doesn't work. <%= radio_button_tag 'sh…

valides_date_time pluginで日本の時間表記を通す

日付のvalidateをどうしようかなと思ったら、すでにpluginでありました。 ./script/plugin install validates_date_time でインストール。 validates_date :birthday というふうに使うんだけど、このプラグイン。2008/1/1というふうな日本の日付表記が通りま…

CSVエクスポートはmysqlに任せた方が1000倍早い

CSVでエクスポートさせるときFasterCSVはよく使うけど、レコード数が増えればそれに比例して処理スピードが鈍化する。 People.find(1, :include=>:profiles) としたとき、もしhas_manyしているprofileが1000個あった場合、そもそもオブジェクトのnewがボトル…

Rubyで書かれた監視ツールGOD

A Better Way to MonitorGod is an easy to configure, easy to extend monitoring framework written in Ruby.Keeping your server processes and tasks running should be a simple part of your deployment process. God aims to be the simplest, most p…

ActiveRecord::Extensions

去年Twitterで教えてもらったActiveRecord::Extensions。すごく良いです。 日本語で書かれた記事が見つからなかったので、書いてみます。ActiveRecord::Extensionsは文字通り、ActiveRecordの拡張です。わりと便利な機能がたくさんあるのでmysql使っている人…

Action Pack: Multiview

Rails 2.0: It's done! にのっていた一部を英語苦手だけど訳してみるよ。Multiviewを改善しました。#respond_toは以前からありましたが、この機能はテンプレートに対してさらに一歩踏み込み、テンプレートのフォーマットそれぞれにレンダリングエンジンを切…

memcacheにデータを保存する方法

memcacheはkey,valueとセットでデータを保存している。 acts_as_cachedなんかをいれといて、CACHEでmemcacheにアクセスできるようにしとく。 データをmemcacheに保存する CACHE.set(cache_key,data) データを保持する期間を設定する CACHE.set(cache_key,dat…

TwitterはRails製

訳してみる。 2.Ruby on Railsでいかに負荷を克服したか 現在、TwitterはRailsで出来たもっとも大きなサイトだ。Railsはスケーリングの問題がある――どんな成長サイトでもかならず訪れる問題――他のフレームワークと同じように。 そのとき、Railsコミュニテ…

二重投稿防止のための方法

railsでは二重投稿防止のために簡単な方法が用意されています。 <%= submit_tag '開始', :disable_with =>'読み取り中・・・' %> submit_tag に :disable_with オプションを付けるだけ。 一度ボタンを押したら、処理が終わるまでボタンが押せなくなります。…

has_many :through でひっぱってくる数を指定する

何がどうなっているのか、おいらも分からないのだけどYO、 ここを参考にしてmodelにぴゅっと加えてみたら、 普段際限なく情報拾ってくるhas_many throughが 指定数だけ取れるようになったんだYO。 class User < ActiveRecord::Base has_many :groups, :throu…

アクセス元

アクセス元を知るにはcontroller内で @request.referer で分かる。 ドキュメントに書いてなかったので、小一時間悩んだ。

ブログパーツ

今作っているアプリケーションでブログパーツ機能が欲しい。iframeだと縦・横幅が動的に変化しないので、javascriptを使う方法でいきたい。また、scriptタグを任意の場所に入れるだけで、サーバ側にパラメータも渡せて、ブログパーツが挿入できるようにした…

exception_notification plugin

production環境下でエラーが発生したら、指定のメールアドレスへエラー内容を送信してくれるplugin インストール $ ./script/plugin install exception_notification 設定 class ApplicationController < ActionController::Base include ExceptionNotifiabl…

sort

どうもsortを使おうとしても、思いどおりに動かない。 条件式を指定したソート a = ["Hitoshi,045", "Sizuo,046", "Yoshi,0138"] p a.sort{|a, b| a.split(',')[1] <=> b.split(',')[1]} #=> ["Yoshi,0138", "Hitoshi,045", "Sizuo,046"] こんな感じにかっこ…

acts_as_cachedを使う

ActiveRecord をキャッシュしたい、そんなあなたに acts_as_cached。 1. Install memcached. http://www.danga.com/memcached/download.bml より memcached の最新版をインストール。 途中、libevent が必要だったので、こっちを先にインストールしておく。 …

acts_as_cached

DBにアクセスしまくるアプリケーションになってしまいそうなので、masuidriveさんとこで紹介されていた acts_as_cached を使うことにする。 acts_as_cached: ActiveRecordを手軽にキャッシュ memcachedを使って、ActiveRecordを手軽にキャッシュfindの代わり…

RMagick

今までソースからコンパイルして入れていたけど、さっきgemで gem install rmagickやってみたらrmagick-1.14.1が普通に入った*1。今までの苦労はなんだったんだ。。。 *1:gruff 入れてグラフ描画に使う予定

選択済みのプルダウンメニュー

プルダウンメニューの情報を編集したいとき、プルダウンメニューをすでに選択済みにしないといけない。TodoList: 所属変更のため こちらを参考にした。view <%= select 'group', 'category_id', @category.collect {|c| ["#{c.parent_category.name} - #{c.n…

ローディングインジケータ

ちょっと処理時間が長そうなので、次のページに移るまでの間、インジケータを付けた。 こういうちょこっとやりたいと思ったことがrailsではすぐできるのが魅力 <%= start_form_tag :action => 'create' %> (中略:フォームとか) <%= submit_tag _('Create'…

Google Web API

GoogleWeb APIが新規にキーを発行してくれない*1。以前発行してたので助かった。 GoogleSearch.wsdlもなくなっている。以前なら http://api.google.com/GoogleSearch.wsdlでアクセスできるのに、今はnot found。これも前持ってたやつがあったので助かった。 …