Ramaze is documented to work on Heroku without too much issue, and I wanted to see if you can easily deploy a Ramaze based web application to the new PaaS kid on the block, AppFog.

AppFog is documented to support Sinatra and Rails, so it was never going to take much to get another Rack based framework (as Ramaze is) up and running. The only real consideration is the Gemfile, which perhaps we are not so used to using in Ramaze land, because bundler is not avidly advocated here as it might be for Rails or Sinatra.

Deploying a vanilla Ramaze app to AppFog

Before you can do anything on AppFog, you need an account - so go and signup if haven’t done so yet. You will also need to Ruby-powered command line utilities to provision and deploy your apps:

gem install af

Now we are done with that, the next step is to create a new Ramaze app:

ramaze create ramaze-appfog && cd ramaze-appfog

Now we need to create a valid Gemfile in the root of the new application, the file should contain:

gem 'ramaze'

Now the relevant gems need to be packaged up for the af AppFog command line tool:

bundle package

Now we can deploy this puppy! It really can be as simple as:

af push

Make sure you are in the root directory of the app for this, as the af utility is able to determine a few things about the type of app you are deploying. You will need to either accept the defaults or give some sensible answers to the following guided wizard:

af push
Would you like to deploy from the current directory? [Yn]: 
Application Name: ramaze-appfog
Detected a Rack Application, is this correct? [Yn]: 
1: AWS US East - Virginia
2: AWS EU West - Ireland
3: AWS Asia SE - Singapore
4: Rackspace AZ 1 - Dallas
Select Infrastructure: 2
Application Deployed URL [ramaze-appfog.eu01.aws.af.cm]: 
Memory reservation (128M, 256M, 512M, 1G, 2G) [128M]: 
How many instances? [1]: 
Create services to bind to 'ramaze-appfog'? [yN]: 
Would you like to save this configuration? [yN]: Y
Manifest written to manifest.yml.
Creating Application: OK
Uploading Application:
  Checking for available resources: OK
  Processing resources: OK
  Packing application: OK
  Uploading (1K): OK   
Push Status: OK
Staging Application 'ramaze-appfog': OK                                       
Starting Application 'ramaze-appfog': OK 

Most significantly, you will have to change your app name (if you are deploying on the same infrastructure zone). Other than that I went with defaults, apart from writing out the manifest.yml configuration information to file for future use.

And then you are done - you can see the fruits of this labour over here: http://ramaze-appfog.eu01.aws.af.cm/ - remember that, as with Heroku, there is no persistent file storage (at the moment), so any app/user generated files need to be stored elsewhere, or in a database on AppFog.

Now you can knock yourself out with the deployment tool docs: here. Enjoy!