Ruby
Rails
Railsチュートリアル

Railsチュートリアル中にcould not find expected ':' while scanning a simple keyが出た時の対処法

More than 1 year has passed since last update.


発生した章

13.2.3 プロフィール画面のマイクロポストをテストするにて、リスト 13.27: ユーザーと関連付けされたマイクロポストのfixtureの内容を修正したら、テストでエラーが出るようになった。


発生したエラー内容

ERROR["test_should_redirect_edit_when_not_logged_in", UsersControllerTest, 3.9885445390827954]

test_should_redirect_edit_when_not_logged_in#UsersControllerTest (3.99s)
ActiveRecord::Fixture::FormatError: ActiveRecord::Fixture::FormatError: a YAML error occurred parsing /home/ubuntu/workspace/sample_app/test/fixtures/microposts.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 24 column 1


原因

ymlファイル内の属性に:がないため。


今回の原因

micropost_<%= n %>に、:がついていない


/sample_app/test/fixtures/microposts.yml

<% 30.times do |n| %>

micropost_<%= n %>
content: <%= Faker::Lorem.sentence(5) %>
created_at: <%= 42.days.ago %>
user: michael
<% end %>


修正方法

micropost_<%= n %>に、:をつける


/sample_app/test/fixtures/microposts.yml

<% 30.times do |n| %>

micropost_<%= n %>:

無事にエラーが解決しました。