diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-02-17 00:09:23 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-17 00:09:23 -0500 |
commit | 21cc0432e4e996383dce88ffb89c4883a577f459 (patch) | |
tree | 0da3486b6952c046f07b59fc6802b55cd7a9dd2e | |
parent | 1f95e5b14d49390be7d0459e7479be985f499c86 (diff) | |
parent | 3cc93de6ad58ee306b906a3d979b46276900711a (diff) | |
download | rails-21cc0432e4e996383dce88ffb89c4883a577f459.tar.gz rails-21cc0432e4e996383dce88ffb89c4883a577f459.tar.bz2 rails-21cc0432e4e996383dce88ffb89c4883a577f459.zip |
Merge pull request #32002 from y-yagi/fix_set_serializer
Fix custome serializer setting
-rw-r--r-- | activejob/lib/active_job/railtie.rb | 11 | ||||
-rw-r--r-- | activejob/lib/active_job/serializers.rb | 2 | ||||
-rw-r--r-- | railties/test/application/configuration_test.rb | 12 |
3 files changed, 21 insertions, 4 deletions
diff --git a/activejob/lib/active_job/railtie.rb b/activejob/lib/active_job/railtie.rb index 427ad1e3af..d0294854d3 100644 --- a/activejob/lib/active_job/railtie.rb +++ b/activejob/lib/active_job/railtie.rb @@ -14,8 +14,10 @@ module ActiveJob end initializer "active_job.custom_serializers" do |app| - custom_serializers = app.config.active_job.delete(:custom_serializers) - ActiveJob::Serializers.add_serializers custom_serializers + config.after_initialize do + custom_serializers = app.config.active_job.delete(:custom_serializers) + ActiveJob::Serializers.add_serializers custom_serializers + end end initializer "active_job.set_configs" do |app| @@ -23,7 +25,10 @@ module ActiveJob options.queue_adapter ||= :async ActiveSupport.on_load(:active_job) do - options.each { |k, v| send("#{k}=", v) } + options.each do |k, v| + k = "#{k}=" + send(k, v) if respond_to? k + end end end diff --git a/activejob/lib/active_job/serializers.rb b/activejob/lib/active_job/serializers.rb index d9a130fa73..9930ae0823 100644 --- a/activejob/lib/active_job/serializers.rb +++ b/activejob/lib/active_job/serializers.rb @@ -49,7 +49,7 @@ module ActiveJob # Adds a new serializer to a list of known serializers def add_serializers(*new_serializers) - self._additional_serializers += new_serializers + self._additional_serializers += new_serializers.flatten end end diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 236d73d5fd..caadae3136 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -1940,6 +1940,18 @@ module ApplicationTests assert_equal Digest::SHA1, ActiveSupport::Digest.hash_digest_class end + test "custom serializers should be able to set via config.active_job.custom_serializers in an initializer" do + class ::DummySerializer < ActiveJob::Serializers::ObjectSerializer; end + + app_file "config/initializers/custom_serializers.rb", <<-RUBY + Rails.application.config.active_job.custom_serializers << DummySerializer + RUBY + + app "development" + + assert_includes ActiveJob::Serializers.serializers, DummySerializer + end + private def force_lazy_load_hooks yield # Tasty clarifying sugar, homie! We only need to reference a constant to load it. |