DelayedJobJson
Migrate handler of text column to json column for delayed_job.
Dependencies
- ruby 2.7+
- activerecord 6.0+
- delayed_job 4.1
- delayed_job_active_record 4.1
Installation
Add this line to your application's Gemfile:
gem 'delayed_job_json'
And then execute:
$ bundle
Usage
Generate migration files:
$ rails generate delayed_job_json:migration
Edit generated files and leave codes only for your database. An example of generated file is shown as follows:
class AddPayloadToDelayedJobs < ActiveRecord::Migration[7.0]
def up
case ENV['DATABASE']
when 'postgresql'
add_column :delayed_jobs, :payload, :jsonb, null: false, default: {}
add_index :delayed_jobs, :payload, using: :gin
when 'mysql'
add_column :delayed_jobs, :payload, :json
else
add_column :delayed_jobs, :payload, :json, null: false, default: {}
end
end
def down
case ENV['DATABASE']
when 'postgresql'
remove_column :delayed_jobs, :payload, :jsonb, null: false, default: {}
when 'mysql'
remove_column :delayed_jobs, :payload, :json
else
remove_column :delayed_jobs, :payload, :json, null: false, default: {}
end
end
end
Then run migration:
$ rake db:migrate
This migration adds payload
column to delayed_jobs table, and YAML data in handler
column is migrated to payload
as json data.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/kanety/delayed_job_json.
License
The gem is available as open source under the terms of the MIT License.