foreign_office 0.0.2

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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/javascripts/debug_logger.js +22 -0
  6. data/app/assets/javascripts/foreign_office.js +229 -0
  7. data/lib/foreign_office.rb +68 -0
  8. data/lib/foreign_office/busses/generic_bus.rb +4 -0
  9. data/lib/foreign_office/busses/pubnub_bus.rb +34 -0
  10. data/lib/foreign_office/busses/pusher_bus.rb +2 -0
  11. data/lib/foreign_office/version.rb +3 -0
  12. data/lib/tasks/foreign_office_tasks.rake +4 -0
  13. data/test/dummy/README.rdoc +28 -0
  14. data/test/dummy/Rakefile +6 -0
  15. data/test/dummy/app/assets/javascripts/application.js +13 -0
  16. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  17. data/test/dummy/app/controllers/application_controller.rb +5 -0
  18. data/test/dummy/app/helpers/application_helper.rb +2 -0
  19. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  20. data/test/dummy/bin/bundle +3 -0
  21. data/test/dummy/bin/rails +4 -0
  22. data/test/dummy/bin/rake +4 -0
  23. data/test/dummy/config.ru +4 -0
  24. data/test/dummy/config/application.rb +23 -0
  25. data/test/dummy/config/boot.rb +5 -0
  26. data/test/dummy/config/database.yml +25 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +37 -0
  29. data/test/dummy/config/environments/production.rb +82 -0
  30. data/test/dummy/config/environments/test.rb +39 -0
  31. data/test/dummy/config/initializers/assets.rb +8 -0
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  33. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  34. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  35. data/test/dummy/config/initializers/inflections.rb +16 -0
  36. data/test/dummy/config/initializers/mime_types.rb +4 -0
  37. data/test/dummy/config/initializers/session_store.rb +3 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  39. data/test/dummy/config/locales/en.yml +23 -0
  40. data/test/dummy/config/routes.rb +56 -0
  41. data/test/dummy/config/secrets.yml +22 -0
  42. data/test/dummy/db/test.sqlite3 +0 -0
  43. data/test/dummy/log/test.log +288 -0
  44. data/test/dummy/public/404.html +67 -0
  45. data/test/dummy/public/422.html +67 -0
  46. data/test/dummy/public/500.html +66 -0
  47. data/test/dummy/public/favicon.ico +0 -0
  48. data/test/foreign_office_test.rb +51 -0
  49. data/test/test_helper.rb +18 -0
  50. metadata +188 -0
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ class ForeignOfficeTest < MiniTest::Unit::TestCase
4
+ describe "ForeignOffice" do
5
+ before do
6
+ @bus = Minitest::Mock.new
7
+ ForeignOffice.bus = @bus
8
+ end
9
+ describe "caches messages when asked" do
10
+ before do
11
+ ForeignOffice.cache_messages
12
+ end
13
+ it "caches multiple messages" do
14
+ ForeignOffice.publish({channel: 'TestMe', object: {this: 'is a test'}})
15
+ ForeignOffice.publish({channel: 'TestMeAgain', object: {this: 'is another test'}})
16
+ RequestStore.store[:foreign_office_messages].length.must_equal 2
17
+ end
18
+ it "only caches the last message in each channel" do
19
+ ForeignOffice.publish({channel: 'TestMe', object: {this: 'is a test'}})
20
+ ForeignOffice.publish({channel: 'TestMe', object: {this: 'is another test'}})
21
+ RequestStore.store[:foreign_office_messages]['TestMe'][:object][:this].must_equal 'is another test'
22
+ end
23
+ it "sends all cached messages to the bus when flushed" do
24
+ ForeignOffice.publish({channel: 'TestMe', object: {this: 'is a test'}})
25
+ ForeignOffice.publish({channel: 'TestMeAgain', object: {this: 'is another test'}})
26
+ @bus.expect :publish, nil, [{channel: 'TestMe', object: {this: 'is a test'}}]
27
+ @bus.expect :publish, nil, [{channel: 'TestMeAgain', object: {this: 'is another test'}}]
28
+ ForeignOffice.flush_messages
29
+ @bus.verify
30
+ end
31
+ end
32
+ describe "doesn't have to cache" do
33
+ before do
34
+ ForeignOffice.publish_directly
35
+ end
36
+ it "publishes messages directly when not caching" do
37
+ @bus.expect :publish, nil, [{channel: 'TestMe', object: {this: 'is a test'}}]
38
+ ForeignOffice.publish({channel: 'TestMe', object: {this: 'is a test'}})
39
+ @bus.verify
40
+ end
41
+ end
42
+ describe "offers custom publishing" do
43
+ it "publishes with a custom method if provided" do
44
+ ForeignOffice.set_publish_method { |msg| p @bus.custom_publish msg }
45
+ @bus.expect :custom_publish, nil, [{channel: 'TestMe', object: {this: 'is a test'}}]
46
+ ForeignOffice.publish({channel: 'TestMe', object: {this: 'is a test'}})
47
+ @bus.verify
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,18 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+ require 'minitest/unit'
7
+ require 'minitest/autorun'
8
+ require 'minitest/pride'
9
+
10
+ Rails.backtrace_cleaner.remove_silencers!
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ end
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreign_office
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Eric Draut
8
+ - Adam Bialek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-08-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 4.1.5
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 4.1.5
28
+ - !ruby/object:Gem::Dependency
29
+ name: request_store
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: sqlite3
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ description: Description of ForeignOffice.
71
+ email:
72
+ - edraut@gmail.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - MIT-LICENSE
78
+ - README.rdoc
79
+ - Rakefile
80
+ - app/assets/javascripts/debug_logger.js
81
+ - app/assets/javascripts/foreign_office.js
82
+ - lib/foreign_office.rb
83
+ - lib/foreign_office/busses/generic_bus.rb
84
+ - lib/foreign_office/busses/pubnub_bus.rb
85
+ - lib/foreign_office/busses/pusher_bus.rb
86
+ - lib/foreign_office/version.rb
87
+ - lib/tasks/foreign_office_tasks.rake
88
+ - test/dummy/README.rdoc
89
+ - test/dummy/Rakefile
90
+ - test/dummy/app/assets/javascripts/application.js
91
+ - test/dummy/app/assets/stylesheets/application.css
92
+ - test/dummy/app/controllers/application_controller.rb
93
+ - test/dummy/app/helpers/application_helper.rb
94
+ - test/dummy/app/views/layouts/application.html.erb
95
+ - test/dummy/bin/bundle
96
+ - test/dummy/bin/rails
97
+ - test/dummy/bin/rake
98
+ - test/dummy/config.ru
99
+ - test/dummy/config/application.rb
100
+ - test/dummy/config/boot.rb
101
+ - test/dummy/config/database.yml
102
+ - test/dummy/config/environment.rb
103
+ - test/dummy/config/environments/development.rb
104
+ - test/dummy/config/environments/production.rb
105
+ - test/dummy/config/environments/test.rb
106
+ - test/dummy/config/initializers/assets.rb
107
+ - test/dummy/config/initializers/backtrace_silencers.rb
108
+ - test/dummy/config/initializers/cookies_serializer.rb
109
+ - test/dummy/config/initializers/filter_parameter_logging.rb
110
+ - test/dummy/config/initializers/inflections.rb
111
+ - test/dummy/config/initializers/mime_types.rb
112
+ - test/dummy/config/initializers/session_store.rb
113
+ - test/dummy/config/initializers/wrap_parameters.rb
114
+ - test/dummy/config/locales/en.yml
115
+ - test/dummy/config/routes.rb
116
+ - test/dummy/config/secrets.yml
117
+ - test/dummy/db/test.sqlite3
118
+ - test/dummy/log/test.log
119
+ - test/dummy/public/404.html
120
+ - test/dummy/public/422.html
121
+ - test/dummy/public/500.html
122
+ - test/dummy/public/favicon.ico
123
+ - test/foreign_office_test.rb
124
+ - test/test_helper.rb
125
+ homepage: https://github.com/edraut/foreign-office
126
+ licenses:
127
+ - MIT
128
+ metadata: {}
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 2.2.2
146
+ signing_key:
147
+ specification_version: 4
148
+ summary: A light framework that provides functionality for listeners on web clients
149
+ and publishers on ruby servers. Keep your business logic on the server whenever
150
+ you can!
151
+ test_files:
152
+ - test/dummy/app/assets/javascripts/application.js
153
+ - test/dummy/app/assets/stylesheets/application.css
154
+ - test/dummy/app/controllers/application_controller.rb
155
+ - test/dummy/app/helpers/application_helper.rb
156
+ - test/dummy/app/views/layouts/application.html.erb
157
+ - test/dummy/bin/bundle
158
+ - test/dummy/bin/rails
159
+ - test/dummy/bin/rake
160
+ - test/dummy/config/application.rb
161
+ - test/dummy/config/boot.rb
162
+ - test/dummy/config/database.yml
163
+ - test/dummy/config/environment.rb
164
+ - test/dummy/config/environments/development.rb
165
+ - test/dummy/config/environments/production.rb
166
+ - test/dummy/config/environments/test.rb
167
+ - test/dummy/config/initializers/assets.rb
168
+ - test/dummy/config/initializers/backtrace_silencers.rb
169
+ - test/dummy/config/initializers/cookies_serializer.rb
170
+ - test/dummy/config/initializers/filter_parameter_logging.rb
171
+ - test/dummy/config/initializers/inflections.rb
172
+ - test/dummy/config/initializers/mime_types.rb
173
+ - test/dummy/config/initializers/session_store.rb
174
+ - test/dummy/config/initializers/wrap_parameters.rb
175
+ - test/dummy/config/locales/en.yml
176
+ - test/dummy/config/routes.rb
177
+ - test/dummy/config/secrets.yml
178
+ - test/dummy/config.ru
179
+ - test/dummy/db/test.sqlite3
180
+ - test/dummy/log/test.log
181
+ - test/dummy/public/404.html
182
+ - test/dummy/public/422.html
183
+ - test/dummy/public/500.html
184
+ - test/dummy/public/favicon.ico
185
+ - test/dummy/Rakefile
186
+ - test/dummy/README.rdoc
187
+ - test/foreign_office_test.rb
188
+ - test/test_helper.rb