This is a simple scaffold for packaging a Ruby app to run on Windows Azure, inspired by Steve Marx's https://github.com/smarx/pythonrole. It allows you to host a Ruby application in a Windows Azure Cloud Service.
This sample requires a Windows operating system and the Windows Azure PowerShell cmdlets. To install and configure Windows Azure PowerShell, see How to install and configure Windows Azure PowerShell.
The Windows Azure PowerShell provides:
Publish-AzureServiceProject - packs and publishes the deployment to a cloud service from the command line
Start-AzureEmulator - packs and runs the deployment in the emulator
Stop-AzureEmulator - stops the emulator
Stop-AzureService - stops a deployed cloud service
Enable-AzureServiceProjectRemoteDesktop - enables remote desktop on your cloud service
For more information on Windows Azure PowerShell, see the Windows Azure Scripting Center.
app.rbto do whatever you want. If this is a web app, be sure to listen on the port specified in the
PORTenvironment variable (and for best results when running locally, listen on the IP address specified in the
By default, the package will download RailsInstaller when the Cloud Service starts up in Windows Azure, but this can take a really long time to download. If you don't mind increasing deployment package size, you can download RailsInstaller ahead of time and save it as railsinstaller.exe in the WorkerRole directory, then modify run.cmd to comment out the download step. Little bit longer on the upload, but shaves time off the startup of the service environment.
Test the application locally by using
start-azureemulatorfrom inside the project directory, then going to the address (it will return the address and port at the end of the command,) to verify that it works.
Stop the emulator by using
Publish to Windows azure by using the
publish-azureserviceprojectcommand. For example:
publish-azureserviceproject -servicename myrubyapp -location "East US" -slot Production
This will publish the project to a new cloud service named 'myrubyapp' in the East US region data center. It will be placed in a production slot, so the DNS name will be myrubyapp.cloudapp.net. If you deploy to a staging slot, the DNS will be .cloudapp.net.
After deployment completes, and after the cloud service starts, downloads and installs Ruby & required gems, you should be able to access the DNS address from your web browser to verify the application is running.
If something goes wrong and the application doesn't start, you can enable remote desktop to the application by using the
enable-azureserviceprojectremotedesktop command, then republish the application. You can then use Remote Desktop to connect to an instance of the cloud service, verify that Ruby was installed, gems are installed, errors in the event log, etc.