rails

Railsよ,ありがとう

"Thank you, Rails"を翻訳しました。なんか難しかった。 誤訳がたくさんあると思うので,教えていただけるとありがたいです。 - Railsよ,ありがとう jacob Kaplan-Moss 2009/11/05 技術的なコミュニティにとって,ライバルをけなすことはファッションでもあ…

Mongrelの作者がキレた件

Rails用によく使われているWebサーバ(オレも使ってる)Mongrelの作者であるZed Shawがブチ切れた件が話題になってます。オリジナルのエントリは「Rails Is A Ghetto」と,タイトルもすごい。ずいぶん長文だし,スラング満載でよく分からないのだけど,うれ…

Rails怪奇現象その3

DatePickerを同ページに2つ以上設置すると,2つ目以降表示されない。そういえばRailsネイティブのdate_selectも複数設定とかindex対応とかはうまくやってなかった気がするなあ。

Rails怪奇現象その2

DatePicker(http://rails.to/pages/datepickerj)が, <%= javascript_include_tag :defaults %>してると,表示がおかしくなる(カレンダーが画面いっぱいに広がっちゃう)。FirefoxでもIEでもダメみたい。Railsが1.1.6だから? とりあえず javascript_incl…

Rails怪奇現象その1

In Place Editorを使ったら,IEだと「Saving..」の表示のまま返ってこない… これがどこでも再現するバグとも思えないのだが,Railsが1.1.6だから? サーバまではデータが渡っているので,IEはレスポンスを正しく受け取れていないようだ。となると怪しいのは…

ブランチでmigrateしていいか?

Railsアプリをsubversionで管理していて,ときどきブランチを切ることがある。しかしブランチにあるRailsアプリでマイグレーションを行ってしまうと,DBの構成が変わってしまうのと,マイグレーションファイルには連番がふってあるので,trunk側のマイグレー…

ActiveRecord で like 'hoge%' とかやると

期待した動作にならない。 Hoge.find(:all, :conditions=>["name like '%hoge'"])とかやると,条件節が有効にならずに全件ヒットしてしまう。"name like '%%hoge'" と,%を2つ重ねるとOKみたい。なんでだろう。%って特別な意味を持っているのかなあ。script/…

二重にグループしたいときは…?

railsでグループごとのカウントをとるにはこんな感じ。 Article.count(:group=>'name')これで[名前,数]の配列が返ってくる。なんと便利なことだ。これをさらに投稿年でグルーピングしたいと思ってこうやった Article.count(:group=>"year,name")こうすると[…

コントローラでもビューでも使いたいメソッドはどこに置く?

Railsでは application.rb に定義したメソッドは,どのコントローラからも呼び出すことができる。application_helper.rb に定義したメソッドは,どのビューからも呼び出すことができる(application_helper.rb に定義したメソッドをコントローラから呼び出し…

habtm なテーブルで,相手のカラムの値でselectしたい

DBのテーブルが2つあるとする。なんでもいいけど,例えばusersとbookmarks。多対多対応するので,交差テーブルとしてusers_bookmarksを持つ。もちろんUserとBookmarkモデルにはhas_and_belongs_to_manyが指定してある。このようなとき「1週間以内に作成した…

rails 1.1.6のActiveSupportのTime#to_dateがruby 1.8.6でエラーになるのを直す

結局ヘルパーに def to_date(time) ::Date(time.year, time.month, time.day) endと追加して,1.month.ago.to_dateって使っていたのを(カッコ悪いけど)to_date(1.month.ago)とした。

ActiveSupportのto_dateがエラー?

突然Railsアプリがエラーを吐くので見てみると, private method `to_date' called for Mon Mar 19 10:21:01 +0900 2007:Time とのこと。Timeのインスタンスにto_dateしたのが気に入らないらしい(Time#to_dateはActiveSupportで追加される機能)。しかしこ…

ページ化(pagination)はどうしましょう

Railsには多数のレコードを表示するときに,それらをページ分けする機能がある。これってよく使うUIだから,お世話になるんですが,Rails内蔵paginateの評判はあまりよろしくない。というわけで代替のプラグインを探している。 くまくまーさんのお勧めはwill…

認証と権限管理はどうしましょう

Railsには認証用のプラグインはいろいろとあるみたいだけど,有名なのは LoginEngine と UserEngine でしょうか。ところがこの2つは開発を終了してしまったらしい。くまくまーさんのところでお勧めだった acts_as_authenticated がいいかなあ。これはジェネ…

ActiveForm + ruby-gettext 問題が解決?

ActiveFormのサブクラスに「include ActiveRecord::Validations」を追加したら動いた。なぜかこのモジュール(標準のARのやつを書き換えている)がincludeされていないことになっているようだ。なぜ?

ActiveForm + ruby-gettext でエラー(その2)

公式サイトの『データベースにない属性もローカライズの対象にする』http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html#%A5%C7%A1%BC%A5%BF%A5%D9%A1%BC%A5%B9%A4%CB%A4%CA%A4%A4%C2%B0%C0%AD%A4%E2%A5%ED%A1%BC%A5%AB%A5%E9%A5%A4%A5%BA%A4%C…

ActiveForm + ruby-gettext でエラー

ActiveFormは,ARに関連づけられたモデルじゃないクラスに対して,あたかもモデルであるかのように各種validatesメソッドが使えるようになるプラグイン。ruby-gettextはrailsにも対応している多言語化ライブラリ。これを組み合わせて使っていたら,AR#errors…

file_column

Ruby on Railsでファイル(特に画像)のアップロードを簡単にするfile_columnというプラグインがあります。 本家サイトはここ→http://www.kanthak.net/opensource/file_column/ 日本語での解説はここ→http://d.hatena.ne.jp/sweeper/20060210/1139565058 日…

ActiveRecordの「<<」は何してる?

こんなよくある感じのActiveRecordのクラスがあります。 class Blog< ActiveRecord::Base has_many :entries end class Entry < ActiveRecord::Base validates_uniqueness_of :entry_url, :scope=>:blog_id belongs_to :blog endBlogが複数のEntryを持ってい…

RadrailsのTODO

スタンドアロンではなくEclipse3.2のプラグインとして動かしてみたら問題ない。 もしかしてEclipse側の問題だったのか?

RadRailsのTODO

RadRailsは基本はEclipseなのでタスクの設定ができます。例えばコメント中に # TODO: 入力がnullのときに例外をあげるようにすることなんて書いておくと,タスクビューでTODO一覧を見ることができます。これはコーディングを後回しにしてそのまま忘れるミス…

RadRailsのSubversion

RadRailsで自動更新を行うと,Subclipse(EclipseのSubversionプラグイン)の新しいバージョンがあると言うくせにインストールしようとするとエラーになって更新できません。RadRailsにバンドルされるSubversionは1.3系らしく,1.4系のリポジトリにアクセス…

RadRailsをWindowsで使う

RadRailsはRubyOnRailsに特化したIDEで,Eclipseベース。スタンドアロンでもEclipseのプラグインとしてでも使うことができる。以前から興味があったのだけど,最近Railsで開発していて,エディタとコンソールとpgAdmin(postgresのGUIフロントエンド)を行っ…

Railsでn:mのモデルを簡単にviewからupdateするには?

例えば課と課員があって,兼任の課員もいるから両者の関係はn:mになっている。んでもって「課の管理画面」で従業員一覧から「コイツとコイツとコイツが営業第一課ね」てな感じに編集させたい。 <% for employ in @employees %> <%= check_box_tag 'employ', …

ActiveRecord と ActiveSupport を使ってコマンドラインアプリを作る

目の前にはcsvの山がある。これをrdbに突っ込まないといけない。その後railsアプリがそのrdbを使うのである。csvは何種類かあって,素直にテーブルに対応しているわけじゃない。つーことは突っ込むときにActiveRecordを使えればラクじゃろと思った。ARだけじ…

idじゃないアイディーを使いたい!

Ruby on Railsのモデル(RDBのテーブルをクラスにマッピングしたやつ)は簡単に外部キーとか使えてうれしいんだけど(しかも_idが末尾につくカラムは勝手に外部参照扱いしてくれる)、参照先のidは整数じゃないといけないという制限がある。さらにいえばpost…

JRuby on Railsを使ってみる

JRuby(http://jruby.codehaus.org/)は,JavaVM 上に Ruby を実装したもの。Java のクラスを Ruby のクラスのように呼び出したりできる。オリジナル Ruby の 1.8.2 相当ってことで,Rails も動くらしい。Acriverecored-JDBC(http://www.headius.com/jrubyw…

既存のDBとRailsを組み合わせて使う(3)〜_idというカラム名の対応

とりあえず scaffold して見るといくつかのカラムが表示されない。すべて「job_id」のように最後に「_id」のついたカラムだ(ところで scaffold は外部参照を追っかけてビューに出力するコードを出してくれるんだっけ?)。Rails の規約では,最後に「_id」…

既存のDBとRailsを組み合わせて使う(2)〜複数化の抑制

Rails の規約では,テーブル名はモデル名の複数形である。今まで使っていたDBは Rails のことなんか考えていないので,テーブル名は複数形じゃない。例えばreportとかいうテーブル名になっている。しかし ruby script/generate model Report とかでモデルを…

既存のDBとRailsを組み合わせて使う(1)〜開発用 データベースを作る

すでにDBがあって,データもそこそこ入っている状況で,そのDBを使うRailsアプリを作りたい。テーブル構成はシンプルで,メインのテーブルが数個のテーブルを(1:1で)外部参照しているだけ。ただ,このメインテーブルにはRails必須のidカラムが無い。idとし…