【问题标题】:Rails PaperTrail Version NameError on Heroku DeploymentHeroku 部署上的 Rails PaperTrail 版本名称错误
【发布时间】:2017-12-14 11:18:58
【问题描述】:

我正在尝试运行运行 rake 任务的迁移,该任务会破坏 Rails 5 应用程序中使用 paper_trail gem 生成的旧版本数据。迁移似乎在本地开发环境中工作,但在推送到 Heroku 时无法部署。这是 Heroku 上的错误:

...

Deleting records for table: versions...
rake aborted!
NameError: uninitialized constant Version

...

config/initializers/paper_trail.rb

PaperTrail.config.track_associations = false
PaperTrail.config.version_limit = 100

require 'paper_trail/frameworks/active_record/models/paper_trail/version'
require Rails.root.join('./app/controllers/concerns/paper_trail_version_search.rb')

module PaperTrail
  class Version < ActiveRecord::Base    
    extend PaperTrailVersionSearch
  end
end

db/migrate/20170530151849_remove_old_versions_table_data.rb

class RemoveOldVersionsTableData < ActiveRecord::Migration[5.0]
  def change
    Rake::Task.clear
    <App Name Redacted>::Application.load_tasks

    Rake::Task["remove_old_versions_table_data"].invoke
  end
end

lib/tasks/remove_old_versions_table_data.rake

desc 'remove excessive and unnecessary versions data created prior to implementation of version limits'

task remove_old_versions_table_data: :environment do
  PaperTrail::Version.where("created_at <= ?", "2017-06-12").delete_all
end

有什么想法会发生什么吗?

【问题讨论】:

  • 你能发布回溯吗?此外,您不应该从迁移中调用 rake 任务。如果您稍后删除或修改任务,则会中断或更改迁移。
  • /tmp/jenkins-90ad3fgz/workspace/main-anybranch/lib/tasks/fixtures.rake:32:in block (4 levels) in &lt;top (required)&gt;' /tmp/jenkins-90ad3fgz/workspace/main-anybranch/lib/tasks/fixtures.rake:28:in each' /tmp/jenkins-90ad3fgz/workspace/main-anybranch/ lib/tasks/fixtures.rake:28:in `block (3 levels) in '

标签: ruby-on-rails ruby heroku ruby-on-rails-5 paper-trail-gem


【解决方案1】:

鉴于错误信息:

NameError: uninitialized constant Version

这可能是因为您在初始化程序中重新打开了PaperTrail::Version 类。这不再是重新打开Version 的推荐方式。请参阅changelog for version 4.0.0

不再推荐使用 Rails 初始化程序重新打开 PaperTrail::Version 或以其他方式扩展 PaperTrail。自述文件中描述了一种替代方法。请参阅https://github.com/airblade/paper_trail/pull/557https://github.com/airblade/paper_trail/pull/492

这些天来,我们建议人们在app/models/paper_trail/version.rb 重新打开。

如果您在初始化程序中重新打开,Version 可能尚未定义。我不记得为什么。某事,某事,rails 启动顺序,某事,某事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2012-03-07
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2013-05-25
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多