2024
09
09
2008
11
25
Railsでデバッグをする7つの方法
- 1. p/pp
- こちらはRailsに限らず良く使われている方法ですが、RailsではWebサーバをフォアグラウンドプロセスとして立ち上げた状態で使う感じになります。
1 $ ./script/s
p/ppに慣れている人にはわかりやすくて良いと思います。erver -
- 2. logger.deb
ug - さて、続いてlogger.deb
ugを使う方法です。 1 logger.deb
p/ppの代わりにlogger.debug "something interestin g informatio n" ugを呼ぶ事で、結果がlog/develo pment.logなどのlog/$RAILS_ENV. logファイルに書き出されます。 書き出されたファイルを、 1 $ tail -f log/develo
しておくと、p/ppでデバッグする時と同じような感じでデバッグ出力を見る事が出来ます。また、出力結果はlogファイルとして残っているので、後で参照する事もできます。pment.log - 3. script/con
sole - script/con
soleは、実行時にデータベースの中身がどうなっているかを知りたい時に非常に便利です。script/con soleコマンドを実行すると、Railsの環境を読み込んだ状態でirbが立ち上がるので、ActiveReco rdを使ってfindしたりcreateしたりdestroy_al lしたり、好きなようにDBをいじる事ができます。本当に素晴らしい機能ですね。 - 4. script/bre
akpointer - script/con
soleはとても素晴らしいのですが、アクション実行中のsessionの状態を調べたりするのには使えません。そんな時は、script/bre akpointerを使う事ができます。 1 $ ./script/b
まず、あらかじめbreakpointreakpointe r erを立ち上げておきます。続いて、状態を確認したい場所にbreakpoint を仕込みます。 1 class FooControl
あとは、ブラウザからアクセスしてbarアクションを実行すると、待ち受けていたbreakpointler < Applicatio nControlle r 2 def bar 3 # something 4 breakpoint 5 # something 6 end erでirbが立ち上がるので、必要な情報を自由に閲覧・操作する事ができます。 - 5. better rails debugger
- script/bre
akpointerはとても便利ですが、ステップ実行が出来ないという問題があります。 実際にステップ実行がどうしても必要という場面はあまり無いのですが、あればあったほうが便利ですね。そんな時は、ruby-debug というGemを使います。 これは前回のRails勉強会のときにyuguiさんから教えていただいた方法なのですが、まずはruby-debug をインストールします。 1 # gem install ruby-debug
次に、ブレークポイントを仕込みます。1 class FooControl
あとは、p/ppデバッグをするときのようにWebrickやMongrel等のWebサーバをフォアグラウンドで立ち上げ、目的のコードが実行されるようにブラウザからアクセスします。 すると、Webサーバのプロセス上でdebug.rb(と似たような感じのもの)が立ち上がるので、通常のrubyスクリプトを デバッグする時と同じ要領でデバッグを行う事ができます。ler < Applicatio nControlle r 2 def bar 3 # something 4 debugger 5 # something 6 end - 6. test/autot
est - Ruby on Railsでは、テスト用のフレームワークがはじめから使える状態になっています。 テスト駆動開発では、テストを書いてから実装を書きますが、適当な動作検証用のコードをテストとして書くことで、デバッグに使う事もできます。この際、毎 回テストをrakeコマンドから実行するのは時間が掛かるので、ZenTestのautotestを使うのがお勧めです。 autotestを使うと、編集されたファイルに関連するテストだけを実行してくれるので、rakeコマンドを実行するよりも軽快なレスポンスが得られま す。さらにredgreenを併用すると気分良くデバッグを行う事ができるのでお勧め。
- 7. tail -f log/develo
pment.log&; autotest - 最後に、僕が今使っている方法を紹介します。 開発用とは別に一つターミナルを立ち上げて、RAILS_ROOT
で以下のコマンドを実行。 1 $ tail -f log/develo
こうしておくと、プログラムやテストコードを編集した時はautotestの出力が表示され、ブラウザからアクセスした時にはロガーの出力が表示されます。 基本的に両者が同時に行われる事は無いので、一つのターミナルを有効利用する事ができておすすめ。pment.log&; autotest
というわけで、Railsでデバッグを行う方法の紹介でした。
2008/11/25 (Tue.) Trackback() Comment(0) Ruby
2008
11
25
RESTfulとは
Rails 2.0 から、RESTの特徴を備えた(=RESTFulな)アプリケーションを簡単に構築できるようになりました。簡単にいうと、HTTPリクエストのメソッド (GET, POST, PUT, DELETE)とわかりやすいURIの組み合わせで機能を表現します。
例えば、Projectというデータモデルがあるとします。従来のアプリケーション(Rails 1.0系をデフォルトの設定で作ると同様になります)では、Project の一覧、詳細表示、新規作成、更新、削除のURLは、それぞれ以下のような感じになります。
Rails1.xのデフォルトのURL例
機能 | URL例 |
一覧 | GET /projects |
詳細表示 | GET /projects/1 |
新規作成画面 | GET /projects/new |
新規作成実行 | POST /projects/create |
更新画面 | GET /projects/edit/1 |
更新実行 | POST /projects/update/1 |
削除 | POST /projects/delete/1 |
Rails2.0を使ったRESTFul なURLの例
機能 | URL例 |
一覧 | GET /projects |
詳細表示 | GET /projects/1 |
新規作成画面 | GET /projects/new |
新規作成 | POST /projects |
更新画面 | GET /projects/1/edit |
更新実行 | PUT /projects/1 |
削除 | DELETE /projects/1 |
2008/11/25 (Tue.) Trackback() Comment(0) Ruby
2008
11
25
名前付きルート
..config/routes.rbに記述したルートの設定に応じて、使える様になるヘルパーメソッドのこと
例えば、scaffoldすると、config/routes.rbに以下のような記述がされますが、
ActionController::Routing::Routes.draw do |map| map.resources :people # ...省略
この場合、以下のようなヘルパーメソッドをlink_toなどで使えるようになります。
- people_path
- people_url
- edit_person
- new_person
2008/11/25 (Tue.) Trackback() Comment(0) Ruby
2008
11
20
RoR with SQLServer UTF-8について
文字化け対策としてやったこと。
どれが、解決策なのかは、?
config/environment.rb
先頭に
$KCODE = 'u'
末尾に
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
を追加
2008/11/20 (Thu.) Trackback() Comment(0) Ruby
2008
11
19
るびぃをさわる
とりあえずやりたいことは、簡単なテーブルを表示するwebを作成することだ。
One Click Ruby Installer でRubyを導入
ruby1.8.6
RubyGems1.2.0
が入ったようだ。
RubyGemsはパッケージ管理ソフトみたいだ。
gem install rails --include-dependencies --version 1.1.2 でrailsがインストールできるらしい。
Gemsの環境設定を確認するには、
gem environment
SQLServerのアダプタをインスコしたい
gem install activerecord-sqlserver-adapter
なんだけど、gems.rubyonrails.orgにあるらしく、取れない。
gem sources -l ソースの一覧を表示
gem source -a http://gems.rubyonrails.otg/ ソースの追加
gem source -r http://gems.rubyonrails.otg/ ソースの削除
こうすれば取れる。
gem install actiberecord-sqlserver-adapter --sources http://gems.rubyonrails.org/
ここを見ながら、設定をする。
つながった。
ruby script\generate migration create_schedules とするとエラーになる。
gemsが新しいすぎる???
require_gemがgemに変わったらしい、boot.rbを書き直すとOKだった。
#require_gem "rails", "=#{version}"
gem "rails", "=#{version}"
rakeをすると例外が発生
environment.rbを修正する必要がある?
#config.active_record.schema_format = :sql
config.active_record.schema_format = :sql
2008/11/19 (Wed.) Trackback() Comment(0) Ruby