firebug 1.0.0 → 1.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 +4 -4
- data/.circleci/config.yml +8 -20
- data/README.md +2 -1
- data/firebug.gemspec +1 -1
- data/lib/action_dispatch/session/code_igniter_store.rb +42 -21
- data/lib/firebug/configuration.rb +4 -0
- data/lib/firebug/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7ae866f5a57fc4cd5782c1d42232a83b473541e
|
4
|
+
data.tar.gz: ea21d35182344dedc599830d373177714098963e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 543016ca23566df1e2e76790e0c85688a30102851df90f137f19bbbed502141e1308576613768292d56c468bfd5bfbf6bb1abdd2d3d5a4a4b1f65642071ab6ca
|
7
|
+
data.tar.gz: b5776e9dbc85cb9f3b7e35984c4a2047fcc9b2484b467c100c2f48898671b4e57f256f054cee3bf3f8a3a927901bc78da98145d12ef7a254c6ffcb2e09235c1b
|
data/.circleci/config.yml
CHANGED
@@ -25,12 +25,9 @@ restore_gems: &restore_gems
|
|
25
25
|
- firebug-{{ checksum "Gemfile.lock" }}
|
26
26
|
|
27
27
|
jobs:
|
28
|
-
# Since a workspace can't persist the root of the working directory we are using the caching mechanism to save
|
29
|
-
# the repository.
|
30
28
|
checkout-code:
|
31
29
|
<<: *defaults
|
32
30
|
steps:
|
33
|
-
- *restore_repo
|
34
31
|
- checkout
|
35
32
|
- save_cache:
|
36
33
|
key: repo-{{ .Branch }}-{{ .Revision }}
|
@@ -45,10 +42,9 @@ jobs:
|
|
45
42
|
- run:
|
46
43
|
name: Install Bundler dependencies
|
47
44
|
command: |
|
48
|
-
bin/bundle install --
|
49
|
-
|
50
|
-
|
51
|
-
--retry=3
|
45
|
+
bin/bundle install --path=vendor/bundle \
|
46
|
+
--jobs=4 \
|
47
|
+
--retry=3
|
52
48
|
- save_cache:
|
53
49
|
key: firebug-{{ checksum "Gemfile.lock" }}
|
54
50
|
paths:
|
@@ -66,22 +62,15 @@ jobs:
|
|
66
62
|
- *attach_workspace
|
67
63
|
- run:
|
68
64
|
name: Set bundler path
|
69
|
-
command: bundle --path vendor/bundle
|
70
|
-
- run:
|
71
|
-
name: Setup Code Climate test-reporter
|
72
|
-
command: |
|
73
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
74
|
-
chmod +x ./cc-test-reporter
|
65
|
+
command: bin/bundle --path vendor/bundle
|
75
66
|
- run:
|
76
67
|
name: Run tests
|
77
68
|
command: |
|
78
|
-
./cc-test-reporter before-build
|
79
69
|
bin/bundle exec rspec --profile 10 \
|
80
70
|
--format RspecJunitFormatter \
|
81
71
|
--out test_results/rspec.xml \
|
82
72
|
--format progress \
|
83
73
|
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
|
84
|
-
./cc-test-reporter after-build -t simplecov coverage/.resultset.json
|
85
74
|
- store_test_results:
|
86
75
|
path: test_results
|
87
76
|
- store_artifacts:
|
@@ -97,11 +86,11 @@ jobs:
|
|
97
86
|
- *restore_repo
|
98
87
|
- *attach_workspace
|
99
88
|
- run:
|
100
|
-
name:
|
101
|
-
command:
|
89
|
+
name: Set bundler path
|
90
|
+
command: bin/bundle --path vendor/bundle
|
102
91
|
- run:
|
103
92
|
name: Run rubocop
|
104
|
-
command:
|
93
|
+
command: bin/bundle exec rubocop
|
105
94
|
|
106
95
|
workflows:
|
107
96
|
version: 2
|
@@ -113,8 +102,7 @@ workflows:
|
|
113
102
|
- checkout-code
|
114
103
|
- run-rubocop:
|
115
104
|
requires:
|
116
|
-
-
|
105
|
+
- bundle-dependencies
|
117
106
|
- run-specs:
|
118
107
|
requires:
|
119
108
|
- bundle-dependencies
|
120
|
-
- run-rubocop
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Firebug [](https://circleci.com/gh/rvshare/firebug)
|
2
|
+
[](https://badge.fury.io/rb/firebug)
|
2
3
|
|
3
4
|
A gem for working with CodeIgniter sessions in ruby.
|
4
5
|
|
@@ -83,7 +84,7 @@ version, push git commits and tags, and push the `.gem`file to
|
|
83
84
|
## Contributing
|
84
85
|
|
85
86
|
Bug reports and pull requests are welcome on GitHub at
|
86
|
-
[https://github.com/
|
87
|
+
[https://github.com/rvshare/firebug](https://github.com/rvshare/firebug).
|
87
88
|
|
88
89
|
## License
|
89
90
|
|
data/firebug.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec| # rubocop:disable BlockLength
|
|
28
28
|
spec.add_dependency 'activerecord', '~> 5.0'
|
29
29
|
spec.add_dependency 'ruby-mcrypt', '~> 0.2'
|
30
30
|
|
31
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
31
|
+
spec.add_development_dependency 'bundler', '~> 1.15'
|
32
32
|
spec.add_development_dependency 'database_cleaner', '~> 1.6', '>= 1.6.2'
|
33
33
|
spec.add_development_dependency 'pry', '~> 0.11.3'
|
34
34
|
spec.add_development_dependency 'rake', '~> 12.3'
|
@@ -7,6 +7,8 @@ module ActionDispatch
|
|
7
7
|
module Session
|
8
8
|
# A session store for Rails to handle Pyro sessions.
|
9
9
|
class CodeIgniterStore < AbstractStore
|
10
|
+
SESSION_RECORD_KEY = 'rack.session.record'
|
11
|
+
|
10
12
|
# @param [Object] app
|
11
13
|
# @param [Hash] options
|
12
14
|
# @option options [String] :key ('default_pyrocms') The session cookie name.
|
@@ -26,10 +28,13 @@ module ActionDispatch
|
|
26
28
|
# @param [String] sid
|
27
29
|
# @return [Array<String, Hash>]
|
28
30
|
def find_session(req, sid)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
silence_logger(req) do
|
32
|
+
model = find_session_model(req, sid)
|
33
|
+
req.env[SESSION_RECORD_KEY] = model
|
34
|
+
# +Rack::Session::Abstract::Persisted#load_session+ expects this to return an Array with the first value being
|
35
|
+
# the session ID and the second the actual session data.
|
36
|
+
[model.session_id, model.user_data]
|
37
|
+
end
|
33
38
|
end
|
34
39
|
|
35
40
|
# Should the session be persisted?
|
@@ -63,17 +68,20 @@ module ActionDispatch
|
|
63
68
|
# @param [Hash] _options
|
64
69
|
# @return [String] encrypted and base64 encoded string of the session data.
|
65
70
|
def write_session(req, sid, session, _options)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
71
|
+
silence_logger(req) do
|
72
|
+
model = find_session_model(req, sid)
|
73
|
+
model_params = {
|
74
|
+
session_id: model.session_id,
|
75
|
+
user_agent: req.user_agent || '', # user_agent can't be null
|
76
|
+
ip_address: req.remote_ip || '', # ip_address can't be null
|
77
|
+
user_data: session
|
78
|
+
}
|
79
|
+
# Returning false will cause Rack to output a warning.
|
80
|
+
return false unless model.update(model_params)
|
81
|
+
req.env[SESSION_RECORD_KEY] = model
|
82
|
+
# Return the encrypted cookie format of the data. Rack sets this value as the cookie in the response
|
83
|
+
model.cookie_data
|
84
|
+
end
|
77
85
|
end
|
78
86
|
|
79
87
|
# Deletes then creates a new session in the database.
|
@@ -87,11 +95,14 @@ module ActionDispatch
|
|
87
95
|
# @param [Hash] options
|
88
96
|
# @return [String] the new session id
|
89
97
|
def delete_session(req, sid, options)
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
98
|
+
silence_logger(req) do
|
99
|
+
# Get the current database record for this session then delete it.
|
100
|
+
find_session_model(req, sid).delete
|
101
|
+
return if options[:drop]
|
102
|
+
req.env[SESSION_RECORD_KEY] = nil
|
103
|
+
# Generate a new one and return it's ID
|
104
|
+
find_session_model(req).tap { |s| s.save if options[:renew] }.session_id
|
105
|
+
end
|
95
106
|
end
|
96
107
|
|
97
108
|
# Tries to find the session ID in the requests cookies.
|
@@ -116,7 +127,7 @@ module ActionDispatch
|
|
116
127
|
# @return [Firebug::Session]
|
117
128
|
def find_session_model(req, sid=nil)
|
118
129
|
if sid
|
119
|
-
model = Firebug::Session.find_by(find_by_params(req, sid))
|
130
|
+
model = req.env[SESSION_RECORD_KEY] || Firebug::Session.find_by(find_by_params(req, sid))
|
120
131
|
return model if model
|
121
132
|
# use a different session ID in case the reason for not finding the record is because the user_agent
|
122
133
|
# or ip_address didn't match.
|
@@ -142,6 +153,16 @@ module ActionDispatch
|
|
142
153
|
end
|
143
154
|
params
|
144
155
|
end
|
156
|
+
|
157
|
+
# @param [ActionDispatch::Request] req
|
158
|
+
def silence_logger(req)
|
159
|
+
logger = req.env['action_dispatch.logger'] || ActiveRecord::Base.logger
|
160
|
+
if logger && Firebug.config.silence_logger
|
161
|
+
logger.silence { yield }
|
162
|
+
else
|
163
|
+
yield
|
164
|
+
end
|
165
|
+
end
|
145
166
|
end
|
146
167
|
end
|
147
168
|
end
|
@@ -13,6 +13,8 @@ module Firebug
|
|
13
13
|
# Use the user-agent in addition to the session ID.
|
14
14
|
# @attr [Boolean] match_ip_address
|
15
15
|
# Use the remote ip address in addition to the session ID.
|
16
|
+
# @attr [Boolean] silence_logger
|
17
|
+
# Silence ActiveRecord logs.
|
16
18
|
# @attr [Proc] session_filter
|
17
19
|
# Return true if this request should have it's session written.
|
18
20
|
# @see ActionDispatch::Session::CodeIgniterStore#commit_session?
|
@@ -24,11 +26,13 @@ module Firebug
|
|
24
26
|
attr_accessor :match_user_agent
|
25
27
|
attr_accessor :match_ip_address
|
26
28
|
attr_accessor :session_filter
|
29
|
+
attr_accessor :silence_logger
|
27
30
|
|
28
31
|
def initialize
|
29
32
|
self.truncate_user_agent = false
|
30
33
|
self.match_user_agent = false
|
31
34
|
self.match_ip_address = false
|
35
|
+
self.silence_logger = true
|
32
36
|
# default to always writing the session
|
33
37
|
self.session_filter = ->(_) { true }
|
34
38
|
end
|
data/lib/firebug/version.rb
CHANGED
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: 1.
|
4
|
+
version: 1.1.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-
|
11
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
61
|
+
version: '1.15'
|
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: '1.
|
68
|
+
version: '1.15'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: database_cleaner
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|