rails engine :: modularize you app

20
Rails Engine An awesome tool to extend your rails application Muntasim Ahmed Platform Architect @ Tasawr Interactive https://github.com/railscash [email protected]

Upload: muntasim-ahmed

Post on 22-Nov-2014

1.719 views

Category:

Technology


1 download

DESCRIPTION

It contains rails engine basics, and answers of some wh question regarding rails engine

TRANSCRIPT

Page 1: Rails Engine :: modularize you app

Rails EngineAn awesome tool to extend your rails application

Muntasim AhmedPlatform Architect @ Tasawr Interactive

https://github.com/[email protected]

Page 2: Rails Engine :: modularize you app

Agenda

• Why Rails Engine• What is Rails Engine• How it works with Rails Core• Who are they• Where is your interest

Page 3: Rails Engine :: modularize you app

Problems

• Large application without reusable component• Slow testing ( if any :) )• Larger app, messy

Page 4: Rails Engine :: modularize you app

Solution• Find common functionalities• Extract them to module => Gems• Use railtie to tie with Rails App => Rails Engine

Page 5: Rails Engine :: modularize you app

One Thing!

Rails (version>=3.1) is  just a “supercharged” engine

http://edgeguides.rubyonrails.org/engines.html

Page 6: Rails Engine :: modularize you app

Rails Engine ?

• pre-packaged application • able to be run or mounted within another Rails

application• can have its own models, views, controllers,

generators and publicly served static files

Page 7: Rails Engine :: modularize you app

Rails Engine ?

•   

Page 8: Rails Engine :: modularize you app

Rails Engine has

Image source: Railscasts.com

Page 9: Rails Engine :: modularize you app

Rails Engine has

Image source: Google

Page 10: Rails Engine :: modularize you app

Rails Engine has

Image source: Google

Page 11: Rails Engine :: modularize you app

Rails Engine has

Image source: Google

Page 12: Rails Engine :: modularize you app

Rails engine walk-through

• Create an engine• Implement requirements  in app, lib etc.• Test• Mount to main app• Override where necessary • And done!

Page 13: Rails Engine :: modularize you app

Rails engine walk-through

Create rails plugin new awesome_engine --mountable         

Then generate mvc stuffs, test

In App Gemfilegem "awesome_engine", path => "awesome_engine_path     

In App Routemount AwesomeEngine::Engine => "/awesome_engine_path", as => “awesome_engine"

Page 14: Rails Engine :: modularize you app

Rails engine walk-through

Hit   localhost:3000/awesome_engine_path (mount point)

It will hit engine's root path         

Welcome to awesome engine home!

Page 15: Rails Engine :: modularize you app

Rails engine walk-through

Routes:

Use engine routes from main app using engine_name.route_name

e.g.    awesome_name.root_path

Page 16: Rails Engine :: modularize you app

Rails engine walk-through

Routes:

Use main app routes from engine using main_app.route_name 

e.g. main_app.root_path

Page 17: Rails Engine :: modularize you app

Who are they

• Rails Admin• Devise• Blogit• Tolk• .....

Page 18: Rails Engine :: modularize you app

References

• http://railscasts.com/episodes/277-mountable-engines• http://www.slideshare.net/AndyMaleh/rails-engine-patterns• http://www.slideshare.net/mirrec/rails-engine-rubyslava• http://edgeguides.rubyonrails.org/engines.html• http://edgeapi.rubyonrails.org/classes/Rails/Engine.html• http://pivotallabs.com/users/shagemann/blog/articles/1994-

migrating-rom-a-single-rails-app-to-a-suite-of-rails-engines

Image source:Google, Railscasts and Dulal Khan

Page 19: Rails Engine :: modularize you app

Thanks for your attention :)

Page 20: Rails Engine :: modularize you app

???

Question(s)