View
647
Download
0
Category
Tags:
Preview:
DESCRIPTION
Presentation given on the second day of curucamp about my rails app bootstrapping project.
Citation preview
Bootstrapping Project CodeLászló Bácsi@icanscale
github.com/lackac
2009. szeptember 28.
$ 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.
Takes a lot of time and effort but it’s “modular”
2009. szeptember 28.
Then came app skeletons
Bort
and many others
2009. szeptember 28.
Lightning fast but no modularity
2009. szeptember 28.
# 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.
Lightning fast, easier customization but still
no modularity
2009. szeptember 28.
Then came App LEGO
Using Rails templates
Modular
each feature has its own template
you can decide which modules you want
2009. szeptember 28.
$ 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.
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.
And others...
2009. szeptember 28.
Still fast, modular and customizable
2009. szeptember 28.
Downsides
really long command line to remember
a lot of questions
options in ENV vars
2009. szeptember 28.
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.
Thank you!László Bácsi, @icanscale
http://github.com/lackac/app_lego
2009. szeptember 28.
Recommended