App Lego

15
Bootstrapping Project Code László Bácsi @icanscale github.com/lackac 2009. szeptember 28.

description

Presentation given on the second day of curucamp about my rails app bootstrapping project.

Transcript of App Lego

Page 1: App Lego

Bootstrapping Project CodeLászló Bácsi@icanscale

github.com/lackac

2009. szeptember 28.

Page 2: App Lego

$ rails myapp create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create config/locales create db create doc create lib

In the old days

and later...

$ script/plugin install stuff$ script/generate stuff MyStuff$ cp -r ../other_stuff my_other_stuff$ # and much much more other stuff

2009. szeptember 28.

Page 3: App Lego

Takes a lot of time and effort but it’s “modular”

2009. szeptember 28.

Page 4: App Lego

Then came app skeletons

Bort

and many others

2009. szeptember 28.

Page 5: App Lego

Lightning fast but no modularity

2009. szeptember 28.

Page 6: App Lego

# template.rbrun "rm public/index.html"generate(:scaffold, "person name:string")route "map.root :controller => 'people'"rake("db:migrate")

git :initgit :add => "."git :commit => "-a -m 'Initial commit'"

Then came Rails templates

$ rails myapp -m template.rb

2009. szeptember 28.

Page 7: App Lego

Lightning fast, easier customization but still

no modularity

2009. szeptember 28.

Page 8: App Lego

Then came App LEGO

Using Rails templates

Modular

each feature has its own template

you can decide which modules you want

2009. szeptember 28.

Page 9: App Lego

$ rails -m http://github.com/lackac/app_lego/raw/master/app_lego.rb my_app... create log/test.log applying template: http://github.com/lackac/app_lego/raw/master/app_lego.rb Use braid for vendor management?y Do you want to play LEGO?y Install everything without question?n Do basic setup? (only exclude this if you already have a Rails app skeleton with Rails 2.3+ frozen, or as a gem)y applying template: http://github.com/lackac/app_lego/raw/master/basic.rb executing rmdir tmp/{pids,sessions,sockets,cache} from /private/tmp/my_app executing rm README log/*.log public/index.html public/images/rails.png from /private/tmp/my_app executing find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitignore \; from /private/tmp/my_app running git init file .gitignore executing cp config/database.yml config/database.yml.sample from /private/tmp/my_app running git add . running git commit -a -m 'Setting up a new rails app. Copy config/database.yml.sample to config/database.yml and customize.' executing braid add git://github.com/rails/rails.git vendor/rails from /private/tmp/my_app initialized application structure applied http://github.com/lackac/app_lego/raw/master/basic.rb Use RSpec instead of test/unit?y applying template: http://github.com/lackac/app_lego/raw/master/rspec.rb...

Then came App LEGO

2009. szeptember 28.

Page 10: App Lego

gem 'haml', :version => '>= 2.1'gem 'chriseppstein-compass', :lib => 'compass', :version => '>= 0.3.4'

run "haml --rails ."run "echo -e 'y\nn\n' | compass --rails -f blueprint"

git :add => "."git :commit => "-a -m 'Added haml for views and compass for css'"

Modules are plain templates

braidbasicrspechamljquery

authcouchdblocalemiscand others...

2009. szeptember 28.

Page 11: App Lego

And others...

2009. szeptember 28.

Page 12: App Lego

Still fast, modular and customizable

2009. szeptember 28.

Page 13: App Lego

Downsides

really long command line to remember

a lot of questions

options in ENV vars

2009. szeptember 28.

Page 14: App Lego

Futurecreate wrapper script

use dependencies instead of ordering

use regular and meaningful command line options

simple sinatra application as a user interface

merge interesting modules

2009. szeptember 28.

Page 15: App Lego

Thank you!László Bácsi, @icanscale

http://github.com/lackac/app_lego

2009. szeptember 28.