Project

localtower

0.14
A long-lived project that still receives updates
Manage your models, relations, and migrations from a simple UI.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 3.6.0
>= 0.21.0

Runtime

>= 5.2.0
>= 0.18.1
 Project Readme

Gem Gem

Localtower

Introduction

New Model

- What is Localtower?

Localtower is a Rails Engine mountable in development environment to help you generate migrations for your Rails application. It's like ActiveAdmin or Sidekiq UI. You plug it in your config/routes.rb and it works out of the box. Check the Installation section below for more details.

- How Localtower works?

Localtower gives you a UI to create models and migrations. It will generate a migration file like you would do with rails generate migration add_index_to_users. You will see the generated file in db/migrate/ folder.

- Why creating a UI for Rails migrations?

Rails migrations are well documented in the official Rails Guides but we often tend to forget some commands or do typo errors. Like writing add_index :user, :email instead of add_index :users, :email (did you spot the typo?). Working from a UI with a fixed list of commands reduces the chance of making errors.

- When I'm using Localtower, can I still generate migrations from the command line?

Of course! Localtower does not lock you up. You can still generate migrations like you did before. Localtower is just a migration generator. You can also generate a migration from Localtower and then edit it manually before running rails db:migrate

- What does happen when I want to remove Localtower?

You just have to remove the gem from your Gemfile, run bundle, remove the engine in config/routes.rb, and that's it! All your previous migrations will stay in db/migrate/. You are never locked up with Localtower. You can install or uninstall anytime. Remember, it is just a UI to generate files. Do not hesitate to open an issue on Github and tell me why you don't want it anymore. It will be very valuable for me to understand what I can do better ❤.

- Cool, but there are some migration options that are not available in Localtower, what can I do?

Localtower doesn't implement all the Rails Migrations API. I focused on the most common scenarios. If you need to do something tricky in your migrations, you can still edit the migrations manually. You are also welcome to open an issue on Github to ask for a specific feature. I'm always open to extend the possibilities of Localtower.

Screenshots

Create a model

New Model

Create a migration

New Migration

See the Migrations (and migrate)

Migrations

Installation

Please use the best localtower version: >= 2 See installation process below.

Compatibility:

  • Rails >= 5.2
  • Ruby >= 2.3

Add to your Gemfile file:

group :development do
  gem 'localtower', '~> 2'
end

Run command in your terminal:

bundle install

Add to your config/routes.rb:

MyApp::Application.routes.draw do
  if Rails.env.development?
    mount Localtower::Engine, at: 'localtower'
  end

  # Your other routes here:
  # ...
end

⚠ IMPORTANT ⚠

Change your config/environments/development.rb:

Rails.application.configure do
  # This is the default:
  # config.active_record.migration_error = :page_load

  # Change it to:
  config.active_record.migration_error = false if defined?(Localtower)

  # ...
end

If you know how to override this configuration in the gem instead of doing it in your app code, please open an issue and tell me your solution.

Usage

To access the UI, run your local rails server and open your browser at http://localhost:3000/localtower.

Full scenario

Demo (2min)

Localtower v2 demo

Create a model

It will create a migration file:

Create a migration

It will generate a migration file:

Create another model

Now, we add a Book model:

All the migrations generated

Files generated

Every action made from the UI will generate native Rails migration files. Exactly like the rails generate command. But instead of generating files in the console, they are generated in the db/migrate folder.

  • The models:

  • The migration files:

  • The final schema:

Upgrading

I recommend you to upgrade to the latest version which is 2.X.X. Be sure you have this in your Gemfile:

group :development do
  gem 'localtower', '~> 2'
end

To upgrade, just use the latest version of Localtower.

bundle update localtower

Then restart your server.

Contribute

Thanks for reporting issues, I'll do my best to fix the bugs 💪

ga

Run test

If you want to contribute to the gem:

Create a spec/dummy/.env file with the credentials to your PostgreSQL Database. It should look like this:

LOCALTOWER_PG_USERNAME="admin"
LOCALTOWER_PG_PASSWORD="root_or_smething"

drop / create database:

cd spec/dummy
bundle exec rails db:drop
bundle exec rails db:create
rm app/models/*.rb

Run the spec:

bundle install
bundle exec rspec spec/

Deploy latest gem version

Only for official contributors.

git tag vX.X.X # change by last version
git push --tags
rm *.gem
gem build localtower.gemspec
gem push localtower-*.gem

Notes

Do not hesitate to open issues if you have troubles using the gem.