rflow 1.0.0a2 → 1.0.0a3

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.
@@ -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