rabbit_feed 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/Brewfile +4 -0
  5. data/DEVELOPING.md +140 -0
  6. data/Gemfile +15 -0
  7. data/Gemfile.lock +121 -0
  8. data/LICENSE.txt +9 -0
  9. data/README.md +304 -0
  10. data/Rakefile +30 -0
  11. data/bin/bundle +3 -0
  12. data/bin/rabbit_feed +11 -0
  13. data/example/non_rails_app/.rspec +1 -0
  14. data/example/non_rails_app/Gemfile +7 -0
  15. data/example/non_rails_app/Gemfile.lock +56 -0
  16. data/example/non_rails_app/Rakefile +5 -0
  17. data/example/non_rails_app/bin/benchmark +63 -0
  18. data/example/non_rails_app/bin/bundle +3 -0
  19. data/example/non_rails_app/config/rabbit_feed.yml +8 -0
  20. data/example/non_rails_app/lib/non_rails_app.rb +32 -0
  21. data/example/non_rails_app/lib/non_rails_app/event_handler.rb +10 -0
  22. data/example/non_rails_app/log/.keep +0 -0
  23. data/example/non_rails_app/spec/lib/non_rails_app/event_handler_spec.rb +14 -0
  24. data/example/non_rails_app/spec/lib/non_rails_app/event_routing_spec.rb +14 -0
  25. data/example/non_rails_app/spec/spec_helper.rb +31 -0
  26. data/example/non_rails_app/tmp/pids/.keep +0 -0
  27. data/example/rails_app/.gitignore +17 -0
  28. data/example/rails_app/.node-version +1 -0
  29. data/example/rails_app/.rspec +1 -0
  30. data/example/rails_app/Gemfile +36 -0
  31. data/example/rails_app/Gemfile.lock +173 -0
  32. data/example/rails_app/README.rdoc +28 -0
  33. data/example/rails_app/Rakefile +6 -0
  34. data/example/rails_app/app/assets/images/.keep +0 -0
  35. data/example/rails_app/app/assets/javascripts/application.js +16 -0
  36. data/example/rails_app/app/assets/javascripts/beavers.js.coffee +3 -0
  37. data/example/rails_app/app/assets/stylesheets/application.css +15 -0
  38. data/example/rails_app/app/assets/stylesheets/beavers.css.scss +3 -0
  39. data/example/rails_app/app/assets/stylesheets/scaffolds.css.scss +69 -0
  40. data/example/rails_app/app/controllers/application_controller.rb +5 -0
  41. data/example/rails_app/app/controllers/beavers_controller.rb +81 -0
  42. data/example/rails_app/app/controllers/concerns/.keep +0 -0
  43. data/example/rails_app/app/helpers/application_helper.rb +2 -0
  44. data/example/rails_app/app/helpers/beavers_helper.rb +2 -0
  45. data/example/rails_app/app/mailers/.keep +0 -0
  46. data/example/rails_app/app/models/.keep +0 -0
  47. data/example/rails_app/app/models/beaver.rb +2 -0
  48. data/example/rails_app/app/models/concerns/.keep +0 -0
  49. data/example/rails_app/app/views/beavers/_form.html.erb +21 -0
  50. data/example/rails_app/app/views/beavers/edit.html.erb +6 -0
  51. data/example/rails_app/app/views/beavers/index.html.erb +25 -0
  52. data/example/rails_app/app/views/beavers/index.json.jbuilder +4 -0
  53. data/example/rails_app/app/views/beavers/new.html.erb +5 -0
  54. data/example/rails_app/app/views/beavers/show.html.erb +9 -0
  55. data/example/rails_app/app/views/beavers/show.json.jbuilder +1 -0
  56. data/example/rails_app/app/views/layouts/application.html.erb +14 -0
  57. data/example/rails_app/bin/bundle +3 -0
  58. data/example/rails_app/bin/rails +4 -0
  59. data/example/rails_app/bin/rake +4 -0
  60. data/example/rails_app/config.ru +4 -0
  61. data/example/rails_app/config/application.rb +25 -0
  62. data/example/rails_app/config/boot.rb +4 -0
  63. data/example/rails_app/config/database.yml +22 -0
  64. data/example/rails_app/config/environment.rb +5 -0
  65. data/example/rails_app/config/environments/development.rb +83 -0
  66. data/example/rails_app/config/environments/test.rb +39 -0
  67. data/example/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  68. data/example/rails_app/config/initializers/cookies_serializer.rb +3 -0
  69. data/example/rails_app/config/initializers/filter_parameter_logging.rb +4 -0
  70. data/example/rails_app/config/initializers/inflections.rb +16 -0
  71. data/example/rails_app/config/initializers/mime_types.rb +4 -0
  72. data/example/rails_app/config/initializers/rabbit_feed.rb +43 -0
  73. data/example/rails_app/config/initializers/session_store.rb +3 -0
  74. data/example/rails_app/config/initializers/wrap_parameters.rb +14 -0
  75. data/example/rails_app/config/locales/en.yml +23 -0
  76. data/example/rails_app/config/rabbit_feed.yml +8 -0
  77. data/example/rails_app/config/routes.rb +58 -0
  78. data/example/rails_app/config/secrets.yml +18 -0
  79. data/example/rails_app/config/unicorn.rb +4 -0
  80. data/example/rails_app/db/migrate/20140424102400_create_beavers.rb +9 -0
  81. data/example/rails_app/db/schema.rb +22 -0
  82. data/example/rails_app/db/seeds.rb +7 -0
  83. data/example/rails_app/lib/assets/.keep +0 -0
  84. data/example/rails_app/lib/event_handler.rb +7 -0
  85. data/example/rails_app/lib/tasks/.keep +0 -0
  86. data/example/rails_app/log/.keep +0 -0
  87. data/example/rails_app/public/404.html +67 -0
  88. data/example/rails_app/public/422.html +67 -0
  89. data/example/rails_app/public/500.html +66 -0
  90. data/example/rails_app/public/favicon.ico +0 -0
  91. data/example/rails_app/public/robots.txt +5 -0
  92. data/example/rails_app/spec/controllers/beavers_controller_spec.rb +32 -0
  93. data/example/rails_app/spec/event_routing_spec.rb +15 -0
  94. data/example/rails_app/spec/spec_helper.rb +51 -0
  95. data/example/rails_app/test/controllers/.keep +0 -0
  96. data/example/rails_app/test/controllers/beavers_controller_test.rb +49 -0
  97. data/example/rails_app/test/fixtures/.keep +0 -0
  98. data/example/rails_app/test/fixtures/beavers.yml +7 -0
  99. data/example/rails_app/test/helpers/.keep +0 -0
  100. data/example/rails_app/test/helpers/beavers_helper_test.rb +4 -0
  101. data/example/rails_app/test/integration/.keep +0 -0
  102. data/example/rails_app/test/mailers/.keep +0 -0
  103. data/example/rails_app/test/models/.keep +0 -0
  104. data/example/rails_app/test/models/beaver_test.rb +7 -0
  105. data/example/rails_app/test/test_helper.rb +13 -0
  106. data/example/rails_app/tmp/pids/.keep +0 -0
  107. data/example/rails_app/vendor/assets/javascripts/.keep +0 -0
  108. data/example/rails_app/vendor/assets/stylesheets/.keep +0 -0
  109. data/lib/dsl.rb +9 -0
  110. data/lib/rabbit_feed.rb +41 -0
  111. data/lib/rabbit_feed/client.rb +181 -0
  112. data/lib/rabbit_feed/configuration.rb +50 -0
  113. data/lib/rabbit_feed/connection_concern.rb +95 -0
  114. data/lib/rabbit_feed/consumer.rb +14 -0
  115. data/lib/rabbit_feed/consumer_connection.rb +108 -0
  116. data/lib/rabbit_feed/event.rb +43 -0
  117. data/lib/rabbit_feed/event_definitions.rb +98 -0
  118. data/lib/rabbit_feed/event_routing.rb +90 -0
  119. data/lib/rabbit_feed/producer.rb +47 -0
  120. data/lib/rabbit_feed/producer_connection.rb +65 -0
  121. data/lib/rabbit_feed/testing_support/rspec_matchers/publish_event.rb +90 -0
  122. data/lib/rabbit_feed/testing_support/testing_helpers.rb +16 -0
  123. data/lib/rabbit_feed/version.rb +3 -0
  124. data/logo.png +0 -0
  125. data/rabbit_feed.gemspec +35 -0
  126. data/run_benchmark +35 -0
  127. data/run_example +62 -0
  128. data/run_recovery_test +26 -0
  129. data/spec/features/connectivity.feature +13 -0
  130. data/spec/features/step_definitions/connectivity_steps.rb +96 -0
  131. data/spec/fixtures/configuration.yml +14 -0
  132. data/spec/lib/rabbit_feed/client_spec.rb +116 -0
  133. data/spec/lib/rabbit_feed/configuration_spec.rb +121 -0
  134. data/spec/lib/rabbit_feed/connection_concern_spec.rb +116 -0
  135. data/spec/lib/rabbit_feed/consumer_connection_spec.rb +85 -0
  136. data/spec/lib/rabbit_feed/event_definitions_spec.rb +139 -0
  137. data/spec/lib/rabbit_feed/event_routing_spec.rb +121 -0
  138. data/spec/lib/rabbit_feed/event_spec.rb +33 -0
  139. data/spec/lib/rabbit_feed/producer_connection_spec.rb +72 -0
  140. data/spec/lib/rabbit_feed/producer_spec.rb +57 -0
  141. data/spec/lib/rabbit_feed/testing_support/rspec_matchers/publish_event_spec.rb +60 -0
  142. data/spec/lib/rabbit_feed/testing_support/testing_helper_spec.rb +34 -0
  143. data/spec/spec_helper.rb +58 -0
  144. data/spec/support/shared_examples_for_connections.rb +40 -0
  145. metadata +305 -0
data/Rakefile ADDED
@@ -0,0 +1,30 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ desc 'Default: run specs and features'
5
+ task :default => [:all]
6
+
7
+ desc 'Run specs and features'
8
+ RSpec::Core::RakeTask.new(:all) do |t|
9
+ t.pattern = './spec/{**/*_spec.rb,features/**/*.feature}'
10
+ end
11
+
12
+ desc 'Run specs'
13
+ RSpec::Core::RakeTask.new(:spec) do |t|
14
+ t.pattern = './spec/{**/*_spec.rb}'
15
+ end
16
+
17
+ def gemspec
18
+ @gemspec ||= eval(File.read('rabbit_feed.gemspec'))
19
+ end
20
+
21
+ desc 'Validate gemspec'
22
+ task :validate_gemspec do
23
+ gemspec.validate
24
+ end
25
+
26
+ desc 'Print version'
27
+ task :version do
28
+ puts gemspec.version
29
+ end
30
+
data/bin/bundle ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
data/bin/rabbit_feed ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require_relative '../lib/rabbit_feed'
5
+
6
+ # Prevent deprecation warnings
7
+ I18n.enforce_available_locales = true
8
+
9
+ client = RabbitFeed::Client.new
10
+ client.run
11
+
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rabbit_feed', path: '../../'
4
+
5
+ gem 'rake'
6
+
7
+ gem 'rspec', group: :test
@@ -0,0 +1,56 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ rabbit_feed (0.3.1)
5
+ activemodel
6
+ activesupport
7
+ avro
8
+ bunny
9
+ connection_pool
10
+ pidfile
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ activemodel (4.1.6)
16
+ activesupport (= 4.1.6)
17
+ builder (~> 3.1)
18
+ activesupport (4.1.6)
19
+ i18n (~> 0.6, >= 0.6.9)
20
+ json (~> 1.7, >= 1.7.7)
21
+ minitest (~> 5.1)
22
+ thread_safe (~> 0.1)
23
+ tzinfo (~> 1.1)
24
+ amq-protocol (1.9.2)
25
+ avro (1.7.7)
26
+ multi_json
27
+ builder (3.2.2)
28
+ bunny (1.6.3)
29
+ amq-protocol (>= 1.9.2)
30
+ connection_pool (2.0.0)
31
+ diff-lcs (1.2.5)
32
+ i18n (0.6.11)
33
+ json (1.8.1)
34
+ minitest (5.4.2)
35
+ multi_json (1.10.1)
36
+ pidfile (0.3.0)
37
+ rake (10.3.1)
38
+ rspec (2.14.1)
39
+ rspec-core (~> 2.14.0)
40
+ rspec-expectations (~> 2.14.0)
41
+ rspec-mocks (~> 2.14.0)
42
+ rspec-core (2.14.8)
43
+ rspec-expectations (2.14.5)
44
+ diff-lcs (>= 1.1.3, < 2.0)
45
+ rspec-mocks (2.14.6)
46
+ thread_safe (0.3.4)
47
+ tzinfo (1.2.2)
48
+ thread_safe (~> 0.1)
49
+
50
+ PLATFORMS
51
+ ruby
52
+
53
+ DEPENDENCIES
54
+ rabbit_feed!
55
+ rake
56
+ rspec
@@ -0,0 +1,5 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ task :default => :spec
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'benchmark'
4
+ require 'bundler/setup'
5
+ require_relative '../lib/non_rails_app'
6
+
7
+ # Prevent deprecation warnings
8
+ I18n.enforce_available_locales = true
9
+
10
+ RabbitFeed.instance_eval do
11
+ self.log = Logger.new 'log/rabbit_feed.log'
12
+ self.log.level = Logger::DEBUG
13
+ self.environment = 'development'
14
+ self.configuration_file_path = 'config/rabbit_feed.yml'
15
+ end
16
+
17
+ payload = 'abc'*5000
18
+ number_of_events = 5000
19
+
20
+ EventDefinitions do
21
+ define_event('test_event', version: '1.0.0') do
22
+ defined_as do
23
+ 'An event used in the benchmarking tests'
24
+ end
25
+ payload_contains do
26
+ field('data', type: 'string', definition: 'A large chunk of text')
27
+ end
28
+ end
29
+ end
30
+
31
+ puts "Publishing #{number_of_events} events..."
32
+ Benchmark.bm do |x|
33
+ x.report { number_of_events.times { RabbitFeed::Producer.publish_event 'test_event', { 'data' => payload } } }
34
+ end
35
+
36
+ events_consumed = 0
37
+
38
+ EventRouting do
39
+ accept_from('non_rails_app') do
40
+ event('test_event') do |event|
41
+ events_consumed += 1
42
+ Thread.main.raise Interrupt if events_consumed >= number_of_events
43
+ end
44
+ end
45
+ accept_from('rails_app') do
46
+ event('user_creates_beaver') do |event|
47
+ end
48
+ event('user_updates_beaver') do |event|
49
+ end
50
+ event('user_deletes_beaver') do |event|
51
+ end
52
+ end
53
+ end
54
+
55
+ puts "Consuming #{number_of_events} events..."
56
+ Benchmark.bm do |x|
57
+ x.report do
58
+ begin
59
+ RabbitFeed::Consumer.run
60
+ rescue Interrupt
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,8 @@
1
+ development:
2
+ host: localhost
3
+ port: 5672
4
+ user: guest
5
+ password: guest
6
+ application: non_rails_app
7
+ test:
8
+ application: non_rails_app
@@ -0,0 +1,32 @@
1
+ require 'rabbit_feed'
2
+ require_relative 'non_rails_app/event_handler'
3
+
4
+ EventRouting do
5
+ accept_from('rails_app') do
6
+ event('user_creates_beaver') do |event|
7
+ NonRailsApp::EventHandler.handle_event event
8
+ end
9
+ event('user_updates_beaver') do |event|
10
+ NonRailsApp::EventHandler.handle_event event
11
+ end
12
+ event('user_deletes_beaver') do |event|
13
+ NonRailsApp::EventHandler.handle_event event
14
+ end
15
+ end
16
+ accept_from('non_rails_app') do
17
+ event('test_event') do |event|
18
+ end
19
+ end
20
+ end
21
+
22
+ EventDefinitions do
23
+ define_event('application_acknowledges_event', version: '1.0.0') do
24
+ defined_as do
25
+ 'An event has been acknowledged'
26
+ end
27
+ payload_contains do
28
+ field('beaver_name', type: 'string', definition: 'The name of the beaver')
29
+ field('event_name', type: 'string', definition: 'The name of the original event')
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,10 @@
1
+ module NonRailsApp
2
+ module EventHandler
3
+ extend self
4
+
5
+ def handle_event event
6
+ puts "NonRailsApp::EventHandler - Consumed event: #{event.name} with payload: #{event.payload}"
7
+ RabbitFeed::Producer.publish_event 'application_acknowledges_event', ({ 'event_name' => event.name }.merge event.payload)
8
+ end
9
+ end
10
+ end
File without changes
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ module NonRailsApp
4
+ describe EventHandler do
5
+
6
+ describe '#handle_event' do
7
+ it 'publishes an update event' do
8
+ expect{
9
+ described_class.handle_event double(:event, name: 'user_updates_beaver', payload: { 'beaver_name' => 'beaver' })
10
+ }.to publish_event('application_acknowledges_event', { 'beaver_name' => 'beaver', 'event_name' => 'user_updates_beaver' })
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ module NonRailsApp
4
+ describe 'Event Routing' do
5
+
6
+ include RabbitFeed::TestingSupport::TestingHelpers
7
+
8
+ let(:event) { {'application' => 'rails_app', 'name' => 'user_creates_beaver'} }
9
+ it 'routes events correctly' do
10
+ expect(NonRailsApp::EventHandler).to receive(:handle_event).with { |full_event| expect(full_event.payload).to eq(event)}
11
+ rabbit_feed_consumer.consume_event(event)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ require 'non_rails_app'
2
+
3
+ RSpec.configure do |config|
4
+ # ## Mock Framework
5
+ #
6
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
7
+ #
8
+ # config.mock_with :mocha
9
+ # config.mock_with :flexmock
10
+ # config.mock_with :rr
11
+
12
+ # Run specs in random order to surface order dependencies. If you find an
13
+ # order dependency and want to debug it, you can fix the order by providing
14
+ # the seed, which is printed after each run.
15
+ # --seed 1234
16
+ config.order = "random"
17
+
18
+ config.mock_with :rspec do |c|
19
+ c.syntax = [:should, :expect]
20
+ end
21
+
22
+ config.before :each do
23
+ RabbitFeed::Producer.stub!
24
+ end
25
+
26
+ config.include(RabbitFeed::TestingSupport::RSpecMatchers)
27
+ end
28
+
29
+ RabbitFeed.log = Logger.new('test.log')
30
+ RabbitFeed.environment = 'test'
31
+ RabbitFeed.configuration_file_path = 'config/rabbit_feed.yml'
File without changes
@@ -0,0 +1,17 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore the default SQLite database.
11
+ /db/*.sqlite3
12
+ /db/*.sqlite3-journal
13
+
14
+ # Ignore all logfiles and temp files.
15
+ /log/*.log
16
+ /tmp/cache
17
+ /tmp/pids/*.pid
@@ -0,0 +1 @@
1
+ v0.10
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,36 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
4
+ gem 'rails', '4.1.0'
5
+ # Use sqlite3 as the database for Active Record
6
+ gem 'sqlite3'
7
+ # Use SCSS for stylesheets
8
+ gem 'sass-rails', '~> 4.0.3'
9
+ # Use Uglifier as compressor for JavaScript assets
10
+ gem 'uglifier', '>= 1.3.0'
11
+ # Use CoffeeScript for .js.coffee assets and views
12
+ gem 'coffee-rails', '~> 4.0.0'
13
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
14
+ # gem 'therubyracer', platforms: :ruby
15
+
16
+ # Use jquery as the JavaScript library
17
+ gem 'jquery-rails'
18
+ # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
19
+ gem 'turbolinks'
20
+ # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
21
+ gem 'jbuilder', '~> 2.0'
22
+ # bundle exec rake doc:rails generates the API under doc/api.
23
+ gem 'sdoc', '~> 0.4.0', group: :doc
24
+
25
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
26
+ gem 'spring', group: :development
27
+
28
+ # Use unicorn as the app server
29
+ gem 'unicorn'
30
+
31
+ # Use Capistrano for deployment
32
+ # gem 'capistrano-rails', group: :development
33
+
34
+ gem 'rabbit_feed', path: '../../'
35
+
36
+ gem 'rspec-rails', group: :test
@@ -0,0 +1,173 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ rabbit_feed (0.3.1)
5
+ activemodel
6
+ activesupport
7
+ avro
8
+ bunny
9
+ connection_pool
10
+ pidfile
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ actionmailer (4.1.0)
16
+ actionpack (= 4.1.0)
17
+ actionview (= 4.1.0)
18
+ mail (~> 2.5.4)
19
+ actionpack (4.1.0)
20
+ actionview (= 4.1.0)
21
+ activesupport (= 4.1.0)
22
+ rack (~> 1.5.2)
23
+ rack-test (~> 0.6.2)
24
+ actionview (4.1.0)
25
+ activesupport (= 4.1.0)
26
+ builder (~> 3.1)
27
+ erubis (~> 2.7.0)
28
+ activemodel (4.1.0)
29
+ activesupport (= 4.1.0)
30
+ builder (~> 3.1)
31
+ activerecord (4.1.0)
32
+ activemodel (= 4.1.0)
33
+ activesupport (= 4.1.0)
34
+ arel (~> 5.0.0)
35
+ activesupport (4.1.0)
36
+ i18n (~> 0.6, >= 0.6.9)
37
+ json (~> 1.7, >= 1.7.7)
38
+ minitest (~> 5.1)
39
+ thread_safe (~> 0.1)
40
+ tzinfo (~> 1.1)
41
+ amq-protocol (1.9.2)
42
+ arel (5.0.1.20140414130214)
43
+ avro (1.7.7)
44
+ multi_json
45
+ builder (3.2.2)
46
+ bunny (1.6.3)
47
+ amq-protocol (>= 1.9.2)
48
+ coffee-rails (4.0.1)
49
+ coffee-script (>= 2.2.0)
50
+ railties (>= 4.0.0, < 5.0)
51
+ coffee-script (2.2.0)
52
+ coffee-script-source
53
+ execjs
54
+ coffee-script-source (1.7.0)
55
+ connection_pool (2.0.0)
56
+ diff-lcs (1.2.5)
57
+ erubis (2.7.0)
58
+ execjs (2.0.2)
59
+ hike (1.2.3)
60
+ i18n (0.6.9)
61
+ jbuilder (2.0.6)
62
+ activesupport (>= 3.0.0, < 5)
63
+ multi_json (~> 1.2)
64
+ jquery-rails (3.1.0)
65
+ railties (>= 3.0, < 5.0)
66
+ thor (>= 0.14, < 2.0)
67
+ json (1.8.1)
68
+ kgio (2.8.1)
69
+ mail (2.5.4)
70
+ mime-types (~> 1.16)
71
+ treetop (~> 1.4.8)
72
+ mime-types (1.25.1)
73
+ minitest (5.3.3)
74
+ multi_json (1.9.3)
75
+ pidfile (0.3.0)
76
+ polyglot (0.3.4)
77
+ rack (1.5.2)
78
+ rack-test (0.6.2)
79
+ rack (>= 1.0)
80
+ rails (4.1.0)
81
+ actionmailer (= 4.1.0)
82
+ actionpack (= 4.1.0)
83
+ actionview (= 4.1.0)
84
+ activemodel (= 4.1.0)
85
+ activerecord (= 4.1.0)
86
+ activesupport (= 4.1.0)
87
+ bundler (>= 1.3.0, < 2.0)
88
+ railties (= 4.1.0)
89
+ sprockets-rails (~> 2.0)
90
+ railties (4.1.0)
91
+ actionpack (= 4.1.0)
92
+ activesupport (= 4.1.0)
93
+ rake (>= 0.8.7)
94
+ thor (>= 0.18.1, < 2.0)
95
+ raindrops (0.12.0)
96
+ rake (10.3.1)
97
+ rdoc (4.1.1)
98
+ json (~> 1.4)
99
+ rspec-collection_matchers (0.0.4)
100
+ rspec-expectations (>= 2.99.0.beta1)
101
+ rspec-core (3.0.0.beta2)
102
+ rspec-support (= 3.0.0.beta2)
103
+ rspec-expectations (3.0.0.beta2)
104
+ diff-lcs (>= 1.2.0, < 2.0)
105
+ rspec-support (= 3.0.0.beta2)
106
+ rspec-mocks (3.0.0.beta2)
107
+ rspec-support (= 3.0.0.beta2)
108
+ rspec-rails (3.0.0.beta2)
109
+ actionpack (>= 3.0)
110
+ activemodel (>= 3.0)
111
+ activesupport (>= 3.0)
112
+ railties (>= 3.0)
113
+ rspec-collection_matchers
114
+ rspec-core (= 3.0.0.beta2)
115
+ rspec-expectations (= 3.0.0.beta2)
116
+ rspec-mocks (= 3.0.0.beta2)
117
+ rspec-support (= 3.0.0.beta2)
118
+ rspec-support (3.0.0.beta2)
119
+ sass (3.2.19)
120
+ sass-rails (4.0.3)
121
+ railties (>= 4.0.0, < 5.0)
122
+ sass (~> 3.2.0)
123
+ sprockets (~> 2.8, <= 2.11.0)
124
+ sprockets-rails (~> 2.0)
125
+ sdoc (0.4.0)
126
+ json (~> 1.8)
127
+ rdoc (~> 4.0, < 5.0)
128
+ spring (1.1.2)
129
+ sprockets (2.11.0)
130
+ hike (~> 1.2)
131
+ multi_json (~> 1.0)
132
+ rack (~> 1.0)
133
+ tilt (~> 1.1, != 1.3.0)
134
+ sprockets-rails (2.1.3)
135
+ actionpack (>= 3.0)
136
+ activesupport (>= 3.0)
137
+ sprockets (~> 2.8)
138
+ sqlite3 (1.3.9)
139
+ thor (0.19.1)
140
+ thread_safe (0.3.3)
141
+ tilt (1.4.1)
142
+ treetop (1.4.15)
143
+ polyglot
144
+ polyglot (>= 0.3.1)
145
+ turbolinks (2.2.2)
146
+ coffee-rails
147
+ tzinfo (1.1.0)
148
+ thread_safe (~> 0.1)
149
+ uglifier (2.5.0)
150
+ execjs (>= 0.3.0)
151
+ json (>= 1.8.0)
152
+ unicorn (4.7.0)
153
+ kgio (~> 2.6)
154
+ rack
155
+ raindrops (~> 0.7)
156
+
157
+ PLATFORMS
158
+ ruby
159
+
160
+ DEPENDENCIES
161
+ coffee-rails (~> 4.0.0)
162
+ jbuilder (~> 2.0)
163
+ jquery-rails
164
+ rabbit_feed!
165
+ rails (= 4.1.0)
166
+ rspec-rails
167
+ sass-rails (~> 4.0.3)
168
+ sdoc (~> 0.4.0)
169
+ spring
170
+ sqlite3
171
+ turbolinks
172
+ uglifier (>= 1.3.0)
173
+ unicorn