Rails

restful_authentication+stateful のお勉強

まずは、『ザリガニが見ていた...。』さんの作成された『restful_authentication + stateful(aasm) + email変更の認証手続き + emailによるログイン機能』を自分の環境で動かしてみてお勉強してみます。 ダウンロード こちら(→ [http://github.com/zarigani/…

久々Rails

やりたいことがあって始めたRubyOnRailsなんですが、http://2.5-55.jp を作り終わってから(まだまだ改良改善の余地はありありなんですが)、しばらく遠ざかっていたので、9月に入ったことでもあるし、再開しようかなぁと。 やりたいこと やりたいことはもう少…

Railsでルーティングがうまくいかないときに疑うべきこと

ちゃんと書いてるはずなのに、なんでこんなところへ飛ぶんだということで10分ほど悩みました。ほんとに10分で気がついてよかったです。 どんなこと? こう(↓)いうコードを .html.erb に書いていたわけです。 <script type="text/javascript"> function show_contents() { <%= remote_functio…

Ruby Enterprise Editionを入れてみる

Passengerの開発元から「Ruby Enterprise Edition」が出たそうなので早速入れてみることにします。「Railsアプリのメモリ使用量が平均33%少なくなる」らしいし、安定していて速いということですから本当なら万々歳ですね。 インストール 手順は次の通り。エ…

Passengerを入れる

そろそろ落ち着いてきたころかなと思って、Passenger(mod_rails) を Ubuntu に入れてみました。 インストール インストールこれだけです。 $ s gem install passenger $ s passenger-install-apache2-module だらだらとしたインストール 例によって例の如く…

UbuntuでのMySQLのWARNING

UbuntuのRailsログを見ていたら、ここ(→http://d.hatena.ne.jp/satake7/edit?date=20080509)にあったのと同じWARNINGを発見。Windows環境だけじゃなかったんだということで、Ubuntuでも対処することに。WARNING内容はこちら(↓) WARNING: You're using the Ru…

Hpricotのインストール

Windows環境で作っている Webサービスをそろそろ Ubuntu の方で動かそうかなと思って、subversion のリポジトリから最新をチェックアウトして、とりあえず WEBrick で動かしてみようとすると、「Hpricot がない」というエラーを吐くので、Hpricot をインスト…

県名選択をさせる場合のベストチョイス

県名選択するのにいまどきリストボックスはないし、かといってチェックボックスやラジオボタンならべるのもいまいちだよね、と思っていたところ、ジャストタイミングで素晴らしいスクリプトが公開されたので、早速、こちら(→jsmap - JavaScriptによる都道府…

動作中のログをとる

debugger で止めて、p ??? で変数の内容見て、c で次の debugger へ、なんてことをやってましたが埒があきません。ちゃんとログとって見るべきです。 Rubyでのloggerの超簡単な使い方 require 'logger' class Hoge def initialize @log = Logger.new(STDOUT)…

RubyとERBのコメント

Railsをしばらく触らないと忘れてしまいそうなのでメモ Rubyのコメント # ...コメント...# 以降の行末までがコメント =begin...コメント...=end=begin と =end の間の行はすべてコメント。=begin と =end は1カラム目から(先頭にスペースがあっちゃダメ) ERB…

Railsのエラー

喉元過ぎれば熱さ忘れるということもあり、あとで同じようなことが起きたときに「あれ、なんだっけ?」とならないようにメモ。エラーメッセージをググって探しにくる人のためになればなおよろし。 NoMethodError (undefined method `params?' for #): ItemsC…

to_int に気をつけろ!

以下の長ったらしい文章の要点は「不用意に既存クラスにメソッドを追加すると、とんでもないところでエラーになるので要注意」ということです。RailsでWebアプリを作っていたと思ってください。最近はそれしかやってませんから。で、だんだんRubyにも慣れて…

Railsでテーブルを作るときの注意

ActiveRecordで予約されたメソッド名をテーブルのフィールド名として使うとエラーになるので注意しましょう。 「SELECT * FROM」を使わないで、「SELECT attributes as attr FROM」というように別名を定義して使えばいいらしいですが、最初から予約メソッド…

Railsで扱う定数はどこで定義すべきか?

Railsでアプリを書いているとよくあることですが、上限値とかデフォルト値などのマジックナンバーがソースに入ってきます。そんな定数をコードの中へ埋め込むのは気持ち悪いので、どこかグローバルに参照できるところへ出しておきたいところ。 どこに置くか …

簡易的にテーブルを追加

Railsの作法に則ってやろうとすると、 モデルを作って、 migrateの差分を書いて、 テーブルを作成 というような流れになるんですが、そうすると「db:migrate」フォルダに「001_*、002_*、・・・」とファイルがどんどんできてきて、テーブルが固まってからな…

rake db:migrateでエラーになる

「rake db:migrate」をやろうとすると、こんな(↓)エラーを吐くようになりました。 PS C:\www\2.5-55.jp> rake db:migrate (in C:/www/2.5-55.jp) Error in my_thread_global_end(): 1 threads didn't exit いろいろとDB周りの定義を変更したあとだったので、…

ruby-debugの使い方

ruby-debugで自分がよく使うコマンド(しかもオプションなし)だけの抜粋です。 p 変数(式) 変数(式)を表示 pp 変数(式) pより少し見やすい形式で表示 l 次のページのソースコード表示 l- 前のページのソースコード表示 l= いまデバッグしている周辺のソースコ…

InvalidAuthenticityTokenエラー

Tipsというより現象記録的なメモですが、「ActionController::InvalidAuthenticityToken」というエラーが出ることがあります。Rails2.0はデフォルトで CSRF(クロスサイトリクエストフォージェリ)対策がとられているわけですが、これに違反したときにでるエラ…

デバッガを使う

だんだんRailsに慣れてくると、途中で止めて変数の内容を見たり、ステップ実行したりというようなデバッキングがしたくなりますよね。Rails2.0では ruby-debugを使った debuggerが正式に採用されて使い方も簡単ということだったのでやってみたのですが・・・…

ルーティングの追加

map.resouceで作成されたルーティングで概ねいいんだけど、少しだけ追加したいなということがあります。そういうときのやり方です。 アクションの追加 テーブル全体の一覧を表示する indexアクションとは別に listアクションを追加する場合、「myapp/config/…

mongrelの入替え

MySQLを入替えたついでに、mongrelもupdateしておく。gem updateの手順に従っただけなんだけど、もしかするといままで mongrelは入っておらず、この操作で新規インストールされたかも。てっきり入れたとばっかり思っていたんだけど、いままで「ruby script/s…

MySQLの入替え

WindowsでRailsのテストをしているとWEBrickが吐くログファイル(myapp/log/development.log)に変なWARNINGを見つけた。 WARNING: You're using the Ruby-based MySQL library that ships with Rails. This library is not suited for production. Please ins…

db:migrate

db:migrateの使い方のまとめ。 使い方 普通の使い方 $ rake db:migrate やり直したい場合 $ rake db:migrate VERSION=0 ← すべてDROP $ rake db:migrate ← 再作成 環境を指定する $ rake db:migrate RAILS_ENV=production バージョンの整合性がとれなくなっ…

.htaccessでエラー?

Rails2.0で普通にプロジェクトを作ると「/myapp/public」に「.htaccess」が作成され、WEBrickでテストしている分には何も問題ないのですが、同じフォルダの「/myapp/public/index.html」をApacheで公開しようとすると、↓のようなエラーを吐きます。(Ubuntu7.…

「500 Internal Server Error」が出るときは?

Rails2.0をWEBrickでテストしているとき「500 Internal Server Error」が出ることがあります。致命的なエラーのときに出るようです。 エラーの確認 Rails(WEBrick)が「/myapp/log/development.log」にエラーを吐いているはずです。今回はDBを作らず動かして…

動いているバージョンの確認がしたいときは?

Rails1.2.6やRails2.0.2を一緒にインストールしているような環境で「あれっ、これってどっちで動いてるんだっけ?」と不安になったときの確認方法です。 確認 ネットワーク越しからはレスポンスを返さないようなので、ローカルで実行します。 xxx:~$ curl ht…

requireでエラーが出るとき

他の人が作ったオープンソースのRailsアプリを動かそうとして「in 'gem_original_require'」や「in 'require'」関係のエラーがたくさん出ることがあります。そういうときはどうしたらいいでしょうか? エラーの確認 「script/server」で WEBrickがエラーを吐…

ページ切替を使う

1ページ○行としてページごとに表示するためのプラグインがRails2.0の「will_paginate」です。これを入れてみます。 インストール こちら(→will_paginateのインストール方法が変わっていた - idesaku blog)を参考に入れてみます。 C:\www\2.5-55.jp> gem sour…

nil?またはempty?を判定する

変数が nil? または empty? を判定するには、blank? を使う。 blank? params[:item] = default_item[''] if params[:item].blank? params[:item]が定義されていない(nul)か、空っぽ(empty)だったら初期値をセットする。 注意 params[:item][:key]の blank? …

テストデータを作る

普通に Modelを作成すると、myapp/test/fixturesに hoge.ymlがサンプルとして作成されます。これをスケルトンにしてテスト用データを作るわけですが、rakeでテストしないで、テストデータだけを作成したいときはこう(↓)します。 $ rake db:fixtures:load 参…