Ruby on Rails

3pt

現在Javaでは、DIのように疎結合ということがひとつのキーワードとして扱われている。これに対し、Ruby on Railsは密結合のウェブフレームワークだという。

http://journal.mycom.co.jp/articles/2005/08/29/lldn/001.html


密結合なフレームワーク。

API

http://railsapi.com/doc/v2.3.2/

テスト

テストデータベースにスキーマをコピー
$ rake db:test:prepare

テスト実行する
$ ruby test/unit/person_test.rb

テスト実行する
$ ruby test/unit/person_test.rb

特定のメソッドのみテスト実行する
$ ruby test/unit/person_test.rb -n test_set_name

fixturesを使う

class PersonTest < ActiveSupport::TestCase
  def test_set_name
    person = persons(:one)
  end
end

fixturesはテンプレートの記法と同じく動的に生成できる。

RubyOnRails を使ってみる 【第 6 回】 テストの書き方(あとで読む
http://jp.rubyist.net/magazine/?0013-RubyOnRails

MでもVでもCでもない、CakePHPでいうコンポーネント的なのはどこに定義すればいいだろう?

libに入れるとオートロードできるらしい
http://d.hatena.ne.jp/haraguroblog/20081112/1226499124

コード生成

ruby script/generate model user

basic認証のテスト

  def test_index
    @request.env['HTTP_AUTHORIZATION'] =
      'Basic ' + Base64::encode64("user:password")
    get :index
    assert_response :success
  end


rake で何ができるか

http://rubist.blog77.fc2.com/blog-entry-50.html

ルーティング

admin/** の場合のルーティング

コンソールで確認する

ruby scripts/console
rs = ActionController::Routing::Routes
puts rs.routes

フォーム

Railsのフォーム作成メソッドform_tagとform_for
http://d.hatena.ne.jp/willnet/20080705/1215252673

form_for :user, :url => { :action => "update" }, :html => { :method => :put } do |form|
  # ...
end
form_for :user, @hoge, :url => { :action => "update" }, :html => { :method => :put } do |form|
  # ...
end

assert_select

http://d.hatena.ne.jp/zariganitosh/20080405/1207455670

inputフィールド username の値が hoge であるかどうか調べる

assert_select input[name=username][value=hoge], :count => 1

セッションを見る

    sessions = request.session.dup
    logger.info "  Sessions: #{sessions.inspect}"

ログイン状態をテストする

第3引数でセッションを書き換える
get :index, {}, {:user => users(:admin).id }

なぞのパス

users_path
edit_user_path
ルーティング定義を参照してる?

rhtml erbの違い??

バージョン2.0でerbになったらしい。
それだけ?

Railsでデバッグをする7つの方法

http://blog.s21g.com/articles/212

ActiveRecord::Observer

class UserObserver < ActiveRecord::Observer
  def after_create(user)
  end
  def after_save(user)
  end
end

カラムの追加

ruby script/generate migration AddOperatorIdToUser operator_id:integer

バージョン指定する

rake db:migrate VERSION=**

命名規則

  • モデルクラスは単数形(でないと従属行とれない)
  • テーブル名は複数形


ActionMailerのテスト

かしらがこれでテスト環境でメール送信されなくて、メールがdeliveriesに格納される。
ActionMailer::Base.delivery_method = :test

ActiveRecord使うテスト

saveしたやつはfixturesから取得したオブジェクトは更新されなくて、AR.find()から直接とらないといけない?
→idでオブジェクトを渡したりすると、fixturesとオブジェクトの同期がとれなかったりするのかも

ちゃら_path よくわからない

.html.erb中のnew_***_pathが無いとか言うエラーが出る場合はconfig/routes.rbを確認

map.resources :***が無い可能性大!



「Ruby on Rails」について友人に書いてもらう。

あなたにとって「Ruby on Rails」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

お気に入りの説明

1 pt
生産性が高いらしい。と話を聞いた。 これからそれなりに触ってみる。 インストール 概略 四つほどソフトウェアを インストール する。このうち、RubyとGemは Ruby on Rails アプリを作るの...
もっと読む
0 pt
>MでもVでもCでもない、Cake PHP でいうコンポーネント的なのはどこに定義すればいいだろう? わたしはいつもapplication_controllerに書いているけど、実は 同様のところがあるのかなぁ
もっと読む

関連したキーワードを持つお気に入り

他の人の「Ruby on Rails」を見る