Getting Started Deploying Ruby on Rails Apps
This guide walks you through deploying a Ruby on Rails app to Pivotal Cloud Foundry (PCF).
In order to deploy a sample Ruby on Rails app, you must have the following:
- A Cloud Foundry deployment or a Pivotal Web Services account
- The Cloud Foundry Command Line Interface
- A Cloud Foundry username and password with Space Developer permissions. See your Org Manager if you require permissions.
Run the following terminal command to create a local copy of the cf-sample-app-rails.
$ git clone https://github.com/cloudfoundry-samples/cf-sample-app-rails.gitThe newly created directory contains a
manifest.ymlfile, which assists CF with deploying the app. See Deploying with Application Manifests for more information.
Run the following terminal command to log in and target the API endpoint of your deployment. For more information, see the Identifying the API Endpoint for your PAS Instance topic.
$ cf login -a YOUR-API-ENDPOINT
Use your credentials to log in, and to select a Space and Org.
Run the following terminal command to create a PostgreSQL service instance for the sample app.
Our service instance is
rails-postgres. It uses the
postgresql-10-odb service and the
For more information about the
postgresql-10-odb service, see Crunchy PostgreSQL.
$ cf create-service postgresql-10-odb standalone rails-postgres Creating service rails-postgres in org YOUR-ORG / space development as firstname.lastname@example.org.... OK
Make sure you are in the
cf-sample-app-rails directory. Run the following terminal command to deploy the app:
$ cf push cf-sample-app-rails
cf push cf-sample-app-rails creates a URL route to your application in the form HOST.DOMAIN. In this example, HOST is cf-sample-app-rails. Administrators specify the DOMAIN. For example, for the DOMAIN
cf push cf-sample-app-rails creates the URL
The example below shows the terminal output when deploying the
cf push uses the instructions in the manifest file to create the app, create and bind the route, and upload the app. It then follows the information in the manifest to start one instance of the app with 256M of RAM. After the app starts, the output displays the health and status of the app.
$ cf push cf-sample-app-rails Using manifest file ~/workspace/cf-sample-app-rails/manifest.yml Creating app cf-sample-app-rails in org my-rog / space dev as email@example.com... OK Creating route cf-sample-app-rails.cfapps.io... OK Binding cf-sample-app-rails.cfapps.io to cf-sample-app-rails... OK Uploading cf-sample-app-rails... Uploading app files from: ~/workspace/cf-sample-app-rails Uploading 746.6K, 136 files Done uploading OK Starting app cf-sample-app-rails in org my-org / space dev as firstname.lastname@example.org... . . . 0 of 1 instances running, 1 starting 1 of 1 instances running App started OK App cf-sample-app-rails was started using this command `bundle exec rails server -p $PORT` Showing health and status for app cf-sample-app-rails in org my-org / space dev as email@example.com... OK requested state: started instances: 1/1 usage: 512M x 1 instances urls: cf-sample-app-rails.cfapps.io last uploaded: Fri Dec 22 18:08:32 UTC 2017 stack: cflinuxfs3 buildpack: ruby state since cpu memory disk details #0 running 2018-8-17 10:09:57 AM 0.0% 20.7M of 512M 186.8M of 1G
Note: If you want to view log activity while the app deploys, launch a new terminal window and run
cf logs cf-sample-app-rails.
Run the command below to bind the service instance to the sample app. Once bound, environment variables are stored that allow the app to connect to the service after a
cf restage, or
$ cf bind-service cf-sample-app-rails rails-postgres Binding service rails-postgres to app cf-sample-app-rails in org my-org / space dev OK TIP: Use 'cf restage cf-sample-app-rails' to ensure your env variable changes take effect
Run the following command to restage the sample app.
$ cf restage cf-sample-app-rails
Run the following command to verify the service instance is bound to the sample app.
$ cf services Getting services in org my-org / space dev OK name service plan bound apps last operation rails-postgres postgresql-10-odb standalone cf-sample-app-rails create succeeded
Verify that the app is running by browsing to the URL generated in the output of the previous step. In this example, navigating to
cf-sample-app-rails.shared-domain.example.com verifies that the app is running.
You’ve now pushed an app to PAS! For more information about this topic, see the Pushing an App topic.
You have deployed an app to PCF. Consult the sections below for information about what to do next.
Test a Deployed App
Use the cf CLI or Apps Manager to review information and administer your app and your PCF account. For example, you could edit the
manifest.yml file to increase the number of app instances from 1 to 3 or redeploy the app with a new app name.
Manage Your App with the cf CLI
cf help to view a complete list of commands and run
cf help COMMAND for detailed information about a specific command. For more information about using the cf CLI, refer to the cf CLI topics, especially the Getting Started with cf CLI topic.
If your app fails to start, verify that the app starts in your local environment. Refer to the Troubleshooting Application Deployment and Health topic to learn more about troubleshooting.