From 24f6d212f5ef061efde0af28260a777bc5fea152 Mon Sep 17 00:00:00 2001 From: Matijs van Zuijlen Date: Wed, 2 Oct 2019 18:55:51 -0400 Subject: [PATCH] Get default strategy registration working on JRuby fixes #1331 The commit avoids a bug in JRuby, and adds JRuby back to the test matrix so we can catch regressions in the future. --- .travis.yml | 1 + Appraisals | 12 ++++++++++-- Gemfile | 3 +++ Gemfile.lock | 11 +++++++++++ factory_bot.gemspec | 1 - gemfiles/4.2.gemfile | 3 ++- gemfiles/4.2.gemfile.lock | 13 ++++++++++++- gemfiles/5.0.gemfile | 3 ++- gemfiles/5.0.gemfile.lock | 13 ++++++++++++- gemfiles/5.1.gemfile | 2 ++ gemfiles/5.1.gemfile.lock | 13 ++++++++++++- gemfiles/5.2.gemfile | 2 ++ gemfiles/5.2.gemfile.lock | 13 ++++++++++++- gemfiles/6.0.gemfile | 2 ++ gemfiles/6.0.gemfile.lock | 13 ++++++++++++- lib/factory_bot/internal.rb | 2 +- spec/acceptance/keyed_by_class_spec.rb | 2 +- 17 files changed, 97 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 058cb10..a9f4452 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ rvm: - 2.4 - 2.5 - 2.6 + - jruby-9.2.8.0 - ruby-head before_install: - gem update --system diff --git a/Appraisals b/Appraisals index 7d431da..effaf28 100644 --- a/Appraisals +++ b/Appraisals @@ -1,21 +1,29 @@ appraise "4.2" do gem "activerecord", "~> 4.2.11" - gem "sqlite3", "~> 1.3.6" + gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.25", platforms: [:jruby] + gem "sqlite3", "~> 1.3.6", platforms: [:ruby] end appraise "5.0" do gem "activerecord", "~> 5.0.7" - gem "sqlite3", "~> 1.3.6" + gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] + gem "sqlite3", "~> 1.3.6", platforms: [:ruby] end appraise "5.1" do gem "activerecord", "~> 5.1.7" + gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] + gem "sqlite3", platforms: [:ruby] end appraise "5.2" do gem "activerecord", "~> 5.2.3" + gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] + gem "sqlite3", platforms: [:ruby] end appraise "6.0" do gem "activerecord", "~> 6.0.0" + gem "activerecord-jdbcsqlite3-adapter", "~> 60.0.rc1", platforms: [:jruby] + gem "sqlite3", platforms: [:ruby] end diff --git a/Gemfile b/Gemfile index 1f1603c..d75fe74 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,6 @@ source "https://rubygems.org" +gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] +gem "sqlite3", platforms: [:ruby] + gemspec name: "factory_bot" diff --git a/Gemfile.lock b/Gemfile.lock index f7fe5a7..54e0350 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -13,6 +13,11 @@ GEM activemodel (= 5.2.3) activesupport (= 5.2.3) arel (>= 9.0) + activerecord-jdbc-adapter (52.3-java) + activerecord (~> 5.2.0) + activerecord-jdbcsqlite3-adapter (52.3-java) + activerecord-jdbc-adapter (= 52.3) + jdbc-sqlite3 (~> 3.8, < 3.30) activesupport (5.2.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) @@ -56,10 +61,13 @@ GEM diff-lcs (1.3) docile (1.3.2) ffi (1.11.1) + ffi (1.11.1-java) gherkin (5.1.0) i18n (1.6.0) concurrent-ruby (~> 1.0) + jdbc-sqlite3 (3.28.0) json (2.2.0) + json (2.2.0-java) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) @@ -101,16 +109,19 @@ GEM sqlite3 (1.4.1) thor (0.20.3) thread_safe (0.3.6) + thread_safe (0.3.6-java) tzinfo (1.2.5) thread_safe (~> 0.1) unicode-display_width (1.6.0) yard (0.9.20) PLATFORMS + java ruby DEPENDENCIES activerecord + activerecord-jdbcsqlite3-adapter appraisal aruba cucumber diff --git a/factory_bot.gemspec b/factory_bot.gemspec index acdad9e..896a8b5 100644 --- a/factory_bot.gemspec +++ b/factory_bot.gemspec @@ -33,7 +33,6 @@ Gem::Specification.new do |s| s.add_development_dependency("rspec-its") s.add_development_dependency("rubocop", "0.54") s.add_development_dependency("simplecov") - s.add_development_dependency("sqlite3") s.add_development_dependency("yard") s.license = "MIT" diff --git a/gemfiles/4.2.gemfile b/gemfiles/4.2.gemfile index 41aea26..bb1c31a 100644 --- a/gemfiles/4.2.gemfile +++ b/gemfiles/4.2.gemfile @@ -2,7 +2,8 @@ source "https://rubygems.org" +gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.25", platforms: [:jruby] +gem "sqlite3", "~> 1.3.6", platforms: [:ruby] gem "activerecord", "~> 4.2.11" -gem "sqlite3", "~> 1.3.6" gemspec name: "factory_bot", path: "../" diff --git a/gemfiles/4.2.gemfile.lock b/gemfiles/4.2.gemfile.lock index 9978875..28750d2 100644 --- a/gemfiles/4.2.gemfile.lock +++ b/gemfiles/4.2.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - factory_bot (5.0.2) + factory_bot (5.1.0) activesupport (>= 4.2.0) GEM @@ -14,6 +14,11 @@ GEM activemodel (= 4.2.11.1) activesupport (= 4.2.11.1) arel (~> 6.0) + activerecord-jdbc-adapter (1.3.25) + activerecord (>= 2.2, < 5.0) + activerecord-jdbcsqlite3-adapter (1.3.25) + activerecord-jdbc-adapter (~> 1.3.25) + jdbc-sqlite3 (>= 3.7.2, < 3.9) activesupport (4.2.11.1) i18n (~> 0.7) minitest (~> 5.1) @@ -57,10 +62,13 @@ GEM diff-lcs (1.3) docile (1.3.2) ffi (1.11.1) + ffi (1.11.1-java) gherkin (5.1.0) i18n (0.9.5) concurrent-ruby (~> 1.0) + jdbc-sqlite3 (3.8.11.2) json (2.2.0) + json (2.2.0-java) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) @@ -102,16 +110,19 @@ GEM sqlite3 (1.3.13) thor (0.20.3) thread_safe (0.3.6) + thread_safe (0.3.6-java) tzinfo (1.2.5) thread_safe (~> 0.1) unicode-display_width (1.6.0) yard (0.9.19) PLATFORMS + java ruby DEPENDENCIES activerecord (~> 4.2.11) + activerecord-jdbcsqlite3-adapter (~> 1.3.25) appraisal aruba cucumber diff --git a/gemfiles/5.0.gemfile b/gemfiles/5.0.gemfile index a44edaf..af9145c 100644 --- a/gemfiles/5.0.gemfile +++ b/gemfiles/5.0.gemfile @@ -2,7 +2,8 @@ source "https://rubygems.org" +gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] +gem "sqlite3", "~> 1.3.6", platforms: [:ruby] gem "activerecord", "~> 5.0.7" -gem "sqlite3", "~> 1.3.6" gemspec name: "factory_bot", path: "../" diff --git a/gemfiles/5.0.gemfile.lock b/gemfiles/5.0.gemfile.lock index f802d49..a82ab48 100644 --- a/gemfiles/5.0.gemfile.lock +++ b/gemfiles/5.0.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - factory_bot (5.0.2) + factory_bot (5.1.0) activesupport (>= 4.2.0) GEM @@ -13,6 +13,11 @@ GEM activemodel (= 5.0.7.2) activesupport (= 5.0.7.2) arel (~> 7.0) + activerecord-jdbc-adapter (50.4-java) + activerecord (~> 5.0.0, >= 5.0.3) + activerecord-jdbcsqlite3-adapter (50.4-java) + activerecord-jdbc-adapter (= 50.4) + jdbc-sqlite3 (~> 3.8, < 3.30) activesupport (5.0.7.2) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) @@ -56,10 +61,13 @@ GEM diff-lcs (1.3) docile (1.3.2) ffi (1.11.1) + ffi (1.11.1-java) gherkin (5.1.0) i18n (1.6.0) concurrent-ruby (~> 1.0) + jdbc-sqlite3 (3.28.0) json (2.2.0) + json (2.2.0-java) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) @@ -101,16 +109,19 @@ GEM sqlite3 (1.3.13) thor (0.20.3) thread_safe (0.3.6) + thread_safe (0.3.6-java) tzinfo (1.2.5) thread_safe (~> 0.1) unicode-display_width (1.6.0) yard (0.9.19) PLATFORMS + java ruby DEPENDENCIES activerecord (~> 5.0.7) + activerecord-jdbcsqlite3-adapter appraisal aruba cucumber diff --git a/gemfiles/5.1.gemfile b/gemfiles/5.1.gemfile index 8549dee..350485a 100644 --- a/gemfiles/5.1.gemfile +++ b/gemfiles/5.1.gemfile @@ -2,6 +2,8 @@ source "https://rubygems.org" +gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] +gem "sqlite3", platforms: [:ruby] gem "activerecord", "~> 5.1.7" gemspec name: "factory_bot", path: "../" diff --git a/gemfiles/5.1.gemfile.lock b/gemfiles/5.1.gemfile.lock index bbb8a2d..d5a977e 100644 --- a/gemfiles/5.1.gemfile.lock +++ b/gemfiles/5.1.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - factory_bot (5.0.2) + factory_bot (5.1.0) activesupport (>= 4.2.0) GEM @@ -13,6 +13,11 @@ GEM activemodel (= 5.1.7) activesupport (= 5.1.7) arel (~> 8.0) + activerecord-jdbc-adapter (51.4-java) + activerecord (~> 5.1.0) + activerecord-jdbcsqlite3-adapter (51.4-java) + activerecord-jdbc-adapter (= 51.4) + jdbc-sqlite3 (~> 3.8, < 3.30) activesupport (5.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) @@ -56,10 +61,13 @@ GEM diff-lcs (1.3) docile (1.3.2) ffi (1.11.1) + ffi (1.11.1-java) gherkin (5.1.0) i18n (1.6.0) concurrent-ruby (~> 1.0) + jdbc-sqlite3 (3.28.0) json (2.2.0) + json (2.2.0-java) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) @@ -101,16 +109,19 @@ GEM sqlite3 (1.4.1) thor (0.20.3) thread_safe (0.3.6) + thread_safe (0.3.6-java) tzinfo (1.2.5) thread_safe (~> 0.1) unicode-display_width (1.6.0) yard (0.9.19) PLATFORMS + java ruby DEPENDENCIES activerecord (~> 5.1.7) + activerecord-jdbcsqlite3-adapter appraisal aruba cucumber diff --git a/gemfiles/5.2.gemfile b/gemfiles/5.2.gemfile index 3f53549..6a1b4e5 100644 --- a/gemfiles/5.2.gemfile +++ b/gemfiles/5.2.gemfile @@ -2,6 +2,8 @@ source "https://rubygems.org" +gem "activerecord-jdbcsqlite3-adapter", platforms: [:jruby] +gem "sqlite3", platforms: [:ruby] gem "activerecord", "~> 5.2.3" gemspec name: "factory_bot", path: "../" diff --git a/gemfiles/5.2.gemfile.lock b/gemfiles/5.2.gemfile.lock index c385ad0..9a7e97c 100644 --- a/gemfiles/5.2.gemfile.lock +++ b/gemfiles/5.2.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - factory_bot (5.0.2) + factory_bot (5.1.0) activesupport (>= 4.2.0) GEM @@ -13,6 +13,11 @@ GEM activemodel (= 5.2.3) activesupport (= 5.2.3) arel (>= 9.0) + activerecord-jdbc-adapter (52.3-java) + activerecord (~> 5.2.0) + activerecord-jdbcsqlite3-adapter (52.3-java) + activerecord-jdbc-adapter (= 52.3) + jdbc-sqlite3 (~> 3.8, < 3.30) activesupport (5.2.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) @@ -56,10 +61,13 @@ GEM diff-lcs (1.3) docile (1.3.2) ffi (1.11.1) + ffi (1.11.1-java) gherkin (5.1.0) i18n (1.6.0) concurrent-ruby (~> 1.0) + jdbc-sqlite3 (3.28.0) json (2.2.0) + json (2.2.0-java) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) @@ -101,16 +109,19 @@ GEM sqlite3 (1.4.1) thor (0.20.3) thread_safe (0.3.6) + thread_safe (0.3.6-java) tzinfo (1.2.5) thread_safe (~> 0.1) unicode-display_width (1.6.0) yard (0.9.19) PLATFORMS + java ruby DEPENDENCIES activerecord (~> 5.2.3) + activerecord-jdbcsqlite3-adapter appraisal aruba cucumber diff --git a/gemfiles/6.0.gemfile b/gemfiles/6.0.gemfile index 6c67ad8..85c4a9d 100644 --- a/gemfiles/6.0.gemfile +++ b/gemfiles/6.0.gemfile @@ -2,6 +2,8 @@ source "https://rubygems.org" +gem "activerecord-jdbcsqlite3-adapter", "~> 60.0.rc1", platforms: [:jruby] +gem "sqlite3", platforms: [:ruby] gem "activerecord", "~> 6.0.0" gemspec name: "factory_bot", path: "../" diff --git a/gemfiles/6.0.gemfile.lock b/gemfiles/6.0.gemfile.lock index 52b014d..415e909 100644 --- a/gemfiles/6.0.gemfile.lock +++ b/gemfiles/6.0.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - factory_bot (5.0.2) + factory_bot (5.1.0) activesupport (>= 4.2.0) GEM @@ -12,6 +12,11 @@ GEM activerecord (6.0.0) activemodel (= 6.0.0) activesupport (= 6.0.0) + activerecord-jdbc-adapter (60.0.rc1-java) + activerecord (~> 6.0.0.rc1) + activerecord-jdbcsqlite3-adapter (60.0.rc1-java) + activerecord-jdbc-adapter (= 60.0.rc1) + jdbc-sqlite3 (~> 3.8, < 3.30) activesupport (6.0.0) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) @@ -55,10 +60,13 @@ GEM diff-lcs (1.3) docile (1.3.2) ffi (1.11.1) + ffi (1.11.1-java) gherkin (5.1.0) i18n (1.6.0) concurrent-ruby (~> 1.0) + jdbc-sqlite3 (3.28.0) json (2.2.0) + json (2.2.0-java) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) @@ -100,6 +108,7 @@ GEM sqlite3 (1.4.1) thor (0.20.3) thread_safe (0.3.6) + thread_safe (0.3.6-java) tzinfo (1.2.5) thread_safe (~> 0.1) unicode-display_width (1.6.0) @@ -107,10 +116,12 @@ GEM zeitwerk (2.1.9) PLATFORMS + java ruby DEPENDENCIES activerecord (~> 6.0.0) + activerecord-jdbcsqlite3-adapter (~> 60.0.rc1) appraisal aruba cucumber diff --git a/lib/factory_bot/internal.rb b/lib/factory_bot/internal.rb index b6f400c..013bee9 100644 --- a/lib/factory_bot/internal.rb +++ b/lib/factory_bot/internal.rb @@ -86,7 +86,7 @@ module FactoryBot end def register_default_strategies - DEFAULT_STRATEGIES.each(&method(:register_strategy)) + DEFAULT_STRATEGIES.each { |name, klass| register_strategy(name, klass) } end def register_default_callbacks diff --git a/spec/acceptance/keyed_by_class_spec.rb b/spec/acceptance/keyed_by_class_spec.rb index 633d55b..39b93e6 100644 --- a/spec/acceptance/keyed_by_class_spec.rb +++ b/spec/acceptance/keyed_by_class_spec.rb @@ -11,7 +11,7 @@ describe "finding factories keyed by class instead of symbol" do it "doesn't find the factory" do expect { FactoryBot.create(User) }.to( - raise_error(KeyError, "Factory not registered: #{User.inspect}"), + raise_error(KeyError, /Factory not registered: User/), ) end end