rabbit_feed 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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