From 5bd903c41a825674a94d8d13f2224b6e032bbde4 Mon Sep 17 00:00:00 2001 From: Andrew Markle Date: Tue, 10 Dec 2019 15:55:00 -0500 Subject: [PATCH 1/4] Remove railtie as a dependency if you're not running Rails --- ftl-serializer.gemspec | 1 - lib/ftl-serializer.rb | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ftl-serializer.gemspec b/ftl-serializer.gemspec index d229c06..c0576a5 100644 --- a/ftl-serializer.gemspec +++ b/ftl-serializer.gemspec @@ -33,7 +33,6 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] - spec.add_dependency "railties", ">= 5" spec.add_dependency "activesupport", ">= 5" spec.add_dependency "oj", '>= 2' diff --git a/lib/ftl-serializer.rb b/lib/ftl-serializer.rb index d0304f7..cb93513 100644 --- a/lib/ftl-serializer.rb +++ b/lib/ftl-serializer.rb @@ -2,7 +2,7 @@ require "ftl/version" require "ftl/serializer" -require "ftl/railtie" +require "ftl/railtie" if defined?(Rails) require "ftl/errors" require "ftl/configuration" require "ftl/serializer/base" From 5bfd9bbf8add9f923986a93749b1547decb7e89d Mon Sep 17 00:00:00 2001 From: Andrew Markle Date: Tue, 10 Dec 2019 16:01:36 -0500 Subject: [PATCH 2/4] Include railties as a development dependency so our serializers load --- ftl-serializer.gemspec | 1 + spec/spec_helper.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/ftl-serializer.gemspec b/ftl-serializer.gemspec index c0576a5..caf41de 100644 --- a/ftl-serializer.gemspec +++ b/ftl-serializer.gemspec @@ -36,6 +36,7 @@ Gem::Specification.new do |spec| spec.add_dependency "activesupport", ">= 5" spec.add_dependency "oj", '>= 2' + spec.add_development_dependency "railties", ">= 5" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "rspec", "~> 3.0" spec.add_development_dependency "pry" diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b47ef7c..21a324e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,6 +2,7 @@ require "bundler/setup" require "ftl-serializer" +require "ftl/railtie" FTL::Configuration.serializer_paths = ["spec/ftl/test_examples"] require 'ftl/test_examples/basic_serializer' require 'active_support/testing/time_helpers' From 09050ff584a65b653a579df79ca0e8b2f1640546 Mon Sep 17 00:00:00 2001 From: Andrew Markle Date: Tue, 10 Dec 2019 16:21:35 -0500 Subject: [PATCH 3/4] Extract load method and make it not depend on Rails --- lib/ftl-serializer.rb | 1 + lib/ftl/railtie.rb | 15 +-------------- lib/ftl/serializer.rb | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/ftl-serializer.rb b/lib/ftl-serializer.rb index cb93513..02a89bc 100644 --- a/lib/ftl-serializer.rb +++ b/lib/ftl-serializer.rb @@ -3,6 +3,7 @@ require "ftl/version" require "ftl/serializer" require "ftl/railtie" if defined?(Rails) +require "ftl/load_and_bootstrap" require "ftl/errors" require "ftl/configuration" require "ftl/serializer/base" diff --git a/lib/ftl/railtie.rb b/lib/ftl/railtie.rb index 7298149..3d39da2 100644 --- a/lib/ftl/railtie.rb +++ b/lib/ftl/railtie.rb @@ -13,20 +13,7 @@ class Railtie < Rails::Railtie end ftl_reloader = app.config.file_watcher.new([], reload_paths) do - FTL::Configuration.serializer_paths.map do |path| - Dir.glob("#{path}/**/*.rb").each do |file| - begin - if Rails.env.development? || Rails.env.test? - load file - else - require file - end - rescue => e - warn "can't load '#{file}' file (#{e.message})!" - end - end - end - + FTL::Serializer.load_from_configured_paths FTL::Serializer.bootstrap! end diff --git a/lib/ftl/serializer.rb b/lib/ftl/serializer.rb index f77b20d..ff68d26 100644 --- a/lib/ftl/serializer.rb +++ b/lib/ftl/serializer.rb @@ -12,6 +12,22 @@ def self.registered_serializers @serializers end + def self.load_from_configured_paths + FTL::Configuration.serializer_paths.map do |path| + Dir.glob("#{path}/**/*.rb").each do |file| + begin + if defined?(Rails) && (Rails.env.development? || Rails.env.test?) + load file + else + require file + end + rescue => e + warn "can't load '#{file}' file (#{e.message})!" + end + end + end + end + def self.bootstrap! return nil unless @serializers @serializers.each do |klass| From 1fe5cb964484d50e6e005a43eaa7f7f4da5cb214 Mon Sep 17 00:00:00 2001 From: Andrew Markle Date: Tue, 10 Dec 2019 16:22:18 -0500 Subject: [PATCH 4/4] Remove required file that no longer exists --- lib/ftl-serializer.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/ftl-serializer.rb b/lib/ftl-serializer.rb index 02a89bc..cb93513 100644 --- a/lib/ftl-serializer.rb +++ b/lib/ftl-serializer.rb @@ -3,7 +3,6 @@ require "ftl/version" require "ftl/serializer" require "ftl/railtie" if defined?(Rails) -require "ftl/load_and_bootstrap" require "ftl/errors" require "ftl/configuration" require "ftl/serializer/base"