【发布时间】: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 <top (required)>' /tmp/jenkins-90ad3fgz/workspace/main-anybranch/lib/tasks/fixtures.rake:28:ineach' /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