firebug 1.1.0 → 1.2.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
- SHA1:
3
- metadata.gz: c7ae866f5a57fc4cd5782c1d42232a83b473541e
4
- data.tar.gz: ea21d35182344dedc599830d373177714098963e
2
+ SHA256:
3
+ metadata.gz: 8fbd5a9dfb24f6bda1c0a1f14541a19874ce2ba4947dfe9942968df5d95ce612
4
+ data.tar.gz: 20cba9c06d691fdc45f397d458b638b5313f6fedf445ef42ef1f805df9cd8751
5
5
  SHA512:
6
- metadata.gz: 543016ca23566df1e2e76790e0c85688a30102851df90f137f19bbbed502141e1308576613768292d56c468bfd5bfbf6bb1abdd2d3d5a4a4b1f65642071ab6ca
7
- data.tar.gz: b5776e9dbc85cb9f3b7e35984c4a2047fcc9b2484b467c100c2f48898671b4e57f256f054cee3bf3f8a3a927901bc78da98145d12ef7a254c6ffcb2e09235c1b
6
+ metadata.gz: b055339ae79941d211791a4248fbdf88a3a1190ef214abb7e8e5d2d846e6075b662f104ee2e888f56302229146176d65fc658cd2944c6df8b24d0d0791b1d022
7
+ data.tar.gz: d3dec6a39184d14ab579e1c286cd792100943b8e58a52a89b4237b3d6e0482653886840de227035b0feaf3019b38a81b1deb9cfba9a042ffe5eb1aeb0d8b362f
@@ -6,7 +6,7 @@ workspace_root: &workspace_root
6
6
  defaults: &defaults
7
7
  working_directory: *workspace_root
8
8
  docker:
9
- - image: afrase/firebug-ruby:2.4
9
+ - image: afrase/firebug-ruby:2.6
10
10
 
11
11
  attach_workspace: &attach_workspace
12
12
  attach_workspace:
@@ -42,6 +42,7 @@ jobs:
42
42
  - run:
43
43
  name: Install Bundler dependencies
44
44
  command: |
45
+ gem install bundler
45
46
  bin/bundle install --path=vendor/bundle \
46
47
  --jobs=4 \
47
48
  --retry=3
@@ -62,7 +63,9 @@ jobs:
62
63
  - *attach_workspace
63
64
  - run:
64
65
  name: Set bundler path
65
- command: bin/bundle --path vendor/bundle
66
+ command: |
67
+ gem install bundler
68
+ bin/bundle --path vendor/bundle
66
69
  - run:
67
70
  name: Run tests
68
71
  command: |
@@ -87,7 +90,9 @@ jobs:
87
90
  - *attach_workspace
88
91
  - run:
89
92
  name: Set bundler path
90
- command: bin/bundle --path vendor/bundle
93
+ command: |
94
+ gem install bundler
95
+ bin/bundle --path vendor/bundle
91
96
  - run:
92
97
  name: Run rubocop
93
98
  command: bin/bundle exec rubocop
@@ -1,3 +1,12 @@
1
- FROM circleci/ruby:2.4
1
+ FROM ruby:2.6-slim
2
2
 
3
- RUN sudo apt-get update && sudo apt-get install mcrypt libmcrypt-dev
3
+ RUN apt-get update && apt-get install -y --no-install-recommends \
4
+ build-essential \
5
+ curl \
6
+ default-libmysqlclient-dev \
7
+ git \
8
+ libmcrypt-dev \
9
+ file \
10
+ sudo \
11
+ libsqlite3-dev \
12
+ && rm -rf /var/lib/apt/lists/*
@@ -1 +1 @@
1
- ruby-2.4.1
1
+ ruby-2.6.1
data/README.md CHANGED
@@ -63,8 +63,8 @@ Encrypt and decrypt data.
63
63
  key = 'password'
64
64
  data = 'super secret data'
65
65
 
66
- encrypted = Firebug.encrypt(key, data)
67
- decrypted = Firebug.decrypt(key, encrypted)
66
+ encrypted = Firebug.encrypt(data, key)
67
+ decrypted = Firebug.decrypt(encrypted, key)
68
68
 
69
69
  data == decrypted # => true
70
70
  ```
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'firebug/version'
6
6
 
@@ -24,19 +24,19 @@ Gem::Specification.new do |spec| # rubocop:disable BlockLength
24
24
 
25
25
  spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
26
26
 
27
- spec.add_dependency 'actionpack', '~> 5.0'
28
- spec.add_dependency 'activerecord', '~> 5.0'
27
+ spec.add_dependency 'actionpack', '<= 6.0'
28
+ spec.add_dependency 'activerecord', '<= 6.0'
29
29
  spec.add_dependency 'ruby-mcrypt', '~> 0.2'
30
30
 
31
- spec.add_development_dependency 'bundler', '~> 1.15'
32
- spec.add_development_dependency 'database_cleaner', '~> 1.6', '>= 1.6.2'
33
- spec.add_development_dependency 'pry', '~> 0.11.3'
34
- spec.add_development_dependency 'rake', '~> 12.3'
35
- spec.add_development_dependency 'rspec', '~> 3.7'
36
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
37
- spec.add_development_dependency 'rubocop', '~> 0.52.1'
38
- spec.add_development_dependency 'rubocop-rspec', '~> 1.22', '>= 1.22.2'
39
- spec.add_development_dependency 'simplecov', '~> 0.15.1'
40
- spec.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.13'
41
- spec.add_development_dependency 'yard', '~> 0.9.12'
31
+ spec.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.1'
32
+ spec.add_development_dependency 'database_cleaner', '~> 1.7'
33
+ spec.add_development_dependency 'pry', '~> 0.12.2'
34
+ spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.2'
35
+ spec.add_development_dependency 'rspec', '~> 3.8'
36
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
37
+ spec.add_development_dependency 'rubocop', '~> 0.66.0'
38
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.32'
39
+ spec.add_development_dependency 'simplecov', '~> 0.16.1'
40
+ spec.add_development_dependency 'sqlite3', '~> 1.3.6'
41
+ spec.add_development_dependency 'yard', '~> 0.9.18'
42
42
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'action_dispatch'
4
- require_relative '../../firebug/session'
5
-
6
3
  module ActionDispatch
7
4
  module Session
5
+ require 'action_dispatch'
6
+ require_relative '../../firebug/session'
7
+
8
8
  # A session store for Rails to handle Pyro sessions.
9
9
  class CodeIgniterStore < AbstractStore
10
10
  SESSION_RECORD_KEY = 'rack.session.record'
@@ -78,6 +78,7 @@ module ActionDispatch
78
78
  }
79
79
  # Returning false will cause Rack to output a warning.
80
80
  return false unless model.update(model_params)
81
+
81
82
  req.env[SESSION_RECORD_KEY] = model
82
83
  # Return the encrypted cookie format of the data. Rack sets this value as the cookie in the response
83
84
  model.cookie_data
@@ -99,6 +100,7 @@ module ActionDispatch
99
100
  # Get the current database record for this session then delete it.
100
101
  find_session_model(req, sid).delete
101
102
  return if options[:drop]
103
+
102
104
  req.env[SESSION_RECORD_KEY] = nil
103
105
  # Generate a new one and return it's ID
104
106
  find_session_model(req).tap { |s| s.save if options[:renew] }.session_id
@@ -119,6 +121,7 @@ module ActionDispatch
119
121
  return generate_sid if sid.nil?
120
122
  # sometimes the cookie contains just the session ID.
121
123
  return sid if sid.size <= 32
124
+
122
125
  Firebug.decrypt_cookie(sid)[:session_id]
123
126
  end
124
127
 
@@ -129,6 +132,7 @@ module ActionDispatch
129
132
  if sid
130
133
  model = req.env[SESSION_RECORD_KEY] || Firebug::Session.find_by(find_by_params(req, sid))
131
134
  return model if model
135
+
132
136
  # use a different session ID in case the reason for not finding the record is because the user_agent
133
137
  # or ip_address didn't match.
134
138
  sid = generate_sid
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'firebug/version'
4
4
  require_relative 'firebug/crypto'
5
+ require_relative 'firebug/errors'
5
6
  require_relative 'firebug/serializer'
6
7
  require_relative 'firebug/unserializer'
7
8
  require_relative 'firebug/configuration'
@@ -20,7 +20,7 @@ module Firebug
20
20
  # Create a random 32 byte string to act as the initialization vector.
21
21
  iv = SecureRandom.random_bytes(32)
22
22
  # Pyro pads the data with zeros
23
- cipher = Mcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
23
+ cipher = FirebugMcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
24
24
  add_noise(iv + cipher.encrypt(data))
25
25
  end
26
26
 
@@ -32,7 +32,7 @@ module Firebug
32
32
  data = remove_noise(data)
33
33
  # The first 32 bytes of the data is the original IV
34
34
  iv = data[0..31]
35
- cipher = Mcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
35
+ cipher = FirebugMcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
36
36
  cipher.decrypt(data[32..-1])
37
37
  end
38
38
 
@@ -64,4 +64,14 @@ module Firebug
64
64
  Array.new(data.size) { |i| (data[i].ord.send(operator, key[i % key.size].ord) % 256).chr }.join
65
65
  end
66
66
  end
67
+
68
+ # To prevent errors about @opened being uninitialized.
69
+ class FirebugMcrypt < ::Mcrypt
70
+ # rubocop:disable Naming/UncommunicativeMethodParamName
71
+ def initialize(algorithm, mode, key=nil, iv=nil, padding=nil)
72
+ @opened = nil
73
+ super
74
+ end
75
+ # rubocop:enable Naming/UncommunicativeMethodParamName
76
+ end
67
77
  end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Firebug
4
+ FirebugError = Class.new(StandardError)
5
+ ParserError = Class.new(FirebugError)
6
+ end
@@ -23,9 +23,9 @@ module Firebug
23
23
  when String, Symbol
24
24
  "s:#{obj.to_s.bytesize}:\"#{obj}\";"
25
25
  when Array
26
- "a:#{obj.length}:{#{obj.collect.with_index { |e, i| "#{parse(i)}#{parse(e)}" }.join}}"
26
+ "a:#{obj.length}:{#{obj.map.with_index { |e, i| "#{parse(i)}#{parse(e)}" }.join}}"
27
27
  when Hash
28
- "a:#{obj.length}:{#{obj.collect { |k, v| "#{parse(k)}#{parse(v)}" }.join}}"
28
+ "a:#{obj.length}:{#{obj.map { |k, v| "#{parse(k)}#{parse(v)}" }.join}}"
29
29
  else
30
30
  raise ArgumentError, "unsupported type #{obj.class.name}"
31
31
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Firebug
4
+ class StringIOReader < StringIO
5
+ # Reads data from the buffer until +char+ is found.
6
+ #
7
+ # @param [String] char The character to look for.
8
+ # @param [Boolean] include If +char+ should be included in the result.
9
+ # @return [String, nil]
10
+ def read_until(char, include: true)
11
+ if (idx = string.index(char, pos)) # rubocop:disable Style/GuardClause
12
+ read(idx - pos + (include ? 1 : 0))
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,17 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Firebug
4
- require 'strscan'
4
+ require_relative 'errors'
5
+ require_relative 'string_io_reader'
5
6
 
6
7
  # This class will unserialize a PHP serialized string into a ruby object.
7
8
  #
8
- # @attr [StringScanner] str
9
+ # @attr [StringIOReader] str
9
10
  class Unserializer
10
11
  attr_accessor :str
11
12
 
12
13
  # @param [String] string
13
14
  def initialize(string)
14
- self.str = StringScanner.new(string)
15
+ self.str = StringIOReader.new(string)
15
16
  end
16
17
 
17
18
  # Convenience method for unserializing a PHP serialized string.
@@ -30,23 +31,24 @@ module Firebug
30
31
  #
31
32
  # @raise [ParserError]
32
33
  # @return [Hash, Array, String, Integer, Float, nil]
33
- def parse # rubocop:disable AbcSize,CyclomaticComplexity
34
- ch = str.getch
34
+ def parse # rubocop:disable CyclomaticComplexity
35
+ ch = str.getc
35
36
  return if ch.nil?
36
37
 
38
+ str.getc # : or ;
37
39
  case ch
38
40
  when 'a'
39
- parse_enumerable.tap { expect('}') }
41
+ parse_enumerable
40
42
  when 's'
41
- parse_string.tap { expect(';') }
43
+ parse_string
42
44
  when 'i'
43
- parse_int.tap { expect(';') }
45
+ parse_int
44
46
  when 'd'
45
- parse_double.tap { expect(';') }
47
+ parse_double
46
48
  when 'b'
47
- parse_bool.tap { expect(';') }
49
+ parse_bool
48
50
  when 'N'
49
- expect(';')
51
+ nil
50
52
  else
51
53
  raise ParserError, "Unknown token '#{ch}' at position #{str.pos} (#{str.string})"
52
54
  end
@@ -57,63 +59,41 @@ module Firebug
57
59
  # @raise [ParseError]
58
60
  # @return [Hash, Array]
59
61
  def parse_enumerable
60
- size = parse_int
61
- expect('{')
62
+ size = str.read_until('{')[0..-3].to_i # n:{
62
63
  return {} if size.zero?
63
- if str.peek(1) == 'i'
64
- # Multiply the size by 2 since the array index isn't counted in the size.
65
- # Odd number element will be the index value so drop it.
66
- Array.new(size * 2) { parse }.select.with_index { |_, i| i.odd? }
64
+
65
+ val = Array.new(size) { [parse, parse] }
66
+ str.getc # }
67
+ if val[0][0].is_a?(Integer)
68
+ val.map! { |_, v| v }
67
69
  else
68
- Array.new(size) { [parse.to_sym, parse] }.to_h
70
+ val = Hash[val].transform_keys!(&:to_sym)
69
71
  end
72
+ val
70
73
  end
71
74
 
72
75
  # @return [String]
73
76
  def parse_string
74
- size = parse_int
75
- str.getch # consume quote '"'
76
- read(size).tap { str.getch }
77
+ size = str.read_until(':').to_i + 3 # add 3 for the 2 double quotes and semicolon
78
+ String.new(str.read(size)[1..-3], encoding: Encoding::UTF_8)
77
79
  end
78
80
 
79
81
  # @raise [ParserError]
80
82
  # @return [Integer]
81
83
  def parse_int
82
- str.scan(/:(\d+):?/)
83
- raise ParserError, "Failed to parse integer at position #{str.pos}" unless str.matched?
84
- str[1].to_i
84
+ str.read_until(';')[0..-1].to_i
85
85
  end
86
86
 
87
87
  # @raise [ParserError]
88
88
  # @return [Float]
89
89
  def parse_double
90
- str.scan(/:(\d+(?:\.\d+)?)/)
91
- raise ParserError, "Failed to parse double at position #{str.pos}" unless str.matched?
92
- str[1].to_f
90
+ str.read_until(';')[0..-1].to_f
93
91
  end
94
92
 
95
93
  # @raise [ParserError]
96
94
  # @return [Boolean]
97
95
  def parse_bool
98
- str.scan(/:([01])/)
99
- raise ParserError, "Failed to parse boolean at position #{str.pos}" unless str.matched?
100
- str[1] == '1'
101
- end
102
-
103
- # @param [Integer] size
104
- # @return [String]
105
- def read(size)
106
- Array.new(size) { str.get_byte }.join
96
+ str.read(2)[0] == '1'
107
97
  end
108
-
109
- # @param [String] s
110
- # @raise [ParserError] if the next character is not `s`
111
- def expect(s)
112
- char = str.getch
113
- raise ParserError, "expected '#{s}' but got '#{char}' at position #{str.pos}" unless char == s
114
- end
115
- end
116
-
117
- class ParserError < StandardError
118
98
  end
119
99
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Firebug
4
4
  # The current version of Firebug
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.0'
6
6
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Frase
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-19 00:00:00.000000000 Z
11
+ date: 2019-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - "<="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - "<="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - "<="
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '6.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - "<="
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: '6.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ruby-mcrypt
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,48 +58,48 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.15'
61
+ version: '2.0'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 2.0.1
62
65
  type: :development
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
69
  - - "~>"
67
70
  - !ruby/object:Gem::Version
68
- version: '1.15'
71
+ version: '2.0'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 2.0.1
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: database_cleaner
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '1.6'
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.6.2
81
+ version: '1.7'
79
82
  type: :development
80
83
  prerelease: false
81
84
  version_requirements: !ruby/object:Gem::Requirement
82
85
  requirements:
83
86
  - - "~>"
84
87
  - !ruby/object:Gem::Version
85
- version: '1.6'
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 1.6.2
88
+ version: '1.7'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: pry
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 0.11.3
95
+ version: 0.12.2
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 0.11.3
102
+ version: 0.12.2
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +107,9 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '12.3'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 12.3.2
110
113
  type: :development
111
114
  prerelease: false
112
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -114,116 +117,107 @@ dependencies:
114
117
  - - "~>"
115
118
  - !ruby/object:Gem::Version
116
119
  version: '12.3'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 12.3.2
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: rspec
119
125
  requirement: !ruby/object:Gem::Requirement
120
126
  requirements:
121
127
  - - "~>"
122
128
  - !ruby/object:Gem::Version
123
- version: '3.7'
129
+ version: '3.8'
124
130
  type: :development
125
131
  prerelease: false
126
132
  version_requirements: !ruby/object:Gem::Requirement
127
133
  requirements:
128
134
  - - "~>"
129
135
  - !ruby/object:Gem::Version
130
- version: '3.7'
136
+ version: '3.8'
131
137
  - !ruby/object:Gem::Dependency
132
138
  name: rspec_junit_formatter
133
139
  requirement: !ruby/object:Gem::Requirement
134
140
  requirements:
135
141
  - - "~>"
136
142
  - !ruby/object:Gem::Version
137
- version: 0.3.0
143
+ version: 0.4.1
138
144
  type: :development
139
145
  prerelease: false
140
146
  version_requirements: !ruby/object:Gem::Requirement
141
147
  requirements:
142
148
  - - "~>"
143
149
  - !ruby/object:Gem::Version
144
- version: 0.3.0
150
+ version: 0.4.1
145
151
  - !ruby/object:Gem::Dependency
146
152
  name: rubocop
147
153
  requirement: !ruby/object:Gem::Requirement
148
154
  requirements:
149
155
  - - "~>"
150
156
  - !ruby/object:Gem::Version
151
- version: 0.52.1
157
+ version: 0.66.0
152
158
  type: :development
153
159
  prerelease: false
154
160
  version_requirements: !ruby/object:Gem::Requirement
155
161
  requirements:
156
162
  - - "~>"
157
163
  - !ruby/object:Gem::Version
158
- version: 0.52.1
164
+ version: 0.66.0
159
165
  - !ruby/object:Gem::Dependency
160
166
  name: rubocop-rspec
161
167
  requirement: !ruby/object:Gem::Requirement
162
168
  requirements:
163
169
  - - "~>"
164
170
  - !ruby/object:Gem::Version
165
- version: '1.22'
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- version: 1.22.2
171
+ version: '1.32'
169
172
  type: :development
170
173
  prerelease: false
171
174
  version_requirements: !ruby/object:Gem::Requirement
172
175
  requirements:
173
176
  - - "~>"
174
177
  - !ruby/object:Gem::Version
175
- version: '1.22'
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- version: 1.22.2
178
+ version: '1.32'
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: simplecov
181
181
  requirement: !ruby/object:Gem::Requirement
182
182
  requirements:
183
183
  - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: 0.15.1
185
+ version: 0.16.1
186
186
  type: :development
187
187
  prerelease: false
188
188
  version_requirements: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: 0.15.1
192
+ version: 0.16.1
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: sqlite3
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: '1.3'
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: 1.3.13
199
+ version: 1.3.6
203
200
  type: :development
204
201
  prerelease: false
205
202
  version_requirements: !ruby/object:Gem::Requirement
206
203
  requirements:
207
204
  - - "~>"
208
205
  - !ruby/object:Gem::Version
209
- version: '1.3'
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- version: 1.3.13
206
+ version: 1.3.6
213
207
  - !ruby/object:Gem::Dependency
214
208
  name: yard
215
209
  requirement: !ruby/object:Gem::Requirement
216
210
  requirements:
217
211
  - - "~>"
218
212
  - !ruby/object:Gem::Version
219
- version: 0.9.12
213
+ version: 0.9.18
220
214
  type: :development
221
215
  prerelease: false
222
216
  version_requirements: !ruby/object:Gem::Requirement
223
217
  requirements:
224
218
  - - "~>"
225
219
  - !ruby/object:Gem::Version
226
- version: 0.9.12
220
+ version: 0.9.18
227
221
  description: Gem for working with CodeIgniter sessions
228
222
  email:
229
223
  - aaron@rvshare.com
@@ -253,8 +247,10 @@ files:
253
247
  - lib/firebug.rb
254
248
  - lib/firebug/configuration.rb
255
249
  - lib/firebug/crypto.rb
250
+ - lib/firebug/errors.rb
256
251
  - lib/firebug/serializer.rb
257
252
  - lib/firebug/session.rb
253
+ - lib/firebug/string_io_reader.rb
258
254
  - lib/firebug/unserializer.rb
259
255
  - lib/firebug/version.rb
260
256
  homepage: https://github.com/rvshare/firebug
@@ -277,8 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
273
  - !ruby/object:Gem::Version
278
274
  version: '0'
279
275
  requirements: []
280
- rubyforge_project:
281
- rubygems_version: 2.6.12
276
+ rubygems_version: 3.0.1
282
277
  signing_key:
283
278
  specification_version: 4
284
279
  summary: Gem for working with CodeIgniter sessions