> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Experimental Fly Rails Gem

This guide runs you through how to use the `fly-rails` gem to deploy your Rails applications to Fly.io using Rails commands.

Please note that the `fly-rails` gem is designed to work well with common Rails production configurations, like a Turbo app that uses Sidekiq, AnyCable, Redis, & Postgres. For less common configurations, we recommend using `flyctl` and its respective configuration files to manage your deployment.

## Install the `flyctl` command line interface

First you'll need to [install the Fly CLI, and signup for a Fly.io account](/flyctl/install). The gem used in the next step will use this CLI to deploy your application to Fly.io and it's something that's worth learning more about as you become more comfortable with Fly.io.

## Install the gem

Add the `fly-rails` gem from the root of your Rails project.

```bash theme={null}
bundle add fly-rails
```

This installs and bundles the `fly-rails` gem in your Rails project, which adds commands to Rails that make deploying apps to Fly.io require less steps.

## Launch your app

The first deployment will both provision and deploy the application to Fly.io. Run the following command:

```bash theme={null}
bin/rails fly:launch
```

If the deployment is successful, you can view your app by running:

```bash theme={null}
fly apps open
```

You should see your application!

## Deployments

Changes to your application can be deployed with one command.

```bash theme={null}
bin/rails fly:deploy
```

This will deploy the latest changes to your application and run any database migrations, if present.

## Ejecting

There may be a point where you need to "eject" from the `fly-rails` gem for deployments that require more advanced configuration. Ejecting creates a `fly.toml` and `Dockerfile` at the root of your project that works with `flyctl` and gives you full and exact control over your application configuration.

```bash theme={null}
bin/rails generate fly:app --eject
```
