2006-01-01から1年間の記事一覧

設定

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 …

super

オーバーライドしたとき、親クラスのメソッドを呼ぶには super

falseとnil

rubyの「真」は、falseとnil以外 (数値の 0 は true)

フレームとブロック

フレームはオブジェクト(self((メタクラス、クラス/モジュール、インスタンス 'すべてがオブジェクト'))と定義のある場所((self.classとは限らない))cbase)をもつ ブロックは関数本体(body)とローカル変数(scope)と定義の属す場所*1(klass)をもつ フレームが…

デバッグの基本

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

setterとローカル変数代入

self.foo = 'hoge' # setterメソッドが呼ばれる foo = 'hoge' # ローカル変数fooへの代入と解釈される

mysqldump

すべてのデータベース mysqldump --opt --all-databases > dump.sql mysql < dump.sqlデータベース mysqldump --opt --databases データベース名 データベース名 ... > dump.sql mysql < dump.sqlテーブルとデータ mysqldump --opt データベース名 > dump.sq…

ERb

埋め込まれたコードの直後の改行を抑制するには - をつける。 <% for item in @items -%> foo bar <br/> <% end -%></br/>

load, require, include, extend

Kernel#load 指定したファイルを無条件にロードする。 Kernel#require 1度読んだファイルは2度読みされない。拡張子は、.soまたは.rbのみで、また拡張子は自動補完される。 Module#include クラスにモジュールをMix-in Object#extend オブジェクトの特異クラ…

すべてがオブジェクト

メタクラス モジュール/クラス インスタンス Module, Class module ,class で作り(定義)、定数へ代入(クラス名は定数) Class#new で作り(インスタンス化)、変数へ代入 モジュール クラス インスタンス化 × ○ Mix-in ○ × モジュール (Moduleのインスタンス) …

引数

メソッド呼び出しのとき、最後のパラメータとしてハッシュを指定するときは、中括弧を省略できる メソッド定義のとき、'*'は多重代入のルールに従う 左辺の最後の'*'は、対応する左辺右辺の要素を配列として代入する。対応する要素がなければ、空の配列を代…

LANGUAGE と /etc/environemnt

日本語インストーラでインストールした場合、 LANGUAGE 環境変数が設定されてしまう。 設定している場所は、 /etc/environment

環境変数を未定義にするには

sh

unset

WEBrickが異常に遅い

名前解決のせいで遅くなってるっぽい。 do_not_reverse_lookup で回避。 require 'webrick' Socket.do_not_reverse_lookup = true srv = WEBrick::HTTPServer.new({:DocumentRoot => '/home/foo/public/', :BindAddress => '0.0.0.0', :Port => 3000}) trap(…

GNU getopt

オプションには long形式と short形式(1文字)がある オプション引数 short形式の場合、-xオプション引数 long形式の場合、--xxx=オプション引数 複数のshort形式オプションは、まとめても可 -abc は、-a -b -c と同じ オプションの終了を表すには -- wget -o…

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…

ログ

リングバッファ dmesg /var/log/dmesg syslogd /etc/init.d/sysklogd で起動 /etc/syslog.conf で設定 ほとんどのログは /var/log/ に置かれる 中でも重要なのは /var/log/syslog

ディスク管理

パーティションを切るには cfdisk ファイルシステムをフォーマットするには mkfs.ext3 ext3 lost+found 書き込み中のデータの断片 新規作成された直後のext3には、lost+foundディレクトリだけがある状態 /etc/fstab mountコマンドは、デバイスファイルまたは…

zsh

sh

パラメータ展開フラグ ${(展開フラグ)変数名} プロンプト展開(PROMPT EXPANSION) PROMPT変数で適用される特別な展開のこと? print -P でも適用することができる

screen

http://d.hatena.ne.jp/xaxe/20061002オプション -r デタッチしたセッションに再接続 -ls セッション一覧 キーバインド (prefix) d デタッチ (prefix) : コマンド入力 (prefix) [ コピーモード 移動はviライク スペースキーでマーク 履歴バッファがあり、ス…

fg

sh

zshのfgは fg %番号

etch

dist-upgrade で地道に etch へ移行した。 /etc/apt/apt.conf で、APT::Default-Release "testing"; openssh-server の debconf で、disable challenge-response は no

vim-rubyのインストール

gem

% sudo -s # gem install vim-ruby # exit % vim-ruby-install.rbvim-ruby-install.rbを実行すると、インストール先を聞かれるので、/home/ユーザ/.vimを選択する。.vimrcに2タブの設定をする。 au FileType ruby set ts=2 sw=2 expandtab au FileType eruby…