Rails
config/environment.rb の末尾に以下を追加した。 SVNVERSION = %x{svnversion #{RAILS_ROOT}}.sub(/^$/,"NA") 最新の状態で起動しているか。 複数のアプリケーションやサーバが、同じリビジョンで動いてるか。 起動時に作業ディレクトリに変更が加えられて…
現時点(Rails2.3.2)では、BufferedLoggerのフォーマットは変えられないらしい。 #1307 BufferedLogger should support message formatting. - Ruby on Rails - rails formatterを設定するパッチが出てるけど、まだ取り込まれてない。 loggerで出すログのフォ…
http://api.rubyonrails.org/classes/ActionController/Base.html render :text => "error", :status => 500 render :text => "error", :status => :internal_server_error statusをシンボルで指定する場合は、lib/action_controller/status_code.rbを参照。…
バリデーションの階層 ActiveRecord::Validations::ClassMethods の一番上にバリデーション方法の階層について書いてある。高レベルな順に、 validates_presence_of :firstname みたいなやつ。modelのクラスレベルで呼ぶ。 validates_each クラスメソッドの …
ブラウザから複数のファイルを一度にアップロードできるサービスがある。 http://www.picamatic.com/ http://f.hatena.ne.jp/ http://www.betriebsraum.de/FileBrowser/FileBrowser.htm ( http://www.betriebsraum.de/blog/2006/01/15/update-flash-8-file-b…
MySQLとActiveRecordでsequenceみたいなことをする方法。LAST_INSERT_ID()を使う。ここらへんを参考に。 http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html#function_last-insert-id モデルを生成。 $ ./script/generate model xxx_sequen…
以下はRails 1.2.3の話。2.0でどうなってるかは知らないです。もっと良くなってるかも。概略 From: info@example.com To: <%= @user.email %> Bcc: admin@example.com Subject: <%= @user.name %>さんにお知らせです。 Content-Transfer-Encoding: 7bit <%= …
rsyncでRailsのテンプレートを同期した時に、たまに変更が反映されないことがある。ActionView::Baseのテンプレートが更新されたかどうかのチェックは、「ファイルの変更時刻」と「コンパイル時刻」を比較していて、これがマズイんじゃないだろうか……。 @@co…
TextHelper#textilize は少なくとも手元の環境(Rails 1.2.6/RedCloth 3.0.4)ではまともに動かないっぽい。以下の手順で確認した。 $ ./script/console >> a = ActionView::Base.new # リストから脱出ができない。 >> a.textilize("abc\n* def\n\n\nghi") => …
上の記事で、 config.frameworks -= [ :active_record ] と書きましたが、これだとActiveRecordがロードされてしまいます。一緒にActionWebServiceも外す必要がありました。 config.frameworks -= [ :active_record, :action_web_service ] 以下のようにして…
RailsでActiveRecordを使いたくない場合、config/environment.rbに config.frameworks -= [ :active_record ] と書く方法が以前から紹介されていました*1。……が、これは手元の1.2.6でエラーになります。どうやら1.2.1からActiveRecordを外せなくなっていたよ…
Ruby on Rails の render メソッドは、コントローラとビューで動作が違う。 ActionController::Base#render ActionView::Base#render の2つは動作が異なる。 *.rhtml やヘルパーから呼ばれるのが、ActionView の render。 ActionView の render は、結果の文…
p request.envrequestのクラスはActionController::CgiRequest。ActionController::AbstractRequestを継承。 actionpack-1.13.3/lib/action_controller/cgi_process.rb actionpack-1.13.3/lib/action_controller/request.rb
Apacheが1.xでmod_proxy_balancerが使えないので、Poundを入れてみた。とりあえず Apache mod_proxy → Pound → mongrel_clusterみたいな感じで、mod_proxy_balancerの代替にしてみようと思った。けど、X-FORWARDED-FORが元のアドレスを保持してくれない。カ…
RailsでSQLの条件を扱う、Condition Builderプラグインが便利です。 最新版(1.1) http://blog.inquirylabs.com/2007/06/28/condition-builder-11/ 説明 http://blog.inquirylabs.com/2007/01/04/condition-builder-10-released/ 以前の記事 http://blog.inqu…
<script type="text/javascript" src="/include.js"></script> ↓ document.write('<p>foobar<\/p>');のようにJavaScriptで外部HTMLをインクルードしたい場合。 document.writeをRailsで出力するメソッド。 def render_to_js(opts) str = render_to_string opts str = str.gsub(/[\r\n]/," ") str = str.gsub(/\\/,"\\\\") s</p>…
<%= form("record_name") %> で@record_nameのフォームを簡単に生成できるというのを知った。 http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html でも細かい編集もしたかったので、以下のようにしてみた。 <%= form("record_n…
テーブルにcreated_atというカラムを作っておくと、ActiveRecordが自動的にデータを作成した日時を記録してくれる。Magic Field Name。似たようなのに、以下の4種類がある。 created_at …… 作成日時 created_on …… 作成日 updated_at …… 更新日時 updated_on…
f = Foo.find(id) return nil if f.nil? みたいなコードを書いてしまいそうになる。これは間違い。find(id)で見つからない場合、例外(ActiveRecord::RecordNotFound)が発生する。正しくは、 f = Foo.find_by_id(id) return nil if f.nil?
application_helper.rbに追加する用。 def hbr(str) str = html_escape(str) str.gsub(/\r\n|\r|\n/, "<br />") end # <%=hbr textarea_value %>
ActionWebServiceを使っていたら、クライアント側にクッキーが設定されないせいで、リクエスト毎にセッションファイルが1つずつ増えていた。ので、セッションをオフにする方法を調べた。 http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionOptions…
app/models/abc/model_name.rbというファイルがあった場合、以前は ModelNameだったのが、1.2.3では Abc::ModelNameになってた。こっちのほうが正しい感じだけど、すごく困る。
http://d.hatena.ne.jp/koseki2/20070316/AwsDoubleCharaEntity の続き。原因がわかった。AWSのバージョンは1.1.6。ActionPackのバージョンは1.12.5。エラーが発生している箇所は、ActionPack内のcgi_methods.rbで定義されている CGIMethods.parse_request_p…
ActionWebServiceを使う簡単なアプリケーションを作成した。AWSを使うとき毎回参考にしてるのはこのページ。 http://idm.s9.xrea.com/ratio/2006/04/17/000414.html 参考になります。 AWSを使ったウェブサービスの開発手順最初にrailsアプリケーションを生成…
(追記) http://d.hatena.ne.jp/koseki2/20070318/AwsDoubleCharaEntity2 に続きがあります。追記終わり。 下の記事の手順に従って、AWSを使うシンプルなアプリケーションを作成した後、client_controller.rbの、get_infoメソッドを次のように変えてみる。 cl…
text_area_tag がサポートしている :size=>"30x10" のようなサイズ指定が、text_area だとうまく適用されない。 <%= text_area_tag("field_name", "value", :size=>"30x10") %> <%= text_area("obj_name", "method_name", :size=>"30x10") %>↓ <textarea cols="30" id="field_name" name="field_name" rows="10">value</textarea>
$ kill -QUIT `cat ./log/mongrel.pid`でトレースをオン・オフできるようにする方法。以下のスクリプトを保存し、-Sオプションでファイルを指定してMongrelを起動します。 # # mongrel_handlers.rb # require 'tracer' @my_tracer_flg = false trap("QUIT") …
(追記) この問題について、原因はRubyの側にあるのではないかと考えています。特定の条件下でTCPSocket#flushを実行すると、スレッドが停止したまま処理が戻ってこなくなります。以下の投稿で、Railsを使わず再現する方法を説明しました。 http://blade.naga…
rails 1.1.6 / actionpack-1.12.5 で。 http://dev.rubyonrails.org/ticket/3685 なんだかクッキーが消えないと思ったら、domainを指定していたせいでした。以下のアプリケーションで確認しました。 cook_controller.rb class CookController < ApplicationC…
Ruby on RailsでDBのパスワードをdatabase.ymlの外に書く方法。Subversionにパスワードをコミットするのが嫌だったので調べた。database.ymlはERBで処理されるというのを知らなかった。 http://skwp.wordpress.com/2006/08/28/encrypted-db-passwords-for-ra…