rflow 1.0.0a2 → 1.0.0a3

Sign up to get free protection for your applications and to get access to all the features.
@@ -43,11 +43,11 @@ class RFlow
43
43
  Configuration.add_available_data_extension('A::B::C', C = Module.new)
44
44
  Configuration.add_available_data_extension('A::B::C::D', D = Module.new)
45
45
 
46
- Configuration.available_data_extensions['A'].should == [A]
47
- Configuration.available_data_extensions['A::B'].should == [A, B]
48
- Configuration.available_data_extensions['A::B::C'].should == [A, B, C]
49
- Configuration.available_data_extensions['A::B::C::D'].should == [A, B, C, D]
50
- Configuration.available_data_extensions['A::B::C::D::E'].should == [A, B, C, D]
46
+ expect(Configuration.available_data_extensions['A']).to eq([A])
47
+ expect(Configuration.available_data_extensions['A::B']).to eq([A, B])
48
+ expect(Configuration.available_data_extensions['A::B::C']).to eq([A, B, C])
49
+ expect(Configuration.available_data_extensions['A::B::C::D']).to eq([A, B, C, D])
50
+ expect(Configuration.available_data_extensions['A::B::C::D::E']).to eq([A, B, C, D])
51
51
  end
52
52
  end
53
53
  end
@@ -11,23 +11,15 @@ class RFlow
11
11
  let(:dropped_message_connection) { RFlow::MessageCollectingConnection.new }
12
12
 
13
13
  let(:generator) do
14
- config = RFlow::Configuration::Component.new.tap do |c|
15
- c.output_ports << RFlow::Configuration::OutputPort.new(name: 'out')
16
- end
17
- RFlow::Components::GenerateIntegerSequence.new(config).tap do |c|
18
- c.configure! config.options
19
- c.out.add_connection nil, ForwardToInputPort.new(ruby_proc_filter, 'in', nil)
14
+ RFlow::Components::GenerateIntegerSequence.new.tap do |c|
15
+ c.configure!({})
16
+ c.out.direct_connect ruby_proc_filter.in
20
17
  end
21
18
  end
22
19
 
23
20
  let(:ruby_proc_filter) do
24
- config = RFlow::Configuration::Component.new.tap do |c|
25
- c.input_ports << RFlow::Configuration::InputPort.new(name: 'in')
26
- ['filtered', 'dropped'].each {|p| c.output_ports << RFlow::Configuration::OutputPort.new(name: p) }
27
- c.options = {'filter_proc_string' => 'message.data.data_object % 2 == 0'}
28
- end
29
- RFlow::Components::RubyProcFilter.new(config).tap do |c|
30
- c.configure! config.options
21
+ RFlow::Components::RubyProcFilter.new.tap do |c|
22
+ c.configure! 'filter_proc_string' => 'message.data.data_object % 2 == 0'
31
23
  c.filtered.add_connection nil, filtered_message_connection
32
24
  c.dropped.add_connection nil, dropped_message_connection
33
25
  end
@@ -36,12 +28,12 @@ class RFlow
36
28
  def filtered_messages; filtered_message_connection.messages; end
37
29
  def dropped_messages; dropped_message_connection.messages; end
38
30
 
39
- it 'foo' do
31
+ it 'should forward generated integers to be filtered by the proc filter' do
40
32
  5.times { generator.generate }
41
- filtered_messages.should have(3).messages
42
- filtered_messages.map(&:data).map(&:data_object).should == [0, 2, 4]
43
- dropped_messages.should have(2).messages
44
- dropped_messages.map(&:data).map(&:data_object).should == [1, 3]
33
+ expect(filtered_messages).to have(3).messages
34
+ expect(filtered_messages.map(&:data).map(&:data_object)).to eq([0, 2, 4])
35
+ expect(dropped_messages).to have(2).messages
36
+ expect(dropped_messages.map(&:data).map(&:data_object)).to eq([1, 3])
45
37
  end
46
38
  end
47
39
  end
@@ -10,22 +10,15 @@ class RFlow
10
10
  let(:message_connection) { RFlow::MessageCollectingConnection.new }
11
11
 
12
12
  let(:generator) do
13
- config = RFlow::Configuration::Component.new.tap do |c|
14
- c.output_ports << RFlow::Configuration::OutputPort.new(name: 'out')
15
- end
16
- RFlow::Components::GenerateIntegerSequence.new(config).tap do |c|
17
- c.configure! config.options
18
- c.out.add_connection nil, ForwardToOutputPort.new(ruby_proc_filter, 'filtered')
13
+ RFlow::Components::GenerateIntegerSequence.new.tap do |c|
14
+ c.configure!({})
15
+ c.out.direct_connect ruby_proc_filter.filtered
19
16
  end
20
17
  end
21
18
 
22
19
  let(:ruby_proc_filter) do
23
- config = RFlow::Configuration::Component.new.tap do |c|
24
- c.output_ports << RFlow::Configuration::OutputPort.new(name: 'filtered')
25
- c.options = {'filter_proc_string' => 'message % 2 == 0'}
26
- end
27
- RFlow::Components::RubyProcFilter.new(config).tap do |c|
28
- c.configure! config.options
20
+ RFlow::Components::RubyProcFilter.new.tap do |c|
21
+ c.configure! 'filter_proc_string' => 'message % 2 == 0'
29
22
  c.filtered.add_connection nil, message_connection
30
23
  end
31
24
  end
@@ -34,7 +27,7 @@ class RFlow
34
27
 
35
28
  it 'should place the messages on the output port, regardless of the filter' do
36
29
  5.times { generator.generate }
37
- messages.map(&:data).map(&:data_object).should == [0, 1, 2, 3, 4]
30
+ expect(messages.map(&:data).map(&:data_object)).to eq([0, 1, 2, 3, 4])
38
31
  end
39
32
  end
40
33
  end
@@ -18,10 +18,10 @@ class RFlow
18
18
  before(:each) { initialize_logger }
19
19
 
20
20
  it "should initialize correctly" do
21
- File.exist?(log_file_path).should be true
21
+ expect(File.exist?(log_file_path)).to be true
22
22
 
23
23
  logger.error "TESTTESTTEST"
24
- File.read(log_file_path).should match(/TESTTESTTEST/)
24
+ expect(File.read(log_file_path)).to match(/TESTTESTTEST/)
25
25
 
26
26
  logger.close
27
27
  end
@@ -29,16 +29,16 @@ class RFlow
29
29
  it "should reopen correctly" do
30
30
  moved_path = log_file_path + '.old'
31
31
 
32
- File.exist?(log_file_path).should be true
33
- File.exist?(moved_path).should be false
32
+ expect(File.exist?(log_file_path)).to be true
33
+ expect(File.exist?(moved_path)).to be false
34
34
 
35
35
  File.rename log_file_path, moved_path
36
36
 
37
37
  logger.reopen
38
38
 
39
39
  logger.error "TESTTESTTEST"
40
- File.read(log_file_path).should match(/TESTTESTTEST/)
41
- File.read(moved_path).should_not match(/TESTTESTTEST/)
40
+ expect(File.read(log_file_path)).to match(/TESTTESTTEST/)
41
+ expect(File.read(moved_path)).not_to match(/TESTTESTTEST/)
42
42
 
43
43
  logger.close
44
44
  end
@@ -8,7 +8,7 @@ class RFlow
8
8
  let(:schema) { Configuration.available_data_types['RFlow::Message::Data::Raw']['avro'] }
9
9
 
10
10
  it "should load the schema" do
11
- schema.should_not be_nil
11
+ expect(schema).not_to be_nil
12
12
  end
13
13
 
14
14
  it "should encode and decode an object" do
@@ -20,8 +20,8 @@ class RFlow
20
20
  expect { decode_avro(schema, encoded) }.to_not raise_error
21
21
  decoded = decode_avro(schema, encoded)
22
22
 
23
- decoded.should == raw
24
- decoded['raw'].should == raw['raw']
23
+ expect(decoded).to eq(raw)
24
+ expect(decoded['raw']).to eq(raw['raw'])
25
25
  end
26
26
  end
27
27
  end
@@ -83,18 +83,18 @@ class RFlow
83
83
 
84
84
  it "should correctly set the provenance processing events" do
85
85
  Message.new('string_type', valid_provenance).provenance[1].tap do |p|
86
- p.component_instance_uuid.should == 'uuid'
87
- p.started_at.should == Time.xmlschema(valid_xmlschema_time)
88
- p.completed_at.should be_nil
89
- p.context.should be_nil
86
+ expect(p.component_instance_uuid).to eq('uuid')
87
+ expect(p.started_at).to eq(Time.xmlschema(valid_xmlschema_time))
88
+ expect(p.completed_at).to be_nil
89
+ expect(p.context).to be_nil
90
90
  end
91
91
  end
92
92
 
93
93
  it "should to_hash its provenance correctly" do
94
- Message.new('string_type', valid_provenance).provenance.map(&:to_hash).should == [
94
+ expect(Message.new('string_type', valid_provenance).provenance.map(&:to_hash)).to eq([
95
95
  {"component_instance_uuid" => "uuid", "started_at" => nil, "completed_at" => nil, "context" => nil},
96
96
  {"component_instance_uuid" => "uuid", "started_at" => valid_xmlschema_time, "completed_at" => nil, "context" => nil},
97
- {"component_instance_uuid" => "uuid", "started_at" => valid_xmlschema_time, "completed_at" => valid_xmlschema_time, "context" => "context"}]
97
+ {"component_instance_uuid" => "uuid", "started_at" => valid_xmlschema_time, "completed_at" => valid_xmlschema_time, "context" => "context"}])
98
98
  end
99
99
  end
100
100
 
@@ -106,8 +106,8 @@ class RFlow
106
106
  end
107
107
 
108
108
  Message.from_avro(message.to_avro).tap do |processed|
109
- processed.data.to_avro.should == message.data.to_avro
110
- processed.data.data_object.should == message.data.data_object
109
+ expect(processed.data.to_avro).to eq(message.data.to_avro)
110
+ expect(processed.data.data_object).to eq(message.data.data_object)
111
111
  end
112
112
  end
113
113
  end
@@ -117,11 +117,11 @@ class RFlow
117
117
  module ExtensionModule; def ext_method; end; end
118
118
 
119
119
  message = Message.new('string_type')
120
- message.data.methods.should_not include(:ext_method)
120
+ expect(message.data.methods).not_to include(:ext_method)
121
121
 
122
122
  Configuration.add_available_data_extension('string_type', ExtensionModule)
123
123
  message = Message.new('string_type')
124
- message.data.methods.should include(:ext_method)
124
+ expect(message.data.methods).to include(:ext_method)
125
125
  end
126
126
  end
127
127
  end
@@ -138,17 +138,17 @@ class RFlow
138
138
 
139
139
  @raw_schema = Configuration.available_data_types['RFlow::Message::Data::Raw']['avro']
140
140
 
141
- encode_avro(@raw_schema, message.data.data_object).should == message.data.to_avro
142
- decode_avro(@raw_schema, message.data.to_avro).should == message.data.data_object
141
+ expect(encode_avro(@raw_schema, message.data.data_object)).to eq(message.data.to_avro)
142
+ expect(decode_avro(@raw_schema, message.data.to_avro)).to eq(message.data.data_object)
143
143
 
144
144
  message_data_avro = message.data.to_avro.force_encoding('BINARY')
145
145
  processed_message_data_avro = processed_message.data.to_avro.force_encoding('BINARY')
146
146
 
147
- Digest::MD5.hexdigest(message_avro).should == Digest::MD5.hexdigest(processed_message_avro)
147
+ expect(Digest::MD5.hexdigest(message_avro)).to eq(Digest::MD5.hexdigest(processed_message_avro))
148
148
 
149
- message_data_avro.should == processed_message_data_avro
150
- Digest::MD5.hexdigest(message_data_avro).should == Digest::MD5.hexdigest(processed_message_data_avro)
151
- Digest::MD5.hexdigest(message.data.raw).should == Digest::MD5.hexdigest(processed_message.data.raw)
149
+ expect(message_data_avro).to eq(processed_message_data_avro)
150
+ expect(Digest::MD5.hexdigest(message_data_avro)).to eq(Digest::MD5.hexdigest(processed_message_data_avro))
151
+ expect(Digest::MD5.hexdigest(message.data.raw)).to eq(Digest::MD5.hexdigest(processed_message.data.raw))
152
152
  end
153
153
  end
154
154
  end
data/spec/rflow_spec.rb CHANGED
@@ -36,7 +36,7 @@ describe RFlow do
36
36
  sleep(5)
37
37
 
38
38
  # Shut down the workers, the reactor, and the thread
39
- RFlow.master.shutdown! 'SIGQUIT'
39
+ RFlow.master.shutdown! 'SIGQUIT' if RFlow.master
40
40
  EM.run { EM.stop }
41
41
  rflow_thread.join
42
42
  end
@@ -64,8 +64,8 @@ describe RFlow do
64
64
  c.connect 'generate_ints2#even_odd_out' => 'output_even_odd2#in'
65
65
  end
66
66
 
67
- RFlow.master.should have(1).shard
68
- RFlow.master.shards.first.should have(1).worker
67
+ expect(RFlow.master).to have(1).shard
68
+ expect(RFlow.master.shards.first).to have(1).worker
69
69
 
70
70
  output_files = {
71
71
  'out' => [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
@@ -77,8 +77,8 @@ describe RFlow do
77
77
  }
78
78
 
79
79
  output_files.each do |file_name, expected_contents|
80
- File.exist?(File.join(@temp_directory_path, file_name)).should be true
81
- File.readlines(file_name).map(&:to_i).should == expected_contents
80
+ expect(File.exist?(File.join(@temp_directory_path, file_name))).to be true
81
+ expect(File.readlines(file_name).map(&:to_i)).to eq(expected_contents)
82
82
  end
83
83
  end
84
84
 
@@ -114,9 +114,9 @@ describe RFlow do
114
114
  c.connect 'generate_ints3#out' => 'output_all#in'
115
115
  end
116
116
 
117
- RFlow.master.should have(4).shards
118
- RFlow.master.shards.map(&:count).should == [1, 3, 2, 2]
119
- RFlow.master.shards.map(&:workers).map(&:count).should == [1, 3, 2, 2]
117
+ expect(RFlow.master).to have(4).shards
118
+ expect(RFlow.master.shards.map(&:count)).to eq([1, 3, 2, 2])
119
+ expect(RFlow.master.shards.map(&:workers).map(&:count)).to eq([1, 3, 2, 2])
120
120
 
121
121
  output_files = {
122
122
  'out1' => [0, 3, 6, 9] * 3,
@@ -126,8 +126,8 @@ describe RFlow do
126
126
  }
127
127
 
128
128
  output_files.each do |file_name, expected_contents|
129
- File.exist?(File.join(@temp_directory_path, file_name)).should be true
130
- File.readlines(file_name).map(&:to_i).sort.should == expected_contents.sort
129
+ expect(File.exist?(File.join(@temp_directory_path, file_name))).to be true
130
+ expect(File.readlines(file_name).map(&:to_i).sort).to eq(expected_contents.sort)
131
131
  end
132
132
  end
133
133
  end
@@ -157,13 +157,13 @@ describe RFlow do
157
157
  r = execute_rflow("load -d #{db_file_name} -c #{config_file_name}")
158
158
 
159
159
  # Make sure that the process execution worked
160
- r[:status].exitstatus.should == 0
161
- r[:stderr].should == ''
162
- r[:stdout].should match /Successfully initialized database.*#{db_file_name}/
160
+ expect(r[:status].exitstatus).to eq(0)
161
+ expect(r[:stderr]).to eq('')
162
+ expect(r[:stdout]).to match /Successfully initialized database.*#{db_file_name}/
163
163
 
164
164
  # Make sure the config actually got loaded
165
165
  ActiveRecord::Base.establish_connection adapter: "sqlite3", database: db_file_name
166
- RFlow::Configuration::Setting.where(:name => 'mysetting').first.value.should == 'myvalue'
166
+ expect(RFlow::Configuration::Setting.where(:name => 'mysetting').first.value).to eq('myvalue')
167
167
  end
168
168
 
169
169
  it "should not load a database if the database file already exists" do
@@ -172,9 +172,9 @@ describe RFlow do
172
172
  r = execute_rflow("load -d #{db_file_name} -c #{config_file_name}")
173
173
 
174
174
  # Make sure that the process execution worked
175
- r[:status].exitstatus.should == 1
176
- r[:stderr].should == ''
177
- r[:stdout].should match /Config database.*#{db_file_name}.*exists/
175
+ expect(r[:status].exitstatus).to eq(1)
176
+ expect(r[:stderr]).to eq('')
177
+ expect(r[:stdout]).to match /Config database.*#{db_file_name}.*exists/
178
178
  end
179
179
  end
180
180
 
@@ -215,34 +215,34 @@ describe RFlow do
215
215
  EOF
216
216
  end
217
217
  r = execute_rflow("load -d #{db_file_name} -c #{config_file_name}")
218
- r[:status].exitstatus.should == 0
219
- r[:stderr].should == ''
220
- r[:stdout].should match /Successfully initialized database.*#{db_file_name}/
218
+ expect(r[:status].exitstatus).to eq(0)
219
+ expect(r[:stderr]).to eq('')
220
+ expect(r[:stdout]).to match /Successfully initialized database.*#{db_file_name}/
221
221
  end
222
222
 
223
223
  it "should not start if the components aren't loaded" do
224
224
  r = execute_rflow("start -d #{db_file_name} -f")
225
225
 
226
- r[:status].exitstatus.should == 1
227
- r[:stderr].should == ''
228
- r[:stdout].should match /error/i
226
+ expect(r[:status].exitstatus).to eq(1)
227
+ expect(r[:stderr]).to eq('')
228
+ expect(r[:stdout]).to match /error/i
229
229
  end
230
230
 
231
231
  it "should daemonize and run in the background" do
232
232
  begin
233
233
  r = execute_rflow("start -d #{db_file_name} -e #{@extensions_file_name}")
234
234
 
235
- r[:status].exitstatus.should == 0
236
- r[:stderr].should == ''
237
- r[:stdout].should_not match /error/i
235
+ expect(r[:status].exitstatus).to eq(0)
236
+ expect(r[:stderr]).to eq('')
237
+ expect(r[:stdout]).not_to match /error/i
238
238
 
239
239
  sleep 2 # give the daemon a chance to finish
240
240
 
241
241
  log_contents = File.read("log/#{app_name}.log").chomp
242
242
  log_lines = log_contents.split("\n")
243
243
 
244
- log_lines.each {|line| line.should_not match /^ERROR/ }
245
- log_lines.each {|line| line.should_not match /^DEBUG/ }
244
+ log_lines.each {|line| expect(line).not_to match /^ERROR/ }
245
+ log_lines.each {|line| expect(line).not_to match /^DEBUG/ }
246
246
 
247
247
  # Grab all the pids from the log, which seems to be the only
248
248
  # reliable way to get them
@@ -252,15 +252,15 @@ describe RFlow do
252
252
  master_pid = File.read("run/#{app_name}.pid").chomp.to_i
253
253
  worker_pids = log_pids - [initial_pid, master_pid]
254
254
 
255
- log_pids.should include initial_pid
256
- log_pids.should include master_pid
255
+ expect(log_pids).to include initial_pid
256
+ expect(log_pids).to include master_pid
257
257
 
258
- worker_pids.should have(8).pids
259
- worker_pids.should_not include 0
258
+ expect(worker_pids).to have(10).pids # 1+3+2+2 workers, 2 brokers
259
+ expect(worker_pids).not_to include 0
260
260
 
261
261
  expect { Process.kill(0, initial_pid) }.to raise_error(Errno::ESRCH)
262
262
  ([master_pid] + worker_pids).each do |pid|
263
- Process.kill(0, pid).should == 1
263
+ expect(Process.kill(0, pid)).to eq(1)
264
264
  end
265
265
 
266
266
  output_files = {
@@ -271,15 +271,15 @@ describe RFlow do
271
271
  }
272
272
 
273
273
  output_files.each do |file_name, expected_contents|
274
- File.exist?(File.join(@temp_directory_path, file_name)).should be true
275
- File.readlines(file_name).map(&:to_i).sort.should == expected_contents.sort
274
+ expect(File.exist?(File.join(@temp_directory_path, file_name))).to be true
275
+ expect(File.readlines(file_name).map(&:to_i).sort).to eq(expected_contents.sort)
276
276
  end
277
277
 
278
278
  # Terminate the master
279
- Process.kill("TERM", master_pid).should == 1
279
+ expect(Process.kill("TERM", master_pid)).to eq(1)
280
280
 
281
281
  # Make sure everything is dead after a second
282
- sleep 1
282
+ sleep 2
283
283
  ([master_pid] + worker_pids).each do |pid|
284
284
  expect { Process.kill(0, pid) }.to raise_error(Errno::ESRCH)
285
285
  end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'rflow')
3
3
  require 'fileutils'
4
4
  require 'log4r'
5
5
  require 'rspec/collection_matchers'
6
+ require 'tmpdir'
6
7
 
7
8
  I18n.enforce_available_locales = true
8
9
 
@@ -11,17 +12,14 @@ RSpec.configure do |config|
11
12
  RFlow.logger = Log4r::Logger.new 'test'
12
13
  RFlow.logger.add Log4r::StdoutOutputter.new('test_stdout', :formatter => RFlow::Logger::LOG_PATTERN_FORMATTER)
13
14
  RFlow.logger.level = 5
14
- @base_temp_directory_path = File.join(File.dirname(__FILE__), 'tmp')
15
15
  end
16
16
 
17
17
  config.before(:each) do
18
- @entropy = Time.now.to_f.to_s
19
- @temp_directory_path = File.expand_path(File.join(@base_temp_directory_path, @entropy))
20
- FileUtils.mkdir_p @temp_directory_path
18
+ @temp_directory_path = Dir.mktmpdir('rflow')
21
19
  end
22
20
 
23
21
  config.after(:each) do
24
- FileUtils.rm_rf @base_temp_directory_path
22
+ FileUtils.rm_rf @temp_directory_path
25
23
  end
26
24
  end
27
25
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0a2
4
+ version: 1.0.0a3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael L. Artz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-04 00:00:00.000000000 Z
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uuidtools
@@ -84,86 +84,86 @@ dependencies:
84
84
  name: em-zeromq
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.4.2
89
+ version: 0.5.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.4.2
96
+ version: 0.5.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.5'
103
+ version: '1.6'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.5'
110
+ version: '1.6'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.99'
117
+ version: '3.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.99'
124
+ version: '3.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec-collection_matchers
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.0.4
131
+ version: '1.0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.0.4
138
+ version: '1.0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rake
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 0.8.7
145
+ version: '10.3'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 0.8.7
152
+ version: '10.3'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: yard
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.8.7
159
+ version: '0.8'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.8.7
166
+ version: '0.8'
167
167
  description: A Ruby flow-based programming framework that utilizes ZeroMQ for component
168
168
  connections and Avro for serialization
169
169
  email:
@@ -183,14 +183,17 @@ files:
183
183
  - Guardfile
184
184
  - LICENSE
185
185
  - NOTES
186
+ - README.VAGRANT
186
187
  - README.md
187
188
  - Rakefile
189
+ - Vagrantfile
188
190
  - bin/rflow
189
191
  - example/basic_config.rb
190
192
  - example/basic_extensions.rb
191
193
  - example/http_config.rb
192
194
  - example/http_extensions.rb
193
195
  - lib/rflow.rb
196
+ - lib/rflow/broker.rb
194
197
  - lib/rflow/child_process.rb
195
198
  - lib/rflow/component.rb
196
199
  - lib/rflow/component/port.rb
@@ -262,7 +265,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
265
  version: 1.3.1
263
266
  requirements: []
264
267
  rubyforge_project:
265
- rubygems_version: 2.2.2
268
+ rubygems_version: 2.3.0
266
269
  signing_key:
267
270
  specification_version: 4
268
271
  summary: A Ruby flow-based programming framework