inohilog

/var/log/inohiro.log

db/seeds.rb

Railsでサービスを作っていますが、「db」ディレクトリ以下に見慣れないファイルがありました。「db/seeds.rb」。とりあえずググってみると「migrationで定数のデータとかをロードすると後で死ぬことになるので、そう言うデータはdb/seeds.rbで入れるようにしようぜ」ということらしい。
確かにバイトかなんかで、migrationでデータをロード(サンプルデータとか)するようにしちゃってて(そもそもしない方がいい、とRails本に書いてあったと思うが)、大変そうだった記憶がある。別にロードに限らず、データにアクセスするコード全般に対して。
私も、例えばCategoryテーブルを作って、そこに規定値なんかをロードするときに、create_tableするときに一緒に突っ込んじゃったりするんですが(create_tableするときに突っ込むのはあんまり問題ないか...わからん)。

# -*- coding: utf-8 -*-

class CreateCategories < ActiveRecord::Migration
  def self.up
    create_table :categories do |t|
      t.string :name
      t.timestamps
    end

    Category.create :name => "ほげほげ"
    Category.create :name => "ふがふが"

  end
  def self.down
    drop_table :categories
  end
end

これを、db/seeds.rbに切り分けて、

# -*- coding: utf-8 -*-
# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#   
#   cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
#   Major.create(:name => 'Daley', :city => citi

Category.create :name => "ほげほげ"
Category.create :name => "ふがふが"

とした。で、コレをロードするには「rake db:migrate」した後に「rake db:seed」を実行する必要があります。
Rails 2.3.4で導入されたらしい。

参考にしたサイト

gitを使ったのでメモ

追記: 内容、沢山間違ってるみたいなんで参考にしないでください。
メモメモφ(゚- ゚)。なんか間違ってたりTipsがあったら教えてください。

  • git status
    • とりあえず状態をみる
    • svn st
# Changes to be committed => git commit 可能
# Changed but not updated => git add が必要
  • git rm *~
    • 自分のインデックスから指定ファイルを削除する。ここだと「*~」なファイル(Emacsの一時ファイル)を削除
*~
*#
*.sqlite3
*.log
  • git add (場所)
    • とりあえずファイルを変更したら git add
    • svn add とは違う!
  • git commit * -m "commit message"
    • ローカルからインデックスへコミット
  • git push origin master
    • origin master(マスタリポジトリ) へ push
    • origin master とか省略したいよね
  • git show revision
    • revision で指定した(4文字以上)リビジョンの変更を表示
  • git diff file
    • svn diff と一緒
  • git commit -a
    • git add してインデックスへコミット