在 Heroku 中使用 Redis 进行 React 和 Rails API
Using Redis in Heroku for a React and Rails API
我有一个 Rails API 部署到 heroku 上,它服务于 React.js 静态页面。它们都部署在 heroku 上,它们通过 API link 进行通信。使用 Redis 和 Sidekiq 时我的挣扎来了。
在我的 Rails API 上,我得到了 RedisToGo link 配置没有问题,但是当我转到我的 React 应用程序并尝试发送电子邮件邀请时,我收到了这条消息Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
。
我想如果我在我的后端配置它那么它就会对我的 React 静态页面应用程序起作用。
Sidekiq.yml
---
:verbose: false
:concurrency: 3
staging:
:concurrency: 1
production:
:concurrency: 5
:queues:
- [mailers,2]
- slack_notifications
- mixpanel
- invoices
- default
- rollbar
Redis.rb
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:url => uri)
sidekiq.rb
Sidekiq::Extensions.enable_delay!
unless Rails.env == 'development' || Rails.env == 'test'
Sidekiq.configure_server do |config|
config.redis = {
url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
}
end
Sidekiq.configure_client do |config|
config.redis = {
url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
}
end
end
# Turn off backtrace if at all memory issues are popping up as
# backtrace occupies to much memory on redis
# number of lines of backtrace and number of re-tries
Sidekiq.default_worker_options = { backtrace: false, retry: 3 }
Sidekiq.configure_server do |config|
# runs after your app has finished initializing
# but before any jobs are dispatched.
config.on(:startup) do
puts 'Sidekiq is starting...'
# make_some_singleton
end
config.on(:quiet) do
puts 'Got USR1, stopping further job processing...'
end
config.on(:shutdown) do
puts 'Got TERM, shutting down process...'
# stop_the_world
end
end
所以我的问题是下一个:
如果我已经在我的 rails 应用程序上配置了 REDISTOGO_LINK,我的反应配置变量是否需要相同的配置?
在 Rails API 上使用 react 作为 heroku 前端配置 sidekiq 和 Redis 的最佳方法是什么?我还没有在互联网上看到涵盖此内容的内容。
非常感谢您的帮助! ;)
您需要 运行 heroku config:set REDIS_PROVIDER=REDISTOGO_URL
告诉 Sidekiq 使用 REDISTOGO_URL 连接到 Redis。
https://github.com/mperham/sidekiq/wiki/Using-Redis#using-an-env-variable
我有一个 Rails API 部署到 heroku 上,它服务于 React.js 静态页面。它们都部署在 heroku 上,它们通过 API link 进行通信。使用 Redis 和 Sidekiq 时我的挣扎来了。
在我的 Rails API 上,我得到了 RedisToGo link 配置没有问题,但是当我转到我的 React 应用程序并尝试发送电子邮件邀请时,我收到了这条消息Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
。
我想如果我在我的后端配置它那么它就会对我的 React 静态页面应用程序起作用。
Sidekiq.yml
---
:verbose: false
:concurrency: 3
staging:
:concurrency: 1
production:
:concurrency: 5
:queues:
- [mailers,2]
- slack_notifications
- mixpanel
- invoices
- default
- rollbar
Redis.rb
uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:url => uri)
sidekiq.rb
Sidekiq::Extensions.enable_delay!
unless Rails.env == 'development' || Rails.env == 'test'
Sidekiq.configure_server do |config|
config.redis = {
url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
}
end
Sidekiq.configure_client do |config|
config.redis = {
url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
}
end
end
# Turn off backtrace if at all memory issues are popping up as
# backtrace occupies to much memory on redis
# number of lines of backtrace and number of re-tries
Sidekiq.default_worker_options = { backtrace: false, retry: 3 }
Sidekiq.configure_server do |config|
# runs after your app has finished initializing
# but before any jobs are dispatched.
config.on(:startup) do
puts 'Sidekiq is starting...'
# make_some_singleton
end
config.on(:quiet) do
puts 'Got USR1, stopping further job processing...'
end
config.on(:shutdown) do
puts 'Got TERM, shutting down process...'
# stop_the_world
end
end
所以我的问题是下一个: 如果我已经在我的 rails 应用程序上配置了 REDISTOGO_LINK,我的反应配置变量是否需要相同的配置?
在 Rails API 上使用 react 作为 heroku 前端配置 sidekiq 和 Redis 的最佳方法是什么?我还没有在互联网上看到涵盖此内容的内容。
非常感谢您的帮助! ;)
您需要 运行 heroku config:set REDIS_PROVIDER=REDISTOGO_URL
告诉 Sidekiq 使用 REDISTOGO_URL 连接到 Redis。
https://github.com/mperham/sidekiq/wiki/Using-Redis#using-an-env-variable