RailsEventStore / rails_event_store

A Ruby implementation of an Event Store based on Active Record
http://railseventstore.org
MIT License
1.42k stars 121 forks source link

Publish example from guide fails on console #331

Closed IanVaughan closed 6 years ago

IanVaughan commented 6 years ago

DEVELOPMENT [2] pry(main)> OrderPlaced = Class.new(RailsEventStore::Event) => OrderPlaced

DEVELOPMENT [3] pry(main)> stream_name = "order_1" => "order_1"

DEVELOPMENT [4] pry(main)> event = OrderPlaced.new(data: { order_id: 1, order_data: "sample", festival_id: "b2d506fd-409d-4ec7-b02f-c6d2295c7edd" }) => #<OrderPlaced:0x00007fc707b99a80 @data={:order_id=>1, :order_data=>"sample", :festival_id=>"b2d506fd-409d-4ec7-b02f-c6d2295c7edd"}, @event_id="b802cf73-a3f4-4cb1-978a-eea68cf908ce", @metadata=#<RubyEventStore::Metadata:0x00007fc707b99580 @h={}>>

DEVELOPMENT [5] pry(main)> event_store.publish_event(event, stream_name: stream_name) (1.0ms) BEGIN SQL (4.4ms) INSERT INTO "event_store_events" ("id", "data", "metadata", "event_type", "created_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["id", "b802cf73-a3f4-4cb1-978a-eea68cf908ce"], ["data", "---\n:order_id: 1\n:order_data: sample\n:festival_id: b2d506fd-409d-4ec7-b02f-c6d2295c7edd\n"], ["metadata", "---\n:timestamp: 2018-05-03 15:40:04.155937000 Z\n"], ["event_type", "OrderPlaced"], ["created_at", "2018-05-03 15:40:04.295499"]] RailsEventStoreActiveRecord::EventInStream Create Many Without Validations Or Callbacks (4.7ms) INSERT INTO "event_store_events_in_streams" ("stream","position","event_id","created_at") VALUES ('order_1',NULL,'b802cf73-a3f4-4cb1-978a-eea68cf908ce','2018-05-03 15:40:04.336671'),('all',NULL,'b802cf73-a3f4-4cb1-978a-eea68cf908ce','2018-05-03 15:40:04.336671') RETURNING "id" (2.8ms) COMMIT NoMethodError: undefined method []' for nil:NilClass from /Users/ian/.asdf/installs/ruby/2.4.2/lib/ruby/gems/2.4.0/gems/ruby_event_store-0.28.0/lib/ruby_event_store/pub_sub/broker.rb:68:inall_subscribers_for'



Granted I have to subcribers, but even if I do it still has the same issue, and regardless I would not expect it to crash like this.

Is there something wrong with the guide, or did I miss something?
mostlyobvious commented 6 years ago

Could you please post snippet of Rails config with event store?

This is my result for following one:

module Issue331
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true

    config.to_prepare do
      Rails.configuration.event_store = RailsEventStore::Client.new
    end
  end
end
 C/issue-331 $ ./bin/rails c                                                                                                                         %3 2 39s 849ms 
Running via Spring preloader in process 12063
Loading development environment (Rails 4.2.10)
irb(main):001:0>  event_store = Rails.configuration.event_store
=> #<RailsEventStore::Client:0x00007ff63aa7db80 @repository=#<RailsEventStoreActiveRecord::EventRepository:0x00007ff63aa7d9a0 @repo_reader=#<RailsEventStoreActiveRecord::EventRepositoryReader:0x00007ff63aa7d7c0>>, @mapper=#<RubyEventStore::Mappers::Default:0x00007ff63aa7d720 @serializer=Psych, @events_class_remapping={}>, @event_broker=#<RubyEventStore::PubSub::Broker:0x00007ff63aa7d310 @subscribers={}, @global_subscribers=[], @thread_global_subscribers=#<Concurrent::ThreadLocalVar:0x00007ff63aa7c618 @default_block=nil, @default=[], @index=0>, @thread_subscribers=#<Concurrent::ThreadLocalVar:0x00007ff63aa6fe68 @default_block=#<Proc:0x00007ff63aa6fdf0@/Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/ruby_event_store-0.28.0/lib/ruby_event_store/pub_sub/broker.rb:13>, @default=nil, @index=1>, @dispatcher=#<RailsEventStore::ActiveJobDispatcher:0x00007ff63aa7d478 @async_proxy_strategy=#<RailsEventStore::AsyncProxyStrategy::Inline:0x00007ff63aa7d450>>>, @page_size=100, @metadata_proc=#<Proc:0x00007ff63aa6dfa0@/Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/rails_event_store-0.28.0/lib/rails_event_store/client.rb:7 (lambda)>, @clock=#<Proc:0x00007ff63aa6d820@/Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/ruby_event_store-0.28.0/lib/ruby_event_store/client.rb:8 (lambda)>>
irb(main):002:0> stream_name = "order_1"
=> "order_1"
irb(main):003:0> event = OrderPlaced.new(data: {
irb(main):004:2*   order_id: 1,
irb(main):005:2*   order_data: "sample",
irb(main):006:2*   festival_id: "b2d506fd-409d-4ec7-b02f-c6d2295c7edd"
irb(main):007:2> })
NameError: uninitialized constant OrderPlaced
    from (irb):3
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/console.rb:110:in `start'
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/console.rb:9:in `start'
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands.rb:17:in `<top (required)>'
    from /Users/pawelpacana/Code/issue-331/bin/rails:9:in `<top (required)>'
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from /Users/pawelpacana/.rubies/ruby-2.4.2/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    from -e:1:in `<main>'
irb(main):008:0> OrderPlaced = Class.new(RailsEventStore::Event)
=> OrderPlaced
irb(main):009:0> event = OrderPlaced.new(data: {
irb(main):010:2* order_id: 1,
irb(main):011:2*   order_data: "sample",
irb(main):012:2*   festival_id: "b2d506fd-409d-4ec7-b02f-c6d2295c7edd"
irb(main):013:2> })
=> #<OrderPlaced:0x00007ff63ab551e8 @event_id="5980d171-f084-44c5-813c-d3e26959e76e", @metadata=#<RubyEventStore::Metadata:0x00007ff63ab54e00 @h={}>, @data={:order_id=>1, :order_data=>"sample", :festival_id=>"b2d506fd-409d-4ec7-b02f-c6d2295c7edd"}>
irb(main):014:0> event_store.publish_event(event, stream_name: stream_name)
   (0.3ms)  begin transaction
  SQL (0.3ms)  INSERT INTO "event_store_events" ("id", "data", "metadata", "event_type", "created_at") VALUES (?, ?, ?, ?, ?)  [["id", "5980d171-f084-44c5-813c-d3e26959e76e"], ["data", "---\n:order_id: 1\n:order_data: sample\n:festival_id: b2d506fd-409d-4ec7-b02f-c6d2295c7edd\n"], ["metadata", "---\n:timestamp: 2018-05-03 16:07:10.167190000 Z\n"], ["event_type", "OrderPlaced"], ["created_at", "2018-05-03 16:07:10.178810"]]
   (0.0ms)  select sqlite_version(*)
   (0.0ms)  SAVEPOINT active_record_1
  RailsEventStoreActiveRecord::EventInStream Create Many Without Validations Or Callbacks (0.2ms)  INSERT INTO "event_store_events_in_streams" ("stream","position","event_id","created_at") VALUES ('order_1',NULL,'5980d171-f084-44c5-813c-d3e26959e76e','2018-05-03 16:07:10.182602'),('all',NULL,'5980d171-f084-44c5-813c-d3e26959e76e','2018-05-03 16:07:10.182602')
   (0.0ms)  RELEASE SAVEPOINT active_record_1
   (0.7ms)  commit transaction
=> :ok
irb(main):015:0> 
 C/issue-331 $ ruby -v                                                                                                                             %3 2 1m 5s 356ms 
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin17]
IanVaughan commented 6 years ago

I choose to add config into an init file:

added: config/initializers/rails_event_store.rb
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
@ rails_event_store.rb:1 @
Rails.configuration.to_prepare do
  Rails.configuration.event_store = RailsEventStore::Client.new
  # add subscribers here
end

But I tried adding into the rails config block as you have and I still get the same error.

Digging into this deeper, I span up a new rails project and it all works fine! But that is rails (~> 5.1.5). Not sure if that matters, but it maybe one of the many gems that we have installed.

$ ./bin/rails c
Running via Spring preloader in process 51944
Loading development environment (Rails 5.1.6)
irb(main):001:0> stream_name = "order_1"
=> "order_1"
irb(main):002:0> event_store = Rails.configuration.event_store
=> #<RailsEventStore::Client:0x007fa30d45c1f0 @repository=#<RailsEventStoreActiveRecord::EventRepository:0x007fa30d45c1c8 @repo_reader=#<RailsEventStoreActiveRecord::EventRepositoryReader:0x007fa30d45c150>>, @mapper=#<RubyEventStore::Mappers::Default:0x007fa30d45c128 @serializer=Psych, @events_class_remapping={}>, @event_broker=#<RubyEventStore::PubSub::Broker:0x007fa30d45c038 @subscribers={}, @global_subscribers=[], @thread_global_subscribers=#<Concurrent::ThreadLocalVar:0x007fa30d457f38 @default_block=nil, @default=[], @index=4>, @thread_subscribers=#<Concurrent::ThreadLocalVar:0x007fa30d457e70 @default_block=#<Proc:0x007fa30d457e48@/Users/ianrvaughan/.asdf/installs/ruby/2.4.1/lib/ruby/gems/2.4.0/gems/ruby_event_store-0.28.0/lib/ruby_event_store/pub_sub/broker.rb:13>, @default=nil, @index=5>, @dispatcher=#<RailsEventStore::ActiveJobDispatcher:0x007fa30d45c0d8 @async_proxy_strategy=#<RailsEventStore::AsyncProxyStrategy::Inline:0x007fa30d45c0b0>>>, @page_size=100, @metadata_proc=#<Proc:0x007fa30d457d30@/Users/ianrvaughan/.asdf/installs/ruby/2.4.1/lib/ruby/gems/2.4.0/gems/rails_event_store-0.28.0/lib/rails_event_store/client.rb:7 (lambda)>, @clock=#<Proc:0x007fa30d457cb8@/Users/ianrvaughan/.asdf/installs/ruby/2.4.1/lib/ruby/gems/2.4.0/gems/ruby_event_store-0.28.0/lib/ruby_event_store/client.rb:8 (lambda)>>
irb(main):003:0> OrderPlaced = Class.new(RailsEventStore::Event)
=> OrderPlaced
irb(main):004:0> event = OrderPlaced.new(data: {})
=> #<OrderPlaced:0x007fa30e7ee088 @event_id="19e63af4-4955-4f0b-92e5-8d7ccfc06caf", @metadata=#<RubyEventStore::Metadata:0x007fa30e7edb38 @h={}>, @data={}>
irb(main):005:0> event_store.publish_event(event, stream_name: stream_name)
   (0.1ms)  begin transaction
  SQL (1.3ms)  INSERT INTO "event_store_events" ("id", "event_type", "metadata", "data", "created_at") VALUES (?, ?, ?, ?, ?)  [["id", "19e63af4-4955-4f0b-92e5-8d7ccfc06caf"], ["event_type", "OrderPlaced"], ["metadata", "---\n:timestamp: 2018-05-03 18:31:34.343338000 Z\n"], ["data", "--- {}\n"], ["created_at", "2018-05-03 18:31:34.372967"]]
   (0.1ms)  SELECT sqlite_version(*)
   (0.0ms)  SAVEPOINT active_record_1
  RailsEventStoreActiveRecord::EventInStream Create Many Without Validations Or Callbacks (1.5ms)  INSERT INTO "event_store_events_in_streams" ("stream","position","event_id","created_at") VALUES ('order_1',NULL,'19e63af4-4955-4f0b-92e5-8d7ccfc06caf','2018-05-03 18:31:34.400934'),('all',NULL,'19e63af4-4955-4f0b-92e5-8d7ccfc06caf','2018-05-03 18:31:34.400934')
   (0.0ms)  RELEASE SAVEPOINT active_record_1
   (0.9ms)  commit transaction
=> :ok

I then tested it again in the same rails version via rails _4.2.10_ new test-rails-event-store, and again worked!

So it must be a gem? (I cant list all the gems as its crazy number)

Seems this is local to my setup so feel free to close, I will see if I can find the cause and if there is anything I can push up to this I'll create an PR.

If there are any pointers or help you can give, or anything I can look at then feel free to reply or reach out.

IanVaughan commented 6 years ago

Got it working by updating all the gems!

Not sure which one caused the issue, but if its of any interest to anyone I include the diff update of the lock file.

diff --git a/Gemfile.lock b/Gemfile.lock
index d0fc51a95..270ceb11c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -164,11 +164,11 @@ GEM
     erubis (~> 2.7.0)
     rails-dom-testing (~> 1.0, >= 1.0.5)
     rails-html-sanitizer (~> 1.0, >= 1.0.3)
-    active_hash (1.4.1)
+    active_hash (2.0.0)
     activesupport (>= 2.2.2)
   active_model_serializers (0.8.3)
     activemodel (>= 3.0)
-    active_record_query_trace (1.5.3)
+    active_record_query_trace (1.5.4)
   activejob (4.2.10)
     activesupport (= 4.2.10)
     globalid (>= 0.3.0)
@@ -179,9 +179,9 @@ GEM
     activemodel (= 4.2.10)
     activesupport (= 4.2.10)
     arel (~> 6.0)
-    activerecord-import (0.22.0)
+    activerecord-import (0.23.0)
     activerecord (>= 3.2)
-    activerecord-postgis-adapter (3.1.4)
+    activerecord-postgis-adapter (3.1.5)
     activerecord (~> 4.2)
     rgeo-activerecord (>= 4.0.4)
   activesupport (4.2.10)
@@ -191,8 +191,10 @@ GEM
     tzinfo (~> 1.1)
   acts_as_list (0.9.6)
     activerecord (>= 3.0)
-    addressable (2.4.0)
-    aggregate_root (0.28.0)
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.0)
+    aes_key_wrap (1.0.1)
+    aggregate_root (0.29.0)
   airborne (0.2.13)
     activesupport
     rack
@@ -203,56 +205,57 @@ GEM
     gyoku (>= 0.4.0)
     nokogiri
   amq-protocol (2.3.0)
-    ancestry (2.1.0)
-      activerecord (>= 3.0.0)
-    ar_transaction_changes (1.0.2)
-      activerecord (>= 3.0, < 5.0)
+    ancestry (3.0.2)
+      activerecord (>= 3.2.0)
+    ar_transaction_changes (1.1.3)
+      activerecord (>= 4.2.4, < 6.0)
   arel (6.0.4)
   arkency-command_bus (0.4.0)
     thread_safe
-    ast (2.3.0)
-    attr_required (1.0.0)
-    awesome_print (1.6.1)
-    aws-sdk (2.10.62)
-      aws-sdk-resources (= 2.10.62)
-    aws-sdk-core (2.10.62)
+    ast (2.4.0)
+    attr_required (1.0.1)
+    awesome_print (1.8.0)
+    aws-sdk (2.11.46)
+      aws-sdk-resources (= 2.11.46)
+    aws-sdk-core (2.11.46)
     aws-sigv4 (~> 1.0)
     jmespath (~> 1.0)
-    aws-sdk-resources (2.10.62)
-      aws-sdk-core (= 2.10.62)
+    aws-sdk-resources (2.11.46)
+      aws-sdk-core (= 2.11.46)
   aws-sigv4 (1.0.2)
   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)
+    bindata (2.4.3)
+    binding_of_caller (0.8.0)
     debug_inspector (>= 0.0.1)
-    bootsnap (1.1.7)
+    bootsnap (1.3.0)
     msgpack (~> 1.0)
   bootstrap-sass (3.2.0.2)
     sass (~> 3.2)
   bootstrap3-datetimepicker-rails (3.0.0.2)
     momentjs-rails (~> 2.5.0)
-    bounded_context (0.28.0)
-    bower-rails (0.10.0)
-    brakeman (4.0.1)
+    bounded_context (0.29.0)
+    bower-rails (0.11.0)
+    brakeman (4.2.1)
   builder (3.2.3)
-    bullet (5.0.0)
+    bullet (5.7.5)
     activesupport (>= 3.0.0)
-      uniform_notifier (~> 1.9.0)
-    bumbler (0.3.2)
+      uniform_notifier (~> 1.11.0)
+    bumbler (0.4.0)
   bunny (2.9.2)
     amq-protocol (~> 2.3.0)
-    byebug (8.2.1)
-    cancancan (1.13.1)
-    capybara (2.6.2)
+    byebug (10.0.2)
+    cancancan (2.2.0)
+    capybara (3.0.3)
     addressable
-      mime-types (>= 1.16)
-      nokogiri (>= 1.3.3)
-      rack (>= 1.0.0)
-      rack-test (>= 0.5.4)
-      xpath (~> 2.0)
+      mini_mime (>= 0.1.3)
+      nokogiri (~> 1.8)
+      rack (>= 1.6.0)
+      rack-test (>= 0.6.3)
+      xpath (~> 3.0)
   celluloid (0.17.3)
     celluloid-essentials
     celluloid-extras
@@ -268,10 +271,10 @@ GEM
     timers (>= 4.1.1)
   celluloid-pool (0.20.5)
     timers (>= 4.1.1)
-    celluloid-supervision (0.20.5)
+    celluloid-supervision (0.20.6)
     timers (>= 4.1.1)
   cliver (0.3.2)
-    coderay (1.1.1)
+    coderay (1.1.2)
   coercible (1.0.0)
     descendants_tracker (~> 0.0.1)
   coffee-rails (4.0.1)
@@ -280,78 +283,77 @@ GEM
   coffee-script (2.4.1)
     coffee-script-source
     execjs
-    coffee-script-source (1.10.0)
-    colorize (0.7.7)
-    concurrent-ruby (1.0.2)
-    connection_pool (2.2.0)
+    coffee-script-source (1.12.2)
+    colorize (0.8.1)
+    concurrent-ruby (1.0.5)
+    connection_pool (2.2.1)
   crack (0.4.3)
     safe_yaml (~> 1.0.0)
   crass (1.0.4)
-    daemons (1.1.9)
+    daemons (1.2.6)
   dante (0.2.0)
-    database_cleaner (1.5.1)
-    database_rewinder (0.5.3)
-    ddtrace (0.11.1)
+    database_cleaner (1.7.0)
+    database_rewinder (0.8.3)
+    ddtrace (0.12.0)
     msgpack
-    debug_inspector (0.0.2)
+    debug_inspector (0.0.3)
   descendants_tracker (0.0.4)
     thread_safe (~> 0.3, >= 0.3.1)
-    devise (3.5.6)
+    devise (4.4.3)
     bcrypt (~> 3.0)
     orm_adapter (~> 0.1)
-      railties (>= 3.2.6, < 5)
+      railties (>= 4.1.0, < 6.0)
     responders
-      thread_safe (~> 0.1)
     warden (~> 1.2.3)
-    devise-async (0.10.1)
-      devise (~> 3.2)
-    devise_invitable (1.5.5)
-      actionmailer (>= 3.2.6, < 5)
-      devise (>= 3.2.0)
+    devise-async (0.7.0)
+      devise (>= 2.2)
+    devise_invitable (1.7.4)
+      actionmailer (>= 4.1.0)
+      devise (>= 4.0.0)
   diff-lcs (1.3)
   docile (1.1.5)
   dogstatsd-ruby (2.2.0)
-    domain_name (0.5.20170404)
+    domain_name (0.5.20180417)
     unf (>= 0.0.5, < 1.0.0)
   doorkeeper (4.3.2)
     railties (>= 4.2)
-    dotenv (2.1.1)
+    dotenv (2.4.0)
   draper (1.4.0)
     actionpack (>= 3.0)
     activemodel (>= 3.0)
     activesupport (>= 3.0)
     request_store (~> 1.0)
-    elasticsearch (1.0.15)
-      elasticsearch-api (= 1.0.15)
-      elasticsearch-transport (= 1.0.15)
-    elasticsearch-api (1.0.15)
+    elasticsearch (1.0.18)
+      elasticsearch-api (= 1.0.18)
+      elasticsearch-transport (= 1.0.18)
+    elasticsearch-api (1.0.18)
     multi_json
-    elasticsearch-transport (1.0.15)
+    elasticsearch-transport (1.0.18)
     faraday
     multi_json
-    email_spec (2.0.0)
+    email_spec (2.2.0)
     htmlentities (~> 4.3.3)
     launchy (~> 2.1)
-      mail (~> 2.6.3)
+      mail (~> 2.7)
   equalizer (0.0.11)
   erubis (2.7.0)
   eventmachine (1.0.9.1)
-    excon (0.49.0)
-    execjs (2.6.0)
+    excon (0.62.0)
+    execjs (2.7.0)
   factory_girl (4.5.0)
     activesupport (>= 3.0.0)
   factory_girl_rails (4.6.0)
     factory_girl (~> 4.5.0)
     railties (>= 3.0.0)
-    faker (1.6.3)
-      i18n (~> 0.5)
+    faker (1.8.7)
+      i18n (>= 0.7)
   fakeweb (1.3.0)
-    faraday (0.8.11)
-      multipart-post (~> 1.2.0)
-    faraday_middleware (0.10.0)
-      faraday (>= 0.7.4, < 0.10)
-    ffi (1.9.10)
-    flipflop (2.3.1)
+    faraday (0.12.2)
+      multipart-post (>= 1.2, < 3)
+    faraday_middleware (0.12.2)
+      faraday (>= 0.7.4, < 1.0)
+    ffi (1.9.23)
+    flipflop (2.4.0)
     activesupport (>= 4.0)
   fog (1.23.0)
     fog-brightbox
@@ -360,35 +362,35 @@ GEM
     fog-softlayer
     ipaddress (~> 0.5)
     nokogiri (~> 1.5, >= 1.5.11)
-    fog-aws (0.9.2)
-      fog-core (~> 1.27)
+    fog-aws (2.0.1)
+      fog-core (~> 1.38)
     fog-json (~> 1.0)
     fog-xml (~> 0.1)
     ipaddress (~> 0.8)
-    fog-brightbox (0.10.1)
+    fog-brightbox (0.14.0)
     fog-core (~> 1.22)
     fog-json
     inflecto (~> 0.0.2)
-    fog-core (1.37.0)
+    fog-core (1.45.0)
     builder
-      excon (~> 0.45)
+      excon (~> 0.58)
     formatador (~> 0.2)
   fog-json (1.0.2)
     fog-core (~> 1.0)
     multi_json (~> 1.10)
-    fog-softlayer (1.1.0)
+    fog-softlayer (1.1.4)
     fog-core
     fog-json
-    fog-xml (0.1.2)
+    fog-xml (0.1.3)
     fog-core
-      nokogiri (~> 1.5, >= 1.5.11)
-    font-awesome-rails (4.5.0.1)
-      railties (>= 3.2, < 5.1)
-    forecast_io (2.0.0)
+      nokogiri (>= 1.5.11, < 2.0.0)
+    font-awesome-rails (4.7.0.4)
+      railties (>= 3.2, < 6.0)
+    forecast_io (2.0.2)
     faraday
     hashie
     multi_json
-    foreman (0.78.0)
+    foreman (0.84.0)
     thor (~> 0.19.1)
   formatador (0.2.5)
   foursquare2 (2.0.2)
@@ -397,16 +399,15 @@ GEM
     hashie (>= 1.0, < 4.0.0)
   friendly_id (5.1.0)
     activerecord (>= 4.0.0)
-    fuubar (2.0.0)
-      rspec (~> 3.0)
+    fuubar (2.3.1)
+      rspec-core (~> 3.0)
     ruby-progressbar (~> 1.4)
-    geocoder (1.3.1)
-    globalid (0.4.0)
+    geocoder (1.4.7)
+    globalid (0.4.1)
     activesupport (>= 4.2.0)
   going_postal (0.1.6)
-    gon (6.0.1)
+    gon (6.2.0)
     actionpack (>= 3.0)
-      json
     multi_json
     request_store (>= 1.0)
   grape (0.19.2)
@@ -425,12 +426,12 @@ GEM
   grape-entity (0.4.8)
     activesupport
     multi_json (>= 1.3.2)
-    grape-papertrail (0.1.1)
+    grape-papertrail (0.1.2.1)
+      nokogiri (~> 1.6, >= 1.6.6.4)
   grape-swagger (0.11.0)
     grape (>= 0.16.2)
     grape-entity (< 0.5.0)
-    grape-swagger-rails (0.2.1)
-      grape-swagger (>= 0.7.2)
+    grape-swagger-rails (0.2.2)
     railties (>= 3.2.12)
   guard (2.13.0)
     formatador (>= 0.2.4)
@@ -442,204 +443,224 @@ GEM
     shellany (~> 0.0)
     thor (>= 0.18.1)
   guard-compat (1.2.1)
-    guard-rails (0.7.1)
+    guard-rails (0.8.1)
     guard (~> 2.11)
     guard-compat (~> 1.0)
-    guard-rspec (4.5.0)
+    guard-rspec (4.7.3)
     guard (~> 2.1)
     guard-compat (~> 1.1)
     rspec (>= 2.99.0, < 4.0)
   gyoku (1.3.1)
     builder (>= 2.1.2)
-    haml (4.0.7)
+    haml (5.0.4)
+      temple (>= 0.8.0)
     tilt
-    haml-rails (0.5.3)
+    haml-rails (1.0.0)
     actionpack (>= 4.0.1)
     activesupport (>= 4.0.1)
-      haml (>= 3.1, < 5.0)
+      haml (>= 4.0.6, < 6.0)
+      html2haml (>= 1.0.1)
     railties (>= 4.0.1)
   hashdiff (0.3.7)
-    hashie (3.5.5)
+    hashie (3.5.7)
   hashie-forbidden_attributes (0.1.1)
     hashie (>= 3.0)
   hike (1.2.3)
-    hitimes (1.2.4)
+    hitimes (1.2.6)
+    html2haml (2.2.0)
+      erubis (~> 2.7.0)
+      haml (>= 4.0, < 6)
+      nokogiri (>= 1.6.0)
+      ruby_parser (~> 3.5)
   htmlentities (4.3.4)
   http-cookie (1.0.3)
     domain_name (~> 0.5)
-    httparty (0.13.1)
-      json (~> 1.8)
+    httparty (0.16.2)
     multi_xml (>= 0.5.2)
-    httpclient (2.4.0)
-    httpi (2.4.2)
+    httpclient (2.8.3)
+    httpi (2.4.3)
     rack
     socksify
-    i18n (0.8.6)
-    ice_cube (0.13.3)
+    i18n (0.9.5)
+      concurrent-ruby (~> 1.0)
+    ice_cube (0.14.0)
   ice_nine (0.11.2)
   ideal_postcodes (2.0.0)
     rest-client (>= 1.8, < 3.0)
-    identity_cache (0.2.5)
-      activerecord (>= 3.2)
+    identity_cache (0.5.1)
+      activerecord (>= 4.2.0)
     ar_transaction_changes (~> 1.0)
   inflecto (0.0.2)
   ipaddress (0.8.3)
   jbuilder (1.5.3)
     activesupport (>= 3.0.0)
     multi_json (>= 1.2.0)
-    jmespath (1.3.1)
-    jquery-rails (4.1.1)
+    jmespath (1.4.0)
+    jquery-rails (4.3.3)
     rails-dom-testing (>= 1, < 3)
     railties (>= 4.2.0)
     thor (>= 0.14, < 2.0)
   jquery-ui-rails (5.0.5)
     railties (>= 3.2.16)
-    json (1.8.6)
-    json-schema (2.7.0)
+    json (2.1.0)
+    json-jwt (1.9.4)
+      activesupport
+      aes_key_wrap
+      bindata
+    json-schema (2.8.0)
     addressable (>= 2.4)
-    jwt (1.0.0)
-    kaminari (0.16.3)
-      actionpack (>= 3.0.0)
-      activesupport (>= 3.0.0)
-    knapsack (1.13.1)
+    jwt (1.5.6)
+    kaminari (1.1.1)
+      activesupport (>= 4.1.0)
+      kaminari-actionview (= 1.1.1)
+      kaminari-activerecord (= 1.1.1)
+      kaminari-core (= 1.1.1)
+    kaminari-actionview (1.1.1)
+      actionview
+      kaminari-core (= 1.1.1)
+    kaminari-activerecord (1.1.1)
+      activerecord
+      kaminari-core (= 1.1.1)
+    kaminari-core (1.1.1)
+    knapsack (1.16.0)
     rake
-      timecop (>= 0.1.0)
-    koala (1.11.0)
+    koala (1.11.1)
     addressable
     faraday
     multi_json
-    kramdown (1.4.0)
+    kramdown (1.16.2)
   launchy (2.4.3)
     addressable (~> 2.3)
-    letter_opener (1.2.0)
+    letter_opener (1.6.0)
     launchy (~> 2.2)
-    listen (3.0.6)
-      rb-fsevent (>= 0.9.3)
-      rb-inotify (>= 0.9.7)
-    lograge (0.3.0)
-      actionpack (>= 3)
-      activesupport (>= 3)
-      railties (>= 3)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
+    lograge (0.10.0)
+      actionpack (>= 4)
+      activesupport (>= 4)
+      railties (>= 4)
+      request_store (~> 1.0)
   loofah (2.2.2)
     crass (~> 1.0.2)
     nokogiri (>= 1.5.9)
-    lumberjack (1.0.10)
-    mail (2.6.6)
-      mime-types (>= 1.16, < 4)
-    method_source (0.8.2)
+    lumberjack (1.0.13)
+    mail (2.7.0)
+      mini_mime (>= 0.1.1)
+    method_source (0.9.0)
   mime-types (3.1)
     mime-types-data (~> 3.2015)
   mime-types-data (3.2016.0521)
-    mini_magick (4.5.1)
+    mini_magick (4.8.0)
+    mini_mime (1.0.0)
   mini_portile2 (2.3.0)
   minitest (5.11.3)
   momentjs-rails (2.5.1)
     railties (>= 3.1)
   monetize (1.7.0)
     money (~> 6.9)
-    money (6.9.0)
-      i18n (>= 0.6.4, < 0.9)
-    money-rails (1.9.0)
+    money (6.11.3)
+      i18n (>= 0.6.4, < 1.1)
+    money-rails (1.11.0)
     activesupport (>= 3.0)
     monetize (~> 1.7.0)
-      money (~> 6.9.0)
+      money (~> 6.11.0)
     railties (>= 3.0)
-    msgpack (1.2.2)
+    msgpack (1.2.4)
   multi_json (1.13.1)
   multi_xml (0.6.0)
-    multipart-post (1.2.0)
-    mustermann (1.0.0)
+    multipart-post (2.0.0)
+    mustermann (1.0.2)
   mustermann-grape (1.0.0)
     mustermann (~> 1.0.0)
   nenv (0.3.0)
   nested_form (0.3.2)
-    net-ssh (3.1.1)
+    net-ssh (4.2.0)
   netrc (0.11.0)
   nokogiri (1.8.2)
     mini_portile2 (~> 2.3.0)
-    non-stupid-digest-assets (1.0.4)
+    non-stupid-digest-assets (1.0.9)
+      sprockets (>= 2.0)
   nori (2.6.0)
-    notiffany (0.0.8)
+    notiffany (0.1.1)
     nenv (~> 0.1)
     shellany (~> 0.0)
-    oauth2 (1.0.0)
-      faraday (>= 0.8, < 0.10)
+    oauth2 (1.4.0)
+      faraday (>= 0.8, < 0.13)
     jwt (~> 1.0)
     multi_json (~> 1.3)
     multi_xml (~> 0.5)
-      rack (~> 1.2)
-    oj (2.18.0)
-    omniauth (1.2.2)
-      hashie (>= 1.2, < 4)
-      rack (~> 1.0)
-    omniauth-facebook (1.6.0)
-      omniauth-oauth2 (~> 1.1)
-    omniauth-oauth2 (1.2.0)
-      faraday (>= 0.8, < 0.10)
-      multi_json (~> 1.3)
-      oauth2 (~> 1.0)
+      rack (>= 1.2, < 3)
+    oj (2.18.5)
+    omniauth (1.8.1)
+      hashie (>= 3.4.6, < 3.6.0)
+      rack (>= 1.6.2, < 3)
+    omniauth-facebook (5.0.0)
+      omniauth-oauth2 (~> 1.2)
+    omniauth-oauth2 (1.5.0)
+      oauth2 (~> 1.1)
     omniauth (~> 1.2)
   orm_adapter (0.5.0)
-    paper_trail (3.0.8)
-      activerecord (>= 3.0, < 5.0)
-      activesupport (>= 3.0, < 5.0)
-    parallel (1.11.1)
-    parallel_tests (2.14.0)
+    paper_trail (9.0.1)
+      activerecord (>= 4.2, < 5.3)
+      request_store (~> 1.1)
+    parallel (1.12.1)
+    parallel_tests (2.21.3)
     parallel
-    paranoia (2.1.4)
-      activerecord (~> 4.0)
-    parser (2.3.3.1)
-      ast (~> 2.2)
-    patron (0.10.0)
+    paranoia (2.4.1)
+      activerecord (>= 4.0, < 5.3)
+    parser (2.5.1.0)
+      ast (~> 2.4.0)
+    patron (0.13.1)
   pg (0.17.1)
   pg_array_parser (0.0.9)
-    phony (2.15.48)
+    phony (2.16.3)
   phony_rails (0.14.6)
     activesupport (>= 3.0)
     phony (> 2.15)
-    plist (3.1.0)
-    polo (0.4.0)
+    plist (3.4.0)
+    polo (0.5.0)
     activerecord (>= 3.2)
-    poltergeist (1.6.0)
-      capybara (~> 2.1)
+    poltergeist (1.18.0)
+      capybara (>= 2.1, < 4)
     cliver (~> 0.3.1)
-      multi_json (~> 1.0)
     websocket-driver (>= 0.2.0)
-    polylines (0.1.1)
-    postgres_ext (2.4.1)
-      activerecord (>= 4.0.0)
+    polylines (0.3.0)
+    postgres_ext (3.0.1)
+      activerecord (~> 4.0)
     arel (>= 4.0.1)
     pg_array_parser (~> 0.0.9)
   powerpack (0.1.1)
-    pry (0.10.3)
+    pry (0.11.3)
     coderay (~> 1.1.0)
-      method_source (~> 0.8.1)
-      slop (~> 3.4)
-    pry-byebug (3.3.0)
-      byebug (~> 8.0)
+      method_source (~> 0.9.0)
+    pry-byebug (3.6.0)
+      byebug (~> 10.0)
     pry (~> 0.10)
-    pry-rails (0.3.3)
-      pry (>= 0.9.10)
-    puma (3.10.0)
+    pry-rails (0.3.6)
+      pry (>= 0.10.4)
+    public_suffix (3.0.2)
+    puma (3.11.4)
   pushmeup (0.3.0)
     httparty
     json
-    rack (1.6.9)
+    rack (1.6.10)
   rack-accept (0.4.5)
     rack (>= 0.4)
-    rack-cache (1.5.0)
+    rack-cache (1.7.2)
     rack (>= 0.4)
-    rack-cors (0.2.9)
-    rack-oauth2 (1.0.8)
-      activesupport (>= 2.3)
-      attr_required (>= 0.0.5)
-      httpclient (>= 2.2.0.2)
-      multi_json (>= 1.3.6)
-      rack (>= 1.1)
-    rack-pjax (0.8.0)
+    rack-cors (1.0.2)
+    rack-oauth2 (1.9.2)
+      activesupport
+      attr_required
+      httpclient
+      json-jwt (>= 1.9.0)
+      rack
+    rack-pjax (1.0.0)
     nokogiri (~> 1.5)
-      rack (~> 1.1)
-    rack-protection (1.5.3)
+      rack (>= 1.1)
+    rack-protection (1.5.5)
     rack
   rack-request-id (0.0.4)
   rack-test (0.6.3)
@@ -668,89 +689,90 @@ GEM
   rails_12factor (0.0.3)
     rails_serve_static_assets
     rails_stdout_logging
-    rails_admin (0.8.1)
+    rails_admin (1.3.0)
     builder (~> 3.1)
     coffee-rails (~> 4.0)
     font-awesome-rails (>= 3.0, < 5)
-      haml (~> 4.0)
+      haml (>= 4.0, < 6)
     jquery-rails (>= 3.0, < 5)
     jquery-ui-rails (~> 5.0)
-      kaminari (~> 0.14)
+      kaminari (>= 0.14, < 2.0)
     nested_form (~> 0.3)
-      rack-pjax (~> 0.7)
-      rails (~> 4.0)
-      remotipart (~> 1.0)
-      safe_yaml (~> 1.0)
+      rack-pjax (>= 0.7)
+      rails (>= 4.0, < 6)
+      remotipart (~> 1.3)
     sass-rails (>= 4.0, < 6)
-    rails_admin_nestable (0.2.0)
+    rails_admin_nestable (0.3.2)
     coffee-rails
     haml-rails
-      rails (>= 3.1)
-      rails_admin
+      rails_admin (>= 0.6.6)
     sass-rails
-    rails_event_store (0.28.0)
+    rails_event_store (0.29.0)
     activejob (>= 3.0)
     activemodel (>= 3.0)
     activesupport (>= 3.0)
-      aggregate_root (= 0.28.0)
+      aggregate_root (= 0.29.0)
     arkency-command_bus (>= 0.4)
-      bounded_context (= 0.28.0)
-      rails_event_store_active_record (= 0.28.0)
-      ruby_event_store (= 0.28.0)
-    rails_event_store_active_record (0.28.0)
+      bounded_context (= 0.29.0)
+      rails_event_store_active_record (= 0.29.0)
+      ruby_event_store (= 0.29.0)
+    rails_event_store_active_record (0.29.0)
     activemodel (>= 3.0)
     activerecord-import (~> 0.21)
     activesupport (>= 3.0)
-      ruby_event_store (= 0.28.0)
-    rails_serve_static_assets (0.0.4)
-    rails_stdout_logging (0.0.4)
+      ruby_event_store (= 0.29.0)
+    rails_serve_static_assets (0.0.5)
+    rails_stdout_logging (0.0.5)
   railties (4.2.10)
     actionpack (= 4.2.10)
     activesupport (= 4.2.10)
     rake (>= 0.8.7)
     thor (>= 0.18.1, < 2.0)
-    rainbow (2.2.1)
+    rainbow (2.2.2)
+      rake
   rake (12.3.1)
-    rb-fsevent (0.9.7)
-    rb-inotify (0.9.7)
-      ffi (>= 0.5.0)
-    redis (3.3.3)
-    redis-actionpack (4.0.1)
-      actionpack (~> 4)
-      redis-rack (~> 1.5.0)
-      redis-store (~> 1.1.0)
-    redis-activesupport (4.1.4)
-      activesupport (>= 3, < 5)
-      redis-store (~> 1.1.0)
-    redis-rack (1.5.0)
-      rack (~> 1.5)
-      redis-store (~> 1.1.0)
-    redis-rack-cache (1.2.2)
-      rack-cache (~> 1.2)
-      redis-store (~> 1.1.0)
-    redis-rails (4.0.0)
-      redis-actionpack (~> 4)
-      redis-activesupport (~> 4)
-      redis-store (~> 1.1.0)
-    redis-store (1.1.6)
-      redis (>= 2.2)
-    remotipart (1.2.1)
-    request_store (1.3.0)
-    responders (2.1.2)
-      railties (>= 4.2.0, < 5.1)
+    rb-fsevent (0.10.3)
+    rb-inotify (0.9.10)
+      ffi (>= 0.5.0, < 2)
+    redis (3.3.5)
+    redis-actionpack (5.0.2)
+      actionpack (>= 4.0, < 6)
+      redis-rack (>= 1, < 3)
+      redis-store (>= 1.1.0, < 2)
+    redis-activesupport (5.0.4)
+      activesupport (>= 3, < 6)
+      redis-store (>= 1.3, < 2)
+    redis-rack (2.0.4)
+      rack (>= 1.5, < 3)
+      redis-store (>= 1.2, < 2)
+    redis-rack-cache (2.0.2)
+      rack-cache (>= 1.6, < 2)
+      redis-store (>= 1.2, < 2)
+    redis-rails (5.0.2)
+      redis-actionpack (>= 5.0, < 6)
+      redis-activesupport (>= 5.0, < 6)
+      redis-store (>= 1.2, < 2)
+    redis-store (1.5.0)
+      redis (>= 2.2, < 5)
+    remotipart (1.4.2)
+    request_store (1.4.1)
+      rack (>= 1.4)
+    responders (2.4.0)
+      actionpack (>= 4.2.0, < 5.3)
+      railties (>= 4.2.0, < 5.3)
   rest-client (2.0.2)
     http-cookie (>= 1.0.2, < 2.0)
     mime-types (>= 1.16, < 4.0)
     netrc (~> 0.8)
   retries (0.0.5)
-    rgeo (0.5.3)
+    rgeo (0.6.0)
   rgeo-activerecord (4.0.5)
     activerecord (~> 4.2)
     rgeo (~> 0.3)
-    rgeo-geojson (0.3.1)
-      rgeo (~> 0.3)
+    rgeo-geojson (0.4.3)
+      rgeo (~> 0.5)
   rmagick (2.16.0)
-    rollbar (2.15.1)
+    rollbar (2.15.6)
     multi_json
   rspec (3.4.0)
     rspec-core (~> 3.4.0)
@@ -775,8 +797,8 @@ GEM
     rspec-expectations (~> 3.4.0)
     rspec-mocks (~> 3.4.0)
     rspec-support (~> 3.4.0)
-    rspec-sidekiq (2.0.0)
-      rspec (~> 3.0, >= 3.0.0)
+    rspec-sidekiq (3.0.3)
+      rspec-core (~> 3.0, >= 3.0.0)
     sidekiq (>= 2.4.0)
   rspec-support (3.4.1)
   rspec_junit_formatter (0.2.3)
@@ -788,10 +810,13 @@ GEM
     rainbow (>= 1.99.1, < 3.0)
     ruby-progressbar (~> 1.7)
     unicode-display_width (~> 1.0, >= 1.0.1)
-    ruby-ole (1.2.12)
-    ruby-progressbar (1.8.1)
-    ruby_event_store (0.28.0)
+    ruby-ole (1.2.12.1)
+    ruby-progressbar (1.9.0)
+    ruby_dep (1.5.0)
+    ruby_event_store (0.29.0)
     concurrent-ruby (~> 1.0)
+    ruby_parser (3.11.0)
+      sexp_processor (~> 4.9)
   safe_yaml (1.0.4)
   sass (3.2.19)
   sass-rails (4.0.5)
@@ -799,38 +824,40 @@ GEM
     sass (~> 3.2.2)
     sprockets (~> 2.8, < 3.0)
     sprockets-rails (~> 2.0)
-    savon (2.11.1)
+    savon (2.12.0)
     akami (~> 1.2)
     builder (>= 2.1.2)
     gyoku (~> 1.2)
     httpi (~> 2.3)
-      nokogiri (>= 1.4.0)
+      nokogiri (>= 1.8.1)
     nori (~> 2.4)
     wasabi (~> 3.4)
-    scientist (1.1.0)
-    searchkick (1.2.1)
-      activemodel
+    scientist (1.1.2)
+    searchkick (2.5.0)
+      activemodel (>= 4.1)
     elasticsearch (>= 1)
     hashie
-    semantic (1.6.0)
-    sendgrid (1.2.0)
+    semantic (1.6.1)
+    sendgrid (1.2.4)
     json
+    sexp_processor (4.11.0)
   shellany (0.0.1)
   shoulda-matchers (3.0.1)
     activesupport (>= 4.0.0)
-    sidekiq (4.1.2)
+    sidekiq (4.1.4)
     concurrent-ruby (~> 1.0)
     connection_pool (~> 2.2, >= 2.2.0)
     redis (~> 3.2, >= 3.2.1)
-    sidekiq-pro (3.2.1)
+      sinatra (>= 1.4.7)
+    sidekiq-pro (3.3.3)
     sidekiq (>= 4.0.0)
-    sidekiq-unique-jobs (4.0.17)
-      sidekiq (>= 2.6)
-      thor
-    sidetiq (0.7.0)
+    sidekiq-unique-jobs (5.0.10)
+      sidekiq (>= 4.0, <= 6.0)
+      thor (~> 0)
+    sidetiq (0.7.2)
     celluloid (>= 0.17.3)
-      ice_cube (~> 0.13.2)
-      sidekiq (>= 4.0.0)
+      ice_cube (~> 0.14.0)
+      sidekiq (>= 4.1.0)
   simple_form (3.0.2)
     actionpack (~> 4.0)
     activemodel (~> 4.0)
@@ -843,15 +870,14 @@ GEM
     rack (~> 1.5)
     rack-protection (~> 1.4)
     tilt (>= 1.3, < 3)
-    sitemap_generator (5.1.0)
-      builder
+    sitemap_generator (6.0.1)
+      builder (~> 3.0)
   slack-notifier (2.3.2)
-    slop (3.6.0)
-    socksify (1.7.0)
-    spreadsheet (1.1.4)
+    socksify (1.7.1)
+    spreadsheet (1.1.7)
     ruby-ole (>= 1.0)
-    spring (1.7.1)
-    spring-commands-rspec (1.0.2)
+    spring (1.7.2)
+    spring-commands-rspec (1.0.4)
     spring (>= 0.9.1)
   sprockets (2.12.4)
     hike (~> 1.2)
@@ -863,55 +889,55 @@ GEM
     activesupport (>= 3.0)
     sprockets (>= 2.8, < 4.0)
   state_machine (1.2.0)
-    state_machines (0.4.0)
-    state_machines-activemodel (0.3.0)
-      activemodel (~> 4.1)
-      state_machines (>= 0.4.0)
-    state_machines-activerecord (0.3.0)
-      activerecord (~> 4.1)
-      state_machines-activemodel (>= 0.3.0)
+    state_machines (0.5.0)
+    state_machines-activemodel (0.5.1)
+      activemodel (>= 4.1, < 6.0)
+      state_machines (>= 0.5.0)
+    state_machines-activerecord (0.5.1)
+      activerecord (>= 4.1, < 6.0)
+      state_machines-activemodel (>= 0.5.0)
   stripe (1.58.0)
     rest-client (>= 1.4, < 4.0)
   stripe-ruby-mock (2.4.1)
     dante (>= 0.2.0)
     multi_json (~> 1.0)
     stripe (>= 1.31.0, <= 1.58.0)
-    strong_migrations (0.1.9)
+    strong_migrations (0.2.2)
     activerecord (>= 3.2.0)
-    surus (0.6.1)
-      activerecord (~> 4.0)
-    teaspoon (1.1.1)
-      railties (>= 3.2.5, < 5)
+    surus (0.7.0)
+      activerecord (> 4.2)
+    teaspoon (1.1.5)
+      railties (>= 3.2.5, < 6)
   teaspoon-jasmine (2.3.4)
     teaspoon (>= 1.0.0)
+    temple (0.8.0)
   test_after_commit (1.1.0)
     activerecord (>= 3.2)
-    thin (1.6.4)
+    thin (1.7.2)
     daemons (~> 1.0, >= 1.0.9)
     eventmachine (~> 1.0, >= 1.0.4)
-      rack (~> 1.0)
+      rack (>= 1, < 3)
   thor (0.19.4)
   thread_safe (0.3.6)
   tilt (1.4.1)
-    timecop (0.7.1)
-    timers (4.1.1)
+    timecop (0.9.1)
+    timers (4.1.2)
     hitimes
-    twilio-ruby (3.11.5)
-      builder (>= 2.1.2)
-      jwt (>= 0.1.2)
-      multi_json (>= 1.3.0)
+    twilio-ruby (5.9.0)
+      faraday (~> 0.9)
+      jwt (>= 1.5, <= 2.5)
+      nokogiri (>= 1.6, < 2.0)
   tzinfo (1.2.5)
     thread_safe (~> 0.1)
-    uglifier (2.7.2)
-      execjs (>= 0.3.0)
-      json (>= 1.8.0)
-    uk_postcode (2.1.0)
+    uglifier (4.1.10)
+      execjs (>= 0.3.0, < 3)
+    uk_postcode (2.1.2)
   unf (0.1.4)
     unf_ext
-    unf_ext (0.0.7.4)
-    unicode-display_width (1.1.3)
-    uniform_notifier (1.9.0)
-    vcr (2.9.2)
+    unf_ext (0.0.7.5)
+    unicode-display_width (1.3.2)
+    uniform_notifier (1.11.0)
+    vcr (4.0.0)
   virtus (1.0.5)
     axiom-types (~> 0.1)
     coercible (~> 1.0)
@@ -920,12 +946,12 @@ GEM
   w3c_validators (1.3.3)
     json (>= 1.8)
     nokogiri (~> 1.6)
-    warden (1.2.6)
+    warden (1.2.7)
     rack (>= 1.0)
   wasabi (3.5.0)
     httpi (~> 2.0)
     nokogiri (>= 1.4.2)
-    web-console (2.2.1)
+    web-console (2.3.0)
     activemodel (>= 4.0)
     binding_of_caller (>= 0.7.2)
     railties (>= 4.0)
@@ -934,18 +960,17 @@ GEM
     addressable (>= 2.3.6)
     crack (>= 0.3.2)
     hashdiff
-    websocket-driver (0.5.3)
+    websocket-driver (0.7.0)
     websocket-extensions (>= 0.1.0)
-    websocket-extensions (0.1.2)
+    websocket-extensions (0.1.3)
   what3words (2.2.0)
     rest-client (>= 1.8, < 3.0)
-    wicked_pdf (0.11.0)
-      rails
+    wicked_pdf (1.1.0)
   xmlrpc (0.3.0)
-    xpath (2.0.0)
-      nokogiri (~> 1.3)
-    yajl-ruby (1.3.0)
-    yard (0.8.7.6)
+    xpath (3.0.0)
+      nokogiri (~> 1.8)
+    yajl-ruby (1.4.0)
+    yard (0.9.12)

PLATFORMS
 ruby
@@ -981,7 +1006,7 @@ DEPENDENCIES
 devise
 devise-async
 devise_invitable
-  dogstatsd-ruby
+  dogstatsd-ruby (~> 2.2.0)
 doorkeeper
 dotenv
 draper (~> 1.3)
@@ -1085,7 +1110,7 @@ DEPENDENCIES
 semantic
 sendgrid
 shoulda-matchers (~> 3.0.1)
-  sidekiq
+  sidekiq (~> 4.1.2)
 sidekiq-pro!
 sidekiq-unique-jobs
 sidetiq