Programming Journal

学習したことの整理用です。

2020-01-01から1年間の記事一覧

【Rails】【devise】deviseを使って認証機能を実装する

実装したいこと ログイン機能・ユーザーの新規作成機能を実装したい。 sorceryは使ったことがあったのですが、試しにdeviseでも認証機能を作成したいと思います。 とりあえず、必要最低限な部分は結構簡単にできました。 実装の流れ gem 'devise'のインスト…

【Rails】【Pundit】認可機能の追加

実装したいこと 記事投稿アプリで、管理者以外は記事のCRUD機能を使用できないようにしたい。 権限のないユーザーが該当のページにアクセスしたときは、403エラー画面を表示させる。 実装の流れ Punditの導入 policyファイルの設定 Controller設定 View設定 …

【Rails】【cron】1時間ごとにタスクを実行する

実装したいこと 実装の流れ Rakeとは cronとは Rakeタスクの実装 前提 私のNGコード OKコード Rakeタスクの実行 gem wheneverの導入 suchedule.rb Crontabへの書き込み 実装したいこと 記事公開アプリがあります。 記事の状態が「公開待ち」で公開日時を指定…

【Rails】FatControllerをスッキリさせる

実装したいこと 前提 FatController 何がダメなのか 改善 諸々をモデルへ切り分ける 修正したコントローラ 実装したいこと 記事を投稿するアプリの編集画面で、記事のステータスを「下書き」「公開」「公開待ち」に分類したい。 ステータスと公開日時は編集…

【Rails】【エラー】TypeError - no implicit conversion of nil into String:

エラーを解消したい 記事投稿アプリの中で、記事の中身(文章)を記入せずに空のままプレビュー画面を見ようとしたらエラーがでました。 TypeError - no implicit conversion of nil into String: エラー画面 英単語の意味 implicit suggested or understood…

【Rails】パンくずリストの実装

実装したいこと gem " gretel"の導入 Generating breadcrumbs configuration file View RSpec 実装したいこと ウェブページの上部にパンくずリストを表示したいです。 パンくずリストとは…パンくずリスト 自分が今どのページにいるか分かるリスト。 リスト内…

【RSpec】 管理者・一般ユーザーを分けてテストデータを作成する

実装したいこと trait マクロを使ってログイン機能だけセットする module ? macros? System Spec System Specの命名について NGコード 参考 実装したいこと 管理者と一般ユーザーで権限が違うため、それぞれのテストデータを作成したい。 trait トレイトを使…

【RSpec】gem Seed Fu

gem Seed Fu Seed Fu is an attempt to once and for all solve the problem of inserting and maintaining seed data in a database. It uses a variety of techniques gathered from various places around the web and combines them to create what is h…

【Rails】雑多なメモ

知らないメソッドが色々ありすぎて、忘れそうなのでメモしていきます。 protect_from_forgery with: :exception # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exc…

【Rails】ArgumentError - Nil location provided. Can't build URI エラーが出たら

エラーで悩んだのでメモ 画像を投稿するページで、画像を選択しないでプレビュー画面を開こうとすると以下のエラーになりました。 エラー画面 ArgumentError - Nil location provided. Can't build URI ArgumentError ArgumentError - Nil location provided…

【RSpec】System Spec

今回の記事の目的 実行するテストケースを限定したいとき 別タブで開いたページをテストしたいとき withinメソッド 確認画面のページ操作したいとき ApplicationHelperで定義したメソッドをRSpecで使いたいとき Updateのテストがうまくいかない。値が更新さ…

【RSpec】System Spec

やりたいこと 前提 実装の流れ Gem導入 SystemSpecファイルの作成 ドライバの設定 モジュールの設定 モジュールを読みこめない… タグの設定 SystemSpecファイルの設定 create_listで連続するテストデータを作成する。 letとlet!の違い エラーが起こったとこ…

【RSpec】モデルスペック

前提 RSpecのセットアップ済 FactoryBot導入済 実現したいこと 既存のTaskモデルのバリデーションをチェックしたい 文法に馴染みがなく、簡単なテストなはずなのに半日くらいかかってしまいました。 分かりにくかった部分だけ、復習していきます。 モデルス…

【読書記録】リーダブルコード

積読を消化していきます。 リーダブルコード リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者:Dustin Boswell,Trevor Foucher発売日: 2012/06/23メディア: 単行本(ソフトカバー) 後半は難しくて流し…

Sorceryを使ってFacebookでログインする

実装の流れ mkcertを使って、SSL通信(https)をできるようにする Facebook for Developersに登録し、アプリのキーやIDを取得する sorceryのwikiに沿って設定 Facebookログイン(クライアントOAuth)の設定 細かいことは、参考にしたブログに詳しいので、自分…

エラー発生時にslackへ通知する

実装の流れ gem exception_notificationの挙動 slack通知設定 credentials.yaml.encの編集 エラーハンドリング設定 Rails.root.joinって…? Pathnameとは 他の分かりにくかったコード renderのオプション エラー 参考にしたもの 実装の流れ gem Slack-notifi…

ransackを使って日付検索&プルダウン選択する

実装したいこと 前提 実装の流れ Controller Custom Predicates ransackのpredicateとは? Arelとは end_of_day View 実装したいこと 掲示板一覧画面に、作成日で掲示板検索できる機能を実装したい 前提 ransack導入済み 実装の流れ コントローラーにransack…

enum_helpでenumをi18n対応させる&ransackのプルダウン検索に対応させる

前提 実装したいこと 実装の流れ Install EnumHelp I18n local file View ransackのプルダウン検索実装 Controller View f.select エラー 参考 前提 enum&ransack&i18n導入済です。 AdminLTEを使って管理者用機能を実装する(トップページ) - Ruby on Rai…

サイドメニューのアクティブ・非アクティブ化

実装したいこと 掲示板関連のページを使用しているときは、サイドバーの「掲示板一覧」をアクティブの状態にしたい。 ユーザーのときも同様。 サイドバー 実装 Bootstrapを使用しているので、例えばこのようにclassにactiveを含めると、アクティブにしてくれ…

管理画面へのログイン機能の実装

実装したいこと 実装の流れ Controller Routing View エラーの記録 実装したいこと 管理者用トップページは前回作成したので、今回は管理画面へのログイン機能を実装していきます。 管理者画面へのログインページを作成 管理者画面へのログインページを使っ…

AdminLTEを使って管理者用機能を実装する(トップページ)

実装したいこと 実装の流れ AdminLTEをインストールする マニフェストファイルの設定 そのため、個別にファイルを読み込む記述に変更しました。 アセット関連の設定 Controller Admin::BaseController作成 Userモデルにadmin判定用のカラムを追加する enumを…

letter_opener_webを使って、開発環境でメールを確認する

環境開発でメールを確認したい letter_opener_webを導入する 動作確認 参考 環境開発でメールを確認したい 前回、パスワードリセット機能を実装しましたが、実際に送信されるメールを確認したいです。 ※既にメイラーは前回実装済。 letter_opener_webを導入…

ransackで検索機能を実装する

掲示板の検索機能を実装したい 要件 ransackを導入する Controller Views urlオプションについて パーシャルを読み込む 参考 掲示板の検索機能を実装したい 掲示板の一覧画面に以下のような検索フォームを配置し、入力したワードを含むタイトルor本文を持つ…

掲示板のページネーション

kaminariを導入し、1ページにつき掲示板を20個表示させたい 現在は全ての掲示板が、1ページに表示されています。 今後、掲示板の数が増えることを考え、見易いようにページネーションしていきます。 ページネーションとは、例えば、1ページにつき一度に2…

開発中にデバッグ情報を可視化する

レイアウトにデバッグ情報を追加する <body> <%= debug(params) if Rails.env.development? %> #ここを追加。 </body> デバック情報が見られるようになる デバッグ情報が、下部に現れる Rails 6.0 対応でプログラミング学習 - Railsチュートリアルrailstutorial.jp

Ajaxでブックマークボタンを実装する

Ajaxとは ブックマーク機能をajaxを使用した処理に変更すると、ページの一部だけ(☆★部分)が更新され、実際の処理はバックグラウンドで行われます。(非同期通信) ★と☆が入れ替わるだけで、実際の処理(ブックマークの追加・解除)はユーザーの見えないと…

掲示板にお気に入り機能を実装する②

前回は、モデルのアソシエーションの設定を終えました。 今回は、ルーティングとコントローラー、ビューの設定です。難しかった。間違っているかも また、各判定の処理はモデルに書いていきます。 ルーティングの設定 resources :users, only: %i[new create…

掲示板にお気に入り機能を実装する①

今回は難しくてかなり詰まってしまいました。復習します。 今回実装したいこと 掲示板を「お気に入り」すると★マーク、「お気に入り解除」すると☆マークに変わる。 「お気に入り」「お気に入り解除」 それぞれで、フラッシュメッセージを表示する。 「お気に…

掲示板の編集と削除機能を実装する

実装したいこと 掲示板画面 掲示板一覧画面と詳細画面にそれぞれ、編集と削除ボタンを表示する。 編集・削除ボタンは、掲示板作成者本人にしか表示されない。 削除ボタンをクリックすると、「本当に削除しますか?」と確認アラートが表示される。 直接URLを…

カスタムヘルパーを使って、タイトルを動的に出力する

ページごとにタイトルを変化させて出力したい タイトルとは、ブラウザのタブ部分に表示されるここのこと↓ タイトル 「掲示板作成 | 固定タイトル」のように、左側部分だけページごとに出力を変えたい 掲示板詳細ページのタイトルは、掲示板のタイトルを表示…