コンパイラかく語りき

import { Fun } from 'programming'

Herokuにデプロイしたいのに、gem pg install できずに苦労した話。

どうも!chuckです。

RailsプロジェクトをHerokuにアップするのに手間取ったのでメモ。具体的にはpgというgemがインストールできず、そもそもpostgresqlが入ってなかったよねという話。

ただし、最終的には環境変数を指定したので、うーむ、、、よくわからんといった感じですヽ(´Д`;)ノアゥア…

 

 

そもそもなんでgem pg が必要なの? 

HerokuではDBにpostgresql(以下、ポスグレ)を使うようです。なので、デプロイするとなると pg というポスグレ用のgemが必要なんだとか。

www.ownway.info

 

ちなみにSQliteを使う方法もなくはないっぽいですが、邪道感が…笑

takkyuuplayer.hatenablog.com

 

初心者はおとなしくポスグレに従うことにしました(;・∀・)

 

しかしgem pg install できない

ここで問題が発生。pg がインストールできない。というか、実は以前から問題でした。

 

 

 

はい、禍根です。

ローカルでの開発だとSQLiteのみつかっていたので問題なかったんですけどね…

 

とりあえず、「pg install できない」などとググる

qiita.com

qiita.com

安心のQiita様。そもそもポスグレをインストールしなさいよとのこと。

あれ、インストールしてなかったかな??

 

brew install postgresql でインストール!

f:id:chuck0523:20150801102345p:plain

 

ん?なんかエラーでてる!(´゚д゚`)

link ができてないとのこと。

 

リンクさせてみる。

f:id:chuck0523:20150801102846p:plain 

書き込み権限がない??とのこと。

 

ちなみに、brew doctorというコマンドを打つと問題のある箇所を教えてくれます。

f:id:chuck0523:20150801101230p:plain

便利ですね!やはり、権限を変えたら?とのこと

 

はじめての権限変更

権限変更なんてしたことないよーヽ(´Д`;)ノ

ググった→パーミッションを変更するには

 

chmod 777 /usr/local/include でincludeファイルをフリーな感じにします。

そしてもういちどポスグレをリンクさせます。

f:id:chuck0523:20150801102639p:plain

うん、できた!これでそもそもポスグレ入ってない問題が解決!次に進めますヽ(=´▽`=)ノ

 

いま改めてgem pg install

f:id:chuck0523:20150801101300p:plain

うおー!まだエラーが出る!

でも、さっきは全てno だったのでちょっと進展。

 

もっかいググる

まったく同じ状態の方を発見!

tail -f pinzo.log: gem install pg がエラーではまった

 

えーと、ポスグレは入ったけど、bundle installが参照する場所ではないとこに入っちゃったのかな?

gem install pg -- --with-pg-config=/usr/local/Celler/postgresql/ --with-pg-lib=/usr/lib

などと入力してもエラーは治らず。(上記のコマンドは僕のディレクトリ構造の場合です。コピペしてもうまくいかないかもしれませんヽ(´Д`;)ノ)

 

結局環境変数を指定してインストール

こちらのページを発見。

ayumu-homes.hateblo.jp

まさに同じ状況。ただ、全く違う対処法が載っていました。

 

sudo env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' 

このように環境変数を指定してみなさいよと。(環境変数ってなんだっけ…)

 

そしたら、いけました。gem pg をインストールできました!

(結局いつものなんとなく解決しちゃったパターン…)

 

デプロイもできた

デプロイを妨げていたgem installが解決したので、デプロイもすんなりいきました。

f:id:chuck0523:20150801102950p:plain

 

嬉しい気持ちもあるけど、( ゚д゚)ポカーンって感じでした。

 

heroku用にマイグレーションを実行します。

f:id:chuck0523:20150801104345p:plain

 

seedファイルも実行。

f:id:chuck0523:20150801104024p:plain

 

これで準備が整いました。

heroku open で起動してみます。

 

f:id:chuck0523:20150801104439p:plain

このとおり!きちんとページもルーティングもデータも万全です!

 

f:id:chuck0523:20150801104515p:plain

クイズページもバッチリ!

 

 

こちらからアクセスできます。まだひどいもんだけどw

https://russianwords.herokuapp.com

 

 

まとめ

素晴らしい先人たちのおかげで解決することができました。権限変更も初めてやったし、勉強になった!でも、最終的によくわからずに解決しちゃったなあ…(;・∀・)

もうちょっと環境変数について調べてみよう!

 

 

 作成中のWebアプリケーション

chuckwebtips.hatenablog.com