alondra 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- alondra (0.1.0)
4
+ alondra (0.1.1)
5
5
  daemons
6
6
  em-websocket
7
7
  em-zeromq (= 0.3.0)
data/README.md CHANGED
@@ -161,10 +161,10 @@ In the shell execute the generator.
161
161
  $ rails g alondra install
162
162
  </pre>
163
163
 
164
- To run the Alondra server, just call the generated script
164
+ To run the Alondra server, just call the provided executable in your project directory
165
165
 
166
166
  <pre>
167
- $ script/alondra start
167
+ $ bundle exec alondra
168
168
  </pre>
169
169
 
170
170
  In development mode you can also run the Alondra server in its own thread.
@@ -8,6 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.version = Alondra::VERSION
9
9
  s.authors = ['Alberto F. Capel', 'Ryan LeCompte']
10
10
 
11
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
12
  s.files = `git ls-files`.split("\n")
12
13
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
14
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ options = {}
4
+
5
+ parser = OptionParser.new do |opts|
6
+ opts.on "-p", "--port PORT", Integer,
7
+ "Define what port TCP port to bind to (default: 3000)" do |arg|
8
+ options[:port] = arg
9
+ end
10
+
11
+ opts.on "-a", "--address HOST",
12
+ "bind to HOST address (default: 0.0.0.0)" do |arg|
13
+ options[:host] = arg
14
+ end
15
+
16
+ opts.on "-s", "--queue-socket PATH", "Socket for IPC communication" do
17
+ options[:quiet] = true
18
+ end
19
+
20
+ opts.on "-e", "--environment ENVIRONMENT",
21
+ "The environment to run the Rack app on (default: development)" do |arg|
22
+ ENV['RACK_ENV'] ||= arg
23
+ end
24
+ end
25
+
26
+ parser.banner = "alondra <options>"
27
+
28
+ parser.on_tail "-h", "--help", "Show help" do
29
+ puts parser
30
+ exit 1
31
+ end
32
+
33
+ parser.parse(ARGV)
34
+
35
+ ENV['RACK_ENV'] ||= 'development'
36
+
37
+ require './config/environment'
38
+ require 'alondra'
39
+
40
+
41
+ Alondra::Alondra.start_with_options(options)
42
+
43
+ puts "Alondra server started at port #{Alondra::Alondra.config.port}"
44
+
45
+ sleep
@@ -25,9 +25,9 @@ module Alondra
25
25
 
26
26
  # Setting default configuration values
27
27
  config.port = Rails.env == 'test' ? 12346 : 12345
28
- config.host = 'localhost'
28
+ config.host = '0.0.0.0'
29
29
  config.queue_socket = 'ipc:///tmp/alondra.ipc'
30
-
30
+
31
31
  initializer "configure EM thread pool" do
32
32
  # If we have more threads than db connections we will exhaust the conn pool
33
33
  threadpool_size = ActiveRecord::Base.connection_pool.instance_variable_get :@size
@@ -41,15 +41,22 @@ module Alondra
41
41
 
42
42
  initializer "load listeners" do
43
43
  listeners_dir = File.join(Rails.root, 'app', 'listeners')
44
-
44
+
45
45
  Log.info "Loading event listeners in #{listeners_dir}"
46
46
  Dir[File.join(listeners_dir, '*.rb')].each { |file| require_dependency file }
47
47
  end
48
-
48
+
49
49
  config.after_initialize do
50
50
  PushController.send :include, Rails.application.routes.url_helpers
51
51
  end
52
52
 
53
+ def self.start_with_options(options)
54
+ options.each do |k, v|
55
+ config.send "#{k}=", v
56
+ end
57
+ start_server_in_new_thread!
58
+ end
59
+
53
60
  def self.start_server_in_new_thread!
54
61
  Thread.new do
55
62
  start_server!
@@ -61,9 +68,9 @@ module Alondra
61
68
  MessageQueue.instance.start_listening
62
69
  Server.run
63
70
  end
64
-
71
+
65
72
  if EM.reactor_running?
66
- EM.schedule(start_server_proc)
73
+ EM.schedule(start_server_proc)
67
74
  else
68
75
  Log.info "starting EM reactor"
69
76
  EM.run(start_server_proc)
@@ -1,3 +1,3 @@
1
1
  module Alondra
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -9,7 +9,7 @@ module Alondra
9
9
  end
10
10
 
11
11
  test "it allows to override default values" do
12
- assert_equal 'localhost', Alondra.config.host
12
+ assert_equal '0.0.0.0', Alondra.config.host
13
13
  Alondra.config.host = 'www.example.com'
14
14
  assert_equal 'www.example.com', Alondra.config.host
15
15
  end
@@ -17,28 +17,28 @@ module Alondra
17
17
  MessageQueue.instance.instance_variable_set :@event_router, @original_event_router
18
18
  end
19
19
 
20
- # test "a message pushed asynchronously to the queue is received by the event router" do
21
- # assert MessageQueueClient.instance.class == AsyncMessageQueueClient
22
- #
23
- # MessageQueueClient.push @event
24
- #
25
- # sleep(0.1)
26
- #
27
- # assert received(@event)
28
- # end
29
- #
30
- # test "a message pushed synchronously to the queue is received by the event router" do
31
- #
32
- # client = MessageQueueClient.sync_instance
33
- # context = client.send :context
34
- # assert context.class == ZMQ::Context
35
- #
36
- # client.send_message(@event)
37
- #
38
- # sleep(0.1)
39
- #
40
- # assert received(@event)
41
- # end
20
+ test "a message pushed asynchronously to the queue is received by the event router" do
21
+ assert MessageQueueClient.instance.class == AsyncMessageQueueClient
22
+
23
+ MessageQueueClient.push @event
24
+
25
+ sleep(0.1)
26
+
27
+ assert received(@event)
28
+ end
29
+
30
+ test "a message pushed synchronously to the queue is received by the event router" do
31
+
32
+ client = MessageQueueClient.sync_instance
33
+ context = client.send :context
34
+ assert context.class == ZMQ::Context
35
+
36
+ client.send_message(@event)
37
+
38
+ sleep(0.1)
39
+
40
+ assert received(@event)
41
+ end
42
42
 
43
43
  test "message queue still works when an exception is thrown while processing an event" do
44
44
  3.times do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alondra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-12 00:00:00.000000000 Z
13
+ date: 2012-09-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: daemons
@@ -94,7 +94,8 @@ dependencies:
94
94
  version: 0.3.0
95
95
  description: Add real time capabilities to your rails app
96
96
  email:
97
- executables: []
97
+ executables:
98
+ - alondra
98
99
  extensions: []
99
100
  extra_rdoc_files: []
100
101
  files:
@@ -113,6 +114,7 @@ files:
113
114
  - app/assets/javascripts/vendor/web_socket.js
114
115
  - app/assets/swf/WebSocketMain.swf
115
116
  - app/helpers/alondra_helper.rb
117
+ - bin/alondra
116
118
  - lib/alondra.rb
117
119
  - lib/alondra/changes_callbacks.rb
118
120
  - lib/alondra/changes_push.rb
@@ -230,7 +232,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
232
  version: '0'
231
233
  segments:
232
234
  - 0
233
- hash: 3172633701329526512
235
+ hash: -3383866246703754523
234
236
  required_rubygems_version: !ruby/object:Gem::Requirement
235
237
  none: false
236
238
  requirements:
@@ -239,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
241
  version: '0'
240
242
  segments:
241
243
  - 0
242
- hash: 3172633701329526512
244
+ hash: -3383866246703754523
243
245
  requirements: []
244
246
  rubyforge_project:
245
247
  rubygems_version: 1.8.23