Skip to content

🎩 Generate Active Record models from an existing schema

License

Notifications You must be signed in to change notification settings

brianrieck1/magic_models

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MagicModels

Have an existing database? MagicModels can generate models on the fly using your existing database connection.

If you have a table called people, just call MagicModels.define. Now, you have a model called Person. Boom!

Installation

Add this line to your application's Gemfile:

gem 'magic_models'

And then execute:

$ bundle

Or install it yourself as:

$ gem install magic_models

Usage

MagicModels has two main functions:

  • dump: Generate files for your Active Record models.
  • define: Declare models at runtime without creating any files.

First, you'll need to point your app at an existing database. To do that, just edit your config/database.yml.

To define your models at runtime, just put this line in an initializer:

MagicModels.define

If you want to dump your models to files, run this shell command:

$ rails runner 'MagicModels.dump'

Configuration

MagicModels also offers some configuration settings. MagicModels.define and MagicModels.dump accept a block:

MagicModels.define do |config|
end

MagicModels.dump do |config|
end

Shared settings

# Ignore certian tables (default: schema_migrations, ar_internal_metadata)
config.exclude 'some_table', 'some_other_table'

# Change the connection (default: ActiveRecord::Base.connection)
config.connection = SomeOtherModel.connection

# Declare a different class to inherit from (default: ActiveRecord::Base)
config.base_class = 'SomeOtherAncestor'

Dump-specific settings

# Change the directory where the model files will be created (default: app/models)
config.destination = '/path/to/your/models/dir'

Define-specific settings

# Change the namespace to create the models under. For example, if you had a table
# named 'foos', this configuration would create `SomeModule::Foo` instead of `Foo`.
config.namespace = SomeModule

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/rzane/magic_models.

Props

License

The gem is available as open source under the terms of the MIT License.

About

🎩 Generate Active Record models from an existing schema

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 95.4%
  • HTML 2.9%
  • Shell 1.7%