Balancing two approaches to web development

Ruby superstar Jim Weirich gives an insightful overview of the environment that led to Rails, showing how it strikes a balance between PHP and Java. We’ve seen this bisection played out culturally as well, with widespread Rails adoption by designers and enterprise Java programmers alike.

Jim prefaces his talk by saying it isn’t technical but more of an introduction to Rails. Don’t let that dissuade you from watching. He presents a very lucid and concise illustration of how Rails has positioned itself amongst the old garde, cherry picking the best of both worlds.

The video is not to be missed. Jim’s rapid fire style of presentation is a site to behold. Great stuff.

SwitchTower 0.10.0

You can read the complete changelog, but here’s a quick overview of some of the most notable changes:

Bugs Fixed

  • Handle SSH password prompts formatted like “someone’s password:”
  • Allow the sudo password to be reentered if it was entered incorrectly
  • Errors during checkout are now caught and reported early
  • Avoid timeouts on long-running commands
  • Add a small sleep during command processing to give the CPU a rest
  • Rake tasks should work much more nicely on Windows (you’ll need to do switchtower --apply-to /path/to/app to update, keeping your config/deploy.rb and overwriting lib/tasks/switchtower.rake)

New Features

ssh_options variable

There is now an ssh_options hash that you can use in your recipe files to set custom SSH connection options, like setting a non-standard port to connect on:

ssh_options[:port] = 2345

Allow svn checkouts to use export instead of co

If you don’t want to use an svn co to checkout your code, you can set the :checkout variable to :export, and SwitchTower will use svn export instead.

set :checkout, :export

This variable defaults to :co.

update_current task

There is now an update_current task that just does an svn up on the last-deployed release. This is useful for trivial updates, like when a template changed.

cleanup task

You can easily remove unused releases from your deployment directories with the cleanup task. It will (by default) keep the 5 most recent releases, and delete the rest.

SFTP for file transfers

Net::SFTP is now used (if it is available) for file transfers. This should make transferring large files more robust, as well as allow binary characters in files.

restart_via variable

You can now set the :restart_via variable to :run, if you need to have the restart task use run instead of sudo.

set :restart_via, :run

This defaults variable to :sudo.

Apache gets serious about FastCGI

Brian McCallister reports that the Apache team has decided to revive mod_fcgi as mod_proxy_fcgi with intentions of proper support for external FCGIs and a place in the core Apache distribution.

This is fantastic news! Paul Querna and Garrett Rooney deserves much praise for embarking on this important quest to restore our faith in Apache as a worthy web server for applications. Not only will this mean that FCGI is no longer a bastard child on Apache 2.x, but also that it’ll have active maintenance and people to turn to if things are sour.

Speaking of sour. Please do forward all your grapes to Brian McCallister or the FastCGI Developers list. Any trouble you’ve had in the past with FCGI and Apache or things you’d like to see happen.

Viva la Apache!

Street Easy: Look at all the New York places you can't afford!

Street Easy is a sweet new mash-up of Google Maps that’s running Ruby on Rails to mock you for all the places in New York you can’t afford to buy. Yet. Before you’ve launched your Web 2.0 mash-up and sold it to Yahoo. Wait a minute. It’s RECURSIVE!

Kidding aside, this is a very nice looking site done by Sebastian Delmont and friends. Check it out.

How to deploy a Rails application on lighttpd

James Duncan Davidson has started a great series of recipes on deploying Rails applications. In Real Lessons for Rails Deployment, he examined the different options you have and some of the pitfalls you should watch out for.

In Deploying Rails with LightTPD, James goes specific and tells you exactly how to get Rails going on lighttpd using SwitchTower for deployment.

This is great stuff and with more than a couple of deployed Rails applications under his belt, James is in a great position to share his knowledge. Can’t wait to read the further installments.

Just in time for the holiday season, the Peace Library

The Peace Library is an online index of Conflict Transformation & Peacebuilding information featuring research papers, reports, and news related to the Sri Lanka peace process put together by the non-profit web media company InfoShare.

It’s in “beta” but already features 207 publications wrapped in an attractive interface. Read more about them here.

Yet another nice app riding the Rails.

New 37signals targets for Rails extraction

37signals has announced two upcoming products: Campfire and Sunrise. This is significant for Rails development because all 37signals applications has historically been the main source for new features in Rails.

Sunrise has already spawned a good number of features for 1.1. There are the polymorphic associations and join model support as well as form_for/fields_for. See the Pursuit of Beauty presentation for code examples on those. Campfire is pushing the envelope on RJS (more on that later).

I’ll try to make the connection between new features in Rails and their origin in 37signals applications to make their usage more clear. Stay tuned.

Rails Podcast with the creator of Seaside

Avi Bryant is the creator of Seaside, the Smalltalk web-framework built on continuations, that has been shining light on alternatives to traditional MVC- and request/response-based frameworks. I heartily recommend taking a look. It might not fit your brain (it didn’t mine), but its sure to expand it.

Now Avi has been interviewed by Geoffrey Grosenbach for the Rails Podcast. (Unfortunately, the audio is pretty grainy.. hang in there for the first few minutes).