我正在做hartle教程的第11章。 在本章的最后我跑了
heroku run rake db:seed
我收到了这个错误:
rake aborted!
SyntaxError: /app/db/seeds.rb:23: syntax error, unexpected end-of-input, expecting keyword_end
这是我的seeds.rb文件:
User.create!(name: "Example User",
email: "example@railstutorial.org",
password: "foobar",
password_confirmation: "foobar",
admin: true,
activated: true,
activated_at: Time.zone.now)
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(name: name,
email: email,
password: password,
password_confirmation: password,
activated: true,
activated_at: Time.zone.now)
end
users = User.order(:created_at).take(6)
50.times do
content = Faker::Lorem.sentence(5)
users.each { |user| user.microposts.create!(content: content) }
end
到目前为止,我对seed.db没有任何问题!
答案 0 :(得分:2)
"期望的keyword_end"错误表示您在指定的文件中有语法错误。你会看到很多,特别是在你的测试套件中;得到舒适。
使用细齿梳子浏览文件,并在心理上将每个{
与}
和每个do
及其end
匹配。通常你会发现其中一个不匹配。
如果找不到匹配项,请注释掉整个种子文件并再次运行rake db:seed
。不应出现错误。然后逐步取消注释文件的每个部分,直到找出错误的来源。
这很乏味但很有效。
答案 1 :(得分:0)
我遇到了类似问题
class Tag< ApplicationRecord ::基地 has_many:目的地 结束 端
我的模型中有Double“end end”...我删除了一个“end”并且问题得到了解决
答案 2 :(得分:0)
只需在终端中运行文件,您就应该获得足够的信息来查找旧的unexpected end-of-input
语法错误。如果指定-w
-选项,还将向您显示其他警告,这些警告通常包含您需要的相关提示。
以您为例:在终端中运行此命令(从项目的根目录):
ruby -w db/seeds.rb
现在,您应该获得一个输出,详细说明seeds.rb
中的语法错误,并带有行号(以及其他警告和错误,如果有的话),例如像这样:
db/seeds.rb:19: warning: mismatched indentations at 'end' with 'unless' at 12
db/seeds.rb:25: syntax error, unexpected end-of-input, expecting keyword_end
...
...