auto-session-timeout 0.9.2 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzgzYWM4ODdjNTcwYWI5MmMxZDA0ZDc3NjBjYzRlNmJiN2Q4ZDk3OQ==
5
- data.tar.gz: !binary |-
6
- ZTU4MzEyZDc4OTE4YmVmZWM2NmUwY2EwYTI2YjcxZjU1NzRiZDM4NA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MmFiZGY1NjI4M2M2ZTUzNTZlNmM3OTY5ZjBjM2QyNjA2ZDZkZjE0ODIyYzg1
10
- MDhhZjQ1MmE4Y2RmMTYxNzQwMDMxZWI1NzhjYmYzMmZiNTYyZjI0M2NiNWFi
11
- MDdjZmUzMTlmOTliODc3OTAxNTExOTdjYTExOTY0ODk2ZTcyYTU=
12
- data.tar.gz: !binary |-
13
- ZGZkMjVmNjA5ZjU0YjYxMmJhMjZhYTI3ZTU4YjZlYzRhZjQ5YTNlODkzNmY4
14
- NjQyZmM4YzI5Mjk3MmIxOGMxYWU1NmI1NDc3OWFiZjJmZWMwNGI4ZjA4NDI0
15
- NDZlNGJjZDQ5NmFjNThmM2RkZDg5ZmU5NzBkOGVmZGRhNmMyYzg=
2
+ SHA256:
3
+ metadata.gz: fc498b02e7b05cbf09f3af63eb7f83617970fa76287e7beb522e2b676df6c6a0
4
+ data.tar.gz: fad257ffc2872343879ab12346d6d029c5df75e3ec7eb0913e61f441afa5250b
5
+ SHA512:
6
+ metadata.gz: 58db2799f2c39e9f4107bbdd21b95a563786e5e1bed28670ff0f0d04d86596c0690846a8d07c71b92804d584a40704295539b06115e52eb538a4f5693f20152a
7
+ data.tar.gz: 0ba4a07545611dd012b465e9f21eb6768de9dd588ef4c9bb2c1815bc3253bab062c360443b088c5083cfc524b0e563193edaa86307ba00f8078f4d9064eaabb6
data/.travis.yml ADDED
@@ -0,0 +1,41 @@
1
+ sudo: false
2
+ language: ruby
3
+ cache: bundler
4
+ before_install:
5
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
6
+ - gem install bundler -v '< 2'
7
+ rvm:
8
+ - 2.4.9
9
+ - 2.5.7
10
+ - 2.6.5
11
+ - 2.7.0
12
+ - ruby-head
13
+ env:
14
+ - RAILS_VERSION='~> 3.2'
15
+ - RAILS_VERSION='~> 4.0'
16
+ - RAILS_VERSION='~> 4.1'
17
+ - RAILS_VERSION='~> 4.2'
18
+ - RAILS_VERSION='~> 5.0'
19
+ - RAILS_VERSION='~> 5.1'
20
+ - RAILS_VERSION='~> 5.2'
21
+ jobs:
22
+ exclude:
23
+ - rvm: 2.7.0
24
+ env: RAILS_VERSION='~> 3.2'
25
+ - rvm: 2.7.0
26
+ env: RAILS_VERSION='~> 4.0'
27
+ - rvm: 2.7.0
28
+ env: RAILS_VERSION='~> 4.1'
29
+ - rvm: 2.7.0
30
+ env: RAILS_VERSION='~> 4.2'
31
+ - rvm: ruby-head
32
+ env: RAILS_VERSION='~> 3.2'
33
+ - rvm: ruby-head
34
+ env: RAILS_VERSION='~> 4.0'
35
+ - rvm: ruby-head
36
+ env: RAILS_VERSION='~> 4.1'
37
+ - rvm: ruby-head
38
+ env: RAILS_VERSION='~> 4.2'
39
+ allow_failures:
40
+ - rvm: ruby-head
41
+ fast_finish: true
data/CHANGELOG CHANGED
@@ -1,3 +1,55 @@
1
- 6/22/13 - Switched to Bundler for generating the gemspec [Matthew Bass]
1
+ 2021-02-02 - v0.9.7
2
2
 
3
- 4/22/09 - Initial import [Matthew Bass]
3
+ 2021-02-02 - Rails 6 compatibility [jasonheecs]
4
+
5
+ 2019-10-15 - v0.9.6
6
+
7
+ 2019-10-15 - Use routes in JS helper [pelargir]
8
+
9
+ 2019-03-03 - Update README [cprodhomme]
10
+
11
+ 2018-12-21 - Support Rails protect_from_forgery [davegudge]
12
+
13
+ 2017-06-13 - v0.9.5
14
+
15
+ 2017-06-12 - Exclude controller actions from CSRF verification [pelargir]
16
+
17
+ 2017-06-12 - Make updater use vanilla JS [emilos]
18
+
19
+ 2017-05-16 - v0.9.4
20
+
21
+ 2017-05-08 - Rails 5 compatibility [quainjn]
22
+
23
+ 2016-10-14 - Allow defining verbosity [zaimramlan]
24
+
25
+ 2013-08-29 - v0.9.3
26
+
27
+ 2013-08-28 - Add jQuery support [krishnasrihari]
28
+
29
+ 2013-07-24 - v0.9.2
30
+
31
+ 2013-07-24 - Add tests and use Ruby 1.9 hash syntax [pelargir]
32
+
33
+ 2013-07-24 - v0.9.1
34
+
35
+ 2013-07-24 - Timeout can be set in controller or user model [pelargir]
36
+
37
+ 2013-07-22 - v0.9
38
+
39
+ 2013-07-21 - Support for jQuery periodical updater plugin [pelargir]
40
+
41
+ 2013-07-17 - v0.8
42
+
43
+ 2014-07-14 - Added jQuery support [krishnasrihari]
44
+
45
+ 2013-06-23 - v0.7
46
+
47
+ 2013-06-22 - Switched to Bundler for generating the gemspec [pelargir]
48
+
49
+ 2009-08-22 - v0.5
50
+
51
+ 2009-06-03 - Move controller actions into plugin [pelargir]
52
+
53
+ 2009-04-22 - Add JS helper [pelargir]
54
+
55
+ 2009-04-22 - Initial import [pelargir]
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ rails_version = ENV['RAILS_VERSION']
4
+ gem 'actionpack', rails_version
5
+
3
6
  # Specify your gem's dependencies in auto-session-timeout.gemspec
4
7
  gemspec
data/README.md CHANGED
@@ -1,16 +1,20 @@
1
- # auto-session-timeout
1
+ [![Build Status](https://travis-ci.com/pelargir/auto-session-timeout.svg?branch=master)](https://travis-ci.com/pelargir/auto-session-timeout)
2
+
3
+ # Auto::Session::Timeout
2
4
 
3
5
  Provides automatic session timeout in a Rails application. Very easy
4
6
  to install and configure. Have you ever wanted to force your users
5
7
  off your app if they go idle for a certain period of time? Many
6
8
  online banking sites use this technique. If your app is used on any
7
- kind of public computer system, this plugin is a necessity.
9
+ kind of public computer system, this gem is a necessity.
8
10
 
9
11
  ## Installation
10
12
 
11
13
  Add this line to your application's Gemfile:
12
14
 
13
- gem 'auto-session-timeout'
15
+ ```ruby
16
+ gem 'auto-session-timeout'
17
+ ```
14
18
 
15
19
  And then execute:
16
20
 
@@ -24,52 +28,80 @@ Or install it yourself as:
24
28
 
25
29
  After installing, tell your application controller to use auto timeout:
26
30
 
27
- class ApplicationController < ActionController::Base
28
- auto_session_timeout 1.hour
29
- ...
30
- end
31
-
32
- You will also need to insert this line inside the body tags in your
33
- views. The easiest way to do this is to insert it once inside your
34
- default or application-wide layout. Make sure you are only rendering
35
- it if the user is logged in, otherwise the plugin will attempt to force
36
- non-existent sessions to timeout, wreaking havoc:
37
-
38
- <body>
39
- <% if current_user %>
40
- <%= auto_session_timeout_js %>
41
- <% end %>
42
- </body>
31
+ ```ruby
32
+ class ApplicationController < ActionController::Base
33
+ auto_session_timeout 1.hour
34
+ ...
35
+ end
36
+ ```
37
+
38
+ This will use a global timeout of 1 hour. If you want to specify a
39
+ custom timeout value per user, don't pass a value above. Instead,
40
+ override `#auto_timeout` in your `#current_user` model. This is
41
+ typically the `User` class:
42
+
43
+ ```ruby
44
+ class ApplicationController < ActionController::Base
45
+ auto_session_timeout
46
+ end
47
+
48
+ class User < ActiveRecord::Base
49
+ def auto_timeout
50
+ 15.minutes
51
+ end
52
+ end
53
+ ```
54
+
55
+ You will also need to insert a call to the `#auto_session_timeout_js`
56
+ helper method inside the body tags in your views. The easiest way to
57
+ do this is to insert it once inside your default or application-wide
58
+ layout. Make sure you are only rendering if the user is logged in,
59
+ otherwise the gem will attempt to force non-existent sessions to
60
+ timeout, wreaking havoc:
61
+
62
+ ```erb
63
+ <body>
64
+ <% if current_user %>
65
+ <%= auto_session_timeout_js %>
66
+ <% end %>
67
+ </body>
68
+ ```
43
69
 
44
70
  You need to setup two actions: one to return the session status and
45
71
  another that runs when the session times out. You can use the default
46
- actions included with the plugin by inserting this line in your target
72
+ actions included with the gem by inserting this line in your target
47
73
  controller (most likely your user or session controller):
48
74
 
49
- class SessionsController < ApplicationController
50
- auto_session_timeout_actions
51
- end
75
+ ```ruby
76
+ class SessionsController < ApplicationController
77
+ auto_session_timeout_actions
78
+ end
79
+ ```
52
80
 
53
81
  To customize the default actions, simply override them. You can call
54
- the render_session_status and render_session_timeout methods to use
55
- the default implementation from the plugin, or you can define the
82
+ the `#render_session_status` and `#render_session_timeout` methods to
83
+ use the default implementation from the gem, or you can define the
56
84
  actions entirely with your own custom code:
57
85
 
58
- class SessionsController < ApplicationController
59
- def active
60
- render_session_status
61
- end
62
-
63
- def timeout
64
- render_session_timeout
65
- end
66
- end
86
+ ```ruby
87
+ class SessionsController < ApplicationController
88
+ def active
89
+ render_session_status
90
+ end
91
+
92
+ def timeout
93
+ render_session_timeout
94
+ end
95
+ end
96
+ ```
67
97
 
68
- In any of these cases, make sure to properly map the actions in
69
- your routes.rb file:
98
+ In any of these cases, make sure to properly map the actions in your
99
+ routes.rb file:
70
100
 
71
- match 'active' => 'sessions#active', via: :get
72
- match 'timeout' => 'sessions#timeout', via: :get
101
+ ```ruby
102
+ get 'active' => 'sessions#active'
103
+ get 'timeout' => 'sessions#timeout'
104
+ ```
73
105
 
74
106
  You're done! Enjoy watching your sessions automatically timeout.
75
107
 
@@ -80,21 +112,23 @@ active sessions. If you prefer that it check more frequently, pass a
80
112
  frequency attribute to the helper method. The frequency is given in
81
113
  seconds. The following example checks the server every 15 seconds:
82
114
 
83
- <html>
84
- <head>...</head>
85
- <body>
86
- <% if current_user %>
87
- <%= auto_session_timeout_js frequency: 15 %>
88
- <% end %>
89
- ...
90
- </body>
91
- </html>
115
+ ```erb
116
+ <html>
117
+ <head>...</head>
118
+ <body>
119
+ <% if current_user %>
120
+ <%= auto_session_timeout_js frequency: 15 %>
121
+ <% end %>
122
+ ...
123
+ </body>
124
+ </html>
125
+ ```
92
126
 
93
127
  ## TODO
94
128
 
95
129
  * current_user must be defined
96
130
  * using Prototype vs. jQuery
97
- * setting timeout in controller vs. user
131
+ * using with Devise
98
132
 
99
133
  ## Contributing
100
134
 
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Auto::Session::Timeout::VERSION
9
9
  spec.authors = ["Matthew Bass"]
10
10
  spec.email = ["pelargir@gmail.com"]
11
- spec.description = %q{Provides automatic session timeout in a Rails application.}
11
+ spec.description = %q{Automatic session timeout in Rails}
12
12
  spec.summary = %q{Provides automatic session timeout in a Rails application.}
13
13
  spec.homepage = "http://github.com/pelargir/auto-session-timeout"
14
14
  spec.license = "MIT"
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "minitest", "~> 4.2"
24
- spec.add_development_dependency "actionpack", "~> 3.2"
21
+ spec.add_dependency "actionpack", [">= 3.2", "< 7"]
22
+ spec.add_development_dependency "bundler", "~> 2.0"
23
+ spec.add_development_dependency "rake", "~> 13.0"
24
+ spec.add_development_dependency "minitest", [">= 4.2", "< 6"]
25
25
  end
@@ -1,7 +1,7 @@
1
1
  module Auto
2
2
  module Session
3
3
  module Timeout
4
- VERSION = "0.9.2"
4
+ VERSION = "0.9.7"
5
5
  end
6
6
  end
7
7
  end
@@ -2,16 +2,16 @@ module AutoSessionTimeout
2
2
 
3
3
  def self.included(controller)
4
4
  controller.extend ClassMethods
5
- controller.hide_action :render_auto_session_timeout
6
5
  end
7
6
 
8
7
  module ClassMethods
9
8
  def auto_session_timeout(seconds=nil)
10
- prepend_before_filter do |c|
11
- if c.session[:auto_session_expires_at] && c.session[:auto_session_expires_at] < Time.now
9
+ protect_from_forgery except: [:active, :timeout]
10
+ prepend_before_action do |c|
11
+ if session_expired?(c) && !signing_in?(c)
12
12
  c.send :reset_session
13
13
  else
14
- unless c.url_for(c.params).start_with?(c.send(:active_url))
14
+ unless c.request.original_url.start_with?(c.send(:active_url))
15
15
  offset = seconds || (current_user.respond_to?(:auto_timeout) ? current_user.auto_timeout : nil)
16
16
  c.session[:auto_session_expires_at] = Time.now + offset if offset && offset > 0
17
17
  end
@@ -27,14 +27,30 @@ module AutoSessionTimeout
27
27
 
28
28
  def render_session_status
29
29
  response.headers["Etag"] = "" # clear etags to prevent caching
30
- render text: !!current_user, status: 200
30
+ render plain: !!current_user, status: 200
31
31
  end
32
32
 
33
33
  def render_session_timeout
34
- flash[:notice] = "Your session has timed out."
35
- redirect_to "/login"
34
+ flash[:notice] = t("devise.failure.timeout", default: "Your session has timed out.")
35
+ redirect_to sign_in_path
36
+ end
37
+
38
+ private
39
+
40
+ def signing_in?(c)
41
+ c.request.env["PATH_INFO"] == sign_in_path && c.request.env["REQUEST_METHOD"] == "POST"
42
+ end
43
+
44
+ def session_expired?(c)
45
+ c.session[:auto_session_expires_at].try(:<, Time.now)
46
+ end
47
+
48
+ def sign_in_path
49
+ user_session_path
50
+ rescue
51
+ "/login"
36
52
  end
37
53
 
38
54
  end
39
55
 
40
- ActionController::Base.send :include, AutoSessionTimeout
56
+ ActionController::Base.send :include, AutoSessionTimeout
@@ -1,20 +1,26 @@
1
1
  module AutoSessionTimeoutHelper
2
2
  def auto_session_timeout_js(options={})
3
3
  frequency = options[:frequency] || 60
4
+ attributes = options[:attributes] || {}
4
5
  code = <<JS
5
- if (typeof(Ajax) != 'undefined') {
6
- new Ajax.PeriodicalUpdater('', '/active', {frequency:#{frequency}, method:'get', onSuccess: function(e) {
7
- if (e.responseText == 'false') window.location.href = '/timeout';
8
- }});
9
- } else {
10
- $.PeriodicalUpdater('/active', {minTimeout:#{frequency * 1000}, multiplier:0, method:'get', verbose:2}, function(remoteData, success) {
11
- if (success == 'success' && remoteData == 'false')
12
- window.location.href = '/timeout';
13
- });
6
+ function PeriodicalQuery() {
7
+ var request = new XMLHttpRequest();
8
+ request.onload = function (event) {
9
+ var status = event.target.status;
10
+ var response = event.target.response;
11
+ if (status === 200 && (response === false || response === 'false' || response === null)) {
12
+ window.location.href = '#{timeout_path}';
13
+ }
14
+ };
15
+ request.open('GET', '#{active_path}', true);
16
+ request.responseType = 'json';
17
+ request.send();
18
+ setTimeout(PeriodicalQuery, (#{frequency} * 1000));
14
19
  }
20
+ setTimeout(PeriodicalQuery, (#{frequency} * 1000));
15
21
  JS
16
- javascript_tag(code)
22
+ javascript_tag(code, attributes)
17
23
  end
18
24
  end
19
25
 
20
- ActionView::Base.send :include, AutoSessionTimeoutHelper
26
+ ActionView::Base.send :include, AutoSessionTimeoutHelper
@@ -2,33 +2,36 @@ require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  describe AutoSessionTimeoutHelper do
4
4
 
5
- subject { Class.new(ActionView::Base).new }
5
+ class ActionView::Base
6
+ def timeout_path
7
+ '/timeout'
8
+ end
9
+
10
+ def active_path
11
+ '/active'
12
+ end
13
+ end
14
+
15
+ subject { ActionView::Base.new }
6
16
 
7
17
  describe "#auto_session_timeout_js" do
8
18
  it "returns correct JS" do
9
- assert_equal "<script type=\"text/javascript\">
10
- //<![CDATA[
11
- if (typeof(Ajax) != 'undefined') {
12
- new Ajax.PeriodicalUpdater('', '/active', {frequency:60, method:'get', onSuccess: function(e) {
13
- if (e.responseText == 'false') window.location.href = '/timeout';
14
- }});
15
- } else {
16
- $.PeriodicalUpdater('/active', {minTimeout:60000, multiplier:0, method:'get', verbose:2}, function(remoteData, success) {
17
- if (success == 'success' && remoteData == 'false')
18
- window.location.href = '/timeout';
19
- });
20
- }
21
-
22
- //]]>
23
- </script>", subject.auto_session_timeout_js
19
+ js = subject.auto_session_timeout_js
20
+ assert js.include?("window.location.href = '/timeout'")
21
+ assert js.include?("request.open('GET', '/active', true)")
22
+ assert js.include?("setTimeout(PeriodicalQuery, (60 * 1000))")
24
23
  end
25
24
 
26
25
  it "uses custom frequency when given" do
27
- assert_match /frequency:120/, subject.auto_session_timeout_js(frequency: 120)
26
+ assert_match %r{120}, subject.auto_session_timeout_js(frequency: 120)
28
27
  end
29
28
 
30
29
  it "uses 60 when custom frequency is nil" do
31
- assert_match /frequency:60/, subject.auto_session_timeout_js(frequency: nil)
30
+ assert_match %r{60}, subject.auto_session_timeout_js(frequency: nil)
31
+ end
32
+
33
+ it "accepts attributes" do
34
+ assert_match %r{data-turbolinks-eval="false"}, subject.auto_session_timeout_js(attributes: { 'data-turbolinks-eval': 'false' })
32
35
  end
33
36
  end
34
37
 
metadata CHANGED
@@ -1,79 +1,92 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto-session-timeout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Bass
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-24 00:00:00.000000000 Z
11
+ date: 2021-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: actionpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
19
+ version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7'
23
+ type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ~>
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '1.3'
29
+ version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
- name: rake
34
+ name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - ! '>='
37
+ - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '0'
39
+ version: '2.0'
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - ! '>='
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '0'
46
+ version: '2.0'
41
47
  - !ruby/object:Gem::Dependency
42
- name: minitest
48
+ name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ~>
51
+ - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '4.2'
53
+ version: '13.0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ~>
58
+ - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '4.2'
60
+ version: '13.0'
55
61
  - !ruby/object:Gem::Dependency
56
- name: actionpack
62
+ name: minitest
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ~>
65
+ - - ">="
60
66
  - !ruby/object:Gem::Version
61
- version: '3.2'
67
+ version: '4.2'
68
+ - - "<"
69
+ - !ruby/object:Gem::Version
70
+ version: '6'
62
71
  type: :development
63
72
  prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
65
74
  requirements:
66
- - - ~>
75
+ - - ">="
67
76
  - !ruby/object:Gem::Version
68
- version: '3.2'
69
- description: Provides automatic session timeout in a Rails application.
77
+ version: '4.2'
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '6'
81
+ description: Automatic session timeout in Rails
70
82
  email:
71
83
  - pelargir@gmail.com
72
84
  executables: []
73
85
  extensions: []
74
86
  extra_rdoc_files: []
75
87
  files:
76
- - .gitignore
88
+ - ".gitignore"
89
+ - ".travis.yml"
77
90
  - CHANGELOG
78
91
  - Gemfile
79
92
  - LICENSE.txt
@@ -92,24 +105,23 @@ homepage: http://github.com/pelargir/auto-session-timeout
92
105
  licenses:
93
106
  - MIT
94
107
  metadata: {}
95
- post_install_message:
108
+ post_install_message:
96
109
  rdoc_options: []
97
110
  require_paths:
98
111
  - lib
99
112
  required_ruby_version: !ruby/object:Gem::Requirement
100
113
  requirements:
101
- - - ! '>='
114
+ - - ">="
102
115
  - !ruby/object:Gem::Version
103
116
  version: '0'
104
117
  required_rubygems_version: !ruby/object:Gem::Requirement
105
118
  requirements:
106
- - - ! '>='
119
+ - - ">="
107
120
  - !ruby/object:Gem::Version
108
121
  version: '0'
109
122
  requirements: []
110
- rubyforge_project:
111
- rubygems_version: 2.0.3
112
- signing_key:
123
+ rubygems_version: 3.1.4
124
+ signing_key:
113
125
  specification_version: 4
114
126
  summary: Provides automatic session timeout in a Rails application.
115
127
  test_files: