rmodbus-ccutrer 2.0.0 → 2.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '06318cd10a9aca4e65b4c15d4f153ef13d976054429f8343ac3b5cc1304063bc'
4
- data.tar.gz: 16fb3bfccd80ac8dd02b5c5dda1ab0aeafa9d06b59b8cf53e5938de5f07fcf34
3
+ metadata.gz: d3f1eb7faa783c285b4152b693b9f2ea3b9639917e589714b4bea416e483998e
4
+ data.tar.gz: 0e9005770dab3ca0336583e59a9c1c7d098b11267199a83e1d65339b7bd68a6c
5
5
  SHA512:
6
- metadata.gz: af77c4b113a51dc669c6d1127d1613ea3b21ac6b93efee52f02f7cdf4f898e9b7bd5ad0f39a7372f7f4a9a7064de522469ec73f1af94ac27cb7df2d27b6021d6
7
- data.tar.gz: 5586969c9caf0269c8408f4a9c79faa089fe29fbb204523238f2541d36ce84d5606596e6086f4b983d1d8eaaf45d0bbcbce75a95a305039345aff00ae66b89f2
6
+ metadata.gz: 8ee2ba1774e37c5e111fc0242056a5c8fb3cb3cec0b7243782e54f06e7c9d0d4e595bc51b7c1e9dea13f7d93b52ce83a2d23eec252f22c7e24e57df34e166fb7
7
+ data.tar.gz: 5c4732bd7e8edbd18e8cffb942911d5c7cf161beb8c0935fbb2ed521505adfe607fe46dc6f80e8ea74cb6c1a5f36641f52364f43eb51c06cf90a77df50f1683e
data/Rakefile CHANGED
@@ -1,29 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'rubygems'
4
- require 'bundler'
5
3
  begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
11
7
  end
12
8
 
13
- require 'rake'
14
- require 'rspec/core'
15
- require 'rspec/core/rake_task'
16
- RSpec::Core::RakeTask.new(:spec) do |spec|
17
- spec.pattern = FileList['spec/**/*_spec.rb']
18
- begin
19
- require 'serialport'
20
- rescue LoadError => e
21
- spec.pattern.exclude("spec/rtu_client_spec.rb", "spec/rtu_server_spec.rb")
22
- end
23
- end
24
-
25
- task :default => :spec
26
-
27
- task :pry do
28
- sh "bundle exec pry -r ./lib/rmodbus.rb"
29
- end
9
+ Bundler::GemHelper.install_tasks
@@ -17,7 +17,7 @@ module ModBus
17
17
  # @return [Client] client object
18
18
  def initialize(*args, &block)
19
19
  # Defaults
20
- @debug = false
20
+ @logger = nil
21
21
  @raise_exception_on_mismatch = false
22
22
  @read_retry_timeout = 1
23
23
  @read_retries = 1
@@ -49,7 +49,7 @@ module ModBus
49
49
  # @return [Slave] slave object
50
50
  def with_slave(uid, &block)
51
51
  slave = get_slave(uid, @io)
52
- slave.debug = debug
52
+ slave.logger = logger
53
53
  slave.raise_exception_on_mismatch = raise_exception_on_mismatch
54
54
  slave.read_retries = read_retries
55
55
  slave.read_retry_timeout = read_retry_timeout
data/lib/rmodbus/debug.rb CHANGED
@@ -2,15 +2,16 @@ require 'time'
2
2
 
3
3
  module ModBus
4
4
  module Debug
5
- attr_accessor :debug, :raise_exception_on_mismatch,
6
- :read_retries, :read_retry_timeout
5
+ attr_accessor :raise_exception_on_mismatch,
6
+ :read_retries, :read_retry_timeout,
7
+ :logger
7
8
 
8
9
 
9
10
  private
10
11
  # Put log message on standard output
11
12
  # @param [String] msg message for log
12
13
  def log(msg)
13
- $stdout.puts "#{Time.now.utc.iso8601(2)} #{msg}" if @debug
14
+ logger&.debug(msg)
14
15
  end
15
16
 
16
17
  # Convert string of byte to string for log
data/lib/rmodbus/rtu.rb CHANGED
@@ -8,8 +8,7 @@ module ModBus
8
8
  # We have to read specific amounts of numbers of bytes from the network depending on the function code and content
9
9
  def read_rtu_response(io)
10
10
  # Read the slave_id and function code
11
- msg = read(io, 2)
12
- log logging_bytes(msg)
11
+ msg = read(io, 2)
13
12
 
14
13
  function_code = msg.getbyte(1)
15
14
  case function_code
@@ -7,7 +7,7 @@ module ModBus
7
7
  # slave.discrete_inputs = [1,1,0,0]
8
8
  # slave.holding_registers = [1,2,3,4]
9
9
  # slave.input_registers = [1,2,3,4]
10
- # srv.debug = true
10
+ # srv.logger = Logger.new($stdout)
11
11
  # srv.start
12
12
  class RTUServer
13
13
  include Debug
@@ -13,7 +13,7 @@ module ModBus
13
13
  # slave.discrete_inputs = [1,1,0,0]
14
14
  # slave.holding_registers = [1,2,3,4]
15
15
  # slave.input_registers = [1,2,3,4]
16
- # srv.debug = true
16
+ # srv.logger = Logger.new($stdout)
17
17
  # srv.start
18
18
  class RTUViaTCPServer < GServer
19
19
  include Debug
data/lib/rmodbus/sp.rb CHANGED
@@ -1,36 +1,31 @@
1
1
  begin
2
- require 'serialport'
2
+ require 'ccutrer-serialport'
3
3
  rescue Exception => e
4
- warn "[WARNING] Install `serialport` gem for use RTU protocols"
4
+ warn "[WARNING] Install `ccutrer-serialport` gem for use RTU protocols"
5
5
  end
6
6
 
7
7
  module ModBus
8
8
  module SP
9
9
  attr_reader :port, :baud, :data_bits, :stop_bits, :parity, :read_timeout
10
10
  # Open serial port
11
- # @param [String] port name serial ports ("/dev/ttyS0" POSIX, "com1" - Windows)
11
+ # @param [String] port name serial ports ("/dev/ttyS0")
12
12
  # @param [Integer] baud rate serial port (default 9600)
13
13
  # @param [Hash] opts the options of serial port
14
14
  #
15
15
  # @option opts [Integer] :data_bits from 5 to 8
16
16
  # @option opts [Integer] :stop_bits 1 or 2
17
- # @option opts [Integer] :parity NONE, EVEN or ODD
18
- # @option opts [Integer] :read_timeout default 100 ms
17
+ # @option opts [Integer] :parity :none, :even or :odd
19
18
  # @return [SerialPort] io serial port
20
19
  def open_serial_port(port, baud, opts = {})
21
20
  @port, @baud = port, baud
22
21
 
23
- @data_bits, @stop_bits, @parity, @read_timeout = 8, 1, SerialPort::NONE, 100
22
+ @data_bits, @stop_bits, @parity = 8, 1, :none
24
23
 
25
24
  @data_bits = opts[:data_bits] unless opts[:data_bits].nil?
26
25
  @stop_bits = opts[:stop_bits] unless opts[:stop_bits].nil?
27
26
  @parity = opts[:parity] unless opts[:parity].nil?
28
- @read_timeout = opts[:read_timeout] unless opts[:read_timeout].nil?
29
27
 
30
- io = SerialPort.new(@port, @baud, @data_bits, @stop_bits, @parity)
31
- io.flow_control = SerialPort::NONE
32
- io.read_timeout = @read_timeout
33
- io
28
+ CCutrer::SerialPort.new(@port, baud: @baud, data_bits: @data_bits, stop_bits: @stop_bits, parity: @parity)
34
29
  end
35
30
  end
36
31
  end
@@ -13,7 +13,7 @@ module ModBus
13
13
  # slave.discrete_inputs = [1,1,0,0]
14
14
  # slave.holding_registers = [1,2,3,4]
15
15
  # slave.input_registers = [1,2,3,4]
16
- # srv.debug = true
16
+ # srv.logger = Logger.new($stdout)
17
17
  # srv.start
18
18
  class TCPServer < GServer
19
19
  include Debug
@@ -1,3 +1,3 @@
1
1
  module ModBus
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
data/spec/client_spec.rb CHANGED
@@ -39,13 +39,13 @@ describe ModBus::Client do
39
39
  end
40
40
 
41
41
  it 'should common for all slaves :debug flag' do
42
- @cl.debug = true
42
+ @cl.logger = true
43
43
  @cl.with_slave(1) do |slave_1|
44
- slave_1.debug.should be_truthy
44
+ slave_1.logger.should eq true
45
45
  end
46
46
  @cl.with_slave(2) do |slave_2|
47
- slave_2.debug = false
48
- slave_2.debug.should be_falsey
47
+ slave_2.logger = false
48
+ slave_2.logger.should eq false
49
49
  end
50
50
  end
51
51
 
data/spec/logging_spec.rb CHANGED
@@ -11,19 +11,19 @@ describe ModBus::TCPClient do
11
11
  @sock.stub(:read).with(0).and_return('')
12
12
 
13
13
  @slave = ModBus::TCPClient.new('127.0.0.1', 1502).with_slave(@uid)
14
- @slave.debug = true
14
+ @slave.logger = double("logger")
15
15
  end
16
16
 
17
17
  it 'should log rec\send bytes' do
18
18
  request, response = "\x3\x0\x6b\x0\x3", "\x3\x6\x2\x2b\x0\x0\x0\x64"
19
19
  mock_query(request,response)
20
- $stdout.should_receive(:puts).with("Tx (12 bytes): [00][01][00][00][00][06][01][03][00][6b][00][03]")
21
- $stdout.should_receive(:puts).with("Rx (15 bytes): [00][01][00][00][00][09][01][03][06][02][2b][00][00][00][64]")
20
+ @slave.logger.should_receive(:debug).with("Tx (12 bytes): [00][01][00][00][00][06][01][03][00][6b][00][03]")
21
+ @slave.logger.should_receive(:debug).with("Rx (15 bytes): [00][01][00][00][00][09][01][03][06][02][2b][00][00][00][64]")
22
22
  @slave.query(request)
23
23
  end
24
24
 
25
25
  it "should don't logging if debug disable" do
26
- @slave.debug = false
26
+ @slave.logger = nil
27
27
  request, response = "\x3\x0\x6b\x0\x3", "\x3\x6\x2\x2b\x0\x0\x0\x64"
28
28
  mock_query(request,response)
29
29
  @slave.query(request)
@@ -35,10 +35,10 @@ describe ModBus::TCPClient do
35
35
  @sock.should_receive(:read).with(7).and_return("\000\002\000\000\000\001" + @uid.chr)
36
36
  @sock.should_receive(:read).with(7).and_return("\000\001\000\000\000\001" + @uid.chr)
37
37
 
38
- $stdout.should_receive(:puts).with("Tx (7 bytes): [00][01][00][00][00][01][01]")
39
- $stdout.should_receive(:puts).with("Rx (7 bytes): [00][02][00][00][00][01][01]")
40
- $stdout.should_receive(:puts).with("Transaction number mismatch. A packet is ignored.")
41
- $stdout.should_receive(:puts).with("Rx (7 bytes): [00][01][00][00][00][01][01]")
38
+ @slave.logger.should_receive(:debug).with("Tx (7 bytes): [00][01][00][00][00][01][01]")
39
+ @slave.logger.should_receive(:debug).with("Rx (7 bytes): [00][02][00][00][00][01][01]")
40
+ @slave.logger.should_receive(:debug).with("Transaction number mismatch. A packet is ignored.")
41
+ @slave.logger.should_receive(:debug).with("Rx (7 bytes): [00][01][00][00][00][01][01]")
42
42
 
43
43
  @slave.query('')
44
44
  end
@@ -52,35 +52,28 @@ describe ModBus::TCPClient do
52
52
  end
53
53
 
54
54
  begin
55
- require "serialport"
55
+ require "ccutrer-serialport"
56
56
  describe ModBus::RTUClient do
57
57
  before do
58
58
  @sp = double('Serial port')
59
+ allow(@sp).to receive(:flush)
59
60
 
60
- SerialPort.should_receive(:new).with("/dev/port1", 9600, 7, 2, SerialPort::ODD).and_return(@sp)
61
- SerialPort.stub(:public_method_defined?).with(:flush_input).and_return(true)
61
+ CCutrer::SerialPort.should_receive(:new).with("/dev/port1", baud: 9600, data_bits: 7, stop_bits: 2, parity: :odd).and_return(@sp)
62
62
 
63
- @sp.stub(:class).and_return(SerialPort)
64
- @sp.should_receive(:flow_control=).with(SerialPort::NONE)
65
- @sp.stub(:read_timeout=)
66
- @sp.stub(:flush_input)
67
-
68
- @slave = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 7, :stop_bits => 2, :parity => SerialPort::ODD).with_slave(1)
63
+ @slave = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 7, :stop_bits => 2, :parity => :odd).with_slave(1)
69
64
  @slave.read_retries = 0
70
-
71
65
  end
72
66
 
73
67
  it 'should log rec\send bytes' do
74
68
  request = "\x3\x0\x1\x0\x1"
75
69
  @sp.should_receive(:write).with("\1#{request}\xd5\xca")
76
- @sp.should_receive(:flush_input) # Clean a garbage
77
70
  @sp.should_receive(:read).with(2).and_return("\x1\x3")
78
71
  @sp.should_receive(:read).with(1).and_return("\x2")
79
72
  @sp.should_receive(:read).with(4).and_return("\xff\xff\xb9\xf4")
80
73
 
81
- @slave.debug = true
82
- $stdout.should_receive(:puts).with("Tx (8 bytes): [01][03][00][01][00][01][d5][ca]")
83
- $stdout.should_receive(:puts).with("Rx (7 bytes): [01][03][02][ff][ff][b9][f4]")
74
+ @slave.logger = double("logger")
75
+ @slave.logger.should_receive(:debug).with("Tx (8 bytes): [01][03][00][01][00][01][d5][ca]")
76
+ @slave.logger.should_receive(:debug).with("Rx (7 bytes): [01][03][02][ff][ff][b9][f4]")
84
77
 
85
78
  @slave.query(request).should == "\xff\xff"
86
79
  end
data/spec/proxy_spec.rb CHANGED
@@ -12,7 +12,7 @@ describe Array do
12
12
 
13
13
  # Handle all of the coil methods
14
14
  it "should call read_coil" do
15
- @slave.should_receive(:read_coil).with(0, 1)
15
+ @slave.should_receive(:read_coil).with(0)
16
16
  @coil_proxy[0]
17
17
  end
18
18
  it "should call read_coils" do
@@ -31,7 +31,7 @@ describe Array do
31
31
 
32
32
  # Discrete input tests
33
33
  it "should call read_discrete_input" do
34
- @slave.should_receive(:read_discrete_input).with(0, 1)
34
+ @slave.should_receive(:read_discrete_input).with(0)
35
35
  @discrete_input_proxy[0]
36
36
  end
37
37
 
@@ -43,7 +43,7 @@ describe Array do
43
43
 
44
44
  # Holding Register Tess
45
45
  it "should call read_holding_register" do
46
- @slave.should_receive(:read_holding_register).with(0, 1)
46
+ @slave.should_receive(:read_holding_register).with(0)
47
47
  @holding_register_proxy[0]
48
48
  end
49
49
  it "should call read_holding_registers" do
@@ -62,7 +62,7 @@ describe Array do
62
62
 
63
63
  # Input Register Tests
64
64
  it "should call read_discrete_input" do
65
- @slave.should_receive(:read_input_register).with(0, 1)
65
+ @slave.should_receive(:read_input_register).with(0)
66
66
  @input_register_proxy[0]
67
67
  end
68
68
 
@@ -4,16 +4,11 @@ require 'rmodbus'
4
4
  describe ModBus::RTUClient do
5
5
  before do
6
6
  @sp = double('Serial port')
7
+ allow(@sp).to receive(:flush)
7
8
 
8
- SerialPort.should_receive(:new).with("/dev/port1", 9600, 8, 1, 0).and_return(@sp)
9
- SerialPort.stub(:public_method_defined?).with(:flush_input).and_return(true)
9
+ CCutrer::SerialPort.should_receive(:new).with("/dev/port1", baud: 9600, data_bits: 8, stop_bits: 1, parity: :none).and_return(@sp)
10
10
 
11
- @sp.stub(:read_timeout=)
12
- @sp.stub(:class).and_return(SerialPort)
13
- @sp.should_receive(:flow_control=).with(SerialPort::NONE)
14
- @sp.stub(:flush_input)
15
-
16
- @cl = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 8, :stop_bits => 1, :parity => SerialPort::NONE)
11
+ @cl = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 8, :stop_bits => 1, :parity => :none)
17
12
  @slave = @cl.with_slave(1)
18
13
  @slave.read_retries = 1
19
14
  end
@@ -41,16 +36,15 @@ describe ModBus::RTUClient do
41
36
 
42
37
  it 'should sugar connect method' do
43
38
  port, baud = "/dev/port1", 4800
44
- SerialPort.should_receive(:new).with(port, baud, 8, 1, SerialPort::NONE).and_return(@sp)
39
+ CCutrer::SerialPort.should_receive(:new).with(port, baud: baud, data_bits: 8, stop_bits: 1, parity: :none).and_return(@sp)
45
40
  @sp.should_receive(:closed?).and_return(false)
46
41
  @sp.should_receive(:close)
47
- @sp.should_receive(:flow_control=).with(SerialPort::NONE)
48
42
  ModBus::RTUClient.connect(port, baud) do |cl|
49
43
  cl.port.should == port
50
44
  cl.baud.should == baud
51
45
  cl.data_bits.should == 8
52
46
  cl.stop_bits.should == 1
53
- cl.parity.should == SerialPort::NONE
47
+ cl.parity.should == :none
54
48
  end
55
49
  end
56
50
 
@@ -4,9 +4,7 @@ require 'rmodbus'
4
4
  describe ModBus::RTUServer do
5
5
  before do
6
6
  @sp = double('SerialPort')
7
- SerialPort.should_receive(:new).with('/dev/ttyS0', 4800, 7, 2, SerialPort::NONE).and_return(@sp)
8
- @sp.stub(:read_timeout=)
9
- @sp.should_receive(:flow_control=).with(SerialPort::NONE)
7
+ CCutrer::SerialPort.should_receive(:new).with('/dev/ttyS0', baud: 4800, data_bits: 7, stop_bits: 2, parity: :none).and_return(@sp)
10
8
 
11
9
  @server = ModBus::RTUServer.new('/dev/ttyS0', 4800, :data_bits => 7, :stop_bits => 2)
12
10
  @slave = @server.with_slave(1)
@@ -26,6 +24,6 @@ describe ModBus::RTUServer do
26
24
  @server.baud.should == 4800
27
25
  @server.data_bits.should == 7
28
26
  @server.stop_bits.should == 2
29
- @server.parity.should == SerialPort::NONE
27
+ @server.parity.should == :none
30
28
  end
31
29
  end
@@ -24,10 +24,6 @@ describe ModBus::RTUViaTCPServer do
24
24
  @io = @cl.instance_variable_get(:@io)
25
25
  end
26
26
 
27
- before do
28
- @server.debug = false
29
- end
30
-
31
27
  it "should have options :host" do
32
28
  host = '192.168.0.1'
33
29
  srv = ModBus::RTUViaTCPServer.new(1010, :host => '192.168.0.1')
@@ -43,7 +39,6 @@ describe ModBus::RTUViaTCPServer do
43
39
  it "should properly ignore responses from other slaves" do
44
40
  request = "\x10\x03\x0\x1\x0\x1\xd6\x8b"
45
41
  response = "\x10\x83\x1\xd0\xf5"
46
- @server.debug = true
47
42
  @server.should receive(:log).ordered.with("Server RX (8 bytes): [10][03][00][01][00][01][d6][8b]")
48
43
  @server.should receive(:log).ordered.with("Server RX function 3 to 16: {:quant=>1, :addr=>1}")
49
44
  @server.should receive(:log).ordered.with("Server RX (5 bytes): [10][83][01][d0][f5]")
metadata CHANGED
@@ -1,99 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmodbus-ccutrer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.Timin, J. Sanders, K. Reynolds, F. Luizão, C. Cutrer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-23 00:00:00.000000000 Z
11
+ date: 2021-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 12.3.3
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 12.3.3
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - "~>"
46
18
  - !ruby/object:Gem::Version
47
- version: '2.99'
19
+ version: '13.0'
48
20
  type: :development
49
21
  prerelease: false
50
22
  version_requirements: !ruby/object:Gem::Requirement
51
23
  requirements:
52
24
  - - "~>"
53
25
  - !ruby/object:Gem::Version
54
- version: '2.99'
26
+ version: '13.0'
55
27
  - !ruby/object:Gem::Dependency
56
- name: guard-rspec
28
+ name: bundler
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: '1.2'
33
+ version: '2.2'
62
34
  type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: '1.2'
40
+ version: '2.2'
69
41
  - !ruby/object:Gem::Dependency
70
- name: pry
42
+ name: rspec
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: '0.10'
47
+ version: '2.99'
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: '0.10'
54
+ version: '2.99'
83
55
  - !ruby/object:Gem::Dependency
84
- name: serialport
56
+ name: ccutrer-serialport
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: '1.3'
61
+ version: 1.0.0
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: '1.3'
68
+ version: 1.0.0
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: gserver
99
71
  requirement: !ruby/object:Gem::Requirement