はこねのはこ

はこねさんの備忘録

Railsで作成したアプリをHerokuで公開するメモ(SourceTree使用)

はじめに

前回、ローカル環境でRailsの環境構築を確認しました。 今回は、Railsで作成したアプリをHerokuで公開する方法を確認します。

hakonebox.hatenablog.com

今回の目標

herokuにデプロイし、URLにアクセスして表示を確認する。

jp.heroku.com

前提

Herokuのアカウントは取得済み f:id:hakonebox:20180402010709p:plain

デプロイするRailsアプリの作成

ローカル環境でデプロイするRailsアプリを作成します。 自分で編集したviewがデプロイされていることがわかるように、 簡単にtopページを作成します

mkdir heroku_demo
cd heroku_demo
rails new heroku_demo_app

rails generate controller home top

topページを編集します。 heroku_demo_app/app/views/home/top.html.erbを開き、 下記のように編集しました。

<!-- template
<h1>Home#top</h1>
<p>Find me in app/views/home/top.html.erb</p>
-->
<h1>herokuにデプロイする方法を確認するよ!</h1>
<h2>ホームページに飛んでみるよ</h2>
<%= link_to("はこねのはこ","https://hakonebox.hatenablog.com/") %>

ローカルサーバを立ち上げ、topページの確認をします。

rails server

アクセスして見ましょう。 localhost:3000/home/top

表示が確認できました。 f:id:hakonebox:20180401205719p:plain

home/topをつけなくでもこのページが表示できるように、routesファイルの変更をします。

#Rails.application.routes.draw do
#  get 'home/top'
#end

Rails.application.routes.draw do
  get "/" => "home#top"
end

これでlocalhost:3000にアクセスした時に、 topページを表示できるようになりました。

herokuにアプリケーションを作成する。

NEWからアプリケーションの作成をします。 f:id:hakonebox:20180401213043p:plain f:id:hakonebox:20180401213415p:plain

Open appをクリックします。 f:id:hakonebox:20180401213539p:plain

アプリが作成できたようです。 f:id:hakonebox:20180401213705p:plain

Gemfile,databaseの編集

RailsはデフォルトでSQLiteを使用しているようですが、HerokuではPostgreSQLを使用するようです。

database.ymlの編集

production:
  url: <%= ENV['DATABASE_URL'] %>
#  <<: *default
#  database: db/production.sqlite3

Gemfileの編集

gem 'sqlite3' , group: [:development, :test]
gem 'pg' , group: :production

途中エラーが出てしまいました。

An error occurred while installing pg (1.0.0), and Bundler cannot
continue.
Make sure that `gem install pg -v '1.0.0'` succeeds before bundling.

Can't find the 'libpq-fe.h header

libpq-fe.hが見つからないようです。

brew install postgresql

すると checking for tclConfig.sh... no configure: error: file 'tclConfig.sh' is required for Tcl と出ました。

brew install tcl-tk

A formula for tcl-tk might have been added recently. Run brew update to get the latest Homebrew updates! と出ました。

brew updateを実行しましたが、

brew update
Error: /usr/local must be writable!

ぐぬぬ

こちらのサイトを参考にさせていただきました。

qiita.com

サイドbrew updateを実行して待つこと約30min.... やったか!?と思ったらまた次のエラー Error: update-report should not be called directly!

brew updateの前に、brew upgradeが必要みたいです。

brew upgrade
brew update

うまくいったようです。

再度

brew install tcl-tk
brew install postgresql
bundle install

いけました! ここまで長かった...。

rails serverで起動して、ローカルでの動作ができました。

しかしゴールではない.....。

SourceTreeの設定

SourceTreeを開きます。 新規から既存のローカルリポジトリを追加を選択 f:id:hakonebox:20180402003505p:plain

リモートを追加を選択 必須情報にリモートの名前とURL/パスを設定します。 URLはHerokuのSetting→Infoに記載されています。

デプロイする

f:id:hakonebox:20180402004246p:plain

そしてプッシュ f:id:hakonebox:20180402004424p:plain

 開いてみる。

HerokuからOpen appで開きます。 f:id:hakonebox:20180402004742p:plain f:id:hakonebox:20180402004937p:plain ひらけました。

やったああああああああああああああああ!!!!!!! やりました。

さいごに

Sourcetreeからならいらない操作あったんじゃないかな... あとmacbookの環境構築はいまだにわからないことが多いです。

なんとかデプロイまで進めたのでよかったです。

途中心くじけそうになって相談させていただきました。 naichiさんありがとうございます。 blog.naichilab.com f:id:hakonebox:20180402010709p:plain