Skip to content

Commit 37cedd6

Browse files
mcmirehlascellessshaw
authored
Don't load AR integration if it is unavailable (#188)
When writing tests for a project that uses certain parts of Rails, it should still be possible to say `require "super_diff/rails"`, and SuperDiff should only load the integrations that correspond to the available parts. Right now the only two integrations are ActiveSupport and ActiveRecord. ActiveSupport should always be available, but ActiveRecord may not be available, so this commit adds a guard around that integration in particular. It also adds tests for Combustion so we can test that this guard specifically works for engines where ActiveRecord is not being loaded. Co-authored-by: Harry Lascelles <[email protected]> Co-authored-by: sshaw <[email protected]>
1 parent 628796a commit 37cedd6

20 files changed

+112
-24
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ gemfiles/*.gemfile.lock
55
node_modules
66
pkg
77
spec/examples.txt
8+
spec/internal
89
tmp
910
zeus.server.log
1011
zeus.server-start.log

Appraisals

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,29 @@ rails_dependencies =
33
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
44
gem "jdbc-sqlite3", platform: :jruby
55
gem "net-ftp"
6+
gem "combustion"
67
end
78

89
appraisals = {
910
rails_6_0:
1011
proc do
1112
instance_eval(&rails_dependencies)
1213

13-
gem "activerecord", "~> 6.0.0"
14-
gem "railties", "~> 6.0.0"
14+
gem "rails", "~> 6.0.0"
1515
gem "sqlite3", "~> 1.4.0", platform: %i[ruby mswin mingw]
1616
end,
1717
rails_6_1:
1818
proc do
1919
instance_eval(&rails_dependencies)
2020

21-
gem "activerecord", "~> 6.1.0"
22-
gem "railties", "~> 6.1.0"
21+
gem "rails", "~> 6.1.0"
2322
gem "sqlite3", "~> 1.4.0", platform: %i[ruby mswin mingw]
2423
end,
2524
rails_7_0:
2625
proc do
2726
instance_eval(&rails_dependencies)
2827

29-
gem "activerecord", "~> 7.0.0"
30-
gem "railties", "~> 7.0.0"
28+
gem "rails", "~> 7.0.0"
3129
gem "sqlite3", "~> 1.4.0", platform: %i[ruby mswin mingw]
3230
end,
3331
no_rails: proc {},

gemfiles/rails_6_0_rspec_gte_3_10.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ gem "warnings_logger"
1717
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
1818
gem "jdbc-sqlite3", platform: :jruby
1919
gem "net-ftp"
20-
gem "activerecord", "~> 6.0.0"
21-
gem "railties", "~> 6.0.0"
20+
gem "combustion"
21+
gem "rails", "~> 6.0.0"
2222
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
2323
gem "rspec", ">= 3.10", "< 4"
2424
gem "rspec-rails"

gemfiles/rails_6_0_rspec_lt_3_10.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ gem "warnings_logger"
1717
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
1818
gem "jdbc-sqlite3", platform: :jruby
1919
gem "net-ftp"
20-
gem "activerecord", "~> 6.0.0"
21-
gem "railties", "~> 6.0.0"
20+
gem "combustion"
21+
gem "rails", "~> 6.0.0"
2222
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
2323
gem "rspec", "~> 3.9.0"
2424
gem "rspec-rails"

gemfiles/rails_6_1_rspec_gte_3_10.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ gem "warnings_logger"
1717
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
1818
gem "jdbc-sqlite3", platform: :jruby
1919
gem "net-ftp"
20-
gem "activerecord", "~> 6.1.0"
21-
gem "railties", "~> 6.1.0"
20+
gem "combustion"
21+
gem "rails", "~> 6.1.0"
2222
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
2323
gem "rspec", ">= 3.10", "< 4"
2424
gem "rspec-rails"

gemfiles/rails_6_1_rspec_lt_3_10.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ gem "warnings_logger"
1717
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
1818
gem "jdbc-sqlite3", platform: :jruby
1919
gem "net-ftp"
20-
gem "activerecord", "~> 6.1.0"
21-
gem "railties", "~> 6.1.0"
20+
gem "combustion"
21+
gem "rails", "~> 6.1.0"
2222
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
2323
gem "rspec", "~> 3.9.0"
2424
gem "rspec-rails"

gemfiles/rails_7_0_rspec_gte_3_10.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ gem "warnings_logger"
1717
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
1818
gem "jdbc-sqlite3", platform: :jruby
1919
gem "net-ftp"
20-
gem "activerecord", "~> 7.0.0"
21-
gem "railties", "~> 7.0.0"
20+
gem "combustion"
21+
gem "rails", "~> 7.0.0"
2222
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
2323
gem "rspec", ">= 3.10", "< 4"
2424
gem "rspec-rails"

gemfiles/rails_7_0_rspec_lt_3_10.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ gem "warnings_logger"
1717
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
1818
gem "jdbc-sqlite3", platform: :jruby
1919
gem "net-ftp"
20-
gem "activerecord", "~> 7.0.0"
21-
gem "railties", "~> 7.0.0"
20+
gem "combustion"
21+
gem "rails", "~> 7.0.0"
2222
gem "sqlite3", "~> 1.4.0", platform: [:ruby, :mswin, :mingw]
2323
gem "rspec", "~> 3.9.0"
2424
gem "rspec-rails"

lib/super_diff/rails.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
require "super_diff/active_record"
1+
require "super_diff/active_support"
2+
require "super_diff/active_record" if defined?(ActiveRecord)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
require "spec_helper"
2+
3+
RSpec.describe "Integration with Rails engines", type: :integration do
4+
context "when ActiveRecord is not loaded via Combustion" do
5+
it "does not fail to load" do
6+
as_both_colored_and_uncolored do |color_enabled|
7+
program =
8+
make_rspec_rails_engine_program(
9+
"expect(true).to be(true)",
10+
combustion_initialize: [:action_controller],
11+
color_enabled: color_enabled
12+
)
13+
14+
expect(program).not_to produce_output_when_run(
15+
"uninitialized constant ActiveRecord"
16+
).in_color(color_enabled)
17+
end
18+
end
19+
end
20+
end

0 commit comments

Comments
 (0)