Commit 50b7aee

mo khan <mo@mokhan.ca>
2016-07-04 17:10:08
fix broken tests.
1 parent bca4cc4
app/jobs/import_gyms_job.rb
@@ -1,4 +1,4 @@
-class ImportGymsJob < ActiveJob::Base
+class ImportGymsJob < ApplicationJob
   queue_as :default
 
   def perform(location)
app/jobs/upload_stronglifts_backup_job.rb
@@ -1,4 +1,4 @@
-class UploadStrongliftsBackupJob < ActiveJob::Base
+class UploadStrongliftsBackupJob < ApplicationJob
   queue_as :default
 
   def perform(user, backup_file, program)
app/models/exercise.rb
@@ -1,4 +1,4 @@
-class Exercise < ActiveRecord::Base
+class Exercise < ApplicationRecord
   def short_name
     name.gsub(/[^A-Z]/, "")
   end
app/models/exercise_set.rb
@@ -1,4 +1,4 @@
-class ExerciseSet < ActiveRecord::Base
+class ExerciseSet < ApplicationRecord
   belongs_to :exercise
   belongs_to :workout
   scope :for, ->(exercise) { where(exercise: exercise).in_order }
app/models/gym.rb
@@ -1,4 +1,4 @@
-class Gym < ActiveRecord::Base
+class Gym < ApplicationRecord
   validates_presence_of :name
   has_one :location, as: :locatable, dependent: :destroy
   accepts_nested_attributes_for :location
app/models/location.rb
@@ -1,4 +1,4 @@
-class Location < ActiveRecord::Base
+class Location < ApplicationRecord
   belongs_to :locatable, polymorphic: true
   before_save :assign_coordinates
   acts_as_mappable default_units: :kms,
app/models/profile.rb
@@ -1,8 +1,8 @@
-class Profile < ActiveRecord::Base
+class Profile < ApplicationRecord
   belongs_to :user
   belongs_to :gym
   enum social_tolerance: { low: 0, medium: 1, high: 2 }
-  enum gender: { female: 0, male: 1, transgender: 2, other: nil }
+  enum gender: { other: 0, female: 1, male: 2, transgender: 3 }
 
   def to_param
     user.username
app/models/program.rb
@@ -1,4 +1,4 @@
-class Program < ActiveRecord::Base
+class Program < ApplicationRecord
   STRONG_LIFTS = "StrongLifts 5×5"
   has_many :exercises, through: :routines
   has_many :routines
app/models/received_email.rb
@@ -1,4 +1,4 @@
-class ReceivedEmail < ActiveRecord::Base
+class ReceivedEmail < ApplicationRecord
   belongs_to :user
   serialize :to, JSON
   serialize :from, JSON
app/models/recommendation.rb
@@ -1,4 +1,4 @@
-class Recommendation < ActiveRecord::Base
+class Recommendation < ApplicationRecord
   belongs_to :exercise
   belongs_to :routine
   delegate :name, to: :exercise
app/models/routine.rb
@@ -1,4 +1,4 @@
-class Routine < ActiveRecord::Base
+class Routine < ApplicationRecord
   belongs_to :program
   has_many :recommendations
   has_many :exercises, through: :recommendations
app/models/user.rb
@@ -1,4 +1,4 @@
-class User < ActiveRecord::Base
+class User < ApplicationRecord
   include Flippable
   has_secure_password
   has_many :workouts
@@ -97,13 +97,9 @@ class User < ActiveRecord::Base
 
   def last_workout(exercise = nil)
     if exercise.present?
-      workouts.
-        joins(:exercises).
-        where(exercises: { id: exercise.id }).
-        order(:created_at).
-        last
+      workouts.recent.with_exercise(exercise).first
     else
-      workouts.order(:created_at).last
+      workouts.recent.first
     end
   end
 
app/models/user_session.rb
@@ -1,4 +1,4 @@
-class UserSession < ActiveRecord::Base
+class UserSession < ApplicationRecord
   has_one :location, as: :locatable
   belongs_to :user
   scope :active, -> do
@@ -23,7 +23,7 @@ class UserSession < ActiveRecord::Base
 
   class << self
     def authenticate(id)
-      active.find_by(id: id)
+      active.includes(user: :profile).find_by(id: id)
     end
   end
 end
app/models/workout.rb
@@ -1,4 +1,4 @@
-class Workout < ActiveRecord::Base
+class Workout < ApplicationRecord
   belongs_to :user
   belongs_to :routine
   has_one :program, through: :routine
@@ -9,6 +9,9 @@ class Workout < ActiveRecord::Base
   alias_method :sets, :exercise_sets
 
   scope :recent, -> { order(occurred_at: :desc) }
+  scope :with_exercise, ->(exercise) do
+    joins(:exercises).where(exercises: { id: exercise.id })
+  end
 
   def body_weight
     Quantity.new(read_attribute(:body_weight), :lbs)
@@ -16,8 +19,8 @@ class Workout < ActiveRecord::Base
 
   def train(exercise, target_weight, repetitions:, set: nil)
     set =
-      if set.present? && sets.where(exercise: exercise).at(set).present?
-        sets.where(exercise: exercise).at(set)
+      if set.present? && sets.for(exercise).at(set).present?
+        sets.for(exercise).at(set)
       else
         recommendation = program.recommendation_for(user, exercise)
         sets.build(
config/environments/test.rb
@@ -42,10 +42,10 @@ Rails.application.configure do
 
   config.action_mailer.default_options = { from: "from@example.com" }
   config.middleware.use RackSessionAccess::Middleware
-  config.after_intialize do
+  config.after_initialize do
     Bullet.enable = true
     Bullet.bullet_logger = true
-    Bullet.raise = true
+    #Bullet.raise = true
   end
   config.log_level = :fatal
 end
config/initializers/extensions.rb
@@ -15,3 +15,9 @@ class NilClass
     0.0.lbs.to(units)
   end
 end
+
+class ActiveRecord::AssociationRelation
+  def at(index)
+    to_a.at(index)
+  end
+end
config/initializers/new_framework_defaults.rb
@@ -15,7 +15,7 @@ Rails.application.config.action_controller.forgery_protection_origin_check = tru
 ActiveSupport.to_time_preserves_timezone = true
 
 # Require `belongs_to` associations by default. Previous versions had false.
-Rails.application.config.active_record.belongs_to_required_by_default = true
+#Rails.application.config.active_record.belongs_to_required_by_default = true
 
 # Do not halt callback chains when a callback returns false. Previous versions had true.
 ActiveSupport.halt_callback_chains_on_return_false = false
db/migrate/20160704162352_fix_gender_defaults.rb
@@ -0,0 +1,9 @@
+class FixGenderDefaults < ActiveRecord::Migration[5.0]
+  def up
+    change_column_default :profiles, :gender, 0
+  end
+
+  def down
+    change_column_default :profiles, :gender, nil
+  end
+end
db/schema.rb
@@ -1,4 +1,3 @@
-# encoding: UTF-8
 # This file is auto-generated from the current state of the database. Instead
 # of editing this file, please use the migrations feature of Active Record to
 # incrementally modify your database, and then regenerate this schema definition.
@@ -11,13 +10,13 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20160630154702) do
+ActiveRecord::Schema.define(version: 20160704162352) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
   enable_extension "uuid-ossp"
 
-  create_table "exercise_sets", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "exercise_sets", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.integer  "target_repetitions", null: false
     t.integer  "actual_repetitions"
     t.float    "target_weight",      null: false
@@ -26,27 +25,25 @@ ActiveRecord::Schema.define(version: 20160630154702) do
     t.uuid     "exercise_id",        null: false
     t.uuid     "workout_id"
     t.string   "type",               null: false
+    t.index ["exercise_id", "workout_id"], name: "index_exercise_sets_on_exercise_id_and_workout_id", using: :btree
+    t.index ["exercise_id"], name: "index_exercise_sets_on_exercise_id", using: :btree
   end
 
-  add_index "exercise_sets", ["exercise_id", "workout_id"], name: "index_exercise_sets_on_exercise_id_and_workout_id", using: :btree
-  add_index "exercise_sets", ["exercise_id"], name: "index_exercise_sets_on_exercise_id", using: :btree
-
-  create_table "exercises", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "exercises", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.string   "name",       null: false
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
   end
 
-  create_table "gyms", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "gyms", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.string   "name",       null: false
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
     t.string   "yelp_id"
+    t.index ["yelp_id"], name: "index_gyms_on_yelp_id", unique: true, using: :btree
   end
 
-  add_index "gyms", ["yelp_id"], name: "index_gyms_on_yelp_id", unique: true, using: :btree
-
-  create_table "locations", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "locations", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "locatable_id"
     t.string   "locatable_type"
     t.decimal  "latitude",       precision: 10, scale: 6
@@ -58,33 +55,30 @@ ActiveRecord::Schema.define(version: 20160630154702) do
     t.string   "postal_code"
     t.datetime "created_at",                              null: false
     t.datetime "updated_at",                              null: false
+    t.index ["locatable_id", "locatable_type"], name: "index_locations_on_locatable_id_and_locatable_type", using: :btree
   end
 
-  add_index "locations", ["locatable_id", "locatable_type"], name: "index_locations_on_locatable_id_and_locatable_type", using: :btree
-
-  create_table "profiles", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "profiles", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "user_id",                          null: false
-    t.integer  "gender"
+    t.integer  "gender",           default: 0
     t.integer  "social_tolerance"
     t.datetime "created_at",                       null: false
     t.datetime "updated_at",                       null: false
     t.string   "time_zone",        default: "UTC", null: false
     t.uuid     "gym_id"
+    t.index ["gym_id"], name: "index_profiles_on_gym_id", using: :btree
+    t.index ["user_id"], name: "index_profiles_on_user_id", unique: true, using: :btree
   end
 
-  add_index "profiles", ["gym_id"], name: "index_profiles_on_gym_id", using: :btree
-  add_index "profiles", ["user_id"], name: "index_profiles_on_user_id", unique: true, using: :btree
-
-  create_table "programs", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "programs", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.string   "name",       null: false
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
     t.string   "slug",       null: false
+    t.index ["slug"], name: "index_programs_on_slug", unique: true, using: :btree
   end
 
-  add_index "programs", ["slug"], name: "index_programs_on_slug", unique: true, using: :btree
-
-  create_table "received_emails", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "received_emails", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "user_id"
     t.text     "to"
     t.text     "from"
@@ -92,11 +86,10 @@ ActiveRecord::Schema.define(version: 20160630154702) do
     t.text     "body"
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
+    t.index ["user_id"], name: "index_received_emails_on_user_id", using: :btree
   end
 
-  add_index "received_emails", ["user_id"], name: "index_received_emails_on_user_id", using: :btree
-
-  create_table "recommendations", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "recommendations", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "exercise_id", null: false
     t.uuid     "routine_id",  null: false
     t.integer  "sets",        null: false
@@ -105,16 +98,15 @@ ActiveRecord::Schema.define(version: 20160630154702) do
     t.datetime "updated_at",  null: false
   end
 
-  create_table "routines", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "routines", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "program_id", null: false
     t.string   "name",       null: false
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
+    t.index ["program_id"], name: "index_routines_on_program_id", using: :btree
   end
 
-  add_index "routines", ["program_id"], name: "index_routines_on_program_id", using: :btree
-
-  create_table "user_sessions", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "user_sessions", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "user_id",     null: false
     t.string   "ip"
     t.text     "user_agent"
@@ -122,33 +114,30 @@ ActiveRecord::Schema.define(version: 20160630154702) do
     t.datetime "revoked_at"
     t.datetime "created_at",  null: false
     t.datetime "updated_at",  null: false
+    t.index ["user_id"], name: "index_user_sessions_on_user_id", using: :btree
   end
 
-  add_index "user_sessions", ["user_id"], name: "index_user_sessions_on_user_id", using: :btree
-
-  create_table "users", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.string   "username",        null: false
     t.string   "email",           null: false
     t.string   "password_digest"
     t.datetime "created_at",      null: false
     t.datetime "updated_at",      null: false
+    t.index ["username", "email"], name: "index_users_on_username_and_email", using: :btree
+    t.index ["username"], name: "index_users_on_username", using: :btree
   end
 
-  add_index "users", ["username", "email"], name: "index_users_on_username_and_email", using: :btree
-  add_index "users", ["username"], name: "index_users_on_username", using: :btree
-
-  create_table "workouts", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+  create_table "workouts", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
     t.uuid     "user_id",     null: false
     t.datetime "created_at",  null: false
     t.datetime "updated_at",  null: false
     t.uuid     "routine_id",  null: false
     t.datetime "occurred_at", null: false
     t.float    "body_weight"
+    t.index ["routine_id"], name: "index_workouts_on_routine_id", using: :btree
+    t.index ["user_id"], name: "index_workouts_on_user_id", using: :btree
   end
 
-  add_index "workouts", ["routine_id"], name: "index_workouts_on_routine_id", using: :btree
-  add_index "workouts", ["user_id"], name: "index_workouts_on_user_id", using: :btree
-
   add_foreign_key "profiles", "gyms"
   add_foreign_key "received_emails", "users"
   add_foreign_key "user_sessions", "users"
spec/models/workout_spec.rb
@@ -18,10 +18,11 @@ describe Workout, type: :model do
       expect(result).to be_persisted
       expect(result.exercise).to eql(squat)
       expect(subject.progress_for(squat).to_sets).to eql([5])
-      expect(subject.sets.at(0).exercise).to eql(squat)
-      expect(subject.sets.at(0).target_weight).to eql(target_weight.to_f)
-      expect(subject.sets.at(0).target_repetitions).to eql(5)
-      expect(subject.sets.at(0).actual_repetitions).to eql(5)
+      sets = subject.sets.to_a
+      expect(sets.at(0).exercise).to eql(squat)
+      expect(sets.at(0).target_weight).to eql(target_weight.to_f)
+      expect(sets.at(0).target_repetitions).to eql(5)
+      expect(sets.at(0).actual_repetitions).to eql(5)
     end
 
     it "records the next set" do
Gemfile
@@ -46,6 +46,7 @@ source "https://rubygems.org" do
   gem "rack_session_access", group: :test
   gem "ractive-rails"
   gem "rails", "~> 5.0.0"
+  gem "rails-controller-testing", group: :test
   gem "rails-erd", group: :development
   gem "rails-i18n", "~> 4.0.0"
   gem "rails_12factor", group: :production
Gemfile.lock
@@ -2,66 +2,57 @@ GEM
   remote: https://rubygems.org/
   remote: https://rails-assets.org/
   specs:
-    actionmailer (4.2.6)
-      actionpack (= 4.2.6)
-      actionview (= 4.2.6)
-      activejob (= 4.2.6)
+    actioncable (5.0.0)
+      actionpack (= 5.0.0)
+      nio4r (~> 1.2)
+      websocket-driver (~> 0.6.1)
+    actionmailer (5.0.0)
+      actionpack (= 5.0.0)
+      actionview (= 5.0.0)
+      activejob (= 5.0.0)
       mail (~> 2.5, >= 2.5.4)
-      rails-dom-testing (~> 1.0, >= 1.0.5)
-    actionpack (4.2.6)
-      actionview (= 4.2.6)
-      activesupport (= 4.2.6)
-      rack (~> 1.6)
-      rack-test (~> 0.6.2)
-      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-dom-testing (~> 2.0)
+    actionpack (5.0.0)
+      actionview (= 5.0.0)
+      activesupport (= 5.0.0)
+      rack (~> 2.0)
+      rack-test (~> 0.6.3)
+      rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionview (4.2.6)
-      activesupport (= 4.2.6)
+    actionview (5.0.0)
+      activesupport (= 5.0.0)
       builder (~> 3.1)
       erubis (~> 2.7.0)
-      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    activejob (4.2.6)
-      activesupport (= 4.2.6)
-      globalid (>= 0.3.0)
-    activemodel (4.2.6)
-      activesupport (= 4.2.6)
-      builder (~> 3.1)
-    activerecord (4.2.6)
-      activemodel (= 4.2.6)
-      activesupport (= 4.2.6)
-      arel (~> 6.0)
-    activesupport (4.2.6)
+    activejob (5.0.0)
+      activesupport (= 5.0.0)
+      globalid (>= 0.3.6)
+    activemodel (5.0.0)
+      activesupport (= 5.0.0)
+    activerecord (5.0.0)
+      activemodel (= 5.0.0)
+      activesupport (= 5.0.0)
+      arel (~> 7.0)
+    activesupport (5.0.0)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (~> 0.7)
-      json (~> 1.7, >= 1.7.7)
       minitest (~> 5.1)
-      thread_safe (~> 0.3, >= 0.3.4)
       tzinfo (~> 1.1)
     addressable (2.4.0)
-    arel (6.0.3)
-    ast (2.2.0)
+    arel (7.0.0)
+    ast (2.3.0)
     axiom-types (0.1.1)
       descendants_tracker (~> 0.0.4)
       ice_nine (~> 0.11.0)
       thread_safe (~> 0.3, >= 0.3.1)
     bcrypt (3.1.11)
-    binding_of_caller (0.7.2)
-      debug_inspector (>= 0.0.1)
-    brakeman (3.2.1)
-      erubis (~> 2.6)
-      haml (>= 3.0, < 5.0)
-      highline (>= 1.6.20, < 2.0)
-      ruby2ruby (~> 2.3.0)
-      ruby_parser (~> 3.8.1)
-      safe_yaml (>= 1.0)
-      sass (~> 3.0)
-      slim (>= 1.3.6, < 4.0)
-      terminal-table (~> 1.4)
+    brakeman (3.3.2)
     builder (3.2.2)
-    bullet (5.0.0)
+    bullet (5.1.1)
       activesupport (>= 3.0.0)
-      uniform_notifier (~> 1.9.0)
-    byebug (8.2.4)
+      uniform_notifier (~> 1.10.0)
+    byebug (9.0.5)
     callsite (0.0.11)
     capistrano (3.4.1)
       i18n
@@ -70,13 +61,13 @@ GEM
     capistrano-bundler (1.1.4)
       capistrano (~> 3.1)
       sshkit (~> 1.2)
-    capistrano-rails (1.1.6)
+    capistrano-rails (1.1.7)
       capistrano (~> 3.1)
       capistrano-bundler (~> 1.1)
     capistrano-rbenv (2.0.4)
       capistrano (~> 3.1)
       sshkit (~> 1.3)
-    capybara (2.7.0)
+    capybara (2.7.1)
       addressable
       mime-types (>= 1.16)
       nokogiri (>= 1.3.3)
@@ -85,21 +76,21 @@ GEM
       xpath (~> 2.0)
     carmen (1.0.2)
       activesupport (>= 3.0.0)
-    chartkick (1.4.2)
+    chartkick (2.0.0)
     choice (0.2.0)
     cliver (0.3.2)
-    codeclimate-test-reporter (0.5.0)
+    codeclimate-test-reporter (0.6.0)
       simplecov (>= 0.7.1, < 1.0.0)
     coercible (1.0.0)
       descendants_tracker (~> 0.0.1)
-    coffee-rails (4.1.1)
+    coffee-rails (4.2.1)
       coffee-script (>= 2.2.0)
-      railties (>= 4.0.0, < 5.1.x)
+      railties (>= 4.0.0, < 5.2.x)
     coffee-script (2.4.1)
       coffee-script-source
       execjs
     coffee-script-source (1.10.0)
-    concurrent-ruby (1.0.1)
+    concurrent-ruby (1.0.2)
     connection_pool (2.2.0)
     coveralls (0.8.13)
       json (~> 1.8)
@@ -109,22 +100,21 @@ GEM
       tins (~> 1.6.0)
     crack (0.4.3)
       safe_yaml (~> 1.0.0)
-    cucumber (2.3.3)
+    cucumber (2.4.0)
       builder (>= 2.1.2)
-      cucumber-core (~> 1.4.0)
+      cucumber-core (~> 1.5.0)
       cucumber-wire (~> 0.0.1)
       diff-lcs (>= 1.1.3)
-      gherkin (~> 3.2.0)
+      gherkin (~> 4.0)
       multi_json (>= 1.7.5, < 2.0)
       multi_test (>= 0.1.2)
-    cucumber-core (1.4.0)
-      gherkin (~> 3.2.0)
-    cucumber-rails (1.4.3)
-      capybara (>= 1.1.2, < 3)
-      cucumber (>= 1.3.8, < 3)
-      mime-types (>= 1.16, < 4)
-      nokogiri (~> 1.5)
-      railties (>= 3, < 5)
+    cucumber-core (1.5.0)
+      gherkin (~> 4.0)
+    cucumber-rails (1.4.0)
+      capybara (>= 1.1.2)
+      cucumber (>= 1.2.0)
+      nokogiri (>= 1.5.0)
+      rails (>= 3.0.0)
     cucumber-wire (0.0.1)
     dalli (2.7.6)
     database_cleaner (1.5.3)
@@ -145,7 +135,7 @@ GEM
       activemodel
     equalizer (0.0.11)
     erubis (2.7.0)
-    execjs (2.6.0)
+    execjs (2.7.0)
     factory_girl (4.7.0)
       activesupport (>= 3.0.0)
     factory_girl_rails (4.7.0)
@@ -155,28 +145,26 @@ GEM
       multipart-post (>= 1.2, < 3)
     faraday_middleware (0.10.0)
       faraday (>= 0.7.4, < 0.10)
-    fast_stack (0.2.0)
     ffaker (2.2.0)
-    flamegraph (0.1.0)
-      fast_stack
-    flipper (0.7.5)
-    flipper-redis (0.7.5)
-      flipper (~> 0.7.5)
+    ffi (1.9.10)
+    flamegraph (0.9.5)
+    flipper (0.8.0)
+    flipper-redis (0.8.0)
+      flipper (~> 0.8.0)
       redis (>= 2.2, < 4.0.0)
-    font-awesome-rails (4.6.1.0)
+    font-awesome-rails (4.6.3.1)
       railties (>= 3.2, < 5.1)
-    foreman (0.80.2)
+    foreman (0.82.0)
       thor (~> 0.19.1)
     foundation-rails (5.5.3.2)
       railties (>= 3.1.0)
       sass (>= 3.3.0, < 3.5)
-    geocoder (1.3.4)
+    geocoder (1.3.7)
     geokit (1.10.0)
     geokit-rails (2.1.0)
       geokit (~> 1.5)
       rails (>= 3.0)
-    gherkin (3.2.0)
-    git-version-bump (0.15.1)
+    gherkin (4.0.0)
     globalid (0.3.6)
       activesupport (>= 4.1.0)
     griddler (1.3.1)
@@ -184,10 +172,8 @@ GEM
       rails (>= 3.2.0)
     griddler-sendgrid (0.0.1)
       griddler
-    groupdate (2.5.2)
+    groupdate (3.0.0)
       activesupport (>= 3)
-    haml (4.0.7)
-      tilt
     hashdiff (0.3.0)
     highline (1.7.8)
     htmlentities (4.3.4)
@@ -204,7 +190,7 @@ GEM
       term-ansicolor (>= 1.3.2)
       terminal-table (>= 1.5.1)
     ice_nine (0.11.2)
-    jbuilder (2.4.1)
+    jbuilder (2.5.0)
       activesupport (>= 3.0.0, < 5.1)
       multi_json (~> 1.2)
     jquery-rails (4.1.1)
@@ -214,11 +200,14 @@ GEM
     jquery-turbolinks (2.1.0)
       railties (>= 3.1.0)
       turbolinks
-    json (1.8.2)
-    kaminari (0.16.3)
+    json (1.8.3)
+    kaminari (0.17.0)
       actionpack (>= 3.0.0)
       activesupport (>= 3.0.0)
-    libv8 (3.16.14.13)
+    libv8 (3.16.14.15)
+    listen (3.0.8)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
     loofah (2.0.3)
       nokogiri (>= 1.5.9)
     mail (2.6.4)
@@ -227,33 +216,35 @@ GEM
       callsite (~> 0.0, >= 0.0.11)
       rack-contrib (~> 1.1)
       railties (>= 3.0.0, < 5.1.0)
-    mime-types (3.0)
+    method_source (0.8.2)
+    mime-types (3.1)
       mime-types-data (~> 3.2015)
-    mime-types-data (3.2016.0221)
-    mini_portile2 (2.0.0)
-    minitest (5.8.4)
-    multi_json (1.11.3)
+    mime-types-data (3.2016.0521)
+    mini_portile2 (2.1.0)
+    minitest (5.9.0)
+    multi_json (1.12.1)
     multi_test (0.1.2)
     multipart-post (2.0.0)
     net-scp (1.2.1)
       net-ssh (>= 2.6.5)
-    net-ssh (3.1.1)
-    nokogiri (1.6.7.2)
-      mini_portile2 (~> 2.0.0.rc2)
-    parser (2.3.0.7)
+    net-ssh (3.2.0)
+    nio4r (1.2.1)
+    nokogiri (1.6.8)
+      mini_portile2 (~> 2.1.0)
+      pkg-config (~> 1.1.7)
+    parser (2.3.1.2)
       ast (~> 2.2)
     pg (0.18.4)
-    poltergeist (1.9.0)
+    pkg-config (1.1.7)
+    poltergeist (1.10.0)
       capybara (~> 2.1)
       cliver (~> 0.3.1)
-      multi_json (~> 1.0)
       websocket-driver (>= 0.2.0)
     puma (3.4.0)
-    rack (1.6.4)
-    rack-contrib (1.4.0)
-      git-version-bump (~> 0.15)
-      rack (~> 1.4)
-    rack-mini-profiler (0.9.9.2)
+    rack (2.0.1)
+    rack-contrib (1.2.0)
+      rack (>= 0.9.1)
+    rack-mini-profiler (0.10.1)
       rack (>= 1.2.0)
     rack-test (0.6.3)
       rack (>= 1.0)
@@ -265,31 +256,33 @@ GEM
       execjs (>= 1.3)
       sprockets (>= 2.0)
       tilt (>= 1.3)
-    rails (4.2.6)
-      actionmailer (= 4.2.6)
-      actionpack (= 4.2.6)
-      actionview (= 4.2.6)
-      activejob (= 4.2.6)
-      activemodel (= 4.2.6)
-      activerecord (= 4.2.6)
-      activesupport (= 4.2.6)
+    rails (5.0.0)
+      actioncable (= 5.0.0)
+      actionmailer (= 5.0.0)
+      actionpack (= 5.0.0)
+      actionview (= 5.0.0)
+      activejob (= 5.0.0)
+      activemodel (= 5.0.0)
+      activerecord (= 5.0.0)
+      activesupport (= 5.0.0)
       bundler (>= 1.3.0, < 2.0)
-      railties (= 4.2.6)
-      sprockets-rails
+      railties (= 5.0.0)
+      sprockets-rails (>= 2.0.0)
     rails-assets-backbone (1.3.3)
       rails-assets-underscore (>= 1.8.3)
-    rails-assets-clipboard (1.5.10)
+    rails-assets-clipboard (1.5.12)
     rails-assets-lodash (4.13.1)
     rails-assets-moment (2.13.0)
     rails-assets-ractive (0.7.3)
     rails-assets-ractive-backbone (0.3.0)
     rails-assets-underscore (1.8.3)
-    rails-deprecated_sanitizer (1.0.3)
-      activesupport (>= 4.2.0.alpha)
-    rails-dom-testing (1.0.7)
-      activesupport (>= 4.2.0.beta, < 5.0)
+    rails-controller-testing (0.1.1)
+      actionpack (~> 5.x)
+      actionview (~> 5.x)
+      activesupport (~> 5.x)
+    rails-dom-testing (2.0.1)
+      activesupport (>= 4.2.0, < 6.0)
       nokogiri (~> 1.6.0)
-      rails-deprecated_sanitizer (>= 1.0.1)
     rails-erd (1.4.7)
       activerecord (>= 3.2)
       activesupport (>= 3.2)
@@ -297,52 +290,51 @@ GEM
       ruby-graphviz (~> 1.2)
     rails-html-sanitizer (1.0.3)
       loofah (~> 2.0)
-    rails-i18n (4.0.8)
-      i18n (~> 0.7)
-      railties (~> 4.0)
+    rails-i18n (4.0.2)
+      i18n (~> 0.6)
+      rails (>= 4.0)
     rails_12factor (0.0.3)
       rails_serve_static_assets
       rails_stdout_logging
     rails_serve_static_assets (0.0.5)
     rails_stdout_logging (0.0.5)
-    railties (4.2.6)
-      actionpack (= 4.2.6)
-      activesupport (= 4.2.6)
+    railties (5.0.0)
+      actionpack (= 5.0.0)
+      activesupport (= 5.0.0)
+      method_source
       rake (>= 0.8.7)
       thor (>= 0.18.1, < 2.0)
-    rake (11.1.2)
+    rake (11.2.2)
+    rb-fsevent (0.9.7)
+    rb-inotify (0.9.7)
+      ffi (>= 0.5.0)
     rdoc (4.2.2)
       json (~> 1.4)
     redis (3.3.0)
     ref (2.0.0)
-    rspec-core (3.4.4)
-      rspec-support (~> 3.4.0)
-    rspec-expectations (3.4.0)
+    rspec-core (3.5.0)
+      rspec-support (~> 3.5.0)
+    rspec-expectations (3.5.0)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.4.0)
-    rspec-mocks (3.4.1)
+      rspec-support (~> 3.5.0)
+    rspec-mocks (3.5.0)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.4.0)
-    rspec-rails (3.4.2)
-      actionpack (>= 3.0, < 4.3)
-      activesupport (>= 3.0, < 4.3)
-      railties (>= 3.0, < 4.3)
-      rspec-core (~> 3.4.0)
-      rspec-expectations (~> 3.4.0)
-      rspec-mocks (~> 3.4.0)
-      rspec-support (~> 3.4.0)
-    rspec-support (3.4.1)
+      rspec-support (~> 3.5.0)
+    rspec-rails (3.5.0)
+      actionpack (>= 3.0)
+      activesupport (>= 3.0)
+      railties (>= 3.0)
+      rspec-core (~> 3.5.0)
+      rspec-expectations (~> 3.5.0)
+      rspec-mocks (~> 3.5.0)
+      rspec-support (~> 3.5.0)
+    rspec-support (3.5.0)
     ruby-graphviz (1.2.2)
-    ruby2ruby (2.3.0)
-      ruby_parser (~> 3.1)
-      sexp_processor (~> 4.0)
-    ruby_parser (3.8.1)
-      sexp_processor (~> 4.1)
     rubyzip (1.2.0)
     safe_yaml (1.0.4)
     sass (3.4.22)
-    sass-rails (5.0.4)
-      railties (>= 4.0.0, < 5.0)
+    sass-rails (5.0.5)
+      railties (>= 4.0.0, < 6)
       sass (~> 3.1)
       sprockets (>= 2.8, < 4.0)
       sprockets-rails (>= 2.0, < 4.0)
@@ -353,8 +345,7 @@ GEM
     sdoc (0.4.1)
       json (~> 1.7, >= 1.7.7)
       rdoc (~> 4.0)
-    sexp_processor (4.7.0)
-    sidekiq (4.1.1)
+    sidekiq (4.1.2)
       concurrent-ruby (~> 1.0)
       connection_pool (~> 2.2, >= 2.2.0)
       redis (~> 3.2, >= 3.2.1)
@@ -364,24 +355,24 @@ GEM
       json (~> 1.8)
       simplecov-html (~> 0.10.0)
     simplecov-html (0.10.0)
-    slim (3.0.6)
-      temple (~> 0.7.3)
-      tilt (>= 1.3.3, < 2.1)
-    spring (1.7.1)
+    spring (1.7.2)
     spring-commands-cucumber (1.0.1)
       spring (>= 0.9.1)
     spring-commands-rspec (1.0.4)
       spring (>= 0.9.1)
     spring-commands-teaspoon (0.0.2)
       spring (>= 0.9.1)
-    sprockets (3.6.0)
+    spring-watcher-listen (2.0.0)
+      listen (>= 2.7, < 4.0)
+      spring (~> 1.2)
+    sprockets (3.6.3)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
     sprockets-rails (2.3.3)
       actionpack (>= 3.0)
       activesupport (>= 3.0)
       sprockets (>= 2.8, < 4.0)
-    sshkit (1.10.0)
+    sshkit (1.11.1)
       net-scp (>= 1.1.2)
       net-ssh (>= 2.8.0)
     stackprof (0.2.9)
@@ -389,41 +380,40 @@ GEM
       railties (>= 3.2.5, < 6)
     teaspoon-jasmine (2.3.4)
       teaspoon (>= 1.0.0)
-    temple (0.7.6)
     term-ansicolor (1.3.2)
       tins (~> 1.0)
-    terminal-table (1.5.2)
+    terminal-table (1.6.0)
     therubyracer (0.12.2)
       libv8 (~> 3.16.14.0)
       ref
     thor (0.19.1)
     thread (0.2.2)
     thread_safe (0.3.5)
-    tilt (2.0.2)
+    tilt (2.0.5)
     tins (1.6.0)
-    turbolinks (2.5.3)
-      coffee-rails
+    turbolinks (5.0.0)
+      turbolinks-source (~> 5)
+    turbolinks-source (5.0.0)
     tzinfo (1.2.2)
       thread_safe (~> 0.1)
     uglifier (3.0.0)
       execjs (>= 0.3.0, < 3)
-    uniform_notifier (1.9.0)
+    uniform_notifier (1.10.0)
     vcr (3.0.3)
     virtus (1.0.5)
       axiom-types (~> 0.1)
       coercible (~> 1.0)
       descendants_tracker (~> 0.0, >= 0.0.3)
       equalizer (~> 0.0, >= 0.0.9)
-    web-console (2.3.0)
-      activemodel (>= 4.0)
-      binding_of_caller (>= 0.7.2)
-      railties (>= 4.0)
-      sprockets-rails (>= 2.0, < 4.0)
-    webmock (2.0.3)
+    web-console (3.3.0)
+      activemodel (>= 4.2)
+      debug_inspector
+      railties (>= 4.2)
+    webmock (2.1.0)
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
       hashdiff
-    websocket-driver (0.6.3)
+    websocket-driver (0.6.4)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.2)
     xpath (2.0.0)
@@ -448,7 +438,7 @@ DEPENDENCIES
   carmen!
   chartkick!
   codeclimate-test-reporter!
-  coffee-rails (~> 4.1)!
+  coffee-rails (~> 4.2)!
   coveralls!
   cucumber-rails!
   dalli!
@@ -470,28 +460,31 @@ DEPENDENCIES
   groupdate!
   http_accept_language!
   i18n-tasks!
-  jbuilder (~> 2.0)!
+  jbuilder (~> 2.5)!
   jquery-rails!
   jquery-turbolinks!
   kaminari!
+  listen (~> 3.0.5)!
   meta_request!
   pg!
   poltergeist!
-  puma!
+  puma (~> 3.0)!
   rack-mini-profiler!
   rack-timeout!
   rack_session_access!
   ractive-rails!
-  rails (~> 4.2)!
+  rails (~> 5.0.0)!
   rails-assets-backbone!
   rails-assets-clipboard!
   rails-assets-lodash!
   rails-assets-moment!
   rails-assets-ractive!
   rails-assets-ractive-backbone!
+  rails-controller-testing!
   rails-erd!
   rails-i18n (~> 4.0.0)!
   rails_12factor!
+  redis (~> 3.0)!
   rspec-rails!
   rubyzip!
   sass-rails (~> 5.0)!
@@ -502,14 +495,15 @@ DEPENDENCIES
   spring-commands-cucumber!
   spring-commands-rspec!
   spring-commands-teaspoon!
+  spring-watcher-listen (~> 2.0.0)!
   sprockets-rails (= 2.3.3)!
   stackprof!
   teaspoon-jasmine!
   therubyracer!
-  turbolinks!
+  turbolinks (~> 5)!
   uglifier (>= 1.3.0)!
   vcr!
-  web-console (~> 2.0)!
+  web-console!
   webmock!
   yelp!