LoginSignup
5
5

More than 5 years have passed since last update.

Rails + MySQL + Minitestをwerckerで回してみた

Posted at

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

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5