heokuを使ったデプロイまとめ

 作ったアプリを公開するまで 

 

デプロイ heroke のコード

 

・ heroke のバージョン確認

heroku --version

 

・herokuへログイン

heroku login --interactive

 

gemfileへ下記を記入

ファイルの一番下の行に追記する

group :production do

  gem 'rails_12factor'

 

 

 rails_12factor

静的アセットファイルやログの保存先をHeroku用に微調整してくれるGemです。

 

コミットする

1

2

% git add .

% git commit -m "gem rails_12factorの追加"

 

Heroku上にアプリケーションを作成しましょう

heroku create ajax-app-テックマスターのユーザーID

 

下記のコマンドを入力し、正しく設定できたことを確認してください。

git config --list | grep heroku

 

ClearDBアドオンを追加しましょう

heroku addons:add cleardb

 

これでデータベースをMySQLに設定できました。しかし、Ruby on Railsを使う場合は、MySQLに対応するGemについて考慮する必要があり、そちらの設定を変更します。

まず、下記のコマンドを入力してください。

 

% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`

 

% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}

 

 Heroku上で環境変数を設定しましょう

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

 

Heroku上で環境変数を確認しましょう

heroku config

 

git push heroku masterを実行しましょう

git push heroku master

 

 Heroku上でマイグレーションを実行しましょう

heroku run rails db:migrate

 

heroku apps:infoを実行しましょう

heroku apps:info

Web URL: https://ajax-app-123456.herokuapp.com/の部分のURLへアクセスすれば、公開されたページを見ることができます。

 

## アップデート

git push heroku masterを実行しましょう

git push heroku master

 

 Heroku上でマイグレーションを実行しましょう

heroku run rails db:migrate

 

heroku apps:infoを実行しましょう

heroku apps:info

Web URL: https://ajax-app-123456.herokuapp.com/の部分のURLへアクセスすれば、公開されたページを見ることができます。

 

 

ユーザーのデータの紐付け、マイページの作成

どうもこんばんは、みきです。

皆さん勉強進んでますか?

私は仕事で疲れたので、まだ夜の8時ですがもう寝たいです。

でもここで寝たらただ仕事しただけの日になっちゃうので、

ヨギボーの上でふんぞりかえりながらアウトプットしていきます笑

 

ではスタート!

 

●ユーザーのデータを紐づける→アソシエーションを定義する

前回ユーザーの情報(ユーザーの名前とかメールアドレスとか)を保存するための

userテーブルは作りました。

今アプリには投稿に関するデータが保存されているtweetsテーブル、

そしてuserテーブルの2つがあります。

しかし、この2つは何も関連性がありません。

Aさんという人がこのアプリケーションを使っていると仮定して。

Aさんのメールアドレスやパスワードは何かわかっていますが、

どれがAさんが投稿したものなのかは分からない状態です。

これはuserに関する情報はuserテーブルに保管されており、

投稿したものはtweetsテーブルに保管されているからですね。

これでは成り立ちませんね。

そこで必要なのがアソシエーション

なんかこの先めちゃくちゃ大事みたいなのでしっかり覚えた方が良さそう。

今回行うアソシエーションを定義する方法は2つ

『has_manyメソッド』と 『belongs_to メソッド』

どちらも三人称単数形ですね。主語がモデルだからですかね?

初見でhowmanyとbelongだと思ってました。値段つけてどうするんや。

 

●has_manyメソッド

has_manyは読んで字の如く、私たくさん持ってるよ!!

このモデルは色んなデータ、カラムを持っているから紐付けてね。って合図。

userモデル視点で考えるとuserは色んなデータをたくさん持ってるよ!ってこと。

1つモデルが何かをたくさん情報を持つときに使うみたいですね。

使い方は

app/model/モデル名.rb  にて

has_many :紐づけるmodel名

 

って感じっぽいですね。

今回はapp/model/user.rb に記載して

has_manu :tweets   と記載。

これでuserモデルの1つのuserが多数のtweetsのデータを持つことができます

1人のユーザーは複数回投稿しますもんね。

 

●belongs_to

〜に属しますよっていうメソッド。

has_manyの逆って考えて良さそう。

このデータが何に属するのか、を紐づけるためのメソッド

なので app/model/データのmodel名.rb  にて

belongs_to :モデル名

今回は app/model/tweet.rb に

belong_to :user

 

これでtweetsの1つの投稿データは必ず1つのuserに属します。

とある1つ投稿を複数のユーザーが投稿することはないですもんね。

 

これでOK!念のためコンソールで確認したいところ。

rails c でコンソールを開いて

① tweet = Tweet.find(1)

② tweet.user

 

で確認しよう!

 

 

ユーザー情報を登録してもらう準備まで

今週から応用カリキュラムに入っていますが、

いや〜、全く進まない。笑えるくらい。

読んでも読んでも正直全然わからない。

静寂の中だとキツイので、youtube見ながら今日は勉強してました。

でも見ない時より進むという。今日のコンディションはそんなもんと諦めて、

早速アウトプットしていきます。

 

①ログイン機能のライブラリをダウンロード

便利な世の中ですね!

「ログイン機能」自体がパック詰されてるなんて。

覚えたらめちゃくちゃ簡単ですよね!

使いこなすまでが難しいんですけど!

このパック、プログラミング界ではライブラリ、railsではgemと呼ぶ。

「devise」というgem

gemのインストール方法含めておさらい

 

gemfile に使うgemを記載 「gem 'devise'」(最終行)

ターミナルで bundke installを実行し、今の状態のgemfileをインストール

rails s でサーバーを再起動させて、インストール後の状態を繁栄

rails devise:install   この状態になったらようやくdeviseをアプリケーションにインストール (これすっごい忘れそう。bundle installでインストールした気にすっごいなる)

これでdeviseをアプリに導入できました

 

②ユーザー情報のデータベースを作る

アプリケーションにユーザー情報を入れておく箱を作る段階。

モデル作ってマイグレーションのファイル作って・・・・・。

っていうのをぜーんぶしてくるのが

rails g devise user」

 

これでuserに必要な

マイグレーションファイル

・modelファイル

・ルーティングの設定

を一度に行うことができる。便利!

 

あとは「rails db:migrate」

を実行すれば自動で作ってくれたファイルがデータベースに反映される。

 

これでユーザー登録するための箱、入れ物をアプリケーションに作れたってことですね。うまく行っていれば、squel pro で userが作られているはず。

 

③ビューファイルを作る

rails devise g views]

これだけでOK。効率的ですね。

これだけでログインのビューファイル、新規登録ビューファイル

全部作ってくれます。

 

④データベースにカラムを加える

rails g migration AddNamesToUsers」で加える。

でここの基礎は変わらないですが、AddNamesToUsersの部分が新しい知識。

 

これでひと段落・・・・と思いきやもう一息。

このままだとユーザーに何を送られてくるかわかったものじゃありません。

なんでも送られてきちゃいます。

そんなことにならないようにストロングパラメーター(requireメソッドとかpermitメソッド)を使いたい。

でもdeviseのコントローラーはいじれないみたいです。

ここで1つ覚えなきゃいけないのはgem内のものはいじれない!!こと

 

⑤application_controllerでストロングパラメーターを使う!

application_controllerはコントローラーで一番優先されるコントローラー。

ここに以下を記載

private def configure_permitted_parameters # メソッド名は慣習 # deviseのUserモデルにパラメーターを許可 devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー]) end

これで導入終わり!

 

次はマイページをつくる!

そうだ!エンジニアを目指してみよう!と思うまで

はじめまして。みきと申します。

勉強したことをアウトプットするためにブログ立ち上げました。

ただ、まだアウトプットするほどの知識もないので笑

今日はなぜ私がエンジニアを目指そうと思ったのか書いていきます。

 

国家資格さえもAIに奪われる

あまり言いたくはないですが、私は今調剤薬局で薬剤師をしています。

親が子供になって欲しい職業上位で、あまり負担なくそこそこ稼げる職業として有名ですね。

まあ、現実はそう甘くないです。なんせ留年せずに卒業できる人が60%未満ですから笑

 

働いていておもうんです。今してること全部AIでいいなって。

ていうか、すでにほとんどの業務にAIが使われています。

7年頑張っても(1年留年してます)、

全く人の役に立てない上に、AIに負ける職業ってあります?

こんなに努力が報われない職業ってあります?

仕事ついた時には全くやる気なかったです。

一応問題ない程度には勉強しましたし、

話をすることで喜んでくれる患者さんもいました。

でも、一方で自己肯定感はどんどん死んでいきました。

 

薬剤師という職業に関する愚痴は長くなるのでここら辺にして。

 

転職しちゃえ!

自己肯定感が底辺までなくなったある日ふっと思いました。

私は今の状況に適応する努力はしたけど、

状況を変える努力はしてないな・・・と。

よし!変えちゃおう!

 

まずは目標を設定しました。

特になりたいことはなかったです。でもなりたい状況はありました。

「犬と猫を飼って幸せになること。」

ただ、今の仕事だとほとんど家にいない。

犬なんかだと特に寂しい思いをさせてしまいます。

 

猫もなんやかんや寂しいみたいですしね。

自分だけが幸せになるのではなくて、最愛のペットを幸せにしたいんです。

 

そしてAIに取られるとかビクビクしたくない。

 

そうだ!まずはリモートワークができて、AIに取られなさそうな

エンジニアになろう!!そう決意しました。

 

これが私がエンジニアを目指す理由です。

 

 

プログラミングスクールに通って2週間経ちました。

正直結構辛いですけど、夢中になってます。

まだ簡単なwebページやアプリしか作ってないですが、

何かを生み出せるってすごく楽しいです。

目標に向かって頑張るのってやっぱり良いですね。

 

最後まで読んでいただきありがとうございました。