Rails Diary

プログラミングの学習記録です。

PFメモ日記(5) 結局deviseとsorceryどちらがいいのか?

teratail.com 以下回答より 結局はどんな認証にしたいのかによる deviseを使えば簡単な認証機能を作れるが、カスタマイズするためにはdeviseの中身をよく知らないと厳しい sorceryは認証の部品しか提供してくれないためカスタマイズしやすいが、部品同士を繋…

PFメモ日記(4) sorceryの復習

deviseを使おうと思ったけど、せっかくなのでsorceryの復習をしたい。 ※ 内容ごちゃごちゃしてかなり分かりづらいです。 目次 1. sorceryをインストール 生成されたマイグレーションファイルにその他欲しい属性と制約を追加 crypted_passwordとsaltとは? 関…

PFメモ日記(3) railsコマンドが実行できないエラー

deviseを使おうとgemをインストールし、bundle exec rails g devise:installした際に下記のエラーが発生。 Calling DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please callDidYouMean.correct_error(error_name…

PFメモ日記(2) rails new

githubでリポジトリを作り、README作成後、特に何も考えずにrails newしてgit branchが訳分からないことになってしまったのでお作法を元にやり直すことに。。 Rubyは最新版を使用 bundle initから始める(Gemfileが作成される) Railsも原則最新の安定版使用…

PFメモ日記(1) DBからランダムに値を取ってくる

複数ある中からある一つをランダムで出力する機能を作りたい。 課題で作った掲示板アプリの機能を使って以下のメソッドを試してみる。 機能:掲示板に投稿されたコメントの中から一つランダムで出力する sampleメソッド whereメソッド offsetメソッド sample…

Ruby学習まとめ

自販機をシミュレートしたコードを問題点を完全しながら、オブジェクト指向についての考え方を学ぶ。 名前は省略しない 引数にはiとkind_of_drinkが記載されており、このままだとiが何を指すのか分からない。 def buy(i, kind_of_drink) if i != 100 && i !=…

MySQLメモ

M1 Mac MySQLのインストール 課題に際してbundle installしようとするとエラーが出て上手くいかなかったため、調べた自分用メモです。間違った記載が多くあると思われるので、あまり参考にしない方が良いかも知れないです。 ※ 記事を参考にコマンド実行する…

メール機能のRSpecメモ

テスト環境でもメイラーのメソッドが使える? require "rails_helper" RSpec.describe ArticleMailer, type: :mailer do let(:article_publish_wait_tomorrow) { create(:article, :article_publish_wait_tomorrow) } let(:article_published_yesterday) { c…

Rakeタスクとwhenever ※ごちゃごちゃメモ

RubyのMakeコマンド = Rake ■ Makeコマンドとは あるソースファイルから目的のファイルを生成するためのコマンド。 使い方はmakefileというファイルに、ソースファイル名と目的のファイルの生成方法を記述しておき、$ makeとターミナルに入力するだけで、フ…

YouTubeやTwitterの埋め込み

フォームに入力されたURLを埋め込みに使いたい youtube用埋め込みパーシャルのcontent_tagのsrc属性に、フォームから入力されたURLを入れ込む方法を取ろうとするも、ブラウザのyoutube埋め込み箇所には「www.youtube.com で接続が拒否されました。」という表…

例外ハンドリング

github.com エラーは基本的にRailsが勝手にやってくれる Railsが自動的に作ってくれたエラーページはpublicディレクトリの中にあり、Railsのデフォルトの例外ハンドリングでは、例外の種類に関わらず500 Server Errorを表示するらしい。 開発環境でやってい…

検索機能

備忘録というかコードを見ながら思ったことで、非常にぼやぼやしています 検索=ransackみたいな頭の回路になっていた。。 検索フォーム @search_articles_form = SearchArticlesForm.new(search_params) コントローラに↑という記載があったが、SearchArticle…

セレクトボックスの構造

セレクトボックスの初期値(?)を設定したい (画像サイズ・・・) ↑「選択してください」みたいな何も選択していない時の選択肢を設定したい セレクトボックスの構造 <%= f.select :category_id, Category.pluck(:name, :id), { include_blank: true }, class…

テストの書き方における疑問点(メモ)

テストの書き方で疑問だった箇所とその理由 describe '検索機能' do let(:article_with_author) { create(:article, :with_author, author_name: '田中') } let(:article_with_another_author) { create(:article, :with_author, author_name: '佐藤') } # …

FactoryBot 関連データの作成

FactoryBotにおけるアソシエーション belongs_toとhas_many ※ 解釈が合っているか分からない 所属(belongs_to)先を記載する場合はFactoryBotにassociation: author(associationは省略可)みたいに記載すればいい has_manyの場合はassociationによる記載が使え…

雑メモ帳

まとめ方を気にしている余裕がなくなったので、覚書として簡単にメモしておきます。 雑にどんどん追加していきます。 gitでcommit間の差分を出力する 経緯 課題デバッグでHTMLを不必要にいじって表示が乱れてしまったので、どこが原因でおかしくなったのか調…

認可と認証 authorizeメソッド(Pundit)

経緯 課題のアプリ内で使われていたauthorizeメソッドが何のメソッドか分からなかったため少し調べてみた。Punditというgemに搭載されているメソッドらしい。PunditはRubyのgemであり、認可の仕組みを提供してくれる。 Punditをなるべくやさしく解説する - Q…

uuidとは

URLヘルパーにarticleのみ渡したらエラーが出た describe '記事作成で文章ブロックを追加' do let(:article) { create :article } context '文章を追加せずにプレビューを閲覧' do it '正常に表示される' do visit edit_admin_article_path(article) # artic…

パンくずリスト

Webページの上部(?)に表示される現在地の階層みたいな表示のこと。これがあることによって以下のメリットがある。 ユーザーがどのページを読んでいるのか瞬時に分かる Webサイトの検索順位を決める要素を収集するクローラーの巡回を手助けする ↑に付随し、SE…

RSpec作成の流れ

RSpecの作り方の流れをまとめておきたい。 ※ 過去のメモと重複箇所多 テストコードはプロダクトコードに比べると絶対的な正解というのがあまりなく、色々な書き方が存在するので、解答例と寸分狂わずみたいなことを目指さなくて良い。 RSpec スペックファイ…

RSpecメモ(3)

letを使う let(:project) { create(:project) } let!(:task) { create(:task, project_id: project.id) } FactoryBotのファイルにprojectとのアソシエーションを記載すれば、テストデータ作成の際にproject_idを記載しなくても良いものと思っていたけれど、…

RSpecメモ(2) Capybara

qiita.com Capybara Webアプリ用のE2E(end to end…始めから終わりまでテストすること)テストフレームワーク 複数あるドライバ(動作システム)の中から使いたいものを選択できる →Capybaraのテスト実行環境(Headlessブラウザ)を選択 ※ ヘッドレスブラウザ…

RSpecメモ(1)

RSpecを書く際のポイントメモ ■ エラーチェック task = user.tasks.new(title: “”, content: “aaa”, status: :todo) expect(task.valid?).to be(false) expect(task.errors).not_to be_empty expect(task.errors[:status]).to eq [“can’t be blank”] errorが…

JSとDOM

DOM(Document Object Model) ドキュメントを物として扱うモデル。 JSからHTMLにアクセスする仕組みのこと。この仕組みによって文書構造、スタイル、内容を変更することができる。DOMを操作して画面をちょこちょこ変えるのがJSの役割(ただし、ひと昔前の内容…

Procとは

Procとは? Procとはブロックを持ち運びに便利なオブジェクトにしたものです。 ProcはクラスなのでProc.newでオブジェクトを作る事が出来ます。 Proc.newによって作成されたProcオブジェクトはcallで呼び出すことが出来ます。 https://qiita.com/k-penguin-s…

権限のプルダウン(メモ書き)

権限のプルダウンを作るために調べたことまとめ ransack軽く復習 ransackは検索機能を実装できるgem コントローラ # ビューファイルから送られてくるパラメータqをもとにテーブルからデータを検索する # whereメソッドのransack版なイメージ @q = User.ransa…

管理画面を作りたい(メモ書き)

量が多いのでひとまず細かい手順は記載しません。 課題の反省点 タスクを上手く分解できなかった 何をすべきかは分かっていても、どうすべきなのか検討がつかなかった 大まかな実装の流れ yarnでAdminLTE3をインストールする コントローラ、ルーティング作成…

アセットのプリコンパイル

アセット https://wa3.i-3-i.info/word18324.html 「資産」、「財産」といった意味合いの言葉。リソースで良いじゃんと思った。 別にIT用語というわけではないらしい。 railsでは意味をさらに絞ってCSS,JavaScriptなどの静的なファイルに限定しているような…

layout宣言とは

2.2.14 レイアウトの検索順序 | Railsガイド Railsは現在のレイアウトを検索するときに、最初に現在のコントローラと同じ基本名を持つレイアウトがapp/views/layoutsディレクトリにあるかどうかを調べます。たとえば、PhotosControllerクラスのアクションか…

AdminLTEとマニフェストファイルの読み込みについて

マニフェストファイルとは どのファイルを読み込むのか取りまとめたファイルのこと。 HTMLでは、そのページで必要となる読み込みファイルを<head></head>内で読み込んでいる。 CSSファイル、JSファイルはそれぞれ stylesheet_link_tag、 javascrippt_includee_tag という…