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

App Lego

Jan 16, 2015

Download

Technology

László Bácsi

Presentation given on the second day of curucamp about my rails app bootstrapping project.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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.