rails

マイグレーション その2

productionのデータベースを作るには、 rake environment RAILS_ENV=production migrate

poundのsslとの併用

poundでsslを使った場合でも、railsからはpoundがhttpでアクセスしてくるように見えるので、 redirect_toやurl_forが生成するURLのプロトコルはhttpになってしまう。 プロトコルを変更するには、コントロールでdefault_url_optionsをオーバーライドする。 de…

mongrel

コマンドの一覧 mongrel_rails help 各コマンドのヘルプ mongrel_rails コマンド -h

render と render_component

render :action => "demo"↑ demoアクションで使うテンプレートをレンダリングするが、demoメソッドは実行されない。 render_compoent :action => "demo"↑ demoアクションが実際に実行される。demoメソッドは実行される。 レスポンスは生成されるので、render…

コンポーネント

コンポーネントとは、コントロールとテンプレートのセットのこと。 コンポーネントを汎用的に使うためには、componentsディレクトリにモジュール名をつけて、 コントロールとテンプレートを置く。 components/my_test/abc_controller.rb components/my_test/…

部分テンプレート

部分テンプレートのファイル名の先頭はアンダーバー。 部分テンプレートとのやりとりはローカル変数で行う。 ローカル変数は部分テンプレートの名前で定義される。 ローカル変数に値を渡すには、 コントローラで、テンプレートの名前でインスタンス変数を定…

レイアウト

レイアウトの指定 class AbcController < ApplicationController layout "xyz" # <--レイアウトの名前 layout :determine_layout # <--レイアウトの名前を返すインスタンスメソッド def xxx # レイアウトの名前は、app/views をルートとして考える render :l…

フィールドのヘルパー

フィールドのヘルパーの最初の2つのパラメータは共通 1つめ、インスタンス変数(通常は、モデルオブジェクト)の名前 2つめ、インスタンス変数のアトリビュートの名前 この設定は、フィールドに値を充填するときと、フォームを送信するときに使われる。 名前は…

AssetTagHelper

Assetは素材(画像、スタイルシート、スクリプト)のこと。 <%= img_tag "img1" %> 生成されるURLは、asset_host + プレフィックス + 指定したパス + デフォルトの拡張子 asset_hostは、config.action_controller.assert_host プレフィックスは/images, /style…

対応関係

オブザーバ ---> モデル <===> コントローラ <===> ビュー <--- ヘルパー スイーパ | | アクション テンプレートコントローラは、 ヘルパーをビューにincludeする (helper) オブザーバをモデルに織り込む (observer) スイーパをアクティブにする (cache_swee…

マイグレーション

rails demo config/database.yml development: adapter: mysql database: demo_development username: hoge password: host: localhost encoding: utf8 socket: /var/run/mysqld/mysqld.sock config/environment.rb $KCODE = 'UTF8' app/controllers/applica…

設定

rails の設定は、ほとんどベースクラスのクラスメソッドで行う。 設定する場所は config/environment.rb クラス定義のとき config/environment.rb では、config(Rails::Configuration)オブジェクトを使う。 config . action_controller は、ActionController…

バリデーション

ActionController のバリデーション ActionController のバリデーションエラーは、フラッシュに保存する。 class HogeController < ApplicationController verify :only => :アクション名, :session => :セッションキー, :add_flash => { :notice => '何かメ…

ActionController のフィルタ

実装の仕方 メソッドシンボル class HogeController < ApplicationController before_filter :foobar private def foobar end end ブロック class HogeController < ApplicationController before_filter do |controller| end end クラス class HogeFilter d…

ActiveRecord のコールバック

実装の仕方 インスタンスメソッドを定義 class Hoge < ActiveRecord::Base def before_save end end ブロック class Hoge < ActiveRecord::Base before_save do |model| end end メソッドシンボル class Hoge < ActiveRecord::Base before_save :foobar prot…

コントローラの動き

対応するアクションが見つからない場合 method_missing が定義されている場合 method_missing を呼び出す レスポンスが生成されていない場合、テンプレートを呼び出す テンプレートが見つからなければ、'Template is missing' method_missing が定義されてい…

config/routes.rb

URL <===> config/routes.rb <===> パラメータ(@params) パターンコンポーネント :パラメータ名 *パラメータ名 (※配列) / (※コンポーネントの区切り) :controller (※モジュールに含まれるコントローラは'/'で区切られる) リクエストURLからパラメータを取得 …

ActiveRecord のアトリビュート

ActiveRecord::Base#attributes は、クエリの選択列のこと ActiveRecord::Base.columns は、マッピングしているスキーマの列のこと create table my_hoges ( id int not null auto_increment, aaa varchar(30) not null, bbb varchar(30) not null, primary …

デバッグの基本

log/環境名.log ActiveRecord, ActionController では、logger属性、ビューでは、@logger ActionView::Helpers::DebugHelper#debug Kernel#p のHTML版のようなもの script/console モデルのデバッグ script/breakpointer BreakPoint#breakpoint

環境名

railsにデフォルトで用意されている実行環境名 development test production 環境名が使われる場所 script/server -e 環境名 環境変数 RAILS_ENV config/environments/環境名.rb config/database.yml の各セクションの先頭は、「環境名: 」 log/環境名.log

Rails で日本語

config/environment.rb で $KCODE = "UTF8" config/database.yml で encoding: utf8 MySQL の /etc/mysql/my.cnf で、[client]と[mysqld]を default-character-set = utf8 文字コードとは関係ないが、debianだと /var/run/mysqld/mysqld.sock なので、 confi…