1002 lines
19 KiB
Plaintext
1002 lines
19 KiB
Plaintext
---
|
|
title: Common Errors and Solutions
|
|
description: Troubleshooting guide for common errors during Chatwoot development setup
|
|
sidebarTitle: Common Errors
|
|
---
|
|
|
|
# Common Errors and Solutions
|
|
|
|
This guide covers the most common errors encountered during Chatwoot development setup and their solutions. Use this as a quick reference when troubleshooting issues.
|
|
|
|
## Installation and Setup Errors
|
|
|
|
### Ruby and Bundler Issues
|
|
|
|
<Accordion title="Bundle install fails with native extension errors">
|
|
**Error Message**:
|
|
```
|
|
An error occurred while installing pg (1.5.4), and Bundler cannot continue.
|
|
Make sure that `gem install pg -v '1.5.4'` succeeds before bundling.
|
|
```
|
|
|
|
**Cause**: Missing PostgreSQL development headers or incorrect pg_config path.
|
|
|
|
**Solutions**:
|
|
|
|
<Tabs>
|
|
<Tab title="macOS">
|
|
```bash
|
|
# Install PostgreSQL with Homebrew
|
|
brew install postgresql
|
|
|
|
# Configure bundle to use correct pg_config
|
|
bundle config build.pg --with-pg-config=/opt/homebrew/bin/pg_config
|
|
|
|
# For Intel Macs
|
|
bundle config build.pg --with-pg-config=/usr/local/bin/pg_config
|
|
|
|
# Retry bundle install
|
|
bundle install
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Ubuntu/Debian">
|
|
```bash
|
|
# Install PostgreSQL development headers
|
|
sudo apt-get update
|
|
sudo apt-get install libpq-dev postgresql-client
|
|
|
|
# Install build essentials
|
|
sudo apt-get install build-essential
|
|
|
|
# Retry bundle install
|
|
bundle install
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="CentOS/RHEL">
|
|
```bash
|
|
# Install PostgreSQL development packages
|
|
sudo yum install postgresql-devel
|
|
|
|
# Install development tools
|
|
sudo yum groupinstall "Development Tools"
|
|
|
|
# Retry bundle install
|
|
bundle install
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Accordion>
|
|
|
|
<Accordion title="Ruby version mismatch">
|
|
**Error Message**:
|
|
```
|
|
Your Ruby version is 3.1.0, but your Gemfile specified 3.3.3
|
|
```
|
|
|
|
**Cause**: Wrong Ruby version installed.
|
|
|
|
**Solutions**:
|
|
|
|
<Tabs>
|
|
<Tab title="rbenv">
|
|
```bash
|
|
# Install correct Ruby version
|
|
rbenv install 3.3.3
|
|
|
|
# Set as global version
|
|
rbenv global 3.3.3
|
|
|
|
# Verify version
|
|
ruby --version
|
|
|
|
# Rehash to update shims
|
|
rbenv rehash
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="RVM">
|
|
```bash
|
|
# Install correct Ruby version
|
|
rvm install 3.3.3
|
|
|
|
# Use the version
|
|
rvm use 3.3.3 --default
|
|
|
|
# Verify version
|
|
ruby --version
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="asdf">
|
|
```bash
|
|
# Install correct Ruby version
|
|
asdf install ruby 3.3.3
|
|
|
|
# Set as global version
|
|
asdf global ruby 3.3.3
|
|
|
|
# Verify version
|
|
ruby --version
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Accordion>
|
|
|
|
<Accordion title="Bundler version conflicts">
|
|
**Error Message**:
|
|
```
|
|
Bundler could not find compatible versions for gem "bundler"
|
|
```
|
|
|
|
**Cause**: Incompatible Bundler version.
|
|
|
|
**Solution**:
|
|
```bash
|
|
# Check current Bundler version
|
|
bundler --version
|
|
|
|
# Install specific Bundler version (check Gemfile.lock)
|
|
gem install bundler:2.4.22
|
|
|
|
# Update Bundler
|
|
gem update bundler
|
|
|
|
# Clean bundle cache
|
|
bundle clean --force
|
|
|
|
# Retry installation
|
|
bundle install
|
|
```
|
|
</Accordion>
|
|
|
|
### Node.js and Package Manager Issues
|
|
|
|
<Accordion title="Node.js version incompatibility">
|
|
**Error Message**:
|
|
```
|
|
error @chatwoot/chatwoot@1.0.0: The engine "node" is incompatible with this module.
|
|
```
|
|
|
|
**Cause**: Wrong Node.js version.
|
|
|
|
**Solutions**:
|
|
|
|
<Tabs>
|
|
<Tab title="nvm">
|
|
```bash
|
|
# Install correct Node.js version
|
|
nvm install 20
|
|
|
|
# Use the version
|
|
nvm use 20
|
|
|
|
# Set as default
|
|
nvm alias default 20
|
|
|
|
# Verify version
|
|
node --version
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="n">
|
|
```bash
|
|
# Install correct Node.js version
|
|
n 20
|
|
|
|
# Verify version
|
|
node --version
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="asdf">
|
|
```bash
|
|
# Install correct Node.js version
|
|
asdf install nodejs 20.10.0
|
|
|
|
# Set as global version
|
|
asdf global nodejs 20.10.0
|
|
|
|
# Verify version
|
|
node --version
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Accordion>
|
|
|
|
<Accordion title="pnpm installation issues">
|
|
**Error Message**:
|
|
```
|
|
pnpm: command not found
|
|
```
|
|
|
|
**Cause**: pnpm not installed.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Install pnpm globally
|
|
npm install -g pnpm
|
|
|
|
# Or using corepack (Node.js 16.10+)
|
|
corepack enable
|
|
corepack prepare pnpm@latest --activate
|
|
|
|
# Or using Homebrew (macOS)
|
|
brew install pnpm
|
|
|
|
# Verify installation
|
|
pnpm --version
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Package installation failures">
|
|
**Error Message**:
|
|
```
|
|
ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies
|
|
```
|
|
|
|
**Cause**: Peer dependency conflicts or corrupted cache.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Clear pnpm cache
|
|
pnpm store prune
|
|
|
|
# Remove node_modules and lock file
|
|
rm -rf node_modules pnpm-lock.yaml
|
|
|
|
# Reinstall with legacy peer deps
|
|
pnpm install --legacy-peer-deps
|
|
|
|
# Or force installation
|
|
pnpm install --force
|
|
|
|
# Alternative: use npm
|
|
npm install
|
|
```
|
|
</Accordion>
|
|
|
|
## Database Errors
|
|
|
|
### PostgreSQL Connection Issues
|
|
|
|
<Accordion title="Database connection refused">
|
|
**Error Message**:
|
|
```
|
|
PG::ConnectionBad: could not connect to server: Connection refused
|
|
```
|
|
|
|
**Cause**: PostgreSQL service not running or incorrect connection parameters.
|
|
|
|
**Solutions**:
|
|
|
|
<Tabs>
|
|
<Tab title="macOS">
|
|
```bash
|
|
# Check if PostgreSQL is running
|
|
brew services list | grep postgresql
|
|
|
|
# Start PostgreSQL
|
|
brew services start postgresql
|
|
|
|
# Check connection
|
|
psql postgres -c "SELECT 1;"
|
|
|
|
# If user doesn't exist, create it
|
|
createuser -s chatwoot
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Ubuntu/Debian">
|
|
```bash
|
|
# Check PostgreSQL status
|
|
sudo systemctl status postgresql
|
|
|
|
# Start PostgreSQL
|
|
sudo systemctl start postgresql
|
|
sudo systemctl enable postgresql
|
|
|
|
# Switch to postgres user and create chatwoot user
|
|
sudo -u postgres createuser -s chatwoot
|
|
|
|
# Set password for chatwoot user
|
|
sudo -u postgres psql -c "ALTER USER chatwoot PASSWORD 'password';"
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Docker">
|
|
```bash
|
|
# Start PostgreSQL container
|
|
docker run --name postgres-chatwoot \
|
|
-e POSTGRES_USER=chatwoot \
|
|
-e POSTGRES_PASSWORD=password \
|
|
-e POSTGRES_DB=chatwoot_development \
|
|
-p 5432:5432 \
|
|
-d postgres:15
|
|
|
|
# Check if container is running
|
|
docker ps | grep postgres
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Accordion>
|
|
|
|
<Accordion title="Database does not exist">
|
|
**Error Message**:
|
|
```
|
|
ActiveRecord::NoDatabaseError: FATAL: database "chatwoot_development" does not exist
|
|
```
|
|
|
|
**Cause**: Database not created.
|
|
|
|
**Solution**:
|
|
```bash
|
|
# Create databases
|
|
bundle exec rails db:create
|
|
|
|
# If that fails, create manually
|
|
createdb chatwoot_development
|
|
createdb chatwoot_test
|
|
|
|
# Or using psql
|
|
psql postgres -c "CREATE DATABASE chatwoot_development;"
|
|
psql postgres -c "CREATE DATABASE chatwoot_test;"
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Migration errors">
|
|
**Error Message**:
|
|
```
|
|
ActiveRecord::PendingMigrationError: Migrations are pending
|
|
```
|
|
|
|
**Cause**: Database schema is not up to date.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Run pending migrations
|
|
bundle exec rails db:migrate
|
|
|
|
# If migrations fail, check status
|
|
bundle exec rails db:migrate:status
|
|
|
|
# Reset database (WARNING: destroys data)
|
|
bundle exec rails db:drop db:create db:migrate db:seed
|
|
|
|
# For specific migration issues
|
|
bundle exec rails db:migrate:up VERSION=20231201000000
|
|
```
|
|
</Accordion>
|
|
|
|
### Redis Connection Issues
|
|
|
|
<Accordion title="Redis connection refused">
|
|
**Error Message**:
|
|
```
|
|
Redis::CannotConnectError: Error connecting to Redis on localhost:6379
|
|
```
|
|
|
|
**Cause**: Redis service not running.
|
|
|
|
**Solutions**:
|
|
|
|
<Tabs>
|
|
<Tab title="macOS">
|
|
```bash
|
|
# Check if Redis is running
|
|
brew services list | grep redis
|
|
|
|
# Start Redis
|
|
brew services start redis
|
|
|
|
# Test connection
|
|
redis-cli ping
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Ubuntu/Debian">
|
|
```bash
|
|
# Check Redis status
|
|
sudo systemctl status redis
|
|
|
|
# Start Redis
|
|
sudo systemctl start redis
|
|
sudo systemctl enable redis
|
|
|
|
# Test connection
|
|
redis-cli ping
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Docker">
|
|
```bash
|
|
# Start Redis container
|
|
docker run --name redis-chatwoot \
|
|
-p 6379:6379 \
|
|
-d redis:7-alpine
|
|
|
|
# Test connection
|
|
docker exec redis-chatwoot redis-cli ping
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Accordion>
|
|
|
|
## Application Runtime Errors
|
|
|
|
### Rails Server Issues
|
|
|
|
<Accordion title="Port already in use">
|
|
**Error Message**:
|
|
```
|
|
Address already in use - bind(2) for "127.0.0.1" port 3000
|
|
```
|
|
|
|
**Cause**: Another process is using port 3000.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Find process using port 3000
|
|
lsof -ti:3000
|
|
|
|
# Kill the process
|
|
kill -9 $(lsof -ti:3000)
|
|
|
|
# Or use a different port
|
|
bundle exec rails server -p 3001
|
|
|
|
# Check what's running on the port
|
|
netstat -tulpn | grep :3000
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Secret key base missing">
|
|
**Error Message**:
|
|
```
|
|
ArgumentError: Missing `secret_key_base` for 'development' environment
|
|
```
|
|
|
|
**Cause**: SECRET_KEY_BASE not set in environment.
|
|
|
|
**Solution**:
|
|
```bash
|
|
# Generate a new secret key
|
|
bundle exec rails secret
|
|
|
|
# Add to .env file
|
|
echo "SECRET_KEY_BASE=$(bundle exec rails secret)" >> .env
|
|
|
|
# Or set temporarily
|
|
export SECRET_KEY_BASE=$(bundle exec rails secret)
|
|
bundle exec rails server
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Webpacker compilation errors">
|
|
**Error Message**:
|
|
```
|
|
Webpacker::Manifest::MissingEntryError: Webpacker can't find application.js
|
|
```
|
|
|
|
**Cause**: Webpack assets not compiled or compilation failed.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Check if webpack dev server is running
|
|
ps aux | grep webpack
|
|
|
|
# Start webpack dev server
|
|
pnpm run dev
|
|
|
|
# Or compile assets manually
|
|
bundle exec rails assets:precompile
|
|
|
|
# Clear webpack cache
|
|
rm -rf tmp/cache/webpacker
|
|
rm -rf public/packs
|
|
|
|
# Reinstall node modules
|
|
rm -rf node_modules
|
|
pnpm install
|
|
```
|
|
</Accordion>
|
|
|
|
### Sidekiq Worker Issues
|
|
|
|
<Accordion title="Sidekiq not processing jobs">
|
|
**Error Message**:
|
|
```
|
|
Jobs are queued but not being processed
|
|
```
|
|
|
|
**Cause**: Sidekiq worker not running.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Check if Sidekiq is running
|
|
ps aux | grep sidekiq
|
|
|
|
# Start Sidekiq
|
|
bundle exec sidekiq
|
|
|
|
# Check Sidekiq web interface
|
|
open http://localhost:3000/sidekiq
|
|
|
|
# Clear failed jobs
|
|
bundle exec rails runner "Sidekiq::Queue.new.clear"
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Redis memory issues">
|
|
**Error Message**:
|
|
```
|
|
Redis::CommandError: OOM command not allowed when used memory > 'maxmemory'
|
|
```
|
|
|
|
**Cause**: Redis running out of memory.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Check Redis memory usage
|
|
redis-cli info memory
|
|
|
|
# Clear Redis cache
|
|
redis-cli flushall
|
|
|
|
# Increase Redis memory limit (redis.conf)
|
|
# maxmemory 256mb
|
|
|
|
# Or restart Redis
|
|
brew services restart redis # macOS
|
|
sudo systemctl restart redis # Linux
|
|
```
|
|
</Accordion>
|
|
|
|
## Testing Errors
|
|
|
|
### RSpec Test Failures
|
|
|
|
<Accordion title="Database not prepared for testing">
|
|
**Error Message**:
|
|
```
|
|
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "users" does not exist
|
|
```
|
|
|
|
**Cause**: Test database not set up properly.
|
|
|
|
**Solution**:
|
|
```bash
|
|
# Prepare test database
|
|
RAILS_ENV=test bundle exec rails db:create
|
|
RAILS_ENV=test bundle exec rails db:migrate
|
|
|
|
# Or use the combined command
|
|
bundle exec rails db:test:prepare
|
|
|
|
# Reset test database if needed
|
|
RAILS_ENV=test bundle exec rails db:drop db:create db:migrate
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Factory Bot errors">
|
|
**Error Message**:
|
|
```
|
|
FactoryBot::DuplicateDefinitionError: Factory already registered
|
|
```
|
|
|
|
**Cause**: Factory definitions loaded multiple times.
|
|
|
|
**Solution**:
|
|
```bash
|
|
# Clear Spring cache
|
|
bundle exec spring stop
|
|
|
|
# Restart test suite
|
|
bundle exec rspec
|
|
|
|
# Check for duplicate factory definitions
|
|
grep -r "FactoryBot.define" spec/
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Capybara/Selenium errors">
|
|
**Error Message**:
|
|
```
|
|
Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver
|
|
```
|
|
|
|
**Cause**: ChromeDriver not installed or incompatible version.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Install ChromeDriver
|
|
# macOS
|
|
brew install chromedriver
|
|
|
|
# Ubuntu/Debian
|
|
sudo apt-get install chromium-chromedriver
|
|
|
|
# Or use webdrivers gem (should be automatic)
|
|
bundle exec rails runner "Webdrivers::Chromedriver.update"
|
|
|
|
# Run tests in headless mode
|
|
HEADLESS=true bundle exec rspec spec/system/
|
|
```
|
|
</Accordion>
|
|
|
|
## Development Environment Issues
|
|
|
|
### IDE and Editor Problems
|
|
|
|
<Accordion title="VS Code Ruby extension not working">
|
|
**Error**: Ruby IntelliSense not working, no syntax highlighting.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Install Ruby LSP
|
|
gem install ruby-lsp
|
|
|
|
# Or add to Gemfile
|
|
echo 'gem "ruby-lsp", group: :development' >> Gemfile
|
|
bundle install
|
|
|
|
# Restart VS Code
|
|
# Install recommended extensions:
|
|
# - Ruby LSP
|
|
# - Ruby Solargraph
|
|
# - Ruby Test Explorer
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Solargraph not working">
|
|
**Error**: Ruby documentation and autocomplete not working.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Install Solargraph
|
|
gem install solargraph
|
|
|
|
# Generate documentation
|
|
bundle exec yard gems
|
|
bundle exec solargraph bundle
|
|
|
|
# Create .solargraph.yml config
|
|
solargraph config
|
|
|
|
# Restart your editor
|
|
```
|
|
</Accordion>
|
|
|
|
### Git and Version Control Issues
|
|
|
|
<Accordion title="Pre-commit hooks failing">
|
|
**Error**: Git commit rejected due to linting errors.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Fix RuboCop issues
|
|
bundle exec rubocop -a
|
|
|
|
# Fix ESLint issues
|
|
pnpm run lint:fix
|
|
|
|
# Format code
|
|
pnpm run format
|
|
|
|
# Skip hooks temporarily (not recommended)
|
|
git commit --no-verify -m "Your commit message"
|
|
|
|
# Update pre-commit hooks
|
|
pre-commit autoupdate
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Large file errors">
|
|
**Error**: Git LFS or large file warnings.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Install Git LFS
|
|
git lfs install
|
|
|
|
# Track large files
|
|
git lfs track "*.png"
|
|
git lfs track "*.jpg"
|
|
git lfs track "*.pdf"
|
|
|
|
# Add .gitattributes
|
|
git add .gitattributes
|
|
|
|
# Check LFS status
|
|
git lfs status
|
|
```
|
|
</Accordion>
|
|
|
|
## Performance Issues
|
|
|
|
### Slow Application Startup
|
|
|
|
<Accordion title="Rails server takes too long to start">
|
|
**Cause**: Large codebase, slow database, or memory issues.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Use Spring for faster Rails commands
|
|
bundle exec spring binstub --all
|
|
|
|
# Check Spring status
|
|
bundle exec spring status
|
|
|
|
# Restart Spring if needed
|
|
bundle exec spring stop
|
|
|
|
# Increase memory if needed
|
|
export RUBY_GC_HEAP_INIT_SLOTS=10000
|
|
export RUBY_GC_HEAP_FREE_SLOTS=10000
|
|
|
|
# Profile startup time
|
|
time bundle exec rails runner "puts 'Rails loaded'"
|
|
```
|
|
</Accordion>
|
|
|
|
<Accordion title="Slow test suite">
|
|
**Cause**: Database setup, factory creation, or inefficient tests.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Use parallel testing
|
|
bundle exec rspec --parallel
|
|
|
|
# Profile slow tests
|
|
bundle exec rspec --profile
|
|
|
|
# Use database cleaner strategies
|
|
# Add to spec/rails_helper.rb:
|
|
# config.use_transactional_fixtures = true
|
|
|
|
# Optimize factories
|
|
# Use build_stubbed instead of create when possible
|
|
```
|
|
</Accordion>
|
|
|
|
## Email and Communication Issues
|
|
|
|
### Email Delivery Problems
|
|
|
|
<Accordion title="Emails not being sent in development">
|
|
**Cause**: SMTP configuration or email service issues.
|
|
|
|
**Solutions**:
|
|
|
|
<Tabs>
|
|
<Tab title="MailHog">
|
|
```bash
|
|
# Install and start MailHog
|
|
brew install mailhog # macOS
|
|
mailhog
|
|
|
|
# Configure .env
|
|
MAILER_SENDER_EMAIL=dev@chatwoot.local
|
|
SMTP_ADDRESS=localhost
|
|
SMTP_PORT=1025
|
|
|
|
# Check web interface
|
|
open http://localhost:8025
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Letter Opener">
|
|
```bash
|
|
# Add to Gemfile
|
|
echo 'gem "letter_opener", group: :development' >> Gemfile
|
|
bundle install
|
|
|
|
# Configure in development.rb
|
|
# config.action_mailer.delivery_method = :letter_opener
|
|
|
|
# Emails will open in browser
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Gmail SMTP">
|
|
```bash
|
|
# Use app password, not regular password
|
|
MAILER_SENDER_EMAIL=your-email@gmail.com
|
|
SMTP_ADDRESS=smtp.gmail.com
|
|
SMTP_PORT=587
|
|
SMTP_USERNAME=your-email@gmail.com
|
|
SMTP_PASSWORD=your-app-password
|
|
SMTP_DOMAIN=gmail.com
|
|
SMTP_ENABLE_STARTTLS_AUTO=true
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
</Accordion>
|
|
|
|
### WebSocket Connection Issues
|
|
|
|
<Accordion title="ActionCable not working">
|
|
**Error**: Real-time features not working, WebSocket connection failed.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Check if ActionCable is mounted
|
|
grep -r "mount ActionCable" config/routes.rb
|
|
|
|
# Check Redis connection
|
|
redis-cli ping
|
|
|
|
# Configure ActionCable for development
|
|
# In config/environments/development.rb:
|
|
# config.action_cable.url = "ws://localhost:3000/cable"
|
|
# config.action_cable.allowed_request_origins = ["http://localhost:3000"]
|
|
|
|
# Test WebSocket connection
|
|
# Open browser console and check for WebSocket errors
|
|
```
|
|
</Accordion>
|
|
|
|
## Debugging and Logging Issues
|
|
|
|
### Log File Problems
|
|
|
|
<Accordion title="Log files too large or not rotating">
|
|
**Cause**: Excessive logging in development.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Clear log files
|
|
> log/development.log
|
|
> log/test.log
|
|
|
|
# Configure log rotation in development.rb
|
|
# config.logger = ActiveSupport::Logger.new("log/development.log", 5, 10.megabytes)
|
|
|
|
# Reduce log level
|
|
# config.log_level = :info
|
|
|
|
# Use logrotate (Linux)
|
|
sudo logrotate -f /etc/logrotate.conf
|
|
```
|
|
</Accordion>
|
|
|
|
### Debugging Tool Issues
|
|
|
|
<Accordion title="Pry or byebug not stopping execution">
|
|
**Cause**: Debugger not properly configured or running in wrong context.
|
|
|
|
**Solutions**:
|
|
```bash
|
|
# Make sure gems are in Gemfile
|
|
echo 'gem "pry-rails", group: [:development, :test]' >> Gemfile
|
|
echo 'gem "pry-byebug", group: [:development, :test]' >> Gemfile
|
|
bundle install
|
|
|
|
# Use correct debugger syntax
|
|
# binding.pry # for Pry
|
|
# debugger # for built-in debugger
|
|
# byebug # for byebug
|
|
|
|
# Check if running in correct environment
|
|
puts Rails.env
|
|
```
|
|
</Accordion>
|
|
|
|
## Quick Diagnostic Commands
|
|
|
|
### System Health Check
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# health_check.sh - Quick system diagnostic
|
|
|
|
echo "=== Chatwoot Development Health Check ==="
|
|
|
|
# Check Ruby version
|
|
echo "Ruby version: $(ruby --version)"
|
|
|
|
# Check Node.js version
|
|
echo "Node.js version: $(node --version)"
|
|
|
|
# Check database connection
|
|
if bundle exec rails runner "ActiveRecord::Base.connection.execute('SELECT 1')" > /dev/null 2>&1; then
|
|
echo "✅ Database connection: OK"
|
|
else
|
|
echo "❌ Database connection: FAILED"
|
|
fi
|
|
|
|
# Check Redis connection
|
|
if redis-cli ping > /dev/null 2>&1; then
|
|
echo "✅ Redis connection: OK"
|
|
else
|
|
echo "❌ Redis connection: FAILED"
|
|
fi
|
|
|
|
# Check if services are running
|
|
echo "Running processes:"
|
|
ps aux | grep -E "(rails|sidekiq|webpack|mailhog)" | grep -v grep
|
|
|
|
# Check ports
|
|
echo "Port usage:"
|
|
lsof -i :3000,3035,6379,5432,8025 2>/dev/null || echo "No processes found on common ports"
|
|
|
|
echo "=== Health Check Complete ==="
|
|
```
|
|
|
|
### Environment Validation
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# validate_env.sh - Validate development environment
|
|
|
|
required_vars=(
|
|
"RAILS_ENV"
|
|
"DATABASE_URL"
|
|
"REDIS_URL"
|
|
"SECRET_KEY_BASE"
|
|
"FRONTEND_URL"
|
|
)
|
|
|
|
echo "=== Environment Variable Check ==="
|
|
for var in "${required_vars[@]}"; do
|
|
if [ -z "${!var}" ]; then
|
|
echo "❌ Missing: $var"
|
|
else
|
|
echo "✅ Set: $var"
|
|
fi
|
|
done
|
|
|
|
echo "=== Dependency Check ==="
|
|
commands=("ruby" "node" "psql" "redis-cli" "git")
|
|
for cmd in "${commands[@]}"; do
|
|
if command -v $cmd > /dev/null 2>&1; then
|
|
echo "✅ $cmd: $(command -v $cmd)"
|
|
else
|
|
echo "❌ $cmd: Not found"
|
|
fi
|
|
done
|
|
```
|
|
|
|
## Getting Additional Help
|
|
|
|
If you're still experiencing issues after trying these solutions:
|
|
|
|
1. **Search GitHub Issues**: Check if others have reported similar problems
|
|
2. **Check Logs**: Look at `log/development.log` for detailed error messages
|
|
3. **Discord Community**: Join the Chatwoot Discord for real-time help
|
|
4. **Documentation**: Review the official documentation
|
|
5. **Create an Issue**: If it's a bug, create a detailed GitHub issue
|
|
|
|
### Creating a Good Bug Report
|
|
|
|
When reporting issues, include:
|
|
|
|
```markdown
|
|
## Environment
|
|
- OS: [e.g., macOS 13.0, Ubuntu 22.04]
|
|
- Ruby version: [e.g., 3.3.3]
|
|
- Node.js version: [e.g., 20.10.0]
|
|
- Database: [e.g., PostgreSQL 15.0]
|
|
|
|
## Steps to Reproduce
|
|
1. Step one
|
|
2. Step two
|
|
3. Step three
|
|
|
|
## Expected Behavior
|
|
What you expected to happen
|
|
|
|
## Actual Behavior
|
|
What actually happened
|
|
|
|
## Error Messages
|
|
Full error message and stack trace
|
|
|
|
## Additional Context
|
|
Any other relevant information
|
|
```
|
|
|
|
---
|
|
|
|
This guide covers the most common development issues. For production deployment issues, see the [Self-hosted documentation](../../self-hosted/). |