authlogic 3.4.2 → 3.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f3c45b3e20668e033c6495eead74fffb26f49e2d
4
- data.tar.gz: 5874acbfdecb0756c3832cf7529be7096dc5285a
3
+ metadata.gz: 2d73042e9d99c9d01535d405c9e735a22967c1ed
4
+ data.tar.gz: 5ba70f01a348b3990451ab67e91dd6f49966290d
5
5
  SHA512:
6
- metadata.gz: 2fd5a1c9152c9b908e19788a93e5b6c81c6e445a16518278114e52110243acec868beacb1e2a901b5c9a6267ce15e2c58fafca16e788e49cb8d6ae6d0593ebd3
7
- data.tar.gz: 6b59e97756f951c24bd0b7a79830bab6f1ab4f23e21446c6c49b90128d6aee29daa05d3a047a741d856810930591ef0dbee6d1a31a8b18c5591b0dbd3edc0a38
6
+ metadata.gz: 653df6e58f3a50a81cd85bd7304f2eb0895606d08b2969d41a817d8ad9ea40d6d2bcd669e069fbc28739c95371f2f1b4b992652efd75458b527eba88d74be023
7
+ data.tar.gz: f1f535422bd84ee1f11899490fec35c0822d07a28c8188d8037c10fef8971aaeaa35cdd767f24b11bf987bc4fa207ea921febf855cf56803e28c438ad7d34802
data/.gitignore CHANGED
@@ -6,7 +6,7 @@ pkg/*
6
6
  coverage/*
7
7
  doc/*
8
8
  benchmarks/*
9
- .specification
10
9
  .rvmrc
11
10
  test/gemfiles/Gemfile*.lock
12
11
  .bundle
12
+ Gemfile.lock
data/.travis.yml CHANGED
@@ -1,10 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.8.7
4
3
  - 1.9.3
5
4
  - 2.0.0
6
5
  - 2.1.0
7
- - ree
8
6
  - jruby
9
7
 
10
8
  gemfile:
@@ -14,14 +12,6 @@ gemfile:
14
12
 
15
13
  matrix:
16
14
  exclude:
17
- - rvm: 1.8.7
18
- gemfile: test/gemfiles/Gemfile.rails-4.0.x
19
- - rvm: ree
20
- gemfile: test/gemfiles/Gemfile.rails-4.0.x
21
- - rvm: 1.8.7
15
+ - rvm: 1.9.3
22
16
  gemfile: test/gemfiles/Gemfile.rails-4.1.x
23
- - rvm: ree
24
- gemfile: test/gemfiles/Gemfile.rails-4.1.x
25
- allow_failures:
26
- - gemfile: test/gemfiles/Gemfile.rails-4.1.x
27
17
  fast_finish: true
data/CHANGELOG.md ADDED
@@ -0,0 +1,102 @@
1
+ # Changelog
2
+
3
+ ## 3.4.3 2014-10-08
4
+
5
+ * changes
6
+ * backfill CHANGELOG
7
+ * better compatibility with jruby (thx @petergoldstein)
8
+ * added scrypt as a dependency
9
+ * cleanup some code (thx @roryokane)
10
+ * reference 'bcrypt' gem instead of 'bcrypt-ruby' (thx @roryokane)
11
+ * fixed typo (thx @chamini2)
12
+ * fixed magic column validations for Rails 4.2 (thx @tom-kuca)
13
+
14
+ ## 3.4.2 2014-04-28
15
+
16
+ * changes
17
+ * fixed the missing scrypt/bcrypt gem errors introduced in 3.4.1
18
+ * implemented autoloading for providers
19
+ * added longer subdomain support in email regex
20
+
21
+ ## 3.4.1 2014-04-04
22
+
23
+ * changes
24
+ * undid an accidental revert of some code
25
+
26
+ ## 3.4.0 2014-03-03
27
+
28
+ * new
29
+ * added cookie signing
30
+ * added request store for better concurency for threaded environments
31
+
32
+ * changes
33
+ * made scrypt the default crypto provider from SHA512
34
+ * ditched appraisal
35
+ * officially support rails 4 (still supporting rails 3)
36
+ * improved find_with_case default performance
37
+ * added a rack adapter for Rack middleware support
38
+ * added travis ci support
39
+
40
+ ## 3.3.0 2014-04-04
41
+
42
+ * changes
43
+ * added safeguard against a sqli that was also fixed in rails 3.2.10/3.1.9/3.0.18
44
+ * imposed the bcrypt gem's mincost
45
+ * removed shoulda macros
46
+
47
+ ## 3.2.0 2012-12-07
48
+
49
+ * new
50
+ * scrypt support
51
+
52
+ * changes
53
+ * moved back to LOWER for find_with_case ci lookups
54
+
55
+ ## 3.1.3 2012-06-13
56
+
57
+ * changes
58
+ * removed jeweler
59
+
60
+ ## 3.1.2 2012-06-01
61
+
62
+ * changes
63
+ * mostly test fixes
64
+
65
+ ## 3.1.1 2012-06-01
66
+
67
+ * changes
68
+ * mostly doc fixes
69
+
70
+ ## 3.1.0 2011-10-19
71
+
72
+ * changes
73
+ * mostly small bug fixes
74
+
75
+ ## 3.0.3 2011-05-17
76
+
77
+ * changes
78
+ * rails 3.1 support
79
+
80
+ * new
81
+ * http auth support
82
+
83
+ ## 3.0.2 2011-04-30
84
+
85
+ * changes
86
+ * doc fixes
87
+
88
+ ## 3.0.1 2011-04-30
89
+
90
+ * changes
91
+ * switch from LOWER to LIKE for find_with_case ci lookups
92
+
93
+ ## 3.0.0 2011-04-30
94
+
95
+ * new
96
+ * ssl cookie support
97
+ * httponly cookie support
98
+ * added a session generator
99
+
100
+ * changes
101
+ * rails 3 support
102
+ * ruby 1.9.2 support
data/Gemfile CHANGED
@@ -1,2 +1,5 @@
1
1
  source "https://rubygems.org"
2
- gemspec
2
+ gemspec
3
+
4
+ gem 'activerecord-jdbcsqlite3-adapter', :platforms => :jruby
5
+ gem 'sqlite3', :platforms => :ruby
data/README.rdoc CHANGED
@@ -1,6 +1,10 @@
1
1
  = Authlogic
2
2
 
3
- ** Authlogic plans to support rails 3 and 4 for the foreseeable future
3
+ ** Authlogic supports both rails 3 and 4. For rails 2, see the rail2 branch
4
+
5
+ {<img src="https://travis-ci.org/binarylogic/authlogic.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/binarylogic/authlogic]
6
+
7
+ {<img src="https://codeclimate.com/github/binarylogic/authlogic.png" />}[https://codeclimate.com/github/binarylogic/authlogic]
4
8
 
5
9
  Authlogic is a clean, simple, and unobtrusive ruby authentication solution.
6
10
 
@@ -41,6 +45,12 @@ To get all of the nice authentication functionality in your model just do this:
41
45
 
42
46
  This handles validations, etc. It is also "smart" in the sense that it if a login field is present it will use that to authenticate, if not it will look for an email field, etc. This is all configurable, but for 99% of cases that above is all you will need to do.
43
47
 
48
+ You may specify how passwords are cryptographically hashed (or encrypted) by setting the Authlogic::CryptoProvider option:
49
+
50
+ c.crypto_provider = Authlogic::CryptoProviders::BCrypt
51
+
52
+ NOTE: the default provider was changed from **Sha512** to **SCrypt** in version 3.4.0.
53
+
44
54
  Also, sessions are automatically maintained. You can switch this on and off with configuration, but the following will automatically log a user in after a successful registration:
45
55
 
46
56
  User.create(params[:user])
@@ -162,5 +172,3 @@ Interested in how all of this all works? Think about an ActiveRecord model. A da
162
172
 
163
173
 
164
174
  Copyright (c) 2012 {Ben Johnson of Binary Logic}[http://www.binarylogic.com], released under the MIT license
165
-
166
- {<img src="https://codeclimate.com/github/binarylogic/authlogic.png" />}[https://codeclimate.com/github/binarylogic/authlogic]
data/authlogic.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "authlogic"
6
- s.version = "3.4.2"
6
+ s.version = "3.4.3"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Ben Johnson"]
9
9
  s.email = ["bjohnson@binarylogic.com"]
@@ -16,9 +16,8 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency 'activerecord', '>= 3.2'
17
17
  s.add_dependency 'activesupport', '>= 3.2'
18
18
  s.add_dependency 'request_store', '~> 1.0'
19
- s.add_development_dependency 'bcrypt-ruby', '~> 3.1'
20
- s.add_development_dependency 'scrypt', '~> 1.2'
21
- s.add_development_dependency 'sqlite3', '~> 1.3'
19
+ s.add_dependency 'scrypt', '~> 1.2'
20
+ s.add_development_dependency 'bcrypt', '~> 3.1'
22
21
  s.add_development_dependency 'timecop', '~> 0.7'
23
22
 
24
23
  s.files = `git ls-files`.split("\n")
@@ -14,11 +14,11 @@ module Authlogic
14
14
  module Methods
15
15
  def self.included(klass)
16
16
  klass.class_eval do
17
- validates_numericality_of :login_count, :only_integer => :true, :greater_than_or_equal_to => 0, :allow_nil => true if column_names.include?("login_count")
18
- validates_numericality_of :failed_login_count, :only_integer => :true, :greater_than_or_equal_to => 0, :allow_nil => true if column_names.include?("failed_login_count")
17
+ validates_numericality_of :login_count, :only_integer => true, :greater_than_or_equal_to => 0, :allow_nil => true if column_names.include?("login_count")
18
+ validates_numericality_of :failed_login_count, :only_integer => true, :greater_than_or_equal_to => 0, :allow_nil => true if column_names.include?("failed_login_count")
19
19
  end
20
20
  end
21
21
  end
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -149,11 +149,7 @@ module Authlogic
149
149
  # * <tt>Default:</tt> CryptoProviders::SCrypt
150
150
  # * <tt>Accepts:</tt> Class
151
151
  def crypto_provider(value = nil)
152
- if value.nil? and !acts_as_authentic_config.include?(:crypto_provider)
153
- rw_config(:crypto_provider, CryptoProviders::SCrypt)
154
- else
155
- rw_config(:crypto_provider, value)
156
- end
152
+ rw_config(:crypto_provider, value, CryptoProviders::SCrypt)
157
153
  end
158
154
  alias_method :crypto_provider=, :crypto_provider
159
155
 
@@ -24,7 +24,7 @@ module Authlogic
24
24
  end
25
25
  alias_method :perishable_token_valid_for=, :perishable_token_valid_for
26
26
 
27
- # Authlogic tries to expire and change the perishable token as much as possible, without comprising
27
+ # Authlogic tries to expire and change the perishable token as much as possible, without compromising
28
28
  # it's purpose. This is for security reasons. If you want to manage it yourself, you can stop
29
29
  # Authlogic from getting your in way by setting this to true.
30
30
  #
@@ -34,7 +34,7 @@ module Authlogic
34
34
  #
35
35
  # Decided BCrypt is for you? Just install the bcrypt gem:
36
36
  #
37
- # gem install bcrypt-ruby
37
+ # gem install bcrypt
38
38
  #
39
39
  # Tell acts_as_authentic to use it:
40
40
  #
@@ -180,10 +180,11 @@ module Authlogic
180
180
 
181
181
  def cookie_credentials
182
182
  if self.class.sign_cookie
183
- controller.cookies.signed[cookie_key] && controller.cookies.signed[cookie_key].split("::")
183
+ cookie = controller.cookies.signed[cookie_key]
184
184
  else
185
- controller.cookies[cookie_key] && controller.cookies[cookie_key].split("::")
185
+ cookie = controller.cookies[cookie_key]
186
186
  end
187
+ cookie && cookie.split("::")
187
188
  end
188
189
 
189
190
  # Tries to validate the session from information in the cookie
@@ -199,20 +200,22 @@ module Authlogic
199
200
  end
200
201
 
201
202
  def save_cookie
203
+ if sign_cookie?
204
+ controller.cookies.signed[cookie_key] = generate_cookie_for_saving
205
+ else
206
+ controller.cookies[cookie_key] = generate_cookie_for_saving
207
+ end
208
+ end
209
+
210
+ def generate_cookie_for_saving
202
211
  remember_me_until_value = "::#{remember_me_until.iso8601}" if remember_me?
203
- cookie = {
212
+ {
204
213
  :value => "#{record.persistence_token}::#{record.send(record.class.primary_key)}#{remember_me_until_value}",
205
214
  :expires => remember_me_until,
206
215
  :secure => secure,
207
216
  :httponly => httponly,
208
217
  :domain => controller.cookie_domain
209
218
  }
210
-
211
- if sign_cookie?
212
- controller.cookies.signed[cookie_key] = cookie
213
- else
214
- controller.cookies[cookie_key] = cookie
215
- end
216
219
  end
217
220
 
218
221
  def destroy_cookie
@@ -48,8 +48,13 @@ module Authlogic
48
48
  end
49
49
 
50
50
  def update_info
51
- record.login_count = (record.login_count.blank? ? 1 : record.login_count + 1) if record.respond_to?(:login_count)
52
- record.failed_login_count = 0 if record.respond_to?(:failed_login_count)
51
+ if record.respond_to?(:login_count)
52
+ record.login_count = (record.login_count.blank? ? 1 : record.login_count + 1)
53
+ end
54
+
55
+ if record.respond_to?(:failed_login_count)
56
+ record.failed_login_count = 0
57
+ end
53
58
 
54
59
  if record.respond_to?(:current_login_at)
55
60
  record.last_login_at = record.current_login_at if record.respond_to?(:last_login_at)
@@ -115,28 +115,9 @@ module Authlogic
115
115
  module InstanceMethods
116
116
  def initialize(*args)
117
117
  if !self.class.configured_password_methods
118
- if login_field
119
- self.class.send(:attr_writer, login_field) if !respond_to?("#{login_field}=")
120
- self.class.send(:attr_reader, login_field) if !respond_to?(login_field)
121
- end
122
-
123
- if password_field
124
- self.class.send(:attr_writer, password_field) if !respond_to?("#{password_field}=")
125
- self.class.send(:define_method, password_field) {} if !respond_to?(password_field)
126
-
127
- self.class.class_eval <<-"end_eval", __FILE__, __LINE__
128
- private
129
- # The password should not be accessible publicly. This way forms using form_for don't fill the password with the
130
- # attempted password. To prevent this we just create this method that is private.
131
- def protected_#{password_field}
132
- @#{password_field}
133
- end
134
- end_eval
135
- end
136
-
118
+ configure_password_methods
137
119
  self.class.configured_password_methods = true
138
120
  end
139
-
140
121
  super
141
122
  end
142
123
 
@@ -169,6 +150,27 @@ module Authlogic
169
150
  end
170
151
 
171
152
  private
153
+ def configure_password_methods
154
+ if login_field
155
+ self.class.send(:attr_writer, login_field) if !respond_to?("#{login_field}=")
156
+ self.class.send(:attr_reader, login_field) if !respond_to?(login_field)
157
+ end
158
+
159
+ if password_field
160
+ self.class.send(:attr_writer, password_field) if !respond_to?("#{password_field}=")
161
+ self.class.send(:define_method, password_field) {} if !respond_to?(password_field)
162
+
163
+ self.class.class_eval <<-"end_eval", __FILE__, __LINE__
164
+ private
165
+ # The password should not be accessible publicly. This way forms using form_for don't fill the password with the
166
+ # attempted password. To prevent this we just create this method that is private.
167
+ def protected_#{password_field}
168
+ @#{password_field}
169
+ end
170
+ end_eval
171
+ end
172
+ end
173
+
172
174
  def authenticating_with_password?
173
175
  login_field && (!send(login_field).nil? || !send("protected_#{password_field}").nil?)
174
176
  end
@@ -176,10 +178,12 @@ module Authlogic
176
178
  def validate_by_password
177
179
  self.invalid_password = false
178
180
 
181
+ # check for blank fields
179
182
  errors.add(login_field, I18n.t('error_messages.login_blank', :default => "cannot be blank")) if send(login_field).blank?
180
183
  errors.add(password_field, I18n.t('error_messages.password_blank', :default => "cannot be blank")) if send("protected_#{password_field}").blank?
181
184
  return if errors.count > 0
182
185
 
186
+ # check for unknown login
183
187
  self.attempted_record = search_for_record(find_by_login_method, send(login_field))
184
188
  if attempted_record.blank?
185
189
  generalize_credentials_error_messages? ?
@@ -188,6 +192,7 @@ module Authlogic
188
192
  return
189
193
  end
190
194
 
195
+ # check for invalid password
191
196
  if !attempted_record.send(verify_password_method, send("protected_#{password_field}"))
192
197
  self.invalid_password = true
193
198
  generalize_credentials_error_messages? ?
@@ -197,13 +202,7 @@ module Authlogic
197
202
  end
198
203
  end
199
204
 
200
- def invalid_password
201
- @invalid_password
202
- end
203
-
204
- def invalid_password=(value)
205
- @invalid_password = value
206
- end
205
+ attr_accessor :invalid_password
207
206
 
208
207
  def find_by_login_method
209
208
  self.class.find_by_login_method
@@ -3,3 +3,5 @@ gemspec :path => "./../.."
3
3
 
4
4
  gem "activerecord", "3.2.17"
5
5
  gem "activesupport", "3.2.17"
6
+ gem 'activerecord-jdbcsqlite3-adapter', :platforms => :jruby
7
+ gem 'sqlite3', :platforms => :ruby
@@ -1,5 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec :path => "./../.."
3
3
 
4
- gem "activerecord", "4.0.3"
5
- gem "activesupport", "4.0.3"
4
+ gem "activerecord", "~> 4.0.3"
5
+ gem "activesupport", "~> 4.0.3"
6
+ gem 'activerecord-jdbcsqlite3-adapter', :platforms => :jruby
7
+ gem 'sqlite3', :platforms => :ruby
@@ -1,5 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec :path => "./../.."
3
3
 
4
- gem "activerecord", "4.1.0.rc1"
5
- gem "activesupport", "4.1.0.rc1"
4
+ gem "activerecord", "~> 4.1.0"
5
+ gem "activesupport", "~> 4.1.0"
6
+ gem 'activerecord-jdbcsqlite3-adapter', :platforms => :jruby
7
+ gem 'sqlite3', :platforms => :ruby
@@ -20,7 +20,7 @@ module SessionTest
20
20
  end
21
21
  end
22
22
 
23
- class InstaceMethodsTest < ActiveSupport::TestCase
23
+ class InstanceMethodsTest < ActiveSupport::TestCase
24
24
  def test_under_limit
25
25
  ben = users(:ben)
26
26
  ben.failed_login_count = UserSession.consecutive_failed_logins_limit - 1
data/test/test_helper.rb CHANGED
@@ -14,7 +14,9 @@ logger = Logger.new(STDOUT)
14
14
  logger.level= Logger::FATAL
15
15
  ActiveRecord::Base.logger = logger
16
16
 
17
- #ActiveRecord::Base.configurations = true
17
+ if (ActiveRecord::VERSION::STRING < '4.1')
18
+ ActiveRecord::Base.configurations = true
19
+ end
18
20
  ActiveRecord::Base.default_timezone = :local
19
21
  ActiveRecord::Schema.define(:version => 1) do
20
22
  create_table :companies do |t|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authlogic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.2
4
+ version: 3.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Johnson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
- - !ruby/object:Gem::Dependency
56
- name: bcrypt-ruby
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.1'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.1'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: scrypt
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +59,7 @@ dependencies:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
61
  version: '1.2'
76
- type: :development
62
+ type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
@@ -81,19 +67,19 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '1.2'
83
69
  - !ruby/object:Gem::Dependency
84
- name: sqlite3
70
+ name: bcrypt
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '1.3'
75
+ version: '3.1'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '1.3'
82
+ version: '3.1'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: timecop
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -117,10 +103,9 @@ extra_rdoc_files: []
117
103
  files:
118
104
  - ".gitignore"
119
105
  - ".travis.yml"
106
+ - CHANGELOG.md
120
107
  - CONTRIBUTING.md
121
108
  - Gemfile
122
- - Gemfile.lock
123
- - History
124
109
  - LICENSE
125
110
  - README.rdoc
126
111
  - Rakefile
data/Gemfile.lock DELETED
@@ -1,56 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- authlogic (3.4.2)
5
- activerecord (>= 3.2)
6
- activesupport (>= 3.2)
7
- request_store (~> 1.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activemodel (4.1.0)
13
- activesupport (= 4.1.0)
14
- builder (~> 3.1)
15
- activerecord (4.1.0)
16
- activemodel (= 4.1.0)
17
- activesupport (= 4.1.0)
18
- arel (~> 5.0.0)
19
- activesupport (4.1.0)
20
- i18n (~> 0.6, >= 0.6.9)
21
- json (~> 1.7, >= 1.7.7)
22
- minitest (~> 5.1)
23
- thread_safe (~> 0.1)
24
- tzinfo (~> 1.1)
25
- arel (5.0.1.20140414130214)
26
- bcrypt (3.1.7)
27
- bcrypt-ruby (3.1.5)
28
- bcrypt (>= 3.1.3)
29
- builder (3.2.2)
30
- ffi (1.9.3)
31
- ffi-compiler (0.1.3)
32
- ffi (>= 1.0.0)
33
- rake
34
- i18n (0.6.9)
35
- json (1.8.1)
36
- minitest (5.3.3)
37
- rake (10.3.1)
38
- request_store (1.0.5)
39
- scrypt (1.2.1)
40
- ffi-compiler (>= 0.0.2)
41
- rake
42
- sqlite3 (1.3.9)
43
- thread_safe (0.3.3)
44
- timecop (0.7.1)
45
- tzinfo (1.1.0)
46
- thread_safe (~> 0.1)
47
-
48
- PLATFORMS
49
- ruby
50
-
51
- DEPENDENCIES
52
- authlogic!
53
- bcrypt-ruby (~> 3.1)
54
- scrypt (~> 1.2)
55
- sqlite3 (~> 1.3)
56
- timecop (~> 0.7)
data/History DELETED
@@ -1,10 +0,0 @@
1
- == 3.4.0 2014-03-03
2
-
3
- * new
4
- * added cookie signing
5
- * added request store for better concurency for threaded environments
6
-
7
- * changes
8
- * made SCrpyt the default crypto provider from SHA512
9
- * ditched appraisal
10
- * officially support rails 4 (still supporting rails 3)