Winnivote is a website to submit topics/ideas and vote to show which ones are more popular.
Use the development of Winnivote as a common topic for all the participants of the Winnipeg Ruby User Group so each meeetup a volunteer will show a feature or two that has been implemented.
As a learning experience, part of the goal is to use, highlight and learn good coding practices around the RoR world and programming in general.
- BDD (every feature should have a specification that drives the development)
- TDD (no line of production code is written without a test)
- Branch per feature and then pull request
- Code reviews
- Heroku deployment with staging and production sites
- Continuos Integration
- PostgreSQL database
- heroku toolbelt
- Guard
- slim templates
- rSpec for unit and acceptance tests
- Jasmine for JS unit and integration tests
- Bootstrap
- Font Awesome
- Knockout.js
- Coffeescript
- Devise
- Vagrant
Check out the code first
git clone https://github.com/winnipegrb/winnivote.git
Alternatively, go to https://github.com/winnipegrb/winnivote, fork it, and clone your own copy
- Install VirtualBox
- Install Vagrant
- Update submodules
git submodule update --init --recursive
- Run
vagrant up
vagrant ssh
cd /vagrant
bundle install
bundle exec rake db:migrate
bundle exec rails s
- Install PhantomJS. It is a pre-requisite to running the feature specs.
- Run:
bundle install
to install all the gems for the project. - Run:
bundle exec rake db:migrate && bundle exec rake db:test:prepare
to set up the test database. - Run:
mkdir -p tmp/cache
- Run:
bundle exec rspec
to run all the tests.