You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+62-3Lines changed: 62 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -68,8 +68,6 @@ production:
68
68
migrations_paths: db/queue_migrate
69
69
```
70
70
71
-
Note: Calling `bin/rails solid_queue:install` will automatically add `config.solid_queue.connects_to = { database: { writing: :queue } }` to `config/environments/production.rb`, so no additional configuration is needed there (although you must make sure that you use the `queue` name in `database.yml` for this to match!). But if you want to use Solid Queue in a different environment (like staging or even development), you'll have to manually add that `config.solid_queue.connects_to` line to the respective environment file. And, as always, make sure that the name you're using for the database in `config/database.yml` matches the name you use in `config.solid_queue.connects_to`.
72
-
73
71
Then run `db:prepare` in production to ensure the database is created and the schema is loaded.
74
72
75
73
Now you're ready to start processing jobs by running `bin/jobs` on the server that's doing the work. This will start processing jobs in all queues using the default configuration. See [below](#configuration) to learn more about configuring Solid Queue.
@@ -78,6 +76,67 @@ For small projects, you can run Solid Queue on the same machine as your webserve
78
76
79
77
**Note**: future changes to the schema will come in the form of regular migrations.
80
78
79
+
### Usage in development and other non-production environments
80
+
81
+
Calling `bin/rails solid_queue:install` will automatically add `config.solid_queue.connects_to = { database: { writing: :queue } }` to `config/environments/production.rb`. In order to use Solid Queue in other environments (such as development or staging), you'll need to add a similar configuration(s).
82
+
83
+
For example, if you're using SQLite in development, update `database.yml` as follows:
Once you've added this, run `db:prepare` to create the Solid Queue database and load the schema.
105
+
106
+
Finally, in order for jobs to be processed, you'll need to have Solid Queue running. In Development, this can be done via the Puma plugin. In `puma.rb` update the following line:
107
+
108
+
```ruby
109
+
# You can either set the env var, or check for development
110
+
plugin :solid_queue if ENV["SOLID_QUEUE_IN_PUMA"] || Rails.env.development?
111
+
```
112
+
113
+
**Import Note about Action Cable**: If you use Action Cable (or anything dependent on Action Cable, such as Turbo Streams), you will need to also need to update it to use a database.
114
+
115
+
In `config/cable.yml`
116
+
117
+
```diff
118
+
development:
119
+
- adapter: async
120
+
+ adapter: solid_cable
121
+
+ connects_to:
122
+
+ database:
123
+
+ writing: cable
124
+
+ polling_interval: 0.1.seconds
125
+
+ message_retention: 1.day
126
+
```
127
+
128
+
In `config/database.yml`
129
+
130
+
```diff
131
+
development:
132
+
primary:
133
+
<<: *default
134
+
database: storage/development.sqlite3
135
+
+ cable:
136
+
+ <<: *default
137
+
+ database: storage/development_cable.sqlite3
138
+
+ migrations_paths: db/cable_migrate
139
+
```
81
140
82
141
### Single database configuration
83
142
@@ -111,6 +170,7 @@ Solid Queue was designed for the highest throughput when used with MySQL 8+ or P
111
170
### Workers, dispatchers and scheduler
112
171
113
172
We have several types of actors in Solid Queue:
173
+
114
174
- _Workers_ are in charge of picking jobs ready to run from queues and processing them. They work off the `solid_queue_ready_executions` table.
115
175
- _Dispatchers_ are in charge of selecting jobs scheduled to run in the future that are due and _dispatching_ them, which is simply moving them from the `solid_queue_scheduled_executions` table over to the `solid_queue_ready_executions` table so that workers can pick them up. On top of that, they do some maintenance work related to [concurrency controls](#concurrency-controls).
116
176
- The _scheduler_ manages [recurring tasks](#recurring-tasks), enqueuing jobs for them when they're due.
@@ -124,7 +184,6 @@ By default, Solid Queue will try to find your configuration under `config/queue.
0 commit comments