{"id":14955001,"url":"https://github.com/themejuice/tj","last_synced_at":"2025-03-28T20:31:11.031Z","repository":{"id":22492468,"uuid":"25831858","full_name":"themejuice/tj","owner":"themejuice","description":"Create local WordPress dev sites, manage existing sites, and deploy them, all from the command line.","archived":false,"fork":false,"pushed_at":"2017-03-08T18:59:29.000Z","size":20471,"stargazers_count":83,"open_issues_count":6,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-16T19:12:13.625Z","etag":null,"topics":["capistrano","cli","php","vagrant","wordpress","wordpress-deployment","wordpress-development"],"latest_commit_sha":null,"homepage":"http://cli.themejuice.it/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/themejuice.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-10-27T17:58:38.000Z","updated_at":"2024-10-20T13:14:21.000Z","dependencies_parsed_at":"2022-08-20T17:11:31.014Z","dependency_job_id":null,"html_url":"https://github.com/themejuice/tj","commit_stats":null,"previous_names":["ezekg/theme-juice-cli"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themejuice%2Ftj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themejuice%2Ftj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themejuice%2Ftj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themejuice%2Ftj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/themejuice","download_url":"https://codeload.github.com/themejuice/tj/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246096689,"owners_count":20722993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["capistrano","cli","php","vagrant","wordpress","wordpress-deployment","wordpress-development"],"created_at":"2024-09-24T13:10:22.130Z","updated_at":"2025-03-28T20:31:06.020Z","avatar_url":"https://github.com/themejuice.png","language":"Ruby","readme":"# `tj`\n[![Mac App](https://img.shields.io/badge/mac-app-brightgreen.svg)](https://www.themejuice.it)\n[![Gem Version](http://img.shields.io/gem/v/theme-juice.svg?style=flat-square)](https://rubygems.org/gems/theme-juice)\n[![Travis](https://img.shields.io/travis/themejuice/tj.svg?style=flat-square)](https://travis-ci.org/themejuice/tj)\n[![Code Climate](https://img.shields.io/codeclimate/github/themejuice/tj.svg?style=flat-square)](https://codeclimate.com/github/themejuice/tj)\n[![Code Climate](https://img.shields.io/codeclimate/coverage/github/themejuice/tj.svg?style=flat-square)](https://codeclimate.com/github/themejuice/tj)\n\n![Theme Juice CLI](demo.gif)\n\n## What is it?\nThe [Theme Juice CLI](http://cli.themejuice.it), also known as `tj`, helps you create new local WordPress development sites, manage existing sites, and deploy them, all from the command line. It utilizes our [Graft VM](https://github.com/themejuice/graft) for the virtual machine to spin up new development sites in seconds.\n\nCheck out [our getting started guide over at SitePoint](http://www.sitepoint.com/introducing-theme-juice-for-local-wordpress-development/), or [view the documentation site](http://cli.themejuice.it).\n\n## What problems does `tj` help solve?\nTo get the most out of `tj`, it is recommended that you use our [starter template](https://github.com/themejuice/sprout). Why? Keep on reading and we'll tell you. `tj` is built on top of tried and true open source libraries such as [Capistrano](http://capistranorb.com/) for deployment, [Vagrant](https://www.vagrantup.com/) for local development, and even a little bit of [WP-CLI](http://wp-cli.org) for database migration. Some of the main pain points `tj` helps solve are:\n\n### 1. Local development\nSay goodbye to MAMP! With one command, `tj create`, you can have a new local development site up and running in under a minute. It uses Vagrant to create a robust development environment, and lets you create and manage multiple projects within a single virtual machine. It also handles deployments over SSH using Capistrano if you want to move away from FTP (more about that below).\n\n### 2. Multi-environment projects\nOh, multi-environment development! Usually, you would have to ignore your entire `wp-config.php` file and create one for every single stage. These can get out of sync fast. Even worse, the config file actually gets checked into the project repo and so the credentials fluctuate from `dev` to `staging` to `production`. Not good. Not good at all.\n\nOur [starter template](https://github.com/themejuice/sprout) uses a `.env` file, and has support for an unlimited number of environments (we generally do `development`, `staging` and `production`). Since these settings are housed in a `.env` file, they are not checked into the repo. That means the codebase is 100% environment agnostic. [The way it should be.](http://12factor.net/)\n\n### 3. Multi-environment deployments\nReally. Want to deploy to staging? Set up a staging environment inside of the [`Juicefile`](https://github.com/themejuice/sprout/blob/master/Juicefile?ts=2), make sure you can SSH in without a password (remember, best practices here!) and run `tj deploy staging`. Boom, you're done. Make a mistake? Run `tj remote staging rollback`. Crisis averted!\n\nWant to pull the database from your production server to your development install? Run `tj remote production db:pull` and you're good to go; `tj` will automatically handle rewriting any URLs within the database.\n\nHow about pushing your development database and your local uploads folder? Run `tj remote production db:push \u0026\u0026 tj remote production uploads:push` and you're done. [You can even send notifications to your teams Slack channel if you want to!](#can-i-integrate-my-deployments-with-slack)\n\n## Requirements\n**`tj` requires [Vagrant](https://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) to be able to create virtual machines for local development. Please download and install both of these before getting started.** If you plan on using `tj` for deployments, you should also ensure that your `remote` servers have [WP-CLI](http://wp-cli.org/) installed in order for `tj` to be able to handle database migration.\n\nI recommend one of the latest versions of Ruby MRI (2.2, 2.1, 2.0). `tj` requires at least MRI 1.9.3. For the full report, check out the [Travis CI build status](https://travis-ci.org/themejuice/tj), where I test against an array of Ruby interpreters.\n\nI also recommend you set up [SSH-keys for GitHub](https://help.github.com/articles/generating-ssh-keys/). Internally, `tj` uses `git clone` with SSH URLs, [so things might break if you don't have your keys set up properly](#help-it-wont-let-me-git-clone-anything).\n\n## Installation\n```\ngem install theme-juice\n```\n\n## Getting Started\n\n_If you're going to be using [our starter template](https://github.com/themejuice/sprout), then I recommend checking out [it's dependencies](https://github.com/themejuice/sprout#development-dependencies) before running your first `create`. That way, the build step doesn't fail._\n\n### Initialize the VM\nThis will install and configure the virtual machine. It will clone the VM into the `vm-path`, install the required Vagrant plugins (such as [Landrush](https://github.com/phinze/landrush), unless disabled) and will also set up port forwarding if you're on OSX.\n\n```\ntj init\n```\n\n### Create a new project\nThis will lead you through a series of prompts to set up required project information, such as name, location, template, database info, etc. Using the specified information, it will run the installation process and set up a local development environment, if one hasn't already been set up. It will sync your local project location with the project\nlocation within the VM, so you can run this from anywhere on your local system.\n\n```\ntj create\n```\n\n#### What happens on your first `create`?\n1. `tj` will execute `tj init` if the VM is uninitialized\n1. `tj` will clone the selected starter template\n1. `tj` will run the starter template's `Juicefile` install command\n1. `tj` will create all of the necessary project files, such as:\n  * Create/append to `Customfile` containing DNS and synced folder settings\n  * Create/append to `init-custom.sql` for database creation and setup\n  * Create `$project.conf` containing Apache server settings\n  * Create `wp-cli.local.yml` containing SSH settings\n1. `tj` will provision the VM to put the new configuration into effect\n\nIf you've never used `tj` before, then that last step might take a little while. After that's done, you should be able to access your new project at the specified development url. It's that easy!\n\n### Set up an existing project\nThis sets up an existing local project within the development environment. You will go through a series of prompts to create the necessary files. This command is essentially an alias for `tj create --bare`.\n\n```\ntj setup\n```\n\n### Remove a project\nThis will remove a project from your development environment. You will go through a series of prompts to delete a project. This will only remove files that were generated by `tj` i.e. the database setup, DNS setup, and other project configuration files.\n\nIt will not touch your local folders that were synced to the VM.\n\n```\ntj delete\n```\n\n### Deploy a project\nAfter configuring your `Juicefile` and setting up SSH keys for yourself, this will deploy a project to the passed `\u003cstage\u003e` using [Capistrano](http://capistranorb.com/). Head over to the [docs](http://cli.themejuice.it/deploy) to see all of the available commands. There's a quick getting started section there too for your first deployment!\n\n```\ntj deploy \u003cstage\u003e\n```\n\n### Want more?\nWant to check out all of the various flags and features `tj` offers? Just ask `tj` for help, and you'll be greeted with a nice `man` page full of information about how to use just about everything.\n\n```\ntj help\n```\n\nOr, you can also check out [cli.themejuice.it](http://cli.themejuice.it) for a pretty website chock-full of the same documentation provided by `tj help`.\n\n## FAQ\n\n1. [Is Windows supported?](#is-windows-supported)\n1. [Can I use another VM instead of Graft?](#can-i-use-another-vm-instead-of-graft)\n1. [So, does that mean I can use any Vagrant box?](#so-does-that-mean-i-can-use-any-vagrant-box)\n1. [What is a `Customfile`?](#what-is-a-customfile)\n1. [What is a `Juicefile`?](#what-is-a-juicefile)\n1. [Does `tj` support subdomain multi-sites?](#does-tj-support-subdomain-multi-sites)\n1. [Can I access a project from another device (i.e. mobile)?](#can-i-access-a-project-from-another-device-ie-mobile)\n1. [Can I add my starter template, ________?](#can-i-add-my-starter-template-________)\n1. [Can I integrate my deployments with Slack?](#can-i-integrate-my-deployments-with-slack)\n1. [Can I use a self-signed SSL cert?](#can-i-use-a-self-signed-ssl-cert)\n1. [Can I define my own Capistrano tasks?](#can-i-define-my-own-capistrano-tasks)\n1. [Can I run `wp-cli` commands on my deployment stages?](#can-i-run-wp-cli-commands-on-my-deployment-stages)\n1. [Troubleshooting](#troubleshooting)\n\n### Is Windows supported?\nYes! But, since Windows doesn't support UTF-8 characters inside of the terminal, and is picky about ANSI color codes, you'll probably have to run `tj` with a couple flags.\n\nSomething that has worked for me on one of my Windows machines is to run all commands through [git-scm](http://git-scm.com/downloads) with the `--boring` flags. This will disable all unicode characters and colors from being output. You may also use the `--no-landrush` flag to disable [Landrush](https://github.com/phinze/landrush), which currently has experimental Windows support (at least try it first and help report any bugs!).\n\nTo set these globally via the `ENV`, set the following environment variables:\n\n```bash\nTJ_BORING=true\nTJ_NO_LANDRUSH=true\n```\n\nIn addition to that, `tj` uses the [OS gem](https://github.com/rdp/os) to sniff out your OS and it'll adjust a few things accordingly to make sure that nothing breaks.\n\n_I don't regularly develop on Windows, so if you encounter any bugs, please let me know through a **well-documented** issue and I'll try my best to get it resolved._\n\n### Can I use another VM instead of Graft?\nDefinitely. If you want to use `tj` with Nginx and say, [VVV](https://github.com/Varying-Vagrant-Vagrants/VVV), it's as simple as running `tj` with a few flags:\n\n```bash\ntj new --vm-box git@github.com:Varying-Vagrant-Vagrants/VVV.git --vm-ip 192.168.50.4 --nginx\n```\n\nTo use these permanently, set the appropriate `ENV` variables through your `.bashrc` or similar, i.e. `export TJ_VM_BOX=git@github.com:Varying-Vagrant-Vagrants/VVV.git`, `export TJ_VM_IP=192.168.50.4` and `export TJ_NGINX=true`.\n\n_Note: Before running this, you might want to either choose a new `vm-path`, or destroy and remove any existing VMs inside of your `~/tj-vagrant` directory. If `tj` detects that a VM already installed, it will skip installing the new box._\n\n### So, does that mean I can use any Vagrant box?\nYes and no; in order for `tj` to properly create a project, the Vagrant box needs to follow the same directory structure as [Graft](https://github.com/themejuice/graft), and include logic for a `Customfile`. Here is the required structure that `tj` needs in order to be able to create new projects:\n\n```\n├── config/\n|  |\n|  ├── {apache,nginx}-config/\n|  |  |\n|  |  ├── sites/\n|  |  |  |\n|  |  |  ├── site-1.conf\n|  |  |  ├── site-2.conf\n|  |  |  ..\n|  |  ..\n|  ├── database/\n|  |  |\n|  |  ├── init-custom.sql\n|  |  ..\n|  ..\n├── www/\n|  |\n|  ├── site-1/\n|  |  |\n|  |  ├── index.php\n|  |  ..\n|  ├── site-2/\n|  |  |\n|  |  ├── index.php\n|  |  ..\n|  ..\n├── Customfile\n├── Vagrantfile\n...\n```\n\n### What is a `Customfile`?\n[It's a file that contains custom rules to add into the main `Vagrantfile`, without actually having to modify it](https://github.com/themejuice/graft/blob/master/Vagrantfile?ts=2). This allows us to easily modify the Vagrant box without causing merge conflicts if you were to update the VM source via `git pull`. Every file that `tj` modifies is _meant to be modified_, so at any time you may update your installation of Graft with a simple `git pull` without getting merge conflicts out the wazoo.\n\n### What is a `Juicefile`?\nA YAML configuration file called a `Juicefile` can be used to store commonly-used build scripts, similar to [npm scripts](https://docs.npmjs.com/misc/scripts). Each command can be mapped to any build script you like, allowing you to define a set of commands that can be used across all of your projects. If you plan to deploy using `tj`, this file will also house your [deployment configuration](http://cli.themejuice.it/deploy).\n\nFor reference, below is an example config: (see the config for our starter template, [Sprout](https://github.com/themejuice/sprout))\n\n```yml\n# Project configuration\nproject:\n  name: example\n  url: example.dev\n\n# Manage command aliases for the current project\ncommands:\n\n  # Run project install scripts\n  install:\n    - npm install\n    - grunt build\n\n  # Manage build tools\n  dev:\n    - grunt %args%\n\n  # Manage front-end dependencies\n  asset:\n    - npm %args%\n\n  # Manage back-end dependencies\n  vendor:\n    - composer %args%\n\n  # Create a backup of the current database with a nice timestamp\n  backup:\n    - mkdir -p backup\n    - wp @development db export backup/$(date +'%Y-%m-%d-%H-%M-%S').sql\n\n# Manage deployment settings for the current project\ndeployment:\n  # …\n\n  stages:\n    # …\n```\n\nEach command within the above example can be run from the command-line via `tj \u003ccommand\u003e`. For example, we can run the `tj dev` command, which will in turn run the command `grunt`. Pretty simple, right?\n\nIf you happened to have noticed in the example above, there are a few sub-commands that contain `%args%`; these are called placeholders. Each sub-command list is run within a single execution via joining: `cmd1 \u0026\u0026 cmd2 \u0026\u0026 cmd3 \u0026\u0026 ...`, with all placeholders (`%args%`/`%argN%`) replaced with their corresponding argument index, when available.\n\nHere's a few example commands utilizing placeholders:\n\n```yaml\ncommands:\n\n  example-command-1:\n    # Will contain all arguments joined by a space\n    - echo \"%args%\"\n\n  example-command-2:\n    # Will contain each argument mapped to its respective index\n    - cat '%arg1% %arg2% %arg3%'\n    # Will only map argument 4, while ignoring 1-3\n    - pbcopy \u003c \"%arg4%\"\n```\n\nTo clarify a little bit more using our first example config, we could run `tj dev build` (notice the `build` argument), and since our `dev` command contains `%args%`, that will in turn run the command `grunt build`; if we run `tj dev` command with the arguments `some:other task`, that would be interpreted and run as `grunt some:other task`.\n\nYou can specify an unlimited number of commands with an unlimited number of arguments within your `Juicefile`; however, you should be careful with how this is used. Don't go including `sudo rm -rf %arg1%` in a command, while passing `/` as an argument. Keep it simple. These are meant to make your life easier by helping you manage build tools, not to do fancy scripting.\n\n#### Template strings\nYou may define ERB template strings within a project starter template's `Juicefile`. These will be replaced when creating a new project.\n\nFor example,\n\n```yaml\n# Project configuration\nproject:\n  name: \u003c%= name %\u003e\n  url: \u003c%= url %\u003e\n```\n\nwill be replaced with,\n\n```yaml\n# Project configuration\nproject:\n  name: example-project\n  url: example-project.dev\n```\n\nif those were the options chosen during a project creation.\n\n#### Available variables for use\n- `name`: Project name\n- `location`: Project location\n- `url`: Project URL\n- `xip_url`: Project xip.io URL\n- `template`: Project template repository URL\n- `repository`: Initialized repository URL, if available\n- `db_host`: Project database host\n- `db_name`: Project database name\n- `db_user`: Project database user\n- `db_pass`: Project database password\n- `db_import`: Path to imported database file\n- `vm_box`: Virtual machine box URL\n- `vm_ip`: Virtual machine IP address\n- `vm_revision` Revision hash or branch of VM\n- `vm_path`: Virtual machine location on the host machine\n- `vm_root`: Web root of the VM on the host machine\n- `vm_location`: Project location within the VM on the host machine\n- `vm_srv`: Project location within the VM on the guest machine\n- `vm_prefix`: Virtual machine project location prefix\n\n### Does `tj` support subdomain multi-sites?\nIf you're able to use [Landrush](https://github.com/phinze/landrush) for your DNS, then yes. All subdomains will resolve to their parent domain. Landrush comes pre-installed when you create your first project with `tj`. Having said that, unfortunately, if you're on Windows you'll might have to manually add the subdomains to your `/etc/hosts` file due to Landrush not being fully supported yet. If you have the Windows chops, head over there and contribute to Landrush by squashing that bug. I'm sure he would appreciate it!\n\n### Can I access a project from another device (i.e. mobile)?\nYes! Every project created with `tj` will automatically be set up to support using [xip.io](http://xip.io/). If you're using OSX, then everything should work out of the box. If you're not using OSX, then you'll need to point port `80` on your host machine to `8080`; Vagrant cannot do this by default for security reasons.\n\nOnce everything is good to go, you can access a project from another device on the same network by going to `\u003cproject-name\u003e.\u003cyour-hosts-ip-address\u003e.xip.io` e.g. `themejuice.192.168.1.1.xip.io`.\n\n_If you're familiar with forwarding host ports on operating systems other than OSX, check out [this file](https://github.com/themejuice/tj/blob/master/lib/theme-juice/tasks/forward_ports.rb#L34-L51) and make a pull request so that everybody else can benefit from your smarts._\n\n#### Using `ngrok`\nYou can also use a service like [ngrok](https://ngrok.com/), if you prefer that over xip.io:\n\n```bash\nngrok http -host-header project.dev 80\n```\n\n⚠️ With both of these options, you'll need to make sure your WordPress project has a plugin like [Dynamic Hostname](https://wordpress.org/plugins/dynamic-hostname/) so that your assets and links continue to function correctly.\n\n### Can I add my starter template, ________?\nYes! Just update the `TEMPLATES` constant inside [commands/create.rb](https://github.com/themejuice/tj/blob/master/lib/theme-juice/commands/create.rb#L7-L12) and make a pull request. I'll verify that the template includes a `Juicefile` (not required, but preferred to automate build steps), and that everything looks solid. Until then (or if your template is private), just run the command below to clone your template.\n\n```\ntj create --template git@your.repo:link/goes-here.git\n```\n\n### Can I integrate my deployments with Slack?\nYes, you can integrate deployment notifications with your teams Slack account by adding the following template to your `Juicefile`:\n\n```yml\ndeployment:\n  # ...\n\n  slack:\n    url: https://hooks.slack.com/services/your-token\n    username: Deploybot\n    channel: \"#devops\"\n    emoji: \":rocket:\"\n\n  # ...\n```\n\nCheck out [capistrano-slackify](https://github.com/onthebeach/capistrano-slackify) for more information.\n\n### Can I use a self-signed SSL cert?\nYes, unless you used the `--no-ssl` flag, `tj` will set up each new site to support SSL, [and the VM will generate a new self-signed certificate](https://github.com/themejuice/graft#automatically-generated-self-signed-ssl-certs). In order to take advantage of it, [you'll need to accept the self-signed certificate on your host machine](https://github.com/themejuice/graft#accepting-a-self-signed-ssl-cert).\n\n### Can I define my own Capistrano tasks?\nYes. Any file within a directory called `deploy/` in your project with extensions `.rb`, `.cap` or `.rake` will be automatically loaded by Capistrano.\n\nFor example, within our [starter template](https://github.com/themejuice/theme-juice-starter), you will find a `deploy/` directory, inside is a few example tasks. Open one of them and you'll see an example task invokable by `tj remote \u003cstage\u003e \u003cnamespace:task\u003e`.\n\nTo learn more about Rake and how you can define your own Capistrano tasks, check out the [official Rake repository](https://github.com/ruby/rake) as well as the [official Capistrano tasks documentation](http://capistranorb.com/documentation/getting-started/tasks/).\n\nIf you're interested in checking out `tj`'s predefined tasks, head over [here](https://github.com/themejuice/tj/tree/master/lib/theme-juice/tasks/capistrano). You may override any task with custom functionality by using the same namespace/task name as outlined below,\n\n```ruby\n# encoding: UTF-8\n\nRake::Task[\"db:push\"].clear # Clear previous task\n\nnamespace :db do\n\n  desc \"Overridden database push task\"\n  task :push do\n    # Your new task here\n  end\nend\n```\n\n### Can I run `wp-cli` commands on my deployment stages?\nSure can, and without the help of `tj`! As of version `0.24`, `wp-cli` does this out of the box. Whenever you create a new site, `tj` will add a file to your project's root directory called `wp-cli.local.yml` that contains something along the lines of:\n\n```yml\n@development:\n  ssh: vagrant@example.dev/srv/www/tj-example\n```\n\nYou can then run `wp` commands like this,\n\n```bash\nwp @development plugin list\n```\n\nFeel free to add your other stages into that file as well!\n\n## Troubleshooting\n\n1. [Help! It won't let me `git clone` anything!](#help-it-wont-let-me-git-clone-anything)\n1. [What the heck is an `invalid multibyte char (US-ASCII)`?!](#what-the-heck-is-an-invalid-multibyte-char-us-ascii)\n1. [Why are my `.dev` domains resolving to `127.0.53.53`?!](#why-are-my-dev-domains-resolving-to-12705353)\n\n### Help! It won't let me `git clone` anything!\nIf you're hitting issues related to `git clone`, either cloning the VM or a starter template, then you most likely don't have [SSH-keys for GitHub set up correctly](https://help.github.com/articles/error-permission-denied-publickey/). Either go through that article and assure that you can use Git with the `git@` (`ssh://git@`) protocol, or else you can manually run `tj` with the appropriate flags corresponding to the problem-repository, swapping out `git@github.com:` for `https://github.com/`. For example:\n\n```\ntj create --template https://github.com/starter-template/repository.git --vm-box https://github.com/vm-box/repository.git\n```\n\nThe flag duo above replaces the URLs for the starter template and VM box repositories so that they use `https` instead of the `git` protocol.\n\nOr, you can globally update `git` to **always** swap out `git@github.com:` with `https://github.com/` by modifying your `git config` with this command:\n\n```\ngit config --global url.\"https://github.com/\".insteadOf \"git@github.com:\"\n```\n\n### What the heck is an `invalid multibyte char (US-ASCII)`?!\nFor one reason or another, your terminal probably doesn't support UTF-8, so it's throwing a fit. Use the `--no-unicode` flag to disable the unicode characters. If the problem still persists, try running it with the `--boring` flag. That should disable all unicode characters and coloring.\n\n```\ntj create --no-unicode # Or: tj create --boring\n```\n\n### Why are my `.dev` domains resolving to `127.0.53.53`?!\n[Google has applied for control of the `.dev` TLD (top level domain)](https://gtldresult.icann.org/application-result/applicationstatus/applicationdetails/1339). To fix it, you'll need to periodically flush your local DNS cache (I'm honestly not entirely sure why). In the future, we'll probably switch to something like `.localhost`. Here are a few commands to flush your cache on OSX:\n\n```bash\n# Yosemite:\nsudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder\n\n# Mountain Lion:\nsudo discoveryutil mdnsflushcache; sudo discoveryutil udnsflushcaches\n```\n\n_Still having issues? [Yell at me!](https://github.com/themejuice/tj/issues)_\n\n## Contributing\n1. First, create a _well documented_ [issue](https://github.com/themejuice/tj/issues) for your proposed feature/bug fix\n1. After getting approval for the new feature, [fork the repository](https://github.com/themejuice/tj/fork)\n1. Create a new feature branch (`git checkout -b my-new-feature`)\n1. Write tests before pushing your changes, then run Rspec (`rake`)\n1. Commit your changes (`git commit -am 'add some feature'`)\n1. Push to the new branch (`git push origin my-new-feature`)\n1. Create a new Pull Request\n\n## License\nPlease see [LICENSE](https://github.com/themejuice/tj/blob/master/LICENSE) for licensing details.\n\n## Author\nEzekiel Gabrielse, [@ezekkkg](https://twitter.com/ezekkkg), [http://ezekielg.com](http://ezekielg.com)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemejuice%2Ftj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemejuice%2Ftj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemejuice%2Ftj/lists"}