werckerを使い始めたので、minitest始めてみた。
rspecは個人的にメリットが感じられなかったので非選択。
- fixtureをcsvでやる
fixtureはcsvで良いよ!って記事をよく見かけたんだけど、Rails4.2ではymlだけっぽい
- dbのデータからfixtures yamlを生成する rails4系の良い方法が見つからなかったので自作
[Category,Employer,User,Subject].each{|model|
hash = {}
model.all.each_with_index{|_,i|hash[i] = _.attributes}
File.write("tmp/fixtures/#{model.name.underscore}.yml", hash.to_yaml)
}
- 日本語を含んだfixturesを取り込むと、エラーが出る。
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect string value: '\xE5\x9B\xBD\xE8\xAA\x9E'
services:mysqlもrails-database-ymlもどちらもutf-8で作成される。
原因はテーブルがutf-8になっていなかったことで、schema.rbを変更して
ruby|schema.rb
create_table "users", force: :cascade , :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8' do |t|
と、optionsに文字コードをセットしたら直りました。
でも、毎回手動でやってられん、どうしよう?
とりあえず、置換用の構文
(create_table.*)(do |t|)
$1, :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8' $2