Tokaido 2.2

@androbtech androbtech released this Apr 24, 2015 · 6 commits to master since this release

In this release:

  • Ruby binary 2.2.2-p95 (latest 2.2 stable)
  • RubyGems 2.4.6
  • Ruby On Rails 4.2.1
  • Redis 3.0.0 client and server binaries
  • ImageMagick's convert binary
  • Postgres.app detection
  • Bug Fixes

Tokaido 2.1.6

@androbtech androbtech released this Apr 24, 2015 · 9 commits to master since this release

In this release:

  • Ruby binary 2.1.6-p336 (latest 2.1 stable)
  • RubyGems 2.4.6
  • Ruby On Rails 4.2.1
  • Redis 3.0.0 client and server binaries
  • ImageMagick's convert binary
  • Postgres.app detection
  • Bug Fixes

Tokaido 2.1.5 "Goat"

@androbtech androbtech released this Apr 24, 2015 · 12 commits to master since this release

In this release:

  • Ruby binary 2.1.5-p273
  • RubyGems 2.4.6
  • Ruby On Rails 4.2.1
  • Redis 3.0.0 client and server binaries
  • ImageMagick's convert binary
  • Postgres.app detection
  • Bug Fixes

Tokaido 2.1

@androbtech androbtech released this Feb 19, 2015 · 26 commits to master since this release

In this release:

  • Ruby binary 2.1.5-p273 (latest 2.1 stable)
  • RubyGems 2.4.6
  • Ruby On Rails 4.2
  • Redis 2.8.19 client and server binaries
  • ImageMagick's convert binary
  • Postgres.app detection

Tokaido 1.0

@wycats wycats released this Apr 24, 2014 · 104 commits to master since this release

v1.0

Bump to 1.0

First Prerelease!

@wycats wycats released this Jul 16, 2013 · 111 commits to master since this release

This is the first prerelease of Tokaido.app!

Currently, Tokaido has two major areas of functionality:

  • A precompiled binary Ruby (2.0)
  • A UI that lists your apps, allows you to boot them, and makes them available at http://appname.tokaido

The primary design goal of Tokaido was to keep everything completely isolated in the application. Rather than install Ruby into the system, making it vulnerable to environment problems or future changes, you launch a Terminal through the Tokaido application. Tokaido will set up the $PATH, $GEM_HOME and the rest of the required environment, reducing common failure scenarios that make Ruby hard to install or that emerge over time through environment changes or OS upgrades.

Using Tokaido's Ruby

To use the Tokaido Ruby, launch Tokaido.app and click "Open in Terminal". This will give you a full-fledged Ruby environment

This will give you a full-fledged Ruby environment in the command-line.

C Compilers

Tokaido ships with a precompiled version of the sqlite3 gem, which is sufficient for getting Rails up and running without a C compiler.

In practice, many gems require a C compiler at present, so production Ruby environments will require one.

If you already have one installed, that's great! Tokaido will automatically pick it up and update its rbconfig.rb file to point at the installed C compiler.

If not, we recommend OSX GCC Installer, which you can download and install directly. Once you've installed it, restart Tokaido, and it will pick up the installed GCC and update rbconfig.

Booting Your App

In addition to shipping an isolated Ruby environment, Tokaido also allows you to manage your applications through the application.

First, add your application to the UI.

Next, click "Boot App".

Tokaido will:

  • Run bundle install to make sure everything's up to date.
  • If you have a Procfile, run the web section of the Procfile. Otherwise, run bundle exec rackup -p $PORT.
  • Make the booted application available to appname.tokaido (through a bunch of OSX-specific dark magic).

Note that in keeping with Tokaido's guiding principle, if you shut down the Tokaido app, all the machinery necessary to route requests from foo.tokaido to the booted app will be shut down. This should allow you to run Apache and Tokaido on the same machine (although not at the same time).

Postgres.app

If you have Postgres.app installed, "Open in Terminal" will detect it and make the Postgres binaries and libraries available to the Terminal. This should make using Postgres.app with Tokaido seamless.

Note that this works by modifying environment variables at boot, so if you boot Postgres.app after opening the Terminal, you will need to reopen the Terminal.

Redis

Because Redis doesn't ship binaries, is very small, and is a common Rails dependency, Tokaido.app ships Redis binaries. They are available in "Open in Terminal", so you can open the Terminal and run redis-server to get things rolling.

Eventually, we will support the full Procfile, so simply including redis-server in the Procfile will do the trick.

Future

There's still a lot of work left to do.

You can see what we're working on by checking out our Trello Board.

At the moment, some high priorities are:

  • Upgrade to the latest patch level of Ruby 2.0
  • "Sorry, no app here" page if you go to foo.tokaido and foo is not booted.
  • Show a loading UI on initial app boot as the assets are unzipped
  • Fix a bug where the bundle install run by the app doesn't have all of the environment available in "Open in Terminal"
  • Ability to update the Ruby code that powers application boot after initial boot (when a new version of the app is downloaded and run)
  • Support "port-forward-only" apps in the UI (point foo.tokaido at any port whose lifecycle is manually managed)
  • Support .dev instead of .tokaido (.tokaido was originally chosen to allow running alongside Pow)
  • tokaido . to open the Tokaido UI from a directory in the Terminal and load the shell environment

Thanks

I got a lot of help over the past year working on Tokaido:

  • Austin Bales, for the initial design work
  • Patrick Gibson, for a lot of Cocoa help
  • Martin Schürrer, for Cocoa help as we've gotten closer to initial release

And of course, all of the Backers, especially Heroku and BugHerd, who came in as the biggest sponsors. When the website rolls out, I'll have special thanks for all the Backers, as promised.

If anyone is interested in helping out, please get in touch (wycats@gmail.com). And make sure to file issues, pull requests, and comments about how to make this as awesome as possible.

Thanks to everyone for your patience.