【问题标题】:Rails 3.1 - stack level too deep on db:seedRails 3.1 - db:seed 上的堆栈级别太深
【发布时间】:2013-12-20 21:11:26
【问题描述】:

我放弃了旧的开发数据库,​​以便在我的 rails 3.1.3 应用程序上获得一个新的数据库。但是,当我运行 bundle exec rake db:seed --trace 时,出现以下错误:

rafael@WALL-A:~/workspace/media-choice$ bundle exec rake db:seed --trace
** Invoke db:seed (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Invoke disable_rails_admin_initializer (first_time)
** Execute disable_rails_admin_initializer
** Execute environment
[DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.models.delayed_upload_error" is no longer supported
** Execute db:abort_if_pending_migrations
** Execute db:seed
rake aborted!
stack level too deep
/home/rafael/.rvm/gems/ruby-1.9.3-p0@media-choice/gems/rake-0.9.2.2/lib/rake/task.rb:162
Tasks: TOP => db:seed
rafael@WALL-A:~/workspace/media-choice$

我读过here 说它可能是 sass-3.1.5 的问题,降级到 3.1.4 可以解决它。但是,对我来说它没有用。 我还阅读了here 这可能是 rvm gemset 问题。所以我卸载了我的 rvm 并重新安装了我所有的红宝石和宝石。但问题仍然存在。

我也认为这可能是我在种子文件上的错误,但我认为这里没有问题:

# -*- encoding : utf-8 -*-

occupation = Occupation.create!(name: 'Estudante')

sponsor = Sponsor.create!(name: 'PROAC', logo: File.open('db/seeds/proac.jpg'))

contest = Contest.create!(name: 'Tema Livre', description: 'descrição', start_date: Date.today - 1.month, end_date: Date.today + 1.month,
                          call_text: 'call text', logo: File.open('db/seeds/freesubject.jpg'), enabled: true, show_in_upload: true )
contest.sponsors << sponsor
contest.content_types.create!(name: 'video')
contest.content_types.create!(name: 'audio')
contest.content_types.create!(name: 'wording')
contest.content_types.create!(name: 'photo')

user = User.new(first_name: 'José', last_name: 'da Silva', email: 'email@email.com', password: 'senhasenha',
                    country: 'Brasil', state: 'SP', city: 'São Paulo', gender: 'Masculino', birthdate: Date.today - 30.years,
                    commercialize_videos: true)
user.occupation = occupation
user.confirm!
user.save!

user2 = User.new(first_name: 'José', last_name: 'da Silva', email: 'email2@email.com', password: 'senhasenha',
                    country: 'Brasil', state: 'SP', city: 'São Paulo', gender: 'Masculino', birthdate: Date.today - 30.years,
                    commercialize_videos: true)
user2.occupation = occupation
user2.confirm!
user2.save!


user3 = User.new(first_name: 'José', last_name: 'da Silva', email: 'email3@email.com', password: 'senhasenha',
                    country: 'Brasil', state: 'SP', city: 'São Paulo', gender: 'Masculino', birthdate: Date.today - 30.years,
                    commercialize_videos: true)
user3.occupation = occupation
user3.confirm!
user3.save!

有人有什么建议吗?

谢谢!

【问题讨论】:

  • 请发布完整的错误日志。
  • 已编辑以添加完整跟踪。谢谢!
  • 没有太大帮助,除了我猜你的一个模型中的某个地方有一个逻辑,在一个回调(如 after_save)中会产生一个无限循环。
  • @socjopata 的建议对我有用。就我而言,创建时验证失败。

标签: ruby-on-rails-3 rake-task


【解决方案1】:

希望这会对某人有所帮助。

对我来说,这是由于我添加的 after_save 方法被一遍又一遍地调用。我将其更改为 after_create ,一切都很好。

【讨论】:

    【解决方案2】:

    我知道这是一篇旧帖子,但我已经处理了很长时间的相同错误,我想我可以帮助您或未来的观众。

    对我来说,问题在于非转义字符。具体来说,我在播种的一些条目(大约 100,000 个)中有单引号。一旦我用 \' 替换了这些,我就不再有问题了。

    我在您粘贴的代码中看到重音“e”。我知道如果使用了不正确的编码,这些可能会出现问题。

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 2017-08-19
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多