東京研修も残り1ヶ月を切った
東京研修も1ヶ月が過ぎました。ちょっとした機能追加、仕様変更なら時間はかかりますが、どうにか実装できるようになりました。
でも、1回もアプリを公開(デプロイ)したことがなかったので、やってみることにしました。
初めて公開したアプリはProgateのGatebook
公開したアプリはProgateで作成するアプリGateBook。
Gatebook←これです!!
Progateはサイト上でターミナル操作とソースコードを書いて学んでいくのですが、
ローカル環境(自分のmac上)で作成してみました。Gatebook上での動作とローカルでの動作は少し異なるので注意が必要です。
Herokuでのアプリ公開は想像以上にスムーズでした。他のVPSサービスだと色々な作業が必要なのですが、Herokuは本当に簡単!
少し戸惑いましたが、時間的には1時間程度でできました。とりあえず、アプリを公開したい!ってときにはおすすめです。
目次
- 1 東京研修も残り1ヶ月を切った
- 2 初めて公開したアプリはProgateのGatebook
- 3 Herokuにアカウントを作成する
- 4 Herokuコマンドをターミナルで使えるようにするためにHeroku toolbeltをインストールする
- 5 デプロイするアプリのディレクトリに移動する
- 6 Herokuにログインする
- 7 Heroku上にアプリの枠を作成する
- 8 Herokuにアプリをpushする
- 9 しかし、このままではエラーが起きる
- 10 gemfileを編集
- 11 gemifileの更新
- 12 assets precompileの指定
- 13 ファイルを変更したのでgitに反映する。
- 14 再度Herokuにpushする
- 15 しかしログイン機能deviseが動かない。
- 16 postgresqlにproduction環境で接続する記載をする。
- 17 あとrubyのバージョンを指定
- 18 まだエラー
- 19 デプロイ(公開)できました!
Herokuにアカウントを作成する
Herokuコマンドをターミナルで使えるようにするためにHeroku toolbelt
をインストールする
Heroku toolbelt
はインストールボタンを押して展開するだけ。
デプロイするアプリのディレクトリに移動する
$ cd hoge
Herokuにログインする
$ heroku login Email: 自分のheroku emailアドレス Password (typing will be hidden): Herokuのパスワードを入力 Logged in as 自分のheroku emailアドレスが表示される
Heroku上にアプリの枠を作成する
ここに自分のローカルで作成したアプリをpushすることになります。
$ heroku create hoge (hogeというアプリが作成される) $ git add . $ git commit -am "heroku deploy" (任意のコミットメッセージ)
Herokuにアプリをpushする
$ git push heroku master
しかし、このままではエラーが起きる
! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/hoge.git'
gemfileを編集
RailsではデフォルトデータベースがSQLite3ですが、Herokuのデフォルト
データベースはpostgresqlです。
本番環境はpostgresqlを使用するように指定します。
SQLite3はdevelopment環境のみで使用するように指定します。
gemfile group :production do gem 'pg' gem 'rails_12factor' end group :development do gem 'sqlite3' end
gemifileの更新
--without production
オプションをつけて、bundle installしてください。
$ bundle install --without production
assets precompileの指定
config/application.rbに追記します。
config/application.rb module アプリ名 class Application < Rails::Application config.assets.initialize_on_precompile = false end end
enviroments/production.rbに追記と変更します。
environments/prouction.rb config.assets.compile = true #=> tureに変更 config.serve_static_assets = true #=>追加
ファイルを変更したのでgitに反映する。
ファイルを変更したのでgitに反映します。
$ git add . $ git commit
再度Herokuにpushする
$ heroku push master
しかしログイン機能deviseが動かない。
どうやらデータベースpostgresqlがうまく機能していない様子。
heroku logs
でlogを見れます。
$ vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/postgresql_adapter.rb:596:in `async_exec'
ググって以下のコマンドを実行。
heroku plugins:install git://github.com/heroku/heroku-pg-extras.git heroku pg:killall; heroku restart heroku update heroku pg:killall; heroku restart
postgresqlにproduction環境で接続する記載をする。
どうやらデータベースができていなかったようです。
config/database.yml production: adapter: postgresql database: db_production
あとrubyのバージョンを指定
gemfile ruby '2.2.4'
まだエラー
まだエラーが起きます。データベースはできているようですが、テーブルと
migrationができていないようでした。
以下のコマンドを打ち込みます。
heroku run rake db:setup heroku run rake db:migrate heroku run rake db:reset heroku run rake db:migrate heroku run rake db:rollback heroku run rake db:migrate
コメントを残す