rakeのDB関連タスク

Rails本などではDBを作る際にmysqladminを使いましょうと書かれているが、
調べてみると以下のタスクでDBの作成を行ってくれる

rake db:create

ただしconfig/database.ymlの設定が完了している必要がある。

DBを初期化したい場合には

rake db:migrate:reset

を実行する

db:migrate:resetを行うと、db:drop, db:create, db:migrateが順に実行される。

これらは以下に定義されている

rails-2.3.2/lib/tasks/databases.rake

ちなみにdb:resetというのもあるがこれはdb:drop, db:create, db:schema:loadが実行される
ただ、db:schema:loadというのは、ざっと見ただけではよく分からなかった

     desc "Load a schema.rb file into the database"
     task :load => :environment do
       file = ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb"
       load(file)
     end

db/schema.rbはdb:migrate実行時に生成され、中身はdb/migrate/以下のものを統合している模様。
という事はdb:migrate実行後にmigrateを変更していない、かつDBを初期化したいという場合にdb:schema:loadを使用するdb:resetを使うべき?

db/schema.rbのコメントにもこれ使った方が早いぜとある。

# This file is auto-generated from the current state of the database. Instead of editing this file, 
# please use the migrations feature of Active Record to incrementally modify your database, and
# then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your database schema. If you need
# to create the application database on another system, you should be using db:schema:load, not running
# all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.

ついでに大雑把な訳:
このファイルは現状のデータベースから自動生成されます。このファイルを編集する代わりにデータベースの差分変更を行うActive Recordのマイグレーション機能を使ってください。そうすればこのスキーマ定義は再生成されます。

注意:このschema.rb定義はあなたのデータベーススキーマの信頼できる情報源です。他のシステムへこのデータベースを作成する必要があれば、1からすべてのマイグレーションを実行するのではなくdb:schema:loadを使用しましょう。すべてのマイグレーションを実行することには欠陥があり、継続して行える方法ではありません(訳注:なんで??)。(あなたは多くのマイグレーションを作成しているでしょうし、実行するには遅く、そして問題を起こす可能性が高いです。)

このファイルをバージョン管理システムへチェックインすることを強くお勧めします。

終わり

gem install mysql

mysqlを/usr/local/mysqlにインストールした際のオプション指定

gem install mysql -- --with-mysql-dir=/usr/local/mysql

なんどやってもoptionの前に--を書き忘れてしまう…

usageによるとbuild-flagsの前には--が必要な様だ。

[root@hoge mysql]# gem help install
Usage: gem install GEMNAME [GEMNAME ...] [options] -- --build-flags [options]

追記

version 2.8が上手く動作しないので2.7を利用する

gem install -v 2.7 mysql -- --with-mysql-dir=/usr/local/mysql

.vimrc

syntax on
colorscheme darkblue
filetype plugin on

set nocompatible
set number
set autoindent
set showcmd
set showmatch
set matchtime=2
set backspace=indent,eol,start
set ruler
set cursorline
set visualbell

set tabstop=2
set shiftwidth=2
set softtabstop=2
set smarttab
set expandtab

set incsearch
set hlsearch
set ignorecase

set nobackup
set nowritebackup
set swapfile
set pastetoggle=<F11>

setlocal omnifunc=syntaxcomplete#Complete

" QuickRunで横分割にする
let g:quickrun_config = { '*': { 'split': ''}}

inoremap <C-j> <DOWN>
inoremap <C-k> <UP>
inoremap <C-l> <RIGHT>
inoremap <C-h> <LEFT>

nnoremap n nzz
nnoremap N Nzz
nnoremap * *zz
nnoremap # #zz
nnoremap g* g*zz
nnoremap g# g#zz

inoremap <C-@> <Esc>
vnoremap <C-@> <Esc>
cnoremap <C-@> <Esc>

nnoremap <C-Space> <Esc>
inoremap <C-Space> <Esc>
vnoremap <C-Space> <Esc>
cnoremap <C-Space> <Esc>

nnoremap <ESC><ESC> :nohlsearch<CR>

JVMクラッシュダンプの解析

JVMのクラッシュダンプぐらい読めないとJavaGeekじゃないそうです(汗
http://weblogs.java.net/blog/kohsuke/archive/2009/02/crash_course_on.html

ちなみにLinux上ではobjdumpでダンプします。
いつかしっかり理解したい…

クラスローダの動作確認

配備したクラスファイル、jarファイル等が意図した箇所からロードされているかを確認する際には-verbose:classオプションを利用する

java -verbose:class クラス名


すると以下の様な出力が標準出力に得られる

[Loaded sun.misc.URLClassPath$FileLoader$1 from /usr/java/jdk1.5.0_15/jre/lib/rt.jar]

verboseには他にjni gcが指定可能


オプションの詳細
java - the Java application launcher