authlogic 3.4.2 → 3.4.3

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: 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)