staying dry in rails using code generation

12
Being DRY Your code might be, but are you? By Jeroen van Dijk

Upload: jeroenvandijk

Post on 27-Jun-2015

1.759 views

Category:

Technology


1 download

DESCRIPTION

A presentation about a code generator that generates a complete datamodel for ruby on rails

TRANSCRIPT

Page 1: Staying Dry in Rails using code generation

Being DRYYour code might be,

but are you?

By Jeroen van Dijk

Page 2: Staying Dry in Rails using code generation

Examples of tools to make you DRY...

rails-templates capistrano

I18n rake scaffolds sass

haml make_resourceful

Page 3: Staying Dry in Rails using code generation

What is missing to keep you DRY?. . . An idea:Scaffold of your complete datamodel?

Page 4: Staying Dry in Rails using code generation

But scaffolds generate code...... for just one resource!... not following my own conventions!... that still requires a lot of customization!

All true, that’s why I’ll not talk about the old way of scaffolding...

Page 5: Staying Dry in Rails using code generation

Instant Railsrails shop -m http://www.jeevidee.nl/instant_rails_application.txt

Page 6: Staying Dry in Rails using code generation

Don’t like uml or need customization?

For examples or just to startFor an old application: “rake dm:export”For a new application: “rake dm:xmi:to_yaml”

Customize• which templates should be generated• which attributes/association should be used in your templates

Page 7: Staying Dry in Rails using code generation

Not enough?• Adapt the templates to your liking• Define your own formats

email: native_type: string examples: valid: [email protected] invalid: jeroen_jeevidee.nl display: default: “mail_to(“{{field}}”)

Page 8: Staying Dry in Rails using code generation

Useful for...• super fast prototyping • refactoring • applying good conventions (e.g. css, models)

Not just uml2rails

Page 9: Staying Dry in Rails using code generation

The new DRY for Rails?• Design the basics of your application• Run the generator with your own customizations• Customize the application

Page 10: Staying Dry in Rails using code generation

Summary of featuresYaml/Uml export to: OK Models OK Views (+helpers) OK Controllers OK Migrations OK Fixtures OK Custom formats FAIL Documentation + Tests PENDING Intelligent generation of Routes PENDING Generation of Tests/Specs/Stories

Information on attributes and associations is exploited in all of the above.

Page 11: Staying Dry in Rails using code generation

More info or contributeSourcehttp://github.com/jeroenvandijk/dm_generatorhttp://github.com/jeroenvandijk/dm_templateshttp://github.com/jeroenvandijk/dm_designs

Documentation/blog (coming soon)http://www.jeevidee.nl

Demonstrationrails shop -m http://www.jeevidee.nl/instant_rails_application.txt

Page 12: Staying Dry in Rails using code generation

Questions?