2020-03-15 18:31:46 +00:00
# Development
2020-03-18 19:11:10 +00:00
Install instructions in INSTALL.md
2020-04-08 19:25:24 +00:00
## Bassic commands for development
2020-03-15 18:31:46 +00:00
2020-04-05 02:58:41 +00:00
Load env variables:
2020-04-06 00:31:05 +00:00
source script/env.sh .env .env.development
2020-04-05 02:58:41 +00:00
2020-03-31 18:46:49 +00:00
Start:
2020-04-08 19:25:24 +00:00
docker-compose up --build development`
2020-03-31 18:46:49 +00:00
Build or rebuild:
2020-03-28 20:39:41 +00:00
2020-04-06 00:31:05 +00:00
docker-compose build`
2020-03-25 23:34:52 +00:00
2020-03-31 18:46:49 +00:00
Debug:
2020-04-08 19:25:24 +00:00
docker attach ensl_development
2020-03-31 18:46:49 +00:00
2020-03-22 17:44:09 +00:00
To get inside docker web+test containers:
2020-03-23 03:24:44 +00:00
2020-04-06 00:31:05 +00:00
docker-compose exec -u root web /bin/bash`
docker-compose exec -u web web /bin/bash`
docker-compose exec -u root test /bin/bash`
docker-compose exec -u web test /bin/bash`
2020-03-23 03:24:44 +00:00
2020-03-22 17:44:09 +00:00
Restart the web container
2020-03-23 03:24:44 +00:00
2020-04-06 00:31:05 +00:00
docker-compose restart web`
2020-03-23 03:24:44 +00:00
2020-03-22 17:44:09 +00:00
Run some tests:
2020-03-23 03:24:44 +00:00
2020-04-06 00:31:05 +00:00
docker-compose exec -u web test bundle exec rspec`
docker-compose exec -u web test bundle exec rspec spec/controllers/shoutmsgs_controller_spec.rb`
2020-04-05 02:58:41 +00:00
2020-04-08 19:25:24 +00:00
## Tips
2020-04-08 20:20:28 +00:00
1. You might have to `sudo chown -R 999:999 for` for `db/data` if you have permission issues with docker.
2020-04-08 19:25:24 +00:00
1. If you need to run stuff on your host (eg. ruby, rubocop, bundle install etc) run all commands from the: `Dockerfile.dev` . It should setup identical setup for your machine.
1. Add docker container names to /etc/hosts. This makes it possible to run test from local machine without using the container since editor/IDE don't integrate with Docker so well.
sudo echo `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ensl_dev_db` db >> /etc/hosts
1. VS Code and RubyMine are great IDE's/editors.
1. To run VS Code plugin Ruby Test Explorer in docker container you need to create path to custom path, copy the formatter and it whines about and it [still fails a bit ](https://github.com/connorshea/vscode-ruby-test-adapter/issues/21 ).
1. Do not commit too much without testing. Also keep commits small for documentation and reversability issues.
1. You need to rebuild the docker image when you change gems.
## Design of ENSL Application
2020-04-05 02:58:41 +00:00
Read this to understand design decisions and follow them!
1. Env variables should be used everywhere and loaded from .env* files using Dotenv
2020-04-08 19:25:24 +00:00
1. Everything should be running on containers.
1. Docker-compose is the heart of deployment
1. Dockerfile should contain the gems and prebuilt assets for production
1. The app contents are added to the docker image *on build* but it is mounted as **volume** . It will override the Dockerfile content.
## Tags in code
FIXME, TODO, EXPLAIN, OBSOLETE
## TODO issues for dev
1. Puma should be running (eg. spring), and if debugger is used it should be able to connect via docker-compose up
1. Should directories exist?
1. docker-compose has some .env specific vars and then
2020-04-05 02:58:41 +00:00
## Best practices
2020-04-08 19:25:24 +00:00
Take a look at these before writing anything.
2020-04-05 02:58:41 +00:00
1. https://nvie.com/posts/a-successful-git-branching-model/
2020-04-08 19:25:24 +00:00
1. https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
2020-04-05 02:58:41 +00:00
1. https://github.com/rubocop-hq/ruby-style-guide
1. https://rails-bestpractices.com/
1. http://www.betterspecs.org/
1. https://github.com/rubocop-hq/rspec-style-guide
1. Run rubocop