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

Rails 「Action Mailer × Gmail × Heroku」でメール送信機能を実装する

Railsアプリケーションでメール送信機能を実装する方法を説明します。 Herokuの本番環境では、SendGridを用いることが多いと思いますが、今回は開発/本番環境どちらもGmailを使って実装します。 なお、HerokuとGoogleのアカウント取得、およびHerokuでのア…

【Rails】flash[:notice]とか書くから、flashのキーはシンボルだと思ってたら「文字列」だった

Railsでの開発中に遭遇した不具合について、原因と解決策を投稿します。 環境 背景 不具合の内容 不具合の原因 解決策 環境 ruby: 3.2.1 rails: 7.0.0 背景 flashを使って以下のようにメッセージを表示していました。 <% if flash[:notice] %> <div class="alert alert-primary"> <%= flash[:n</div>…

【Rails7】.to_iメソッドと||演算子でカート内の商品数が0になる不具合

Railsでセッションベースのカート機能を実装する際に遭遇した不具合について、原因と解決策を投稿します。 環境 背景 不具合の内容 不具合の原因 解決策 三項演算子を使う if文を使う 環境 ruby: 3.2.1 rails: 7.0.0 背景 アプリケーション内にて、商品一覧…

【Rails7】 名前空間付きコントローラにおけるlink_to 削除でRoutingErrorになった

管理者向けの商品削除機能を実施するために、名前空間付きコントローラー(今回のケースではadmin/products)でlink_toメソッドを使用しました。 この際、名前空間の存在を意識せずに実装するとRoutingErrorになったので、原因と解消方法を投稿します。 目次…

【Ruby / Rails】URI.openを使うと、RuboCopで警告が出た

Railsで開発をしている際に、外部から画像データを参照するためにopen-uriを使用しました。 require 'open-uri' image_url = "https://example.com/image.jpg" image_data = URI.open(image_url).read しかし、RuboCopで警告が出たので、最終的にNet::HTTPに…

『現場で使える Ruby on Rails 5 速習実践ガイド』感想ブログ

『現場で使える Ruby on Rails 5 速習実践ガイド』という書籍(以下、本書)に目を通しましたので、その感想を共有させていただきます。 結論 本書は、Ruby on Railsを学びたいと考えている初心者や、基礎を見直したい中級者にとって、非常に有益な内容が詰…

【Rails】newアクションでオブジェクトを作ったのに、なぜcreateアクションでも再度オブジェクトを作るのか

Railsの学習をしていて、newアクションで新規登録用のオブジェクトを作ったんだから、それをそのままcreateアクションで使ってくれよと思ったことがありました。 def create @user = User.new(user_params) if @user.save # 保存成功時の処理 else # 保存失…

Rails 7でのlink_to削除時にturbo_confirmで確認ダイアログを表示する方法

開発中に遭遇した不具合の解消方法を調査したので、備忘録も兼ねて投稿します。 環境 ruby: 3.2.2 rails: 7.0.6 Rails 7での削除リンクの振る舞いの変更 link_toを使用して、掲示板の各項目を削除するリンクを作成する場合、turbo_method: :deleteを使用しな…

Rails7でlink_toを使ったmethod: :deleteのエラーと対処法

開発中に遭遇したエラー(というか不具合)の解消方法を調査したので、備忘録も兼ねて投稿します。 環境 ruby: 3.2.2 rails: 7.0.6 問題の状況 以下のようなコードで、link_toを使用して掲示板の一覧ページから各項目を削除するリンクを作成しました。 <%= l…

Rails link_toメソッドの引数にモデルのインスタンスを直接渡したら、showに遷移できる

開発中にわからなかったことについて調べたので、備忘録も兼ねて投稿します。 環境 ruby: 3.2.2 rails: 7.0.6 概要 link_toメソッドの引数には以下の2つをとります。 リンクのテキスト パスやURL 以下は、ボードの一覧ページから詳細ページに遷移するリンク…

Rails カスタムフォーマットの利用時に「.to_s」メソッドで引数を渡すと発生するエラーの解消方法

開発中に遭遇したエラーの解消方法を調査したので、備忘録も兼ねて投稿します。 環境 ruby: 3.2.2 rails: 7.0.6 概要 以下のコード例のように、config/initializers/配下に定義したカスタムフォーマットをviewファイルで利用する際に、.to_sメソッドで引数を…

(まとめ)REST APIの基礎

REST APIの基礎的な内容についてまとめてみました! 1. RESTについて 1.1 まずWeb APIとは 1.2 RESTの意味と概念 1.3 ROA(リソース指向アーキテクチャ) 2. REST原則 2.1 クライアント/サーバー構造 2.2 ステートレス性 2.3 キャッシュ可能性 2.4 階層シス…

2023年9月に読んでおもしろかった本📗

先月読んでおもしろかった本について、ネタバレにならない程度にざっくりご紹介します! 母という呪縛、娘という牢獄 毒親を持つ子どもの凄惨な人生が辛すぎる1冊 Amazonリンク 「娘(あかり)が母親を殺害し、その遺体をバラバラにして遺棄」。2018年3月、…

『達人に学ぶDB設計 徹底指南書』感想ブログ

『達人に学ぶDB設計 徹底指南書』という書籍(以下、本書)を読み終えたので、その感想を共有したいと思います。 結論 本書は、データベース設計をしてみたいと考えている初心者の方にとって、非常に価値ある一冊であると感じました。 特に、美しい論理設計…

『スッキリわかるSQL入門 第3版 ドリル256問付き!』感想ブログ

『スッキリわかるSQL入門 第3版 ドリル256問付き!』(以下、本書)という書籍でSQLの学習を行いました。 こちらのブログでは、その感想をまとめてみたいと思います! 結論 良かったところ 1. 実際に手を動かしながら学べる 2. 初心者向けの配慮 3. 練習問題の充…

Ruby コマンドラインで指定したオプションや引数を扱う「optparse」ライブラリ

1. optparseを使う場面 コマンドラインツールを使用する際、さまざまなオプションや引数を指定する必要があります。 たとえば、自分が作成したRubyのプログラムで、次のように特定のオプションを使用して情報を渡したい場合が考えられます。 $ ruby hello.rb…

プロを目指す人のためのRuby入門[改訂2版]: 読書感想

本記事では『プロを目指す人のためのRuby入門 改訂2版 言語仕様からテスト駆動開発・デバッグ技法まで』という本について感想を共有したいと思います。 結論 この書籍はRubyに関するものです。 多くのメソッドや技術に関する情報を網羅しています。 著者は「…

Rubyにおけるメソッド探索のルール

Rubyでは、特定のメソッドを呼び出すときに、そのメソッドがどのモジュールやクラスで定義されているかを探索します。 この探索の順番は非常に重要で、Rubyにはそれに関する独自のルールがあります。 本記事は以下の書籍の内容を参考にしています。 参考:プ…

Ruby クラスやモジュールで`puts`や`p`が使えるのはなぜか

本記事ではRubyのクラスとモジュールで、なぜputsやpメソッドが使えるのかを簡単に紹介します。 基礎:クラスとモジュール 1. クラス Rubyにおいて、クラスはClassクラスのインスタンスです。 例として、MyClassという新しいクラスを作成し、MyClassが何のク…

Rubyのテスティングフレームワーク「Minitest」の基本

プログラムを安全に運用するためには、テスティングフレームワークを使った自動テストが不可欠です。この記事では、Rubyで簡単にテストを実行できる「Minitest」の基本的な使い方についてまとめます。 参考:プロを目指す人のためのRuby入門[改訂2版] 言語仕…

Ruby 変数オブジェクトへの「参照」についての基本

Rubyでは、変数はオブジェクトへの「参照」を保持しています。 参照とは、変数がデータそのものを直接保持するのではなく、データが保存されているメモリ上の位置(オブジェクト)を指し示す仕組みのことです。 このため、一つのオブジェクトに対して複数の…

Docker ComposeでRailsアプリケーションの開発環境を構築する方法

はじめに Dockerを使用すると、アプリケーションの開発環境を簡単かつ効率的にセットアップすることができます。 本記事では、Docker Composeを使ってRailsアプリケーションの開発環境を構築する手順を詳しく解説します。 はじめに この記事でわかること 前…

あ、別のブランチで作業してしまった!時の対処法

はじめに Gitを使って開発をしていると、時々「あ、ブランチ変えるの忘れてた」という状況に遭遇することがあります。 そういった時にどう対処すればいいのか、具体的な手順を共有します。 問題の設定 例えば、main ブランチで作業している最中に、実はこれ…

完全未経験者がプログラミングスクール「Happiness Chain」に入った背景と入会して1ヶ月間の感想

2023年7月末にプログラミングスクール「Happiness Chain」(以下HC)に入会してからおよそ1ヶ月が経過しましたので、 HCに入るまでの経緯や1ヶ月勉強した感想などをブログにまとめました。 私自身、入会する前にHCの生徒さんが執筆されたブログを参考にした…

【CSS】 アスペクト比を固定した背景画像の設定方法

CSSを使って背景に画像を設定する際、その画像のアスペクト比(縦横の比率)を変えずに表示したいことがよくあります。 今回は、ぞれを実現する2つの手法「aspect-ratio」と「padding-top」を紹介します。 1. aspect-ratio を使用した方法 aspect-ratio は、…

【初心者向け】GitHub Pagesでサイトを公開する方法

はじめに プログラミングを始めた方は、GitHubというツールについてよく耳にすると思います。 GitHubはソースコードを管理・共有できるツールで、開発には欠かせません。 そんなGitHubには「GitHub Pages」という機能・サービスがあり、GitHubのリポジトリに…

基礎的なWeb技術用語

『プロになるためのWeb技術入門』――なぜ,あなたはWebシステムを開発できないのかを参考に、基本的な技術のいくつかをピックアップしてご紹介します。 ステートフル ステートレス リクエスト レスポンス クッキー プロトコル ポート番号 ステートフル ステー…

Linux 基本的なコマンドまとめ

cd pwd ls mkdir rmdir cat less 一般的な操作キー tail touch rm mv cp ln ハードリンク シンボリックリンク find chmod chown ps kill cd Change Directory の略。 ディレクトリを移動するコマンド cd /home/user cd ..で一つ上のディレクトリに移動する。…

Vimに初めて触れてみた

Vimに初めて触れてみた 未経験でプログラミングスクールに通い始めて3週間弱、初めてVimについて学習した感想です! 目標 Vimとは何かを知る 少し使ってみる 学習したコンテンツ 知識0から始めるVim講座 Vimって何?プログラミング言語?テキストエディタ?…

「検索練習」でメモの読み返し苦手を克服!Notion&ChatGPTで効率よく学習する方法

解決したい課題 勉強をする時、多くの人がノートやメモを取ると思います。 私もその一人で、勉強した内容をちゃんと覚えるために復習が本当に大切だと確信しているものの、 自分のメモを後から読み返すのが非常に苦手です。(気持ちの問題なんですが...) メ…