Rack-based Apps

Introduction

Shelly Cloud supports rack compatible applications. It means that you can deploy applications written in frameworks such as sinatra or camping.

Requirements

In order to deploy rack-based application to Shelly Cloud, the application must meet the following requirements:

  1. Configuration file config.ru must be present. It's common that rack-based frameworks generate this file. If you don't have it in your app's root directory, check your frameworks documentation.
  2. Minimal set of gems.
    source :rubygems
    gem "rack"
    gem "rake"
    gem "thin"
  3. File named Rakefile in your project's root directory with dummy db:migrate and db:setup tasks.
    namespace :db do
      task :migrate
      task :setup
    end

Sample Rack-based Application

You can check out sample rack-based application on our github account. It's very minimal example and doesn't need database server.

Here is how deployment of this app looks like.

$ git clone git://github.com/shellycloud/sample-rack-app.git
$ cd sample-rack-app
$ shelly add --code-name rack-123 --databases none
Checking Shelly Cloud requirements

  ✓ Gem 'shelly' is not a part of Gemfile
  ϟ Gem 'shelly-dependencies' is missing, we recommend to install it
    See more at https://shellycloud.com/documentation/requirements#shelly-dependencies

Select organization for this cloud:

existing organizations:
1) example
Or leave empty to create a new organization

Organization: example
Select region for this cloud:

available regions:
1) EU
2) NA

Region: EU
Cloud 'rack-123' created in 'example' organization

Running: git remote add shelly git@git.shellycloud.com:rack-123.git
Creating Cloudfile

Project is now configured for use with Shelly Cloud:
You can review changes using
  git status

When you make sure all settings are correct, add changes to your repository:
  git add .
  git commit -m "Application added to Shelly Cloud"

Deploy to your cloud using:
  git push shelly master


$ git add .
$ git commit -m "Added ShellyCloud Cloudfile"
$ git push shelly master
...
 ---> Received push to cloud 'rack-123'
 ---> Checking Gemfile
 ---> Creating code package... done.
 ---> Push accepted
 ---> Start your cloud using: `shelly start --cloud rack-123`
...

$ shelly start --cloud rack-123
Starting cloud rack-123.

 ---> Launching server app1 started
 ---> Launching server app1 finished
 ---> Configuration on server app1 started
 ---> Configuration on server app1 finished
 ---> Deployment on server app1 started
 ---> Deployment on server app1 finished

Starting cloud successful