Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Through padrino-lazy, we can include some common properties shared between the model object used a base model object

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.rdoc
Octocat-spinner-32 Rakefile
Octocat-spinner-32 padrino-lazy.gemspec
README.rdoc

LAZY Agnostic Application Generators (padrino-lazy)

Overview

Through padrino-lazy, we can include some common properties shared between the model object used a base model object

Padrino is very good framework, and almost follows the DRY principle (Don't Repeat Yourself) When we need to have some common properties shared between the model object of our ORM, using the generator padrino-gen, We can only include these properties in each model to generate.

I hope this idea will be included in Padrino Framework.

Principle / Step

  1. generate a model

  2. convert the model into base model ( move this model into lib/ folder)

  3. save config file with model base's list

  4. generate a model from base model

  5. generate a migration file

Install

gem install padrino-lazy –pre

Usage

Step 1-2-3

$ padrino-lazy base --c config_file --b base_model_name --f field_to_create

Step 4-5

$ padrino-lazy model --c config_file --b base_model_name --f field_to_create --m model_name

Options

--f list field to generate
--c config file's name (saved into config/ folder)
--b base model name (es: BaseModel)
--m model name to create (es: User)

Example

$ padrino-lazy base --c config --b BaseModel --f
"create_at:datetime is_active:boolean"

now we have

  • lib/base_model.rb class BaseModel

include DataMapper::Resource

# property <name>, <type>
property :id, Serial
property :create_at, DateTime
property :is_active, Boolean

end

  • config/config.yml

    ---
    - base: BaseModel
      fields: create_at:datetime is_active:boolean

$ padrino-lazy model --c config --b BaseModel --f "name:string
 have_children:boolean born:date foo:integer"  --m User
  • app/models/user.rb

    class User < BaseModel
    
      # property <name>, <type>
      property :name, String
      property :have_children, Boolean
      property :born, Date
      property :foo, Integer
    end
  • db/migrate/001_create_users.rb

    migration 1, :create_users do
      up do
        create_table :users do
          column :id, Integer, :serial => true
          column :name, String
          column :have_children, Boolean
          column :born, Date
          column :foo, Integer
       end
      end
    
      down do
        drop_table :users
      end
    end
  • db/migrate/002_add_basic_model_to_user.rb

    migration 2, :add_basic_model_to_user do
      up do
        modify_table :users do
          add_column :name, String
         add_column :have_children, Boolean
         add_column :born, Date
         add_column :foo, Integer
        end
      end
    
      down do
        modify_table :users do
          drop_column :name
         drop_column :have_children
         drop_column :born
         drop_column :foo
       end
      end
    end

Known issue

  • VERY VERY alpha code !! (thanks to my pig/lazy side :D )

  • –f options need dobule quote around fields

  • –b write in CamelCase

  • TESTING only with datamapper and activerecord into linux machine

TODO:

  • Test all code !

  • Use Padrino::Generators instead of Commander

  • Default config file name (very lazy :P )

THANK

Team Padrino DaddYE Piedinodifata

Something went wrong with that request. Please try again.