Railsでブログシステムを作りたいPart1


1.なぜやるのか

・Web系企業に未経験で転職し一ヶ月たち、技術書インプットメインの自己研鑽に飽きた(とゆうか身についてない感じがした)

・もともとブログを運営したいと思っていたが、せっかくならWordPressを使わない(会社でつかっているRails)でやりたい

というモチベーションです。そのため、Railじゃないと実現できない機能があるから使うわけではなく、あくまでもRailsを勉強したいというのが先行しています。

2.実現したいシステム

概要

旅行先や飲食店、遊んだ場所を紹介するブログを作りたいと思っています。
想定読者は日本人と台湾人です。僕の彼女が台湾人なので台湾中国語対応のブログにしたいと思っています。

欲しい機能

・日本地図や台湾地図で記事をソート
・地図表示
・2ヶ国語対応 
・リッチテキストエディター
・バックヤード(管理者画面)
・pc+sp対応
等々

3.開発環境(予定含む)

ruby 3.0
rails 6.1.3
MySQL
AWS(本番環境インフラ)←まだちゃんと調べてないのでざっくりです
bootstrap
rspec
circle ci

4.やったこと

・Mysql初期設定
・localhost:3000立ち上げ
・githubのリモートリポジトリと連携
・リッチテキストエディター導入(ActionTextで簡単にできた)

いつかsqliteだと困る時が来るだろうと思い、最初からMySQLにしました。セキュリティ設定することも知らずに進めていてちょっと時間を無駄にしましたが、下記載の「つまずいた点メモ」の記事通りやればなんてことなかったです。

無事localhost:3000でYay!が確認できたのち、以下の記事を参考にリッチテキストエディターを導入することができました。
【Rails】Action Textの基本情報と実装方法

しかし、上の画像にも書いたとおり「Create Article」をしてもContentが表示されません。

と思ったら以下のようにメソッドのコピーするところを間違えていたようです。

見返すと参考にした記事でscaffoldを作成するときにtitleしか設定してないんですね。

rails g scaffold Article title:string

リッチテキストエディタを作る過程で、article.rbにcontentにリッチテキストが書けるように設定してました。

class Article < ApplicationRecord
  # 以下を追記
  has_rich_text :content
end

そのため、articles_controller.rbに作成されているarticle_params(保存を許可するストロングパラメータ)メソッドにcontentを追加する必要があったんですね。scaffoldで作成されるデータやメソッドを把握してなかったので、初歩的なところでバグが出てました。

5.まとめ

今回はリッチテキストエディタが使えるところまでやりました。
やはりコードを書くのは楽しいと思ったので、書籍での学習におりまぜてアウトプットしていきたいと思います。

6.つまずいた点メモ

mysql2のgemがインストールできない

以下の記事を参考(紆余曲折しましたが結局この記事に全部まとまっていた)にインストールできました。

【Rails/MySQL】RailsにMySQLを導入する方法【プログラミング学習149日目】

In Gemfile:
  mysql2
         run  bundle binstubs bundler
Could not find gem 'mysql2 (~> 0.5)' in any of the gem sources listed in your Gemfile.

Rails6環境起因のエラー周り

Rails6 開発時につまづきそうな webpacker, yarn 関係のエラーと解決方法

データベースを作成していなくてサーバーが立ち上がらないエラー

rails db:create

ActiveRecord::NoDatabaseErrorが出た時の対処法