Created
April 21, 2020 20:03
-
-
Save kylemacey/1848b10ba33c39322cca6775628dd933 to your computer and use it in GitHub Desktop.
Generate RBI for a Mongoid Document
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# typed: true | |
class Foo | |
include Mongoid::Document | |
include Mongoid::Timestamps | |
field :bar, type: String | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# typed: ignore | |
require "parlour" | |
require "fileutils" | |
klass = Foo | |
klass.class_eval do | |
def self.extended_modules | |
(class << self; self end).included_modules | |
end | |
end | |
generator = Parlour::RbiGenerator.new | |
generator.root.create_class(klass.name) do |_klass| | |
klass.included_modules.each do |mod| | |
if mod.name | |
_klass.create_include(mod.name) | |
else | |
next | |
end | |
end | |
klass.extended_modules.each do |ext_mod| | |
if ext_mod.name | |
_klass.create_extend(ext_mod.name) | |
else | |
next | |
end | |
end | |
end | |
FileUtils.mkdir_p("sorbet/rbi/app/models") | |
File.open("sorbet/rbi/app/models/#{klass.name.underscore}.rbi", "w") { |f| f << generator.rbi } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# typed: strong | |
class Foo | |
include Mongoid::Timestamps | |
include Mongoid::Timestamps::Updated | |
include Mongoid::Timestamps::Timeless | |
include Mongoid::Timestamps::Created | |
include Mongoid::Document | |
include Mongoid::QueryCache::Document | |
include Mongoid::Touchable::InstanceMethods | |
include Mongoid::Composable | |
include Mongoid::Equality | |
include Mongoid::Stateful | |
include Mongoid::Reloadable | |
include Mongoid::Inspectable | |
include Mongoid::Evolvable | |
include Mongoid::Copyable | |
include ActiveModel::Validations::Callbacks | |
include Mongoid::Interceptable | |
include Mongoid::Validatable::Macros | |
include Mongoid::Validatable | |
include Mongoid::Traversable | |
include Mongoid::Threaded::Lifecycle | |
include Mongoid::Cacheable | |
include Mongoid::Shardable | |
include Mongoid::Serializable | |
include Mongoid::Selectable | |
include Mongoid::Scopable | |
include Mongoid::Association | |
include Mongoid::Association::Referenced::Syncable | |
include Mongoid::Association::Reflections | |
include Mongoid::Association::Macros | |
include Mongoid::Association::Builders | |
include Mongoid::Association::Depending | |
include Mongoid::Association::Accessors | |
include Mongoid::Association::Referenced::CounterCache | |
include Mongoid::Association::Referenced::AutoSave | |
include Mongoid::Association::Embedded::Cyclic | |
include Mongoid::Persistable | |
include Mongoid::Persistable::Upsertable | |
include Mongoid::Persistable::Updatable | |
include Mongoid::Persistable::Savable | |
include Mongoid::Positional | |
include Mongoid::Persistable::Unsettable | |
include Mongoid::Persistable::Settable | |
include Mongoid::Persistable::Renamable | |
include Mongoid::Persistable::Pushable | |
include Mongoid::Persistable::Pullable | |
include Mongoid::Persistable::Poppable | |
include Mongoid::Persistable::Logical | |
include Mongoid::Persistable::Incrementable | |
include Mongoid::Persistable::Destroyable | |
include Mongoid::Persistable::Deletable | |
include Mongoid::Persistable::Creatable | |
include Mongoid::Matchable | |
include Mongoid::Indexable | |
include Mongoid::Fields | |
include Mongoid::Attributes | |
include Mongoid::Attributes::Processing | |
include Mongoid::Attributes::Readonly | |
include Mongoid::Attributes::Nested | |
include Mongoid::Clients | |
include Mongoid::Clients::Sessions | |
include Mongoid::Clients::Options | |
include Mongoid::Clients::StorageOptions | |
include Mongoid::Changeable | |
include Mongoid::Atomic | |
include ActiveModel::Serializers::JSON | |
include ActiveModel::Serialization | |
include ActiveModel::Model | |
include ActiveModel::AttributeAssignment | |
include ActiveModel::ForbiddenAttributesProtection | |
include ActiveModel::Conversion | |
include ActiveModel::Validations::HelperMethods | |
include ActiveSupport::Callbacks | |
include ActiveModel::Validations | |
include ActiveSupport::Dependencies::ZeitwerkIntegration::RequireDependency | |
include ActiveSupport::ToJsonWithActiveSupportEncoder | |
include PP::ObjectMixin | |
include Mongoid::Criteria::Queryable::Extensions::Object | |
include Mongoid::Extensions::Object | |
include BSON::Object | |
include JSON::Ext::Generator::GeneratorMethods::Object | |
include ActiveSupport::Tryable | |
include ActiveSupport::Dependencies::Loadable | |
include Kernel | |
extend Mongoid::Timestamps::Timeless::ClassMethods | |
extend Mongoid::Document::ClassMethods | |
extend Mongoid::Findable | |
extend ActiveModel::Validations::Callbacks::ClassMethods | |
extend Mongoid::Validatable::Macros | |
extend Mongoid::Validatable::ClassMethods | |
extend Mongoid::Traversable::ClassMethods | |
extend Mongoid::Threaded::Lifecycle::ClassMethods | |
extend Mongoid::Shardable::ClassMethods | |
extend Forwardable | |
extend Mongoid::Scopable::ClassMethods | |
extend Mongoid::Association::Referenced::Syncable::ClassMethods | |
extend Mongoid::Association::Reflections::ClassMethods | |
extend Mongoid::Association::Macros::ClassMethods | |
extend Mongoid::Association::Depending::ClassMethods | |
extend Mongoid::Association::Referenced::CounterCache::ClassMethods | |
extend Mongoid::Association::Embedded::Cyclic::ClassMethods | |
extend Mongoid::Persistable::Destroyable::ClassMethods | |
extend Mongoid::Persistable::Deletable::ClassMethods | |
extend Mongoid::Persistable::Creatable::ClassMethods | |
extend Mongoid::Indexable::ClassMethods | |
extend Mongoid::Fields::ClassMethods | |
extend Mongoid::Attributes::ClassMethods | |
extend Mongoid::Attributes::Readonly::ClassMethods | |
extend Mongoid::Attributes::Nested::ClassMethods | |
extend Mongoid::Clients::Sessions::ClassMethods | |
extend Mongoid::Clients::Options::ClassMethods | |
extend Mongoid::Clients::StorageOptions::ClassMethods | |
extend Mongoid::Changeable::ClassMethods | |
extend ActiveModel::Conversion::ClassMethods | |
extend ActiveModel::Validations::HelperMethods | |
extend ActiveModel::Translation | |
extend ActiveSupport::DescendantsTracker | |
extend ActiveSupport::Callbacks::ClassMethods | |
extend ActiveModel::Callbacks | |
extend ActiveModel::Naming | |
extend ActiveModel::Validations::ClassMethods | |
extend Mongoid::Criteria::Queryable::Extensions::Object::ClassMethods | |
extend Mongoid::Extensions::Object::ClassMethods | |
extend Mongoid::Extensions::Module | |
extend Module::Concerning | |
extend ActiveSupport::Dependencies::ModuleConstMissing | |
extend ActiveSupport::Dependencies::ZeitwerkIntegration::RequireDependency | |
extend ActiveSupport::ToJsonWithActiveSupportEncoder | |
extend PP::ObjectMixin | |
extend Mongoid::Criteria::Queryable::Extensions::Object | |
extend Mongoid::Extensions::Object | |
extend BSON::Object | |
extend JSON::Ext::Generator::GeneratorMethods::Object | |
extend ActiveSupport::Tryable | |
extend ActiveSupport::Dependencies::Loadable | |
extend Kernel | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment