3 Heroku errors and how to bypass them
Tags: heroku, javascript, beginners, rails
Published: 2019-10-30 21:10:39

Yesterday, I deployed my [Chingu](chingu.io) solo project Heroku. After 10 hours of debugging, I finally got the [working project](https://statuslive.netlify.com/) I needed to meet the requirements, but wow– what a painful experience!

It seemed that I got every possible between the initial project creation and actually getting my rails API deployed.

###The project
- Rails API to generate a GIF for every HTTP status code
- Vanilla JS frontend | Rails backend

###The context
I worked on this project before so I wasn't worried about making the API. But I knew I would have to: 
- convert my SQLite database to Postgres
- host the front and back ends separately

###The challenges (aka the errors)

####Error 1
- `FATAL: permission denied for database "postgres"`
```bash
Running rake db:setup on ⬢ statuslive... up, run.3270 (Free)
FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
Couldn't create 'dfkftiogchg03i' database. Please check your configuration.
rake aborted!
PG::ConnectionBad: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
```
- I made the mistake of specifying the database variables in my database.yml. But those will be generated by Heroku:
```javascript
production:
  <<: *default
  adapter: postgresql
  database: statusbackend_production
  username: 
  password:  <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
```
- After updating my database file, I also made sure to 
- delete my database on Heroku
- delete my schema
- recreate my database 
  -  `heroku addons:create heroku-postgresql:hobby-dev`
- recreate my databese
  -  `heroku rake db:schema:load`
- run migrations
  -  `heroku run rake db:migrate`


####Error 2
- My page crashed immediately after deployment. This on was challenging because the Heroku logs were less than helpful
```javascript
2019-10-30T00:46:41.342662+00:00 heroku[run.4698]: Process exited with status 1
2019-10-30T00:46:41.383224+00:00 heroku[run.4698]: State changed from up to complete
2019-10-30T00:46:44.149803+00:00 heroku[router]: at=info method=GET path="/boards" host=statuslive.herokuapp.com request_id=5b00da13-1b4c-4bac-98d3-e305c5b4a758 fwd="98.225.252.60" dyno=web.1 connect=1ms service=82ms status=304 bytes=231 protocol=https
```

- I got this error a few different types but here are the things I tried to varying degrees of success
- heroku restart
- set `config.active_storage.service` to :local

I also recommend running `heroku rake` immediately after each deploy, because this will catch any syntax errors that cause your app to crash. This is the commend I started using to deploy
  -  `git push heroku master && heroku rake`

####Error 3
- I got a few gem errors, but addressing 1 gem error would just lead to another one, starting 
```javascript
.rvm/gems/ruby-2.6.1/gems/bundler-2.0.2/lib/bundler/spec_set.rb:87:in `block in materialize': Could not find nio4r-2.5.2 in any of the sources (Bundler::GemNotFound)
```
- I tried a few things to fix this error including
  -  `gem pristine nio4r --version 2.5.1`
  -  deleting my gemfile.lock
  -  running `bundle update`
  -  running `bundle install`
  - But the only thing that worked was `gem pristine --all`

During my debugging adventure, I read a lot of Stack Overflow questions and answers. This [thread](https://stackoverflow.com/questions/34863050/opening-heroku-page-not-found) is one I read a few times, when I continued getting errors after my app was successfully deployed. 

As I wrote this blog, I noticed that reviewing my terminal logs, it was difficult to keep track of what command made the difference. But next time I deploy a project to Heroku, I will try to take more detailed notes of what fixed which error