dotinstallのHeroku入門で激しくハマった


[#05 Railsアプリケーションを作ろう | Heroku入門 - プログラミングならドットインストール](http://dotinstall.com/lessons/basic_heroku/28805)

# herokuコマンド

## herokuコマンドをインストールできない

Downloadするため https://toolbelt.heroku.com にアクセスするもリダイレクトループでページが表示されなかった。
仕方ないので手動でインストール

```bash:
wget https://toolbelt.heroku.com/install.sh
sh install.sh
echo export PATH=/usr/local/heroku/bin:\$PATH >> ~/.zshrc
source ~/.zshrc
```

```bash:herokuにログイン
heroku login
Enter your Heroku credentials.
Email: tukiyo3@gmail.com
Password (typing will be hidden):
Found the following SSH public keys:
1) id_boot2docker.pub
2) id_rsa.pub
Which would you like to use with your Heroku account? 2
Uploading SSH public key /Users/owner/.ssh/id_rsa.pub... done
Authentication successful.
```

# rails

```bash:
rails new mymemo -d postgresql
cd mymemo
```

```diff:Gemfile
- # gem 'therubyracer',  platforms: :ruby
+ gem 'therubyracer',  platforms: :ruby
```

# postgresql

## pg_configがない

* postgresql-devel に pg_configが含まれています。

```bash:
yum install -y postgresql-server postgresql-devel
```

## postgresqlが起動できない

* initdbするようにメッセージが表示されているので従う。

```bash:
service postgresql initdb
```

## dockerでpostgresql起動時にエラーが出る

* 無視

```bash:
service postgresql start
Starting postgresql service: /etc/init.d/postgresql: line 114: echo: write error: Permission denied
```

# rails sでpostgresqlに接続できいない

```bash:
rails s
```

* http://localhost:3000 にアクセスすると以下エラー

![スクリーンショット 2014-08-06 8.20.03.png](https://qiita-image-store.s3.amazonaws.com/0/25728/6022ea4f-6eb5-bb5b-1631-8d19887eb96d.png "スクリーンショット 2014-08-06 8.20.03.png")

* postgresqlに接続できていないことだと思うので以下実施

## postgresの勉強してみた。

いくつか事前知識

* `su - postgres`してから`psql`でpostgresに接続できる。
* `\l` データベース一覧表示
* `\du` ユーザ一覧表示
* `\h` SQLコマンド一覧表示。わりと役立つ
* `\q` quit
* postgresユーザにて`createuser mymemo`でアカウント作成できる。
* `use database`に対応するのは`\connect DBNAME`

※ 以下は今回する必要ない。

```bash:
su - postgres
psql
create role mymemo with login;
create user mymemo with password 'mymemo';
create database mymemo with owner mymemo;
\l
\q
```

* パスワードの変更は`alter user mymemo with password 'newpass'`

## $ psql -U username でpostgresに接続ができない

```bash:
$ psql -U mymemo
psql: FATAL:  Ident authentication failed for user "mymemo"
```

```diff:/var/lib/pgsql/data/pg_hba.conf
- local   all         all                               ident
+ local   all         all                               trust
```

```bash:
service postgresql restart
psql -U mymemo
```

* 接続できることを確認。

## rootでpsql接続する場合

* `psql -U postgres`するのが流儀っぽいが、`psql`だけで接続したい場合。
  * `psql`コマンドだけだと、usernameとdatabase名に現在ログイン中のユーザ名が使われる。

```bash:
$ createuser root
Shall the new role be a superuser? (y/n) y
```

# databaseが作成できない

![スクリーンショット 2014-08-06 8.33.51.png](https://qiita-image-store.s3.amazonaws.com/0/25728/b2f76a15-15c4-38bf-12da-f480a220b5b4.png "スクリーンショット 2014-08-06 8.33.51.png")


```bash:
$ bin/rake db:create db:migrate
```

> PG::InvalidParameterValue: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
HINT:  Use the same encoding as in the template database, or use template0 as template.
: CREATE DATABASE "mymemo_development" ENCODING = 'unicode'

```diff:config/databases.yml
 development:
   <<: *default
   database: mymemo_development
+  template: template0
```

[参考](http://stackoverflow.com/questions/5821238/rake-dbcreate-encoding-error-with-postgresql)

# ようやくrails sに成功

```bash:
rails s
```

![スクリーンショット 2014-08-06 8.57.52.png](https://qiita-image-store.s3.amazonaws.com/0/25728/3c77341f-4c9c-1df4-253b-a12bb7a9b5ca.png "スクリーンショット 2014-08-06 8.57.52.png")