Hosting

Heroku: No default language could be detected for this app.

Posted on

I was uploading a vanilla JavaScript application to heroku.

Looks like I will need a buildpack for it to deploy. This is so Heroku can understand what type of app it has.

Solution1: Just deploy it as a github page. 

Since its a static site, there is nothing “serving” index.html, and heroku is a cloud platform, hosting apps, not a “webhost” in the web 2.0 sense.

Since I want to keep everything on heroku for now, lets see what else we can do.

Attempted Solution: rename index.html to index.php

The least effort solution is to rename your default file to index.php and redeploy. Heroku will detect it as a PHP site and use that buildpack. – John Beynon

Very curious! Would this work? Why not try it out.

hmm appears to work! I was going to deploy a sinatra app or ry the heroku static bundle and I will probably do that anyway but this quick solution can be a real timesaver!

Advertisement

Deploy your Rails API onto Heroku

Posted on Updated on

 

Go to your Heroku Dashboard. Click “new”-> “create new app”

Screen Shot 2018-06-13 at 11.09.15 AM

Give your app a name and click “Create app”

Screen Shot 2018-06-13 at 11.12.34 AM

There are several ways to deploy

  • Heroku CLI  – push your project up to Heroku from your command line
  • Github – Heroku is connected to github, so everytime github is updated your app is
  • Dropbox connected
  • Container Registry

We will be using Heroku CLI. If you need to install  use these instructions

By default Heroku ONLY supports the master branch. If you want to push up a branch other than master follow these instructions.

Add Heroku as a remote to your project

heroku git:remote -a name-of-your-heroku-app

Push your project to Heroku

git push heroku master

Did you just get an error? Did you use sqlite3 for your project?

remote: An error occurred while installing sqlite3 (1.3.13), and Bundler cannot
remote: continue.
remote: Make sure that `gem install sqlite3 -v ‘1.3.13’` succeeds before bundling
remote:
remote: In Gemfile:
remote: sqlite3
remote: !
remote: ! Failed to install gems via Bundler.

Click here for the fix.

Migrate and seed your database

In your command line run the following commands.

  • heroku run rake db:migrate
  • heroku run rake db:seed

Test your API using Postman

To get the address, just go back to the Heroku dashboard and click on “Open app” to get the link to your online api

Screen Shot 2018-06-13 at 12.56.13 PM

If you made it this far, your API should be deployed and now test it as you did locally (you did test locally didn’t you???).

The reason you need postman is if you setup your Rails API correctly when you query your site via browser you should get an error

This appname-api.herokuapp.com page can’t be found

but if you connect to it via postman you should get back the appropriate response

 

 

I couldn’t get into on of my heroku sites

Posted on Updated on

Strange news on heroku,  one of my heroku apps was not working even though nothing had changed.

This nameofmyapp-api.herokuapp.com page can’t be found

No webpage was found for the web address: https: //  nameofmyapp-api.herokuapp.com/

HTTP ERROR 404

The problem doesn’t appear to be an app issue, rather a DNS issue.

Last I had checked it, it was working fine. I had used it on and off for several days. After about a week, I came back to it and found it in this state. I even clicked the app from the “Open app” tab in heroku. I don’t want to rename the app to see if it would work, because I should not have to do that.

Steps taken

  1. Dynos restarted
  2. Heroku log checked.
  3. Run postman against the API

Then I realize that I am looking at the API version of the app, not the similarly named frontend.

The api doesn’t respond to requests at the top level route. That is by design. The front end is named https://nameofmyapp-app.herokuapp.com/ similar to https://nameofmyapp-api.herokuapp.com/.

Ways to prevent this in the future:

  • Add “API” to the beginning of the name rather then the end.
  • Add custom domain to the front end
  • READ CAREFULLY!