Okay, so I've been a little slow on the uptake on this one. But for anybody else that missed it, you can now define your own standard setup for a rails app. (And kudos to Peter Szinek, who I work with on the leading ruby web spider/data scraping library, for the heads up on this last week)
That's essentially what this change does. Most of us probably have out preferred setup, especially if we've deployed a few sites. Typically I create the rails directory structure, then pull in HAML, rspec, rspec on rails, my form helper, restful auth, etc. It's not terribly difficult, but it is laborious. Well someone else I once worked with, Jeremy McAnally (woo!, look at me name drop ;), created a great little tool called rg which would allow you to define your own templates for when you create a new application. Now just like engines has been pulled into the latest edge core to give rails the same ability as merb-slices, so too has rg now been pulled in to match the functionality offered by creating your own custom merb-stack.
So if like me you have your usual grab bag you want to setup when you start a new app, you can define your own template.rb file like this:
run "rm public/index.html"
git :init
plugin "rspec", :git => "git://github.com/dchelimsky/rspec.git", :submodule => true
plugin "rspec-rails", :git => "git://github.com/dchelimsky/rspec-rails.git", :submodule => true
plugin "exception-notifier", :git => "git://github.com/rails/exception_notification.git", :submodule => true
plugin "restful-authentication", :git => "git://github.com/technoweenie/restful-authentication.git", :submodule => true
plugin "semantic-form-builder", :git => "git://github.com/rubypond/semantic_form_builder.git", :submodule => true
plugin "paperclipped", :git => "git://github.com/kbingman/paperclipped.git", :submodule => tru
gem "will-paginate", :git => "git://github.com/mislav/will_paginage.git"
gem "haml", :git => "git://github.com/nex3/haml.git"
rake "gems:install", :sudo => true
run "haml --rails ."
route "map.login '/login', :controller => 'sessions', :action => 'new'"
rakefile("cruise_controle.rake") do
<<-TASK
desc "Run all the tests, including API and acceptance tests"
task :cruise do
Rake::Task['db:migrate'].invoke
Rake::Task['spec'].invoke
Rake::Task['spec:stories'].invoke
Rake::Task['metrics:all'].invoke
Rake::Task['flogger:record'].invoke
end
TASK
end
initializer 'form_builder.rb', <<-CODE
ActionView::Base.default_form_builder = SemanticFormBuilder
CODE
generate("authenticated", "user session")
generate("rspec")
rake("db:migrate")
git :add => "."
git :commit => "-a -m 'Initial commit'"
There is quite a lot going on there, I'll quickly run through what I've done. Firstly, I've deleted index.html as I never use it. Next we initialise a local git repository and pull in all the plug-ins I want (as git submodules). Next we have a couple of gems I need, so we define them and install (using sudo) if they're not already on the system. I setup a route to the login page, create a rake task to run cruise, an initializer to change the default form builder to be my own. And then finally I create the user/session models for restful-authentication, migrate the database, and commit all the changes.
Now to create a new rails app using this template do the following:
rails my_new_app -m ~/template.rb
Or alternatively if you work across various machines you can post the template up to a server (git, your own box, etc) and specify a full HTTP to the remote file:
rails my_new_app -m http://gist.github.com/33443.txt
export const _frontmatter = {"read more":"Read more about Custom Starting Templates for Rails Apps","date":"2008-12-08","summary":"Okay, so I've been a little slow on the uptake on this one. But for anybody else that missed it, you can now define your own standard setup for a rails app. (And kudos to Peter Szinek, who I work with on the leading ruby web spider/data scraping library, for the heads up on this last week) That's essentially what this change does. Most of us probably have out preferred setup, especially if we've deployed a few sites. Typically I create the rails directory structure, then pull in HAML, rspec, rspec on rails…","description":"Okay, so I've been a little slow on the uptake on this one. But for anybody else that missed it, you can now define your own standard setup for a rails app. (And kudos to Peter Szinek, who I work with on the leading ruby web spider/data scraping library, for the heads up on this last week) That's essentially what this change does. Most of us probably have out preferred setup, especially if we've deployed a few sites. Typically I create the rails directory structure, then pull in HAML, rspec, rspec on rails…","categories":"thoughts","author":"Glenn","author_url":"http://glenngillen.com/","title":"Custom Starting Templates for Rails Apps","published":true,"category":"blog"}