firebug 0.1.10 → 0.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
2
  SHA1:
3
- metadata.gz: c1018614c711583afd4cc0e72fe43caf99297e08
4
- data.tar.gz: 1be4cca8273663260083ffb377179e7026b6c55a
3
+ metadata.gz: d962e0889d934d02bb7ddd704dc36551f1e93782
4
+ data.tar.gz: 6fd8c6ee90d2427015b20d377a138811762ec0a8
5
5
  SHA512:
6
- metadata.gz: 05b8ec0da9dd7213369c6d8556337a3efe75eccae821543f81ed3a3503f62c77dc770e4a01601cdec7ceb138ab66f397dfe779232050885828d58babcd3e3896
7
- data.tar.gz: 54d74fc10bc0b04c6a33cfc6f61d2c4082ca425d832ab2ff7c24c5be590a84a9b2839d972c880031bd5dd594e26a62fc9b17a2c3c19ae4a4bb5a435b7b52d9b6
6
+ metadata.gz: a6335042903d1bfdbf55ad9033151b3650f4d2d88a3e80cd91e267f2d5995de9fd3df006fd822dd2af50b4391e8a4c9c450a63d145ec8a95a0f54119964cc635
7
+ data.tar.gz: 3867412bef819d66ab7eee5d523d0a783a5295b2b19b75d40ad4b5fe780c0636af04dff260f78671eecf286d61ddf5de3b774c4fa24df6b907a050179f26bb4f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- firebug (0.1.10)
4
+ firebug (0.2.0)
5
5
  actionpack (~> 5.0)
6
6
  activerecord (~> 5.0)
7
7
  ruby-mcrypt (~> 0.2)
@@ -34,7 +34,7 @@ GEM
34
34
  minitest (~> 5.1)
35
35
  tzinfo (~> 1.1)
36
36
  arel (8.0.0)
37
- ast (2.3.0)
37
+ ast (2.4.0)
38
38
  builder (3.2.3)
39
39
  coderay (1.1.2)
40
40
  concurrent-ruby (1.0.5)
@@ -53,9 +53,9 @@ GEM
53
53
  minitest (5.11.3)
54
54
  nokogiri (1.8.2)
55
55
  mini_portile2 (~> 2.3.0)
56
- parallel (1.12.0)
57
- parser (2.4.0.2)
58
- ast (~> 2.3)
56
+ parallel (1.12.1)
57
+ parser (2.5.0.1)
58
+ ast (~> 2.4.0)
59
59
  powerpack (0.1.1)
60
60
  pry (0.11.3)
61
61
  coderay (~> 1.1.0)
@@ -68,8 +68,7 @@ GEM
68
68
  nokogiri (>= 1.6)
69
69
  rails-html-sanitizer (1.0.3)
70
70
  loofah (~> 2.0)
71
- rainbow (2.2.2)
72
- rake
71
+ rainbow (3.0.0)
73
72
  rake (12.3.0)
74
73
  rspec (3.7.0)
75
74
  rspec-core (~> 3.7.0)
@@ -86,15 +85,15 @@ GEM
86
85
  rspec-support (3.7.0)
87
86
  rspec_junit_formatter (0.3.0)
88
87
  rspec-core (>= 2, < 4, != 2.12.0)
89
- rubocop (0.51.0)
88
+ rubocop (0.52.1)
90
89
  parallel (~> 1.10)
91
- parser (>= 2.3.3.1, < 3.0)
90
+ parser (>= 2.4.0.2, < 3.0)
92
91
  powerpack (~> 0.1)
93
- rainbow (>= 2.2.2, < 3.0)
92
+ rainbow (>= 2.2.2, < 4.0)
94
93
  ruby-progressbar (~> 1.7)
95
94
  unicode-display_width (~> 1.0, >= 1.0.1)
96
- rubocop-rspec (1.20.1)
97
- rubocop (>= 0.51.0)
95
+ rubocop-rspec (1.22.2)
96
+ rubocop (>= 0.52.1)
98
97
  ruby-mcrypt (0.2.0)
99
98
  ruby-progressbar (1.9.0)
100
99
  simplecov (0.15.1)
@@ -107,21 +106,23 @@ GEM
107
106
  tzinfo (1.2.5)
108
107
  thread_safe (~> 0.1)
109
108
  unicode-display_width (1.3.0)
109
+ yard (0.9.12)
110
110
 
111
111
  PLATFORMS
112
112
  ruby
113
113
 
114
114
  DEPENDENCIES
115
- bundler
115
+ bundler (~> 1.16)
116
116
  firebug!
117
- pry
118
- rake
119
- rspec
120
- rspec_junit_formatter
121
- rubocop
122
- rubocop-rspec
123
- simplecov
124
- sqlite3
117
+ pry (~> 0.11.3)
118
+ rake (~> 12.3)
119
+ rspec (~> 3.7)
120
+ rspec_junit_formatter (~> 0.3.0)
121
+ rubocop (~> 0.52.1)
122
+ rubocop-rspec (~> 1.22, >= 1.22.2)
123
+ simplecov (~> 0.15.1)
124
+ sqlite3 (~> 1.3, >= 1.3.13)
125
+ yard (~> 0.9.12)
125
126
 
126
127
  BUNDLED WITH
127
128
  1.16.0
data/Rakefile CHANGED
@@ -3,11 +3,23 @@
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rspec/core/rake_task'
5
5
  require 'rubocop/rake_task'
6
+ require 'yard'
7
+ require 'firebug/version'
6
8
 
7
9
  RSpec::Core::RakeTask.new(:spec)
8
10
 
11
+ YARD::Rake::YardocTask.new do |task|
12
+ task.options += ['--title', "Firebug #{Firebug::VERSION} Documentation"]
13
+ task.options += ['--protected']
14
+ task.options += ['--no-private']
15
+
16
+ # has to be last
17
+ extra_files = %w[CODE_OF_CONDUCT.md LICENSE.txt]
18
+ task.options += ['-'] + extra_files
19
+ end
20
+
9
21
  RuboCop::RakeTask.new do |task|
10
22
  task.requires << 'rubocop-rspec'
11
23
  end
12
24
 
13
- task default: :spec
25
+ task default: %i[rubocop spec]
data/firebug.gemspec CHANGED
@@ -22,17 +22,20 @@ Gem::Specification.new do |spec| # rubocop:disable BlockLength
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
+ spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
26
+
25
27
  spec.add_dependency 'actionpack', '~> 5.0'
26
28
  spec.add_dependency 'activerecord', '~> 5.0'
27
29
  spec.add_dependency 'ruby-mcrypt', '~> 0.2'
28
30
 
29
- spec.add_development_dependency 'bundler'
30
- spec.add_development_dependency 'pry'
31
- spec.add_development_dependency 'rake'
32
- spec.add_development_dependency 'rspec'
33
- spec.add_development_dependency 'rspec_junit_formatter'
34
- spec.add_development_dependency 'rubocop'
35
- spec.add_development_dependency 'rubocop-rspec'
36
- spec.add_development_dependency 'simplecov'
37
- spec.add_development_dependency 'sqlite3'
31
+ spec.add_development_dependency 'bundler', '~> 1.16'
32
+ spec.add_development_dependency 'pry', '~> 0.11.3'
33
+ spec.add_development_dependency 'rake', '~> 12.3'
34
+ spec.add_development_dependency 'rspec', '~> 3.7'
35
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
36
+ spec.add_development_dependency 'rubocop', '~> 0.52.1'
37
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.22', '>= 1.22.2'
38
+ spec.add_development_dependency 'simplecov', '~> 0.15.1'
39
+ spec.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.13'
40
+ spec.add_development_dependency 'yard', '~> 0.9.12'
38
41
  end
@@ -5,16 +5,26 @@ require_relative '../../firebug/session'
5
5
 
6
6
  module ActionDispatch
7
7
  module Session
8
+ # A session store for Rails to handle Pyro sessions.
8
9
  class CodeIgniterStore < AbstractStore
10
+ # @param [Object] app
11
+ # @param [Hash] options
12
+ # @option options [String] :key ('default_pyrocms') The session cookie name.
9
13
  def initialize(app, options={})
10
14
  super(app, { key: 'default_pyrocms' }.merge(options))
11
15
  end
12
16
 
17
+ private
18
+
13
19
  # Finds an existing session or creates a new one.
14
20
  #
21
+ # @!visibility public
22
+ #
23
+ # @see http://api.rubyonrails.org/classes/ActionDispatch/Request.html ActionDispatch::Request
24
+ #
15
25
  # @param [ActionDispatch::Request] req
16
26
  # @param [String] sid
17
- # @return [Array<String, Object>]
27
+ # @return [Array<String, Hash>]
18
28
  def find_session(req, sid)
19
29
  model = find_session_model(req, sid)
20
30
  # +Rack::Session::Abstract::Persisted#load_session+ expects this to return an Array with the first value being
@@ -22,8 +32,31 @@ module ActionDispatch
22
32
  [model.session_id, model.user_data]
23
33
  end
24
34
 
35
+ # Should the session be persisted?
36
+ #
37
+ # @note This is called from +Rack::Session::Abstract::Persisted#commit_session+.
38
+ #
39
+ # @!visibility public
40
+ #
41
+ # @see http://www.rubydoc.info/gems/rack/Rack/Session/Abstract/Persisted#commit_session-instance_method
42
+ # Rack::Session::Abstract::Persisted#commit_session
43
+ # @see http://api.rubyonrails.org/classes/ActionDispatch/Request.html ActionDispatch::Request
44
+ #
45
+ # @param [ActionDispatch::Request] req
46
+ # @param [Hash] session
47
+ # @param [Hash] options
48
+ # @return [Boolean] when true #write_session will be called
49
+ def commit_session?(req, session, options)
50
+ # If session_filter returns true then let super decide if we commit the session.
51
+ Firebug.config.session_filter.call(req) ? super : false
52
+ end
53
+
25
54
  # Writes the session information to the database.
26
55
  #
56
+ # @!visibility public
57
+ #
58
+ # @see http://api.rubyonrails.org/classes/ActionDispatch/Request.html ActionDispatch::Request
59
+ #
27
60
  # @param [ActionDispatch::Request] req
28
61
  # @param [String] sid
29
62
  # @param [Hash] session
@@ -45,6 +78,10 @@ module ActionDispatch
45
78
 
46
79
  # Deletes then creates a new session in the database.
47
80
  #
81
+ # @!visibility public
82
+ #
83
+ # @see http://api.rubyonrails.org/classes/ActionDispatch/Request.html ActionDispatch::Request
84
+ #
48
85
  # @param [ActionDispatch::Request] req
49
86
  # @param [String] sid
50
87
  # @param [Hash] _options
@@ -58,6 +95,10 @@ module ActionDispatch
58
95
 
59
96
  # Tries to find the session ID in the requests cookies.
60
97
  #
98
+ # @!visibility public
99
+ #
100
+ # @see http://api.rubyonrails.org/classes/ActionDispatch/Request.html ActionDispatch::Request
101
+ #
61
102
  # @param [ActionDispatch::Request] req
62
103
  # @return [String, nil]
63
104
  def extract_session_id(req)
@@ -69,8 +110,6 @@ module ActionDispatch
69
110
  Firebug.decrypt_cookie(sid)[:session_id]
70
111
  end
71
112
 
72
- private
73
-
74
113
  # @param [ActionDispatch::Request] req
75
114
  # @param [String] sid
76
115
  # @return [Firebug::Session]
@@ -96,9 +135,9 @@ module ActionDispatch
96
135
  # @return [Hash]
97
136
  def find_by_params(req, sid)
98
137
  params = { session_id: sid }
99
- params[:ip_address] = req.remote_ip if Firebug.configuration.match_ip_address
100
- if Firebug.configuration.match_user_agent
101
- params[:user_agent] = Firebug.configuration.truncate_user_agent ? req.user_agent[0...120] : req.user_agent
138
+ params[:ip_address] = req.remote_ip if Firebug.config.match_ip_address
139
+ if Firebug.config.match_user_agent
140
+ params[:user_agent] = Firebug.config.truncate_user_agent ? req.user_agent&.slice(0...120) : req.user_agent
102
141
  end
103
142
  params
104
143
  end
data/lib/firebug.rb CHANGED
@@ -10,66 +10,81 @@ require_relative 'action_dispatch/session/code_igniter_store'
10
10
  module Firebug
11
11
  class << self
12
12
  attr_writer :configuration
13
- end
14
13
 
15
- # @return [Firebug::Configuration]
16
- def self.configuration
17
- @configuration ||= Configuration.new
18
- end
14
+ # Firebug configuration
15
+ #
16
+ # @return [Firebug::Configuration]
17
+ def configuration
18
+ @configuration ||= Configuration.new
19
+ end
20
+ alias config configuration
19
21
 
20
- # @yieldparam [Firebug::Configuration] config
21
- def self.configure
22
- yield configuration
23
- end
22
+ # Configure Firebug inside a block.
23
+ #
24
+ # @example
25
+ # Firebug.configure do |config|
26
+ # config.key = 'password'
27
+ # end
28
+ #
29
+ # @yieldparam [Firebug::Configuration] config
30
+ def configure
31
+ yield configuration
32
+ end
24
33
 
25
- # Serialize a ruby object into a PHP serialized string.
26
- #
27
- # @param [Object] value
28
- # @return [String]
29
- def self.serialize(value)
30
- Serializer.parse(value)
31
- end
34
+ # Serialize a ruby object into a PHP serialized string.
35
+ #
36
+ # @see Firebug::Serializer.parse
37
+ #
38
+ # @param [Object] value
39
+ # @return [String]
40
+ def serialize(value)
41
+ Serializer.parse(value)
42
+ end
32
43
 
33
- # Unserialize a PHP serialized string into a ruby object.
34
- #
35
- # @param [String] value
36
- # @return [Object]
37
- def self.unserialize(value)
38
- Unserializer.parse(value)
39
- end
44
+ # Unserialize a PHP serialized string into a ruby object.
45
+ #
46
+ # @see Firebug::Unserializer.parse
47
+ #
48
+ # @param [String] value
49
+ # @return [Object]
50
+ def unserialize(value)
51
+ Unserializer.parse(value)
52
+ end
40
53
 
41
- # Encrypt data the way CodeIgniter does.
42
- #
43
- # @param [Object] data
44
- # @param [String] key if `nil` use +Firebug::Configuration.key+
45
- def self.encrypt(data, key=nil)
46
- key = configuration.key if key.nil?
47
- Crypto.new(key).encrypt(data)
48
- end
54
+ # Encrypt data the way CodeIgniter does.
55
+ #
56
+ # @see Firebug::Crypto#encrypt
57
+ #
58
+ # @param [Object] data
59
+ # @param [String] key if `nil` use +Firebug::Configuration.key+
60
+ def encrypt(data, key=nil)
61
+ Crypto.new(key.nil? ? config.key : key).encrypt(data)
62
+ end
49
63
 
50
- # Decrypt data encrypted using CodeIgniters encryption.
51
- #
52
- # @param [Object] data
53
- # @param [String] key if `nil` use +Firebug::Configuration.key+
54
- def self.decrypt(data, key=nil)
55
- key = configuration.key if key.nil?
56
- Crypto.new(key).decrypt(data)
57
- end
64
+ # Decrypt data encrypted using CodeIgniters encryption.
65
+ #
66
+ # @see Firebug::Crypto#decrypt
67
+ #
68
+ # @param [Object] data
69
+ # @param [String] key If `nil` use +Firebug::Configuration.key+
70
+ def decrypt(data, key=nil)
71
+ Crypto.new(key.nil? ? config.key : key).decrypt(data)
72
+ end
58
73
 
59
- # Serializes, encrypts, and base64 encodes the data.
60
- #
61
- # @param [Object] data
62
- # @return [String] a base64 encoded string
63
- def self.encrypt_cookie(data)
64
- Base64.strict_encode64(Firebug.encrypt(Firebug.serialize(data)))
65
- end
74
+ # Serializes, encrypts, and base64 encodes the data.
75
+ #
76
+ # @param [Object] data
77
+ # @return [String] A base64 encoded string.
78
+ def encrypt_cookie(data)
79
+ Base64.strict_encode64(Firebug.encrypt(Firebug.serialize(data)))
80
+ end
66
81
 
67
- # Decodes the base64 encoded string, decrypts, and unserializes.
68
- #
69
- # @param [String] data a base64 encoded encrypted string
70
- # @return [Object] the unserialized data
71
- def self.decrypt_cookie(data)
72
- return {} if data.nil?
73
- Firebug.unserialize(Firebug.decrypt(Base64.strict_decode64(data)))
82
+ # Decodes the base64 encoded string, decrypts, and unserializes.
83
+ #
84
+ # @param [String] data A base64 encoded encrypted string.
85
+ # @return [Object] The unserialized data.
86
+ def decrypt_cookie(data)
87
+ data.nil? ? {} : Firebug.unserialize(Firebug.decrypt(Base64.strict_decode64(data)))
88
+ end
74
89
  end
75
90
  end
@@ -3,11 +3,19 @@
3
3
  module Firebug
4
4
  # A configuration object.
5
5
  #
6
- # @attr [String] key the encryption key used to encrypt and decrypt cookies.
7
- # @attr [String] table_name the name of the sessions table.
8
- # @attr [Boolean] truncate_user_agent truncate the user-agent to 120 characters.
9
- # @attr [Boolean] match_user_agent use the user-agent in addition to the session ID.
10
- # @attr [Boolean] match_ip_address use the remote ip address in addition to the session ID.
6
+ # @attr [String] key
7
+ # The encryption key used to encrypt and decrypt cookies.
8
+ # @attr [String] table_name
9
+ # The name of the sessions table.
10
+ # @attr [Boolean] truncate_user_agent
11
+ # Truncate the user-agent to 120 characters.
12
+ # @attr [Boolean] match_user_agent
13
+ # Use the user-agent in addition to the session ID.
14
+ # @attr [Boolean] match_ip_address
15
+ # Use the remote ip address in addition to the session ID.
16
+ # @attr [Proc] session_filter
17
+ # Return true if this request should have it's session written.
18
+ # @see ActionDispatch::Session::CodeIgniterStore#commit_session?
11
19
  class Configuration
12
20
  attr_reader :table_name
13
21
 
@@ -15,8 +23,17 @@ module Firebug
15
23
  attr_accessor :truncate_user_agent
16
24
  attr_accessor :match_user_agent
17
25
  attr_accessor :match_ip_address
26
+ attr_accessor :session_filter
18
27
 
19
- # Sets the table name for +Firebug::Session+
28
+ def initialize
29
+ self.truncate_user_agent = false
30
+ self.match_user_agent = false
31
+ self.match_ip_address = false
32
+ # default to always writing the session
33
+ self.session_filter = ->(_) { true }
34
+ end
35
+
36
+ # Sets the table name for (see Firebug::Session)
20
37
  #
21
38
  # @param [String] value
22
39
  def table_name=(value)
@@ -5,22 +5,27 @@ module Firebug
5
5
  require 'securerandom'
6
6
  require 'mcrypt'
7
7
 
8
+ # Class for encrypting and decrypting Pyro cookies.
8
9
  class Crypto
9
10
  # @param [String] key
10
11
  def initialize(key)
11
12
  @key = Digest::MD5.hexdigest(key)
12
13
  end
13
14
 
15
+ # Encrypts +data+ using the Rijndael 256 cipher.
16
+ #
14
17
  # @param [String] data
15
18
  # @return [String]
16
19
  def encrypt(data)
17
20
  # Create a random 32 byte string to act as the initialization vector.
18
21
  iv = SecureRandom.random_bytes(32)
19
- # CodeIgniter pads the data with zeros
22
+ # Pyro pads the data with zeros
20
23
  cipher = Mcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
21
24
  add_noise(iv + cipher.encrypt(data))
22
25
  end
23
26
 
27
+ # Decrypts +data+ using the Rijndael 256 cipher.
28
+ #
24
29
  # @param [String] data
25
30
  # @return [String]
26
31
  def decrypt(data)
@@ -31,7 +36,7 @@ module Firebug
31
36
  cipher.decrypt(data[32..-1])
32
37
  end
33
38
 
34
- # CodeIgniter adds "noise" to the results of the encryption by adding the ordinal value of each character with a
39
+ # Pyro adds "noise" to the results of the encryption by adding the ordinal value of each character with a
35
40
  # value in the key. The plaintext key is hashed with MD5 then SHA1.
36
41
  #
37
42
  # @param [String] data
@@ -41,6 +46,8 @@ module Firebug
41
46
 
42
47
  # The "noise" is removed by subtracting the ordinals.
43
48
  #
49
+ # @see #add_noise
50
+ #
44
51
  # @param [String] data
45
52
  # @return [String]
46
53
  def remove_noise(data)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Firebug
4
+ # A class for converting a Ruby object into a PHP serialized string.
4
5
  class Serializer
5
6
  # Convert a ruby object into a PHP serialized string.
6
7
  #
@@ -21,7 +21,7 @@ module Firebug
21
21
  def user_agent=(value)
22
22
  # Pyro seems to truncate the value and since it also uses this value when finding the session, it's important
23
23
  # we do the same.
24
- super(Firebug.configuration.truncate_user_agent ? value&.slice(0...120) : value)
24
+ super(Firebug.config.truncate_user_agent ? value&.slice(0...120) : value)
25
25
  end
26
26
 
27
27
  # @return [String]
@@ -32,6 +32,9 @@ module Firebug
32
32
 
33
33
  private
34
34
 
35
+ # Replace the default timestamp column name.
36
+ #
37
+ # @return [Array<String>]
35
38
  def timestamp_attributes_for_update
36
39
  ['last_activity']
37
40
  end
@@ -5,8 +5,6 @@ module Firebug
5
5
 
6
6
  # This class will unserialize a PHP serialized string into a ruby object.
7
7
  #
8
- # @note Hashes will be returned with symbolized keys.
9
- #
10
8
  # @attr [StringScanner] str
11
9
  class Unserializer
12
10
  attr_accessor :str
@@ -18,13 +16,20 @@ module Firebug
18
16
 
19
17
  # Convenience method for unserializing a PHP serialized string.
20
18
  #
19
+ # @see #parse
20
+ #
21
21
  # @param [String] value
22
22
  # @return [Object]
23
23
  def self.parse(value)
24
24
  new(value).parse
25
25
  end
26
26
 
27
+ # Parse a PHP serialized string into a Ruby object.
28
+ #
29
+ # @note Hashes will be returned with symbolized keys.
30
+ #
27
31
  # @raise [ParserError]
32
+ # @return [Hash, Array, String, Integer, Float, nil]
28
33
  def parse # rubocop:disable AbcSize,CyclomaticComplexity
29
34
  ch = str.getch
30
35
  return if ch.nil?
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Firebug
4
- VERSION = '0.1.10'
4
+ # The current version of Firebug
5
+ VERSION = '0.2.0'
5
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.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-02-21 00:00:00.000000000 Z
11
+ date: 2018-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -56,128 +56,154 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.16'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '1.16'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.11.3
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.11.3
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '12.3'
90
90
  type: :development
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'
96
+ version: '12.3'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '3.7'
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: '0'
110
+ version: '3.7'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec_junit_formatter
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.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: '0'
124
+ version: 0.3.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: 0.52.1
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'
138
+ version: 0.52.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.22'
143
146
  - - ">="
144
147
  - !ruby/object:Gem::Version
145
- version: '0'
148
+ version: 1.22.2
146
149
  type: :development
147
150
  prerelease: false
148
151
  version_requirements: !ruby/object:Gem::Requirement
149
152
  requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '1.22'
150
156
  - - ">="
151
157
  - !ruby/object:Gem::Version
152
- version: '0'
158
+ version: 1.22.2
153
159
  - !ruby/object:Gem::Dependency
154
160
  name: simplecov
155
161
  requirement: !ruby/object:Gem::Requirement
156
162
  requirements:
157
- - - ">="
163
+ - - "~>"
158
164
  - !ruby/object:Gem::Version
159
- version: '0'
165
+ version: 0.15.1
160
166
  type: :development
161
167
  prerelease: false
162
168
  version_requirements: !ruby/object:Gem::Requirement
163
169
  requirements:
164
- - - ">="
170
+ - - "~>"
165
171
  - !ruby/object:Gem::Version
166
- version: '0'
172
+ version: 0.15.1
167
173
  - !ruby/object:Gem::Dependency
168
174
  name: sqlite3
169
175
  requirement: !ruby/object:Gem::Requirement
170
176
  requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.3'
171
180
  - - ">="
172
181
  - !ruby/object:Gem::Version
173
- version: '0'
182
+ version: 1.3.13
174
183
  type: :development
175
184
  prerelease: false
176
185
  version_requirements: !ruby/object:Gem::Requirement
177
186
  requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '1.3'
178
190
  - - ">="
179
191
  - !ruby/object:Gem::Version
180
- version: '0'
192
+ version: 1.3.13
193
+ - !ruby/object:Gem::Dependency
194
+ name: yard
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: 0.9.12
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: 0.9.12
181
207
  description: Gem for working with CodeIgniter sessions
182
208
  email:
183
209
  - aaron@rvshare.com
@@ -215,7 +241,8 @@ files:
215
241
  homepage: https://github.com/rvshare/firebug
216
242
  licenses:
217
243
  - MIT
218
- metadata: {}
244
+ metadata:
245
+ yard.run: yri
219
246
  post_install_message:
220
247
  rdoc_options: []
221
248
  require_paths: