---
title: Connect a Ruby on Rails application to Neon Postgres
subtitle: Set up a Neon project in seconds and connect from a Ruby on Rails application
enableTableOfContents: true
updatedOn: '2025-10-24T12:53:27.790Z'
---
[Ruby on Rails](https://rubyonrails.org/), also known simply as Rails, is an open-source web application framework written in Ruby. It uses a model-view-controller architecture, making it a good choice for developing database-backed web applications. This guide shows how to connect to a Ruby on Rails application to a Neon Postgres database.
To connect to Neon from a Ruby on Rails application:
This guide was tested using Ruby v3.4.6 and Rails v8.0.3.
## Create a Neon Project
If you do not have one already, create a Neon project.
1. Navigate to the [Projects](https://console.neon.tech/app/projects) page in the Neon Console.
2. Click **New Project**.
3. Specify your project settings and click **Create Project**.
## Create a Rails Project
Create a Rails project using the [Rails CLI](https://guides.rubyonrails.org/command_line.html), and specify PostgreSQL as the database type:
```shell
gem install rails
rails new neon-with-rails --database=postgresql
```
You now have a Rails project in a folder named `neon-with-rails`.
## Configure a PostgreSQL Database using Rails
Create a `.env` file in the root of your Rails project, and add the connection string for your Neon compute. Do not specify a database name after the forward slash in the connection string. Rails will choose the correct database depending on the environment.
```shell shouldWrap
DATABASE_URL=postgresql://[user]:[password]@[neon_hostname]/
```
You can find the connection string for your database by clicking the **Connect** button on your **Project Dashboard**. For more information, see [Connect from any application](/docs/connect/connect-from-any-app).
The role you specified in the `DATABASE_URL` must have **CREATEDB** privileges. Roles created in the Neon Console, CLI, or API, including the default role created with a Neon project, are granted membership in the [neon_superuser](/docs/manage/roles#the-neonsuperuser-role) role, which has the `CREATEDB` privilege. Alternatively, you can create roles with SQL to grant specific privileges. See [Manage database access](/docs/manage/database-access).
Create the development database by issuing the following commands from the root of your project directory:
```shell
# Load the DATABASE_URL into your session
source .env
# Create the development database
bin/rails db:create
```
## Create a Rails Controller to Query the Database
Run the following command to create a controller and view. The controller will query the database version and supply it to the view file to render a web page that displays the PostgreSQL version.
```shell
rails g controller home index
```
Replace the controller contents at `app/controllers/home_controller.rb` with:
```ruby
class HomeController < ApplicationController
def index
@version = ActiveRecord::Base.connection.execute("SELECT version();").first['version']
end
end
```
Replace the contents of the view file at `app/views/home/index.html.erb` with:
```ruby
<% if @version %>
<%= @version %>
<% end %>
```
Replace the contents of `config/routes.rb` with the following code to serve your home view as the root page of the application:
```ruby
Rails.application.routes.draw do
get "up" => "rails/health#show", as: :rails_health_check
# Defines the root path route ("/")
root 'home#index'
end
```
## Run the application
Start the application using the Rails CLI from the root of the project:
```shell
bin/rails server -e development
```
Visit [localhost:3000/](http://localhost:3000/) in your web browser. Your Neon database's Postgres version will be displayed. For example:
```
PostgreSQL 15.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
```
## Schema migration with Ruby on Rails
For schema migration with Ruby on Rails, see our guide:
Ruby on Rails Migrations