Skip to content

Commit 1f24229

Browse files
committed
fix: configure app to work without Redis on Railway
1 parent 69ca6fc commit 1f24229

3 files changed

Lines changed: 31 additions & 16 deletions

File tree

app/modules/authentication/controllers/auth_controller.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def register
7171
user_agent: request.user_agent
7272
)
7373

74-
UserMailer.welcome(user).deliver_later
74+
deliver_email(UserMailer.welcome(user))
7575

7676
render_created(
7777
{
@@ -209,7 +209,7 @@ def forgot_password
209209
user_agent: request.user_agent
210210
)
211211

212-
UserMailer.password_reset(user, reset_token).deliver_later
212+
deliver_email(UserMailer.password_reset(user, reset_token))
213213

214214
AuditLog.create!(
215215
organization: user.organization,
@@ -268,7 +268,7 @@ def reset_password
268268

269269
reset_token.mark_as_used!
270270

271-
UserMailer.password_reset_confirmation(user).deliver_later
271+
deliver_email(UserMailer.password_reset_confirmation(user))
272272

273273
AuditLog.create!(
274274
organization: user.organization,
@@ -306,6 +306,15 @@ def me
306306

307307
private
308308

309+
# Deliver email using async queue if Redis available, otherwise deliver synchronously
310+
def deliver_email(mailer)
311+
if ENV['REDIS_URL'].present?
312+
mailer.deliver_later
313+
else
314+
mailer.deliver_now
315+
end
316+
end
317+
309318
def create_organization!
310319
Organization.create!(organization_params)
311320
end

config/environments/production.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@
4747
:memory_store
4848
end
4949

50-
config.active_job.queue_adapter = :sidekiq
50+
# Use Sidekiq if Redis is available, otherwise use inline (synchronous)
51+
config.active_job.queue_adapter = ENV['REDIS_URL'].present? ? :sidekiq : :inline
5152

5253
config.action_mailer.perform_caching = false
5354

config/initializers/sidekiq.rb

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,26 @@
33
require 'sidekiq'
44
require 'sidekiq-scheduler'
55

6-
Sidekiq.configure_server do |config|
7-
config.redis = { url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0') }
6+
# Only configure Sidekiq if Redis is available
7+
if ENV['REDIS_URL'].present?
8+
Sidekiq.configure_server do |config|
9+
config.redis = { url: ENV['REDIS_URL'] }
810

9-
config.on(:startup) do
10-
schedule_file = Rails.root.join('config', 'sidekiq.yml')
11-
if File.exist?(schedule_file)
12-
schedule = YAML.load_file(schedule_file)
13-
if schedule && schedule[:schedule]
14-
Sidekiq.schedule = schedule[:schedule]
15-
SidekiqScheduler::Scheduler.instance.reload_schedule!
11+
config.on(:startup) do
12+
schedule_file = Rails.root.join('config', 'sidekiq.yml')
13+
if File.exist?(schedule_file)
14+
schedule = YAML.load_file(schedule_file)
15+
if schedule && schedule[:schedule]
16+
Sidekiq.schedule = schedule[:schedule]
17+
SidekiqScheduler::Scheduler.instance.reload_schedule!
18+
end
1619
end
1720
end
1821
end
19-
end
2022

21-
Sidekiq.configure_client do |config|
22-
config.redis = { url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0') }
23+
Sidekiq.configure_client do |config|
24+
config.redis = { url: ENV['REDIS_URL'] }
25+
end
26+
else
27+
Rails.logger.warn "Redis not configured - Sidekiq will not be available. Background jobs will fail."
2328
end

0 commit comments

Comments
 (0)