Skip to content

Commit 420f4de

Browse files
authored
Merge pull request #777 from brendon/better-loading-everyone
Load authlogic at the proper time
2 parents d155fff + cd75c88 commit 420f4de

File tree

8 files changed

+65
-79
lines changed

8 files changed

+65
-79
lines changed

.github/workflows/test.yml

+15-22
Original file line numberDiff line numberDiff line change
@@ -59,34 +59,30 @@ jobs:
5959
# To keep matrix size down, only test highest and lowest rubies. In
6060
# `.rubocop.yml`, set `TargetRubyVersion`, to the lowest ruby version
6161
# tested here.
62-
ruby: ["2.6", "3.3"]
63-
rails: ["5.2", "6.0", "6.1", "7.0", "7.1", "7.2", "8.0"]
62+
ruby: ["3.1", "3.2", "3.3", "3.4"]
63+
rails: ["7.0", "7.1", "7.2", "8.0"]
6464
exclude:
6565
# rails 7 requires ruby >= 2.7.0
66-
- ruby: "2.6"
67-
rails: "7.0"
68-
- ruby: "2.6"
69-
rails: "7.1"
70-
- ruby: "2.6"
71-
rails: "7.2"
72-
- ruby: "2.6"
73-
rails: "8.0"
74-
- ruby: "3.3"
75-
rails: "5.2"
66+
- rails: "7.0"
67+
ruby: "3.1"
68+
- rails: "7.0"
69+
ruby: "3.2"
70+
- rails: "7.0"
71+
ruby: "3.3"
72+
- rails: "7.0"
73+
ruby: "3.4"
74+
- rails: "8.0"
75+
ruby: "3.1"
76+
env:
77+
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.rb
7678
steps:
7779
- name: Checkout source
7880
uses: actions/checkout@v4
7981
- name: Setup ruby
8082
uses: ruby/setup-ruby@v1
8183
with:
8284
ruby-version: ${{ matrix.ruby }}
83-
- name: Bundle
84-
run: |
85-
gem install bundler -v 2.4.22
86-
bundle install --jobs 4 --retry 3
87-
env:
88-
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.rb
89-
85+
bundler-cache: true
9086
# MySQL db was created above, sqlite will be created during test suite,
9187
# when migrations occur, so we only need to create the postgres db. I
9288
# tried something like `cd .....dummy_app && ....db:create`, but couldn't
@@ -109,13 +105,11 @@ jobs:
109105
- name: Test, sqlite
110106
run: bundle exec rake test
111107
env:
112-
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.rb
113108
DB: sqlite
114109
- name: Test, mysql
115110
run: bundle exec rake test
116111
env:
117112
BACKTRACE: 1
118-
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.rb
119113
DB: mysql
120114
AUTHLOGIC_DB_NAME: authlogic
121115
AUTHLOGIC_DB_USER: root
@@ -125,7 +119,6 @@ jobs:
125119
run: bundle exec rake test
126120
env:
127121
BACKTRACE: 1
128-
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.rb
129122
DB: postgres
130123
AUTHLOGIC_DB_NAME: authlogic
131124
AUTHLOGIC_DB_USER: postgres

authlogic.gemspec

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require "English"
4-
$LOAD_PATH.push File.expand_path("lib", __dir__)
5-
require "authlogic/version"
4+
5+
require_relative "lib/authlogic/version"
66

77
::Gem::Specification.new do |s|
88
s.name = "authlogic"
@@ -34,6 +34,7 @@ require "authlogic/version"
3434
s.add_development_dependency "coveralls_reborn", "~> 0.28.0"
3535
s.add_development_dependency "minitest", "< 5.19.0" # See https://github.com/binarylogic/authlogic/issues/766
3636
s.add_development_dependency "minitest-reporters", "~> 1.3"
37+
s.add_development_dependency "mutex_m", "~> 0.3.0"
3738
s.add_development_dependency "rake", "~> 13.0"
3839
s.add_development_dependency "rubocop", "~> 0.80.1"
3940
s.add_development_dependency "rubocop-performance", "~> 1.1"

lib/authlogic.rb

+26-34
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
11
# frozen_string_literal: true
22

3+
require_relative "authlogic/errors"
4+
require_relative "authlogic/i18n"
5+
require_relative "authlogic/random"
6+
require_relative "authlogic/config"
7+
8+
require_relative "authlogic/controller_adapters/abstract_adapter"
9+
require_relative "authlogic/cookie_credentials"
10+
11+
require_relative "authlogic/crypto_providers"
12+
13+
require_relative "authlogic/acts_as_authentic/email"
14+
require_relative "authlogic/acts_as_authentic/logged_in_status"
15+
require_relative "authlogic/acts_as_authentic/login"
16+
require_relative "authlogic/acts_as_authentic/magic_columns"
17+
require_relative "authlogic/acts_as_authentic/password"
18+
require_relative "authlogic/acts_as_authentic/perishable_token"
19+
require_relative "authlogic/acts_as_authentic/persistence_token"
20+
require_relative "authlogic/acts_as_authentic/session_maintenance"
21+
require_relative "authlogic/acts_as_authentic/single_access_token"
22+
require_relative "authlogic/acts_as_authentic/base"
23+
24+
require_relative "authlogic/session/magic_column/assigns_last_request_at"
25+
require_relative "authlogic/session/base"
26+
327
# Authlogic uses ActiveSupport's core extensions like `strip_heredoc` and
428
# `squish`. ActiveRecord does not `require` these exensions, so we must.
529
#
@@ -8,37 +32,5 @@
832
# decision if it becomes a problem.
933
require "active_support/all"
1034

11-
require "active_record"
12-
13-
path = File.dirname(__FILE__) + "/authlogic/"
14-
15-
[
16-
"errors",
17-
"i18n",
18-
"random",
19-
"config",
20-
21-
"controller_adapters/abstract_adapter",
22-
"cookie_credentials",
23-
24-
"crypto_providers",
25-
26-
"acts_as_authentic/email",
27-
"acts_as_authentic/logged_in_status",
28-
"acts_as_authentic/login",
29-
"acts_as_authentic/magic_columns",
30-
"acts_as_authentic/password",
31-
"acts_as_authentic/perishable_token",
32-
"acts_as_authentic/persistence_token",
33-
"acts_as_authentic/session_maintenance",
34-
"acts_as_authentic/single_access_token",
35-
"acts_as_authentic/base",
36-
37-
"session/magic_column/assigns_last_request_at",
38-
"session/base"
39-
].each do |library|
40-
require path + library
41-
end
42-
43-
require path + "controller_adapters/rails_adapter" if defined?(Rails)
44-
require path + "controller_adapters/sinatra_adapter" if defined?(Sinatra)
35+
require_relative "authlogic/controller_adapters/rails_adapter" if defined?(Rails)
36+
require_relative "authlogic/controller_adapters/sinatra_adapter" if defined?(Sinatra)

lib/authlogic/acts_as_authentic/base.rb

+12-10
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,15 @@ def first_column_to_exist(*columns_to_check)
104104
end
105105
end
106106

107-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Base
108-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Email
109-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::LoggedInStatus
110-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Login
111-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::MagicColumns
112-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Password
113-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::PerishableToken
114-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::PersistenceToken
115-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::SessionMaintenance
116-
::ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::SingleAccessToken
107+
ActiveSupport.on_load :active_record do
108+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Base
109+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Email
110+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::LoggedInStatus
111+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Login
112+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::MagicColumns
113+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::Password
114+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::PerishableToken
115+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::PersistenceToken
116+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::SessionMaintenance
117+
ActiveRecord::Base.send :include, Authlogic::ActsAsAuthentic::SingleAccessToken
118+
end

lib/authlogic/acts_as_authentic/login.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

3-
require "authlogic/acts_as_authentic/queries/case_sensitivity"
4-
require "authlogic/acts_as_authentic/queries/find_with_case"
3+
require_relative "queries/case_sensitivity"
4+
require_relative "queries/find_with_case"
55

66
module Authlogic
77
module ActsAsAuthentic

lib/authlogic/i18n.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
require "authlogic/i18n/translator"
3+
require_relative "i18n/translator"
44

55
module Authlogic
66
# This class allows any message in Authlogic to use internationalization. In

lib/authlogic/test_case.rb

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# frozen_string_literal: true
22

3-
require File.dirname(__FILE__) + "/test_case/rails_request_adapter"
4-
require File.dirname(__FILE__) + "/test_case/mock_api_controller"
5-
require File.dirname(__FILE__) + "/test_case/mock_cookie_jar"
6-
require File.dirname(__FILE__) + "/test_case/mock_controller"
7-
require File.dirname(__FILE__) + "/test_case/mock_logger"
8-
require File.dirname(__FILE__) + "/test_case/mock_request"
3+
require_relative "test_case/rails_request_adapter"
4+
require_relative "test_case/mock_api_controller"
5+
require_relative "test_case/mock_cookie_jar"
6+
require_relative "test_case/mock_controller"
7+
require_relative "test_case/mock_logger"
8+
require_relative "test_case/mock_request"
99

1010
# :nodoc:
1111
module Authlogic

lib/authlogic/version.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require "rubygems"
4-
53
# :nodoc:
64
module Authlogic
75
# Returns a `::Gem::Version`, the version number of the authlogic gem.

0 commit comments

Comments
 (0)