Ruby on rails 执行rake db时在seed.rb中获取错误:seed已中止

Ruby on rails 执行rake db时在seed.rb中获取错误:seed已中止,ruby-on-rails,ruby,ruby-on-rails-4,rake,Ruby On Rails,Ruby,Ruby On Rails 4,Rake,我正在尝试在seed.rb文件中创建一些数据。当我尝试执行rake db:seed时,出现以下错误: $ rake db:seed /Users/romenigld/workspace/ebook/beginning_rails_4_3rd_edition/blog/db/seeds.rb:1: warning: encountered \r in middle of line, treated as a mere space rake aborted! SyntaxError: /Us

我正在尝试在seed.rb文件中创建一些数据。当我尝试执行
rake db:seed
时,出现以下错误:

    $ rake db:seed
/Users/romenigld/workspace/ebook/beginning_rails_4_3rd_edition/blog/db/seeds.rb:1: warning: encountered \r in middle of line, treated as a mere space
rake aborted!
SyntaxError: /Users/romenigld/workspace/ebook/beginning_rails_4_3rd_edition/blog/db/seeds.rb:1: syntax error, unexpected tCONSTANT, expecting end-of-input
Category.create([{:name => 'Programmi...
...                               ^
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `load'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `block in load'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `load'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/railties-4.2.5.1/lib/rails/engine.rb:547:in `load_seed'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.5.1/lib/active_record/tasks/database_tasks.rb:250:in `load_seed'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.5.1/lib/active_record/railties/databases.rake:183:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
My user.rb:

class User < ActiveRecord::Base
  has_one :profile
  has_many :articles, -> { order('published_at DESC, title ASC')},
                      :dependent => :nullify
end
class用户:nullify
结束
My category.rb:

class Category < ActiveRecord::Base
  has_and_belongs_to_many :articles
end
类别
My article.rb:

class Article < ActiveRecord::Base
  validates_presence_of :title, :body

  belongs_to :user
  has_and_belongs_to_many :categories

  def long_title
    "#{title} - #{published_at}"
  end
end
类文章
在创建文章之前,请执行以下操作:

class CreateArticlesCategories < ActiveRecord::Migration
  def change
    create_table :articles_categories, :id => false do |t|
      t.references :article
      t.references :category
    end
  end
  def self.down
    drop_table :articles_categories
  end
end
class-CreateArticlesCategoriesfalse do | t|
t、 参考文献:文章
t、 参考文献:类别
结束
结束
def自动关闭
下拉列表:文章类别
结束
结束
并创建模型类别:

class CreateArticlesCategories < ActiveRecord::Migration
  def change
    create_table :articles_categories, :id => false do |t|
      t.references :article
      t.references :category
    end
  end
  def self.down
    drop_table :articles_categories
  end
end
class-CreateArticlesCategoriesfalse do | t|
t、 参考文献:文章
t、 参考文献:类别
结束
结束
def自动关闭
下拉列表:文章类别
结束
结束

您收到的错误只是语法错误。 这是Rails在seed.rb中提供的示例代码

# Examples:
#
#   cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
#   Mayor.create(name: 'Emanuel', city: cities.first)
这是你的密码

Category.create([{:name => 'Programming'},
             {:name => 'Event'},
             {:name => 'Travel'},
             {:name => 'Music'},
             {:name => 'TV'}])
尝试将代码重新格式化为示例提供的语法-

Category.create([
             { name: 'Programming'},
             { name: 'Event'},
             { name: 'Travel'},
             { name: 'Music'},
             { name: 'TV'}
           ])
我相信对于db的种子设定,你唯一一次使用散列火箭是在数组之外的种子设定,我可能是错的,只是一个想法


希望这有帮助

这是你的整个
seeds.rb
文件,还是仅仅是一个片段?你好,迈克尔,我正在看一本电子书,现在这是全部内容。谢谢你!如果您复制并粘贴了此代码,请尝试下面Marko的答案。根据错误上方的警告判断,该行包含一个\r字符,这可能导致您的错误。这是一个回车符,所以你只能看到一个普通的换行符。这两种样式是可以互换的。散列火箭是老办法;“键:值”方式较新。两者都是合法的。哦,好的。我不确定,因为我在过去遇到过一些像这样奇怪的问题。只是想确定这不是真的。请更新,如果你找到一个解决方案,我很好奇它是什么,所以我只是做了一些关于整个哈希火箭语法和种子的研究。应该是第一行的语法。这个错误,从我所看到的,通常与忘记在抛出错误之前结束某件事情有关。我会检查哈希火箭的语法,以确保它是正确的。祝你好运
Category.create([
             { name: 'Programming'},
             { name: 'Event'},
             { name: 'Travel'},
             { name: 'Music'},
             { name: 'TV'}
           ])