Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use migration instead of schema for installs to ensure compatibility with structure.sql #383

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Solid Queue is configured by default in new Rails 8 applications. But if you're
1. `bundle add solid_queue`
2. `bin/rails solid_queue:install`

This will configure Solid Queue as the production Active Job backend, create the configuration files `config/queue.yml` and `config/recurring.yml`, and create the `db/queue_schema.rb`. It'll also create a `bin/jobs` executable wrapper that you can use to start Solid Queue.
This will configure Solid Queue as the production Active Job backend, create the configuration files `config/queue.yml` and `config/recurring.yml`, and create the database migration. It'll also create a `bin/jobs` executable wrapper that you can use to start Solid Queue.

Once you've done that, you will then have to add the configuration for the queue database in `config/database.yml`. If you're using SQLite, it'll look like this:

Expand Down Expand Up @@ -58,7 +58,7 @@ For small projects, you can run Solid Queue on the same machine as your webserve

Running Solid Queue in a separate database is recommended, but it's also possible to use one single database for both the app and the queue. Just follow these steps:

1. Copy the contents of `db/queue_schema.rb` into a normal migration and delete `db/queue_schema.rb`
1. Move `db/queue_migrate/1_create_solid_queue_tables.rb` into a normal migration
2. Remove `config.solid_queue.connects_to` from `production.rb`
3. Migrate your database. You are ready to run `bin/jobs`

Expand Down
2 changes: 1 addition & 1 deletion lib/generators/solid_queue/install/USAGE
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Example:
bin/rails generate solid_queue:install

This will perform the following:
Adds solid_queue db schema
Adds solid_queue db migration
Adds default configurations
Replaces Active Job's adapter in environment configuration
Installs bin/jobs binstub to start the supervisor
2 changes: 1 addition & 1 deletion lib/generators/solid_queue/install/install_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class SolidQueue::InstallGenerator < Rails::Generators::Base
def copy_files
template "config/queue.yml"
template "config/recurring.yml"
template "db/queue_schema.rb"
template "db/queue_migrate/1_create_solid_queue_tables.rb"
template "bin/jobs"
chmod "bin/jobs", 0755 & ~File.umask, verbose: false
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
class CreateSolidQueueTables < ActiveRecord::Migration[7.2]
create_table "solid_queue_blocked_executions" do |t|
t.references :job, null: false, index: { unique: true }, foreign_key: { to_table: :solid_queue_jobs, on_delete: :cascade }
t.string "queue_name", null: false
t.integer "priority", default: 0, null: false
t.string "concurrency_key", null: false
t.datetime "expires_at", null: false
t.datetime "created_at", null: false
t.index [ "concurrency_key", "priority", "job_id" ], name: "index_solid_queue_blocked_executions_for_release"
t.index [ "expires_at", "concurrency_key" ], name: "index_solid_queue_blocked_executions_for_maintenance"
end

create_table "solid_queue_claimed_executions" do |t|
t.references :job, null: false, index: { unique: true }, foreign_key: { to_table: :solid_queue_jobs, on_delete: :cascade }
t.references :process, index: false
t.datetime "created_at", null: false
t.index [ "process_id", "job_id" ], name: "index_solid_queue_claimed_executions_on_process_id_and_job_id"
end

create_table "solid_queue_failed_executions" do |t|
t.references :job, null: false, index: { unique: true }, foreign_key: { to_table: :solid_queue_jobs, on_delete: :cascade }
t.text "error"
t.datetime "created_at", null: false
end

create_table "solid_queue_jobs" do |t|
t.string "queue_name", null: false
t.string "class_name", null: false, index: true
t.text "arguments"
t.integer "priority", default: 0, null: false
t.string "active_job_id", index: true
t.datetime "scheduled_at"
t.datetime "finished_at", index: true
t.string "concurrency_key"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index [ "queue_name", "finished_at" ], name: "index_solid_queue_jobs_for_filtering"
t.index [ "scheduled_at", "finished_at" ], name: "index_solid_queue_jobs_for_alerting"
end

create_table "solid_queue_pauses" do |t|
t.string "queue_name", null: false, index: { unique: true }
t.datetime "created_at", null: false
end

create_table "solid_queue_processes" do |t|
t.string "kind", null: false
t.datetime "last_heartbeat_at", null: false, index: true
t.references :supervisor
t.integer "pid", null: false
t.string "hostname"
t.text "metadata"
t.datetime "created_at", null: false
t.string "name", null: false
t.index [ "name", "supervisor_id" ], name: "index_solid_queue_processes_on_name_and_supervisor_id", unique: true
end

create_table "solid_queue_ready_executions" do |t|
t.references :job, null: false, index: { unique: true }, foreign_key: { to_table: :solid_queue_jobs, on_delete: :cascade }
t.string "queue_name", null: false
t.integer "priority", default: 0, null: false
t.datetime "created_at", null: false
t.index [ "priority", "job_id" ], name: "index_solid_queue_poll_all"
t.index [ "queue_name", "priority", "job_id" ], name: "index_solid_queue_poll_by_queue"
end

create_table "solid_queue_recurring_executions" do |t|
t.references :job, null: false, index: { unique: true }, foreign_key: { to_table: :solid_queue_jobs, on_delete: :cascade }
t.string "task_key", null: false
t.datetime "run_at", null: false
t.datetime "created_at", null: false
t.index [ "task_key", "run_at" ], name: "index_solid_queue_recurring_executions_on_task_key_and_run_at", unique: true
end

create_table "solid_queue_recurring_tasks" do |t|
t.string "key", null: false, index: { unique: true }
t.string "schedule", null: false
t.string "command", limit: 2048
t.string "class_name"
t.text "arguments"
t.string "queue_name"
t.integer "priority", default: 0
t.boolean "static", default: true, null: false, index: true
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "solid_queue_scheduled_executions" do |t|
t.references :job, null: false, index: { unique: true }, foreign_key: { to_table: :solid_queue_jobs, on_delete: :cascade }
t.string "queue_name", null: false
t.integer "priority", default: 0, null: false
t.datetime "scheduled_at", null: false
t.datetime "created_at", null: false
t.index [ "scheduled_at", "priority", "job_id" ], name: "index_solid_queue_dispatch_all"
end

create_table "solid_queue_semaphores" do |t|
t.string "key", null: false, index: { unique: true }
t.integer "value", default: 1, null: false
t.datetime "expires_at", null: false, index: true
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index [ "key", "value" ], name: "index_solid_queue_semaphores_on_key_and_value"
end
end
129 changes: 0 additions & 129 deletions lib/generators/solid_queue/install/templates/db/queue_schema.rb

This file was deleted.