Chore: Sidekiq ActionCable fix for Development (#405)

- action cable works from sidekiq in development environments
- documentation updates for docker
This commit is contained in:
Sojan Jose 2020-01-05 23:26:22 +05:30 committed by Pranav Raj S
parent f178429df2
commit 91ace96acd
6 changed files with 40 additions and 14 deletions

View file

@ -36,6 +36,10 @@ AWS_REGION=
#sentry #sentry
SENTRY_DSN= SENTRY_DSN=
# Credentials to access sidekiq dashboard in production
SIDEKIQ_AUTH_USERNAME=
SIDEKIQ_AUTH_PASSWORD=
#### This environment variables are only required in hosted version which has billing #### This environment variables are only required in hosted version which has billing
ENABLE_BILLING= ENABLE_BILLING=

View file

@ -1,5 +1,6 @@
development: development:
adapter: async adapter: redis
url: <%= ENV.fetch('REDIS_URL', 'redis://127.0.0.1:6379') %>
test: test:
adapter: test adapter: test

View file

@ -90,12 +90,6 @@ Rails.application.routes.draw do
end end
end end
# Sidekiq Web UI
require 'sidekiq/web'
authenticate :user, ->(u) { u.administrator? } do
mount Sidekiq::Web => '/sidekiq'
end
# Used in mailer templates # Used in mailer templates
resource :app, only: [:index] do resource :app, only: [:index] do
resources :conversations, only: [:show] resources :conversations, only: [:show]
@ -106,4 +100,25 @@ Rails.application.routes.draw do
# Routes for testing # Routes for testing
resources :widget_tests, only: [:index] unless Rails.env.production? resources :widget_tests, only: [:index] unless Rails.env.production?
# ----------------------------------------------------------------------
# Internal Monitoring Routes
require 'sidekiq/web'
scope :monitoring do
# Sidekiq should use basic auth in production environment
if Rails.env.production?
Sidekiq::Web.use Rack::Auth::Basic do |username, password|
ENV['SIDEKIQ_AUTH_USERNAME'] &&
ENV['SIDEKIQ_AUTH_PASSWORD'] &&
ActiveSupport::SecurityUtils.secure_compare(::Digest::SHA256.hexdigest(username),
::Digest::SHA256.hexdigest(ENV['SIDEKIQ_AUTH_USERNAME'])) &&
ActiveSupport::SecurityUtils.secure_compare(::Digest::SHA256.hexdigest(password),
::Digest::SHA256.hexdigest(ENV['SIDEKIQ_AUTH_PASSWORD']))
end
end
mount Sidekiq::Web, at: '/sidekiq'
end
# ----------------------------------------------------------------------
end end

View file

@ -20,7 +20,7 @@ services:
- redis - redis
ports: ports:
- 3000:3000 - 3000:3000
env_file: .env.example ## Change this file for customised env variables env_file: .env ## Change this file for customized env variables
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- RAILS_ENV=production - RAILS_ENV=production

View file

@ -32,7 +32,7 @@ services:
- mailhog - mailhog
ports: ports:
- 3000:3000 - 3000:3000
env_file: .env.example env_file: .env
environment: environment:
- WEBPACKER_DEV_SERVER_HOST=webpack - WEBPACKER_DEV_SERVER_HOST=webpack
- NODE_ENV=development - NODE_ENV=development

View file

@ -7,6 +7,12 @@ title: "Docker Setup and Debugging Guide"
After cloning the repo and installing docker on your machine, run the following command from the root directory of the project. After cloning the repo and installing docker on your machine, run the following command from the root directory of the project.
```bash
cp .env.example .env
```
Make changes to the `.env` file as required. [Optional]
```bash ```bash
docker-compose build docker-compose build
``` ```
@ -14,19 +20,19 @@ docker-compose build
After building the image or after destroying the stack you would have to reset the database using following command After building the image or after destroying the stack you would have to reset the database using following command
```bash ```bash
docker-compose run rails bundle exec rails db:reset docker-compose run --rm rails bundle exec rails db:reset
``` ```
### Running the app ### Running the app
```bash ```bash
docker-compose run --service-port rails docker-compose run --rm --service-port rails
``` ```
open another terminal and also run below command to run sidekiq in a separate service open another terminal and also run below command to run sidekiq in a separate service
``` ```
docker-compose run rails bundle exec sidekiq docker-compose run --rm rails bundle exec sidekiq
``` ```
* Access the rails app frontend by visiting `http://0.0.0.0:3000/` * Access the rails app frontend by visiting `http://0.0.0.0:3000/`
@ -50,13 +56,13 @@ docker-compose down
For running the complete rspec tests For running the complete rspec tests
```bash ```bash
docker-compose run rails bundle exec rspec docker-compose run --rm rails bundle exec rspec
``` ```
For running specific test: For running specific test:
```bash ```bash
docker-compose run rails bundle exec rspec spec/<path-to-file>:<line-number> docker-compose run --rm rails bundle exec rspec spec/<path-to-file>:<line-number>
``` ```
## production environment ## production environment