diff --git a/Gemfile b/Gemfile index e80ee10..bd5d9ab 100644 --- a/Gemfile +++ b/Gemfile @@ -45,18 +45,18 @@ group :development, :test do gem 'guard-shell' gem 'minitest-reporters' - gem 'rails-controller-testing' gem 'policy-assertions' + gem 'rails-controller-testing' + gem 'awesome_print' + gem 'binding_of_caller' gem 'byebug', platform: :mri gem 'pry-byebug' gem 'pry-rails' - gem 'binding_of_caller' - gem 'awesome_print' + gem 'brakeman' gem 'rubocop', '~> 0.42.0' gem 'simplecov', require: false - gem 'brakeman' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem diff --git a/README.md b/README.md index b7e176c..76b03dc 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,43 @@ This application manages quizzes intended to be used as pre-interview skill assessments. -## Development +## Development Guidelines -* Please use Guard when you are developing +Please follow these guidelines as close as possible. Discuss and question them as needed. + +* Run Guard while developing. * `bundle exec guard` -* Honor RuboCop warnings -* Keep tests green -* Write tests around new development -* Always pull with rebase! + * Always execute a full run before a push (simply hit return in your guard session). +* Honor RuboCop warnings. +* Write tests, And keep them green. + * Review the coverage report, keeping coverate > 90%. + * coverage/index.html + * It is OK to delete tests which are duplicated, or no longer relevant. + * If you find a bug, write a test to recreate it, so it never comes back unnoticed. +* Make sure to keep the fixture files current. + * `test/fixtures/*.yml` + * Include any new development data needs. +* Protect Gemfile. + * Does your new gem bring in a ton of unnecessary or outdated gems? + * Are you bringing in a gem that solves a problem already addressed by an existing gem? + * Do you really need this gem, or just a simple service object? + * Place your new gem appropriately. Some gem blocks are order specific, but most are alphabetized. +* Keep git comment subjects short, and use git comment bodies for more details. +* Pull with --rebase. * `git config --global pull.rebase true` -* Make sure to include any new development data needs in the fixture files - * test/fixtures/... -* feature branches are nice, but never merge develop down to them. Instead rebase feature branches onto develop. +* Feature branches are nice. + * Rebase feature branches onto develop before merging. + * `push -f` is ok on feature branches. Just communicate with others using that branch. + * Never merge develop _down_ to a feature branch. + * Merge with `--no-ff` when appropriate, `--squash` "WIP" commits into a complete thought. + * Clean up your remote branches after merge. +* Keep code comments to a minimum. + * We use git. Write a good commit message instead. + * Remove/Update code comments when changes are made. +* Leave the code better than you found it. +* Have fun. -### Setup +## Setup * clone * checkout develop * bundle @@ -26,10 +49,13 @@ This application manages quizzes intended to be used as pre-interview skill asse * rake db:setup * rake db:migrate * rake db:fixtures:load + * `./rebuild-dev-db.sh` is a convenience script to rebuild and refresh your dev db with the fixture data. ## Docker -You can develop in this app with a native rails install, if you prefer. However, there is also a docker image setup if you do not want to install all the supporting gems and libraries. +You can develop in this app with a native rails install, if you prefer. +However, there is also a docker image setup if you do not want to install all the supporting gems and libraries. +Please note: The guard watch session does not run all watches correctly in the docker container. The only issue this causes is all the automation is not 100%. Simply manually kick off the runners occasionally by hitting return in the session. To use the docker container, you need to install and launch docker, which can be found here: https://www.docker.com/products/docker @@ -55,4 +81,6 @@ There are some convenience scripts included to make starting the container and r ## TODOs and notes * Question attachment path: http://dev.perficientxd.com/skill_assets/ -* clean code / [Confident Ruby](http://www.confidentruby.com/) +* clean code + * [Confident Ruby](http://www.confidentruby.com/) + * [POODR](http://www.poodr.com/)