Runtime assertions for Ruby literal.fun
ruby
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix Rails loading (#313)

Closes #312

authored by

Joel Drapper and committed by
GitHub
fbb80217 21c577b3

+74 -44
+2
config/quickdraw.rb
··· 25 25 ].freeze 26 26 end 27 27 28 + Literal::Loader.eager_load 29 + 28 30 if ENV["COVERAGE"] == "true" 29 31 require "simplecov" 30 32
+4 -1
lib/literal.rb
··· 5 5 6 6 module Literal 7 7 Loader = Zeitwerk::Loader.for_gem.tap do |loader| 8 + loader.ignore("#{__dir__}/literal/rails") 9 + loader.ignore("#{__dir__}/literal/railtie.rb") 10 + 8 11 loader.inflector.inflect( 9 12 "json_data_type" => "JSONDataType" 10 13 ) ··· 123 126 end 124 127 end 125 128 126 - require_relative "literal/rails" if defined?(Rails) 129 + require_relative "literal/railtie" if defined?(Rails)
-7
lib/literal/rails.rb
··· 1 - # frozen_string_literal: true 2 - 3 - require_relative "railtie" 4 - require_relative "rails/patches/active_record" 5 - 6 - module Literal::Rails 7 - end
+9
lib/literal/rails/active_record_relation_patch.rb
··· 1 + # frozen_string_literal: true 2 + 3 + module Literal::Rails 4 + module ActiveRecordRelationPatch 5 + def Relation(model) 6 + RelationType.new(model) 7 + end 8 + end 9 + end
-32
lib/literal/rails/patches/active_record.rb
··· 1 - # frozen_string_literal: true 2 - 3 - module ActiveRecord 4 - class RelationType 5 - def initialize(model_class) 6 - unless Class === model_class && model_class < ActiveRecord::Base 7 - raise Literal::TypeError.new( 8 - context: Literal::TypeError::Context.new( 9 - expected: ActiveRecord::Base, actual: model_class 10 - ) 11 - ) 12 - end 13 - 14 - @model_class = model_class 15 - end 16 - 17 - def inspect = "ActiveRecord::Relation(#{@model_class.name})" 18 - 19 - def ===(value) 20 - case value 21 - when ActiveRecord::Relation, ActiveRecord::Associations::CollectionProxy, ActiveRecord::AssociationRelation 22 - @model_class == value.model || value.model < @model_class 23 - else 24 - false 25 - end 26 - end 27 - end 28 - 29 - def self.Relation(model) 30 - RelationType.new(model) 31 - end 32 - end
+28
lib/literal/rails/relation_type.rb
··· 1 + # frozen_string_literal: true 2 + 3 + module Literal::Rails 4 + class RelationType 5 + def initialize(model_class) 6 + unless Class === model_class && model_class < ActiveRecord::Base 7 + raise Literal::TypeError.new( 8 + context: Literal::TypeError::Context.new( 9 + expected: ActiveRecord::Base, actual: model_class 10 + ) 11 + ) 12 + end 13 + 14 + @model_class = model_class 15 + end 16 + 17 + def inspect = "ActiveRecord::Relation(#{@model_class.name})" 18 + 19 + def ===(value) 20 + case value 21 + when ActiveRecord::Relation, ActiveRecord::Associations::CollectionProxy, ActiveRecord::AssociationRelation 22 + @model_class == value.model || value.model < @model_class 23 + else 24 + false 25 + end 26 + end 27 + end 28 + end
+31 -4
lib/literal/railtie.rb
··· 1 1 # frozen_string_literal: true 2 2 3 + module Literal::Rails 4 + if defined?(::ActiveJob) 5 + require_relative "rails/enum_serializer" 6 + end 7 + 8 + if defined?(::ActiveRecord::Relation) 9 + require_relative "rails/relation_type" 10 + require_relative "rails/active_record_relation_patch" 11 + ::ActiveRecord.extend(ActiveRecordRelationPatch) 12 + end 13 + end 14 + 3 15 class Literal::Railtie < Rails::Railtie 4 - initializer "literal.register_literal_enum_type" do 5 - [ActiveRecord::Type, ActiveModel::Type].each do |registry| 6 - registry.register(:literal_enum) do |name, type:| 16 + if defined?(::ActiveModel::Type) 17 + require_relative "rails/enum_type" 18 + require_relative "rails/flags_type" 19 + 20 + initializer "literal.register_active_model_types" do 21 + ActiveModel::Type.register(:literal_enum) do |name, type:| 7 22 Literal::Rails::EnumType.new(type) 8 23 end 9 24 10 - registry.register(:literal_flags) do |name, type:| 25 + ActiveModel::Type.register(:literal_flags) do |name, type:| 11 26 Literal::Rails::FlagsType.new(type) 27 + end 28 + end 29 + 30 + if defined?(::ActiveRecord::Type) 31 + initializer "literal.register_active_record_types" do 32 + ActiveRecord::Type.register(:literal_enum) do |name, type:| 33 + Literal::Rails::EnumType.new(type) 34 + end 35 + 36 + ActiveRecord::Type.register(:literal_flags) do |name, type:| 37 + Literal::Rails::FlagsType.new(type) 38 + end 12 39 end 13 40 end 14 41 end