# Skill Assessment Quiz This application manages quizzes intended to be used as pre-interview skill assessments. ## Development Guidelines Please follow these guidelines as close as possible. Discuss and question them as needed. * Run Guard while developing. * `bundle exec guard` * 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` * 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 * clone * checkout develop * bundle * npm install * bower install * cp config/application.yml.sample config/application.yml * edit and update proper values to application.yml * 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. 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 Once the container is started, you can still edit files from your host project directory. visit http://localhost:3000 like normal There are some convenience scripts included to make starting the container and rails app easier. #### `./start-docker.sh` * Execute from terminal, on the host machine, in the project directory - This will pull the image from dockerhub, if needed - Create and start up container #### Once in the container: * `./start-dev.sh` * will spin up a dev session with tmux * `./start-server.sh` - starts up just rails server for viewing application ## Deploying a new version * ssh into server * cd into app root * run deploy.sh ## TODOs and notes * Question attachment path: https://dev.perficientdigital.com/skills-app-images/ * clean code * [Confident Ruby](http://www.confidentruby.com/) * [POODR](http://www.poodr.com/)