Merge pull request #1352 from bf4/railties

Fix generators (@dgynn); load Railtie only with Rails, ensures caching configured
This commit is contained in:
Benjamin Fleischer
2016-01-18 23:24:40 -05:00
15 changed files with 216 additions and 61 deletions

View File

@@ -1,28 +0,0 @@
require 'rails/railtie'
module ActiveModel
class Railtie < Rails::Railtie
initializer 'active_model_serializers.logger' do
ActiveSupport.on_load(:active_model_serializers) do
self.logger = ActionController::Base.logger
end
end
initializer 'active_model_serializers.caching' do
ActiveSupport.on_load(:action_controller) do
ActiveModelSerializers.config.cache_store = ActionController::Base.cache_store
ActiveModelSerializers.config.perform_caching = Rails.configuration.action_controller.perform_caching
end
end
initializer 'generators' do |app|
app.load_generators
require 'generators/serializer/resource_override'
end
if Rails.env.test?
ActionController::TestCase.send(:include, ActiveModelSerializers::Test::Schema)
ActionController::TestCase.send(:include, ActiveModelSerializers::Test::Serializer)
end
end
end

View File

@@ -1,33 +1,23 @@
require 'active_model'
require 'active_support'
require 'action_controller'
require 'action_controller/railtie'
require 'active_support/core_ext/object/with_options'
module ActiveModelSerializers
mattr_accessor(:logger) { ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT)) }
def self.config
ActiveModel::Serializer.config
end
extend ActiveSupport::Autoload
autoload :Model
autoload :Callbacks
autoload :Deserialization
autoload :Logging
autoload :Test
end
require 'active_model/serializer'
require 'active_model/serializable_resource'
require 'active_model/serializer/version'
class << self; attr_accessor :logger; end
self.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
require 'action_controller/serialization'
ActiveSupport.on_load(:action_controller) do
ActiveSupport.run_load_hooks(:active_model_serializers, ActiveModelSerializers)
include ::ActionController::Serialization
ActionDispatch::Reloader.to_prepare do
ActiveModel::Serializer.serializers_cache.clear
def self.config
ActiveModel::Serializer.config
end
end
require 'active_model/serializer/railtie'
require 'active_model/serializer/version'
require 'active_model/serializer'
require 'active_model/serializable_resource'
require 'active_model_serializers/railtie' if defined?(::Rails)
end

View File

@@ -0,0 +1,36 @@
require 'rails/railtie'
require 'action_controller'
require 'action_controller/railtie'
require 'action_controller/serialization'
module ActiveModelSerializers
class Railtie < Rails::Railtie
config.to_prepare do
ActiveModel::Serializer.serializers_cache.clear
end
initializer 'active_model_serializers.action_controller' do
ActiveSupport.on_load(:action_controller) do
include(::ActionController::Serialization)
end
end
# This hook is run after the action_controller railtie has set the configuration
# based on the *environment* configuration and before any config/initializers are run
# and also before eager_loading (if enabled).
initializer 'active_model_serializers.set_configs', :after => 'action_controller.set_configs' do
ActiveModelSerializers.logger = Rails.configuration.action_controller.logger
ActiveModelSerializers.config.cache_store = Rails.configuration.action_controller.cache_store
ActiveModelSerializers.config.perform_caching = Rails.configuration.action_controller.perform_caching
end
generators do
require 'generators/rails/resource_override'
end
if Rails.env.test?
ActionController::TestCase.send(:include, ActiveModelSerializers::Test::Schema)
ActionController::TestCase.send(:include, ActiveModelSerializers::Test::Serializer)
end
end
end

View File

@@ -4,9 +4,7 @@ require 'rails/generators/rails/resource/resource_generator'
module Rails
module Generators
class ResourceGenerator
def add_serializer
invoke 'serializer'
end
hook_for :serializer, default: true, boolean: true
end
end
end

View File

@@ -15,11 +15,11 @@ module Rails
private
def attributes_names
[:id] + attributes.select { |attr| !attr.reference? }.map { |a| a.name.to_sym }
[:id] + attributes.reject(&:reference?).map! { |a| a.name.to_sym }
end
def association_names
attributes.select { |attr| attr.reference? }.map { |a| a.name.to_sym }
attributes.select(&:reference?).map! { |a| a.name.to_sym }
end
def parent_class_name
@@ -34,4 +34,3 @@ module Rails
end
end
end