Rails関連のことを調べてみた2023年04月06日

Rails関連のことを調べてみた2023年04月06日
目次

Rails初心者の僕がRails6でActive Storageを使用し、漫画投稿アプリを開発してデプロイした過程(設計編)

※この記事は以前別アカウントで投稿した記事の移行版です。別アカウントを削除するにあたって移行しました。

## 設計編に入ります
みなさんこんにちは、Rails初心者のほまりんです。[前回の環境構築編](https://qiita.com/homarinn1230/items/34468b61c6a91988ca55)はお読みになられたでしょうか。もし未読かつ興味のある方は、是非ご一読なさってください。それではこれより、設計編に移らせていただきます。

## 今回のアプリの全体像
実際の設計に入る前に、まずは今回のアプリの説明をさせていただきます。記事のタイトルでは漫画投稿アプリと題しておりますが、今回私が作りたかったのは「小説・イラスト・漫画」の三種類が投稿できるサイトです。つまりは「pix◯v」みたいなものですね。更に、ユーザー間でメッセージのやり取りができるようにもしたかったです(なるべく早くデプロイに移りたかったので、現在、メッセージ機能部分は未実装)。どうしてそのようなサイトを作成したかったのかは、説明が長くなるのでまた今度話させていただこうと思います。

## いざ設計へ

元記事を表示

Rails初心者の僕がRails6でActive Storageを使用し、漫画投稿アプリを開発してデプロイした過程(開発環境構築編)

※この記事は昔別アカウントで投稿した記事の移行版です。別アカウントを削除するにあたって移行しました。

## まず初めに
みなさんはじめまして、ほまりんと申します。初めてQiitaに記事を投稿します。今回は開発からデプロイするまでの全ての流れを、浅く、しかし丁寧に書いていくつもりをしているのですが、開発中、余裕がなく一切記録を取っていなかったため、曖昧なところや忘れている箇所が非常に多くありますがご了承ください(特にターミナルで入力したコマンドやエラー文)。なるべく僕のような初心者向けに書こうと思っております。困っている方の助けになれると幸いです。

## 本記事の構成
記事はいくつかに分けて投稿するつもりをしています。一つにまとめるにはあまりにも膨大だからです。今回は開発環境を諸々整えるところまで書きます。

## Rails6 とMySQL8.0を使おう
そう思ったのが苦労の始まりでした。ていうかMySQL8.0です。T◯◯H::EXPERTでは、MySQL5.6を使って開発を進めるのですが、5.7以降の方がユーザー名の文字数制限が長かったりと何かと都合が良く、更に8.0はめちゃく

元記事を表示

Docker環境でログデバッグするらなば、docker logsを使ったほうが楽

# 結論
ログデバッグするならば以下のコマンドでデバッグするほうが楽
“`bash
docker logs -f [コンテナ名]
“`

# よくやりがちなこと
コンテナにログインして以下のコマンドでログ監視します。
“`bash
tail -f log/development.log
“`

この場合、development.logに出力するために以下のようにログ出力を仕込みがちです。
“`ruby
Rails.logger.debug(“ああああ”)
“`

# dockerのほうがなぜいいのか
`Rails.logger.debug`と書くのがとにかくめんどくさい。
標準出力に出力するだけなら `pp` を使えば十分です。
docker logsは標準出力を表示してくれるので、ホスト側でdocker logsをすると、以下のようにログを仕込めばログデバッグできます。

“`ruby
pp “ああああ”
“`

考えれば当たり前なんですけど、はっと思いつきました。

# 補足
VSCodeだったら右クリックでサクッとdocker logsできます。
[![Ima

元記事を表示

READMEについての備忘録

## 今回の目的

こんにちは!ももぞうです。
今回はREADMEについて自身の備忘録を記載します!

では早速いきましょう〜

## README(リードミー)とは何か?

結論から述べますと取扱説明書です。

読んで字の如く「読んで、私を。」です。。笑
分かりにくいかと思うので、もう少し細かく説明します。

READMEは自身が作ったアプリケーションについて、
どんなアプリか?、何を目的に作ったのかなどを記すものです。

このREADMEは基本的に`アプリケーションを作成した際にすでに作成されています。`

特にポートフォリオを作成される方は、
自分のアプリケーションについての重要な取扱説明書になりますので、
しっかりと記載を進めていきましょう!

## まとめ
いかがでしたでしょうか?

今回はREADMEの概要について記載をしました。

次回以降は詳細の書き方(マークダウン技法)なども紹介できればと思います!

それではまた!!

元記事を表示

開発環境をDocker化 Rails 6 x PostgreSQL

# Railsの開発環境をDocker化
Docker、docker-composeで既存のRailsアプリをDocker化する方法についてまとめてみます。

### バージョン
– ruby 3.0.2
– rails 6
– node 14.19.1
– postgres 15

### 1. Dockerfileの作成
今回はnodejsやyarnのインストールに`apt-get`ではなくマルチステージビルドを利用します。
少しですがビルドの時間を短くし、イメージサイズも小さくするためです。
“`docker:Dockerfile
FROM node:14.19.1 as node
FROM ruby:3.0.2

ENV YARN_VERSION 1.22.17
COPY –from=node /opt/yarn-v${YARN_VERSION} /opt/yarn/
COPY –from=node /usr/local/bin/node /usr/local/bin
COPY –from=node /usr/local/lib/node_modules /usr/lo

元記事を表示

【Rails】オプションを使ってスマートにバリデーションを記述する!

## はじめに
私は普段Ruby on Railsで開発をしているのですが、その中でRailsのActive Recordの持つバリデーション機能をよく使います。
先日改めて公式ドキュメントを読んだので、以前の自分に対する自戒を込めて、オプションについて紹介したいと思います。

## 知らないともったいないオプション
以前の私は、安易にvalidateメソッドを使用している事がありました。とてもシンプルなバリデーション(存在チェックするだけ、文字数チェックするだけ、数値チェックするだけなど)以外は全部validateで書けばいいじゃん!と思っていました。しかし、validatesメソッドを用いることで、無駄に独自バリデーションメソッドを書かずに済むし、読む方も分かりやすいし、いいこと尽くしです。そして何より、Railsを使ってるのに用意されたオプションを使いこなしてないのは、とてもダサい…。ということで、以前の自分ならvalidateメソッドで書いてたかもしれないバリデーションをちゃんとvalidatesで書く場合に使えるオプションを紹介します。

– `:if`オプション

元記事を表示

Railsフォームビルダー

form_withメソッドの使い方

“`rb:form_withメソッドの使用例
<%= form_with model: @user, url: :registration do |f| %>
<%= f.label :name, "名前" %>
<%= f.text_field :email %>
<%= f.submit "送信" %>
<%= end %>
“`

::: note info
フォームビルダーに備わっているメソッド
ブロック引数 f はフォームビルダーと呼ばれます。
このオブジェクトのメソッドを呼び出すと、フォーム上に部品が生成されます。先程の例では、
3つのメソッドを用いてボタンを生成しています。

label・・ラベル
text_field・・テキスト入力欄
submit・・・送信ボタン

[フォームビルダー用のメソッドのリスト]
https://api.rubyonrails.org/classes/ActionView/Helpers/FormBuild

元記事を表示

Railsのconfigファイルの書き方

Railsの設定を変更する事があります。
既存のconfigファイルを書き換えたり、新たにconfigファイルを作成し設定を書き加えたりなどです。

ここではconfigを書く場所、書き方について簡単に書き残します。

## 初期化コードの置き場所
> 初期化コードの置き場所が4箇所あります。
>
> * config/application.rb
> * 環境ごとの設定ファイル
> * config/initializerファイル
> * after_initializerファイル
> このフックは、アプリケーションの初期化が完了し、
> かつconfig/initializers以下のイニシャライザが実行された後に実行されます。
>
> [Rails Guidesより(日本語版)](https://railsguides.jp/configuring.html)

## configの記述例
“`rb:config/initializers/action_view.rb(新規作成)
# form_withはリモートフォームを使用しない為、普通のフォームを作るよう設定変更する

元記事を表示

redirect_toとrenderの違い

# 目次
[redirect_toについて](redirect_toについて)
[renderについて](renderについて)
[まとめ](まとめ)
[最後に](最後に)

# redirect_toについて
処理の流れ
1. redirect_toがルーティングにURLを送る
1. ルーティングに送られてきたURLとHTTPメソッドを照らし合わせて、どのコントローラのどのアクションを実行するかを決める
1. アクションを実行する
1. ビューを表示する

「**ブラウザにURLを打ち込む代わりにredirect_toで画面が遷移できる**」という感じ!

# renderについて
処理の流れ
1. renderで定義したビューファイルを表示する。

renderは直接ビューファイルを表示させている。
そのため画面の遷移はなく、**表示されているHTMLが入れ替わるのみ!**

# まとめ
– redirect_toはアクションを実行する
– renderはアクションを実行しない
– ビューは自身が呼び出されたアクション内からインスタンス変数を参照する
– renderを使う際、ビュ

元記事を表示

Rails – APIモードだがBasic認証を使いたい

`ActionController::HttpAuthentication::Basic::ControllerMethods` をincludeすれば良いようだ

“`rb
class ApplicationController < ActionController::API include ActionController::HttpAuthentication::Basic::ControllerMethods before_action :basic_auth private def basic_auth authenticate_or_request_with_http_basic do |username, password| username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] end end end ``` # チャットメンバー募集 何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

元記事を表示

【備忘録】SSL証明書、更新の手順(Let’s Encrypt)

# はじめに
– 本記事は、備忘録としてまとめたものになります。
– 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
– また記載内容はすべて、正しい内容が記載されているとは限りません。
– 誤った内容を見つけた場合は、ご指摘をお願いいたします。

# この記事は誰向けの記事か?
– Let’s Encryptの証明書の有効期限が切れてしまい、更新したい管理者
– Let’s Encryptを使用したアプリケーションへアクセスできない状態になっている管理者またはユーザー

# 背景
– Techcampにて作成したアプリをSSL化するために、Let’s Encryptを使用した。
– しかし突然、アクセスすることができなくなってしまったため、調査と対処を行なった。

# 運用環境
以下はアプリへアクセスする際に使用していたブラウザの詳細になります。
– OS:macOS 13.1(22C65)
– ブラウザ:Google Chrome バージョン: 111.0.5563.146(Official Build) (arm64)

以下はアプリ/サーバー環境の情報になりま

元記事を表示

[Rails]基本コマンドの紹介について

## 今回の目的

こんにちは!ももぞうです。
今回はRailsの基本コマンドについて紹介します。

これまではRailsのGem等を紹介してきましたが、
基本コマンドについて紹介出来ていなかったので記事を投稿します。

## 基本コマンドの紹介
– `Railsアプリケーションの作成`
→Rails内でアプリを作りたいとき

“`
$ rails new アプリ名
“`

– モデルを作成する
“`
$ rails g model モデル名
“`

– コントローラーを作成する
“`
$ rails g controller コントローラー名
“`

– `rails db:migrateの実施`
→モデルなどを作成した後には必須コマンドです。

“`
$ rails db:migrate
“`

– `migrateステータスの確認`
→このコマンドで現在のファイルのステータスを確認することが可能です。
→「down」であれば「up」にする必要があります。
→「up」であれば「db:migrate」は無事に完了しています。

“`
$ rails db:mig

元記事を表示

[有料級] Rails7(Turbo), Docker, Bootstrap5を使ったtodoリストの作り方③ (Todoリスト準備編)

## 前回のあらすじ
前回は環境構築編で環境を構築していきました
[[有料級] Rails7(Turbo), Docker, Bootstrap5を使ったtodoリストの作り方② (Bootstrap5導入編)](https://qiita.com/streasure0426/items/fe3ae095ab1920dd3e56)
今回は本当にBootstrapが導入できているか確かめるところから始めたいと思います。

## 事前準備
Dockerを一度止めている方はこちらのコマンドでDockerを起動し、コンテナに入りましょう。
“` bash
docker-compose up -d
docker-compose exec app bash
“`

## こちらの記事をスキップしたい方へ
これからTodoリストを作るのですが、作り方がわかる方はこちらのコマンドを打ってすぐに終わらせましょう!
“` bash
rails g scaffold Todo title:string description:text
rails db:migrate
“`

こちらのコマンドを打つ

元記事を表示

docker-composeのdockerコンテナ内でファイル操作する

docker-composeを使っている案件でrubocopをどうやって動かすのかわからなかったのでChatGPTさんに教えてもらいました

![スクリーンショット 2023-04-04 14.26.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70195/02e2f245-059d-4d2b-93d9-1bd1a5fb266c.png)

これdockerだ・・・
より深く質問

![スクリーンショット 2023-04-04 14.27.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70195/67e6ca12-8c2f-358e-9968-fe8103bbe6fa.png)

こちらを参考に自分の環境でrubocopを動かします

1: Docker Composeプロジェクトのルートディレクトリに移動します。

“`
cd /path/to/docker-compose/project
“`

2:

元記事を表示

Render.comへrails appをdeploy

## Render.とは?

簡単に言うとRender.comはherokuのようなweb hosting serviceです。

Herokuの無料プラン提供終了に伴い、学習用に無料で使用できるサービスを探していく中で良さそうだなと思ったので試してみました。

とは言え後で分かったなのですが、DBは作成後90日間無料で使用できますがそれ以降は2週間以内に有料プランに移行しないと削除されてしまうという事なので注意が必要です。

## 投稿の目的

率直に言うと自分の理解を深めるのが一番の狙いですが、Render.comへのdeploy方法の記事は存在しているもののまだまだ情報が少ないと感じたので参考になる方がいるかもしれないと思い投稿してみました。私が以前deployした時に詰まったところも共有できたらと考えています。

以下の動画でStripeをRailsに実装する方法を学習していく中でherokuへdeployする必要があったのですが、学習用に有料サービスは使いたくないと思い無料で使えるRender.comにdeployする事にしました。

https://www.youtube.

元記事を表示

最近の進捗について

### 今の自分について

たまには、今の現状でも日記のように書こうと思い立ちました。RubyonRailsを只今勉強中ですが、中々難しい。ディレクトリをあちこちと移動するのでかなり混乱しています。また、HTML/CSS/Rubyが混ざり合い更に分からなく(涙)
自分にはまだ早いのか?いや、根本的に基礎が足りないのか。と考えました。
なのでとりあえずは、全体要素を掴む為にrubyの基礎を固めに専念しようと思います。。

### 今後の課題について
– Rubyの基礎固めをする
– Webの仕組みについてもう少し学習をする
– とりあえず、既に完成しているコードを真似して書く。

こんな感じで、数週間はやっていこうかと思います。

元記事を表示

Ruby on RailsでJSONパーサーAPIを作ってみる。

# はじめに

[naritomo](https://twitter.com/naritomo08)と申します。

本職はインフラエンジニアを行っています。
これまでアプリ領域の技術習得のため、各種言語の開発環境Dockerの構築を行ってきましたが、Railsでのアプリ第一号を作ってみましたので、公開したいと思います。

いろいろアドバイスいただけると嬉しいです。

## 開発概要

以下の仕様とします。

* API稼働フレームワークはRuby on Railsを使用する。
* API入力は、以下のものを入力する。
– URLにクエリでJSONキーを指定する。(?key=key1)
– POSTボディーにJSONデータを入れる。
* API出力は以下のものとする。
– クエリで指定したJSONキーに対応した値をプレーンテキストで出力する。

## 事前準備

以下の記事を参考にRuby on Rails開発環境を構築してること。
Railsサイトを参照できること。
プロジェクトフォルダ(src)に移動する。

https://qiita.com/naritomo08/it

元記事を表示

【Rails】未経験者が非同期処理でコメント投稿を実装〜変数の再宣言エラーを解決するまで〜

## はじめに
 初めまして、未経験からエンジニアへの転職を目指しているrkyと申します。

– 日々、学習したことを振り返ることで理解を深めたい
– 客観的に見てもらうことで間違いに気づいたり、より良い手段を知りたい
– 知識は浅いが、初学者の方と同じ目線で記事を書くことで、少しでも力になりたい

 上記の理由から、Qiitaへの記事投稿を始めることにしました。よろしくお願いします。

## 概要
【学習歴】
Ruby・Ruby on Rails・javascript
9月末から学習を始め、まだ400時間ほどの学習時間です。
学習ツールは
Porogate(HTML・CSS)
デイトラWEBアプリ開発コース(Javascript Ruby Rails)
書籍(スラスラ書けるjavascript・現場Railsなど)
を使用しました。
現在は学んだことを使いながら、ロードバイクのコース共有アプリを作成中です。

【開発環境】
Rails 6.0.6.1
ruby 2.6.5
rails/webpacker 4.3.0
エディタソフト VScode
htmlはerbではなくhamlで書

元記事を表示

Rails – 今更だけど credentials.yml.enc / secret_key_base の扱いがよく分かってなかった

# つながり

– `credentials.yml.enc` でどんな値でも暗号化/複合できる
– `master.key` の値で `credentials.yml.enc` を複合出来る
– `secret_key_base` は秘密情報なので `credentials.yml.enc` に含めておくのが良い

ということらしい

# rails new

そもそも rails new した時に

– `config/credentials.yml.enc`
– `config/master.key`

がセットで生成されるようだ

`master.key` はただ復号用の値を記録しただけのファイルなのだが、この値があれば `credentials.yml.enc` を複合したり編集したり出来る

だが `master.key` は `.gitignore` に含まれているので git操作で消えている場合もあるだろう

# 編集

`bin/rails credentials:edit` でファイル編集が出来るはずなのだが怒られた

– `master.key` がないので

元記事を表示

[Rails] バリデーションを日本語化にする方法について!

## 今回の目的

こんにちは!ももぞうです。
今回はバリデーションを日本語化する方法について紹介します。

5分程度で完了するかと思いますので、
ポートフォリオ等にぜひ採用してみてください!

## 実装手順について

まずは下記をgemfireに追記します。

“`
gem ‘rails-i18n’
“`
上記のgemを記載することにより、
メッセージを日本語化することが可能です。

しかしカラム名は英語のままだと思うので、
config/locales/ja.ymlに記述します。

“`
ja:
activerecord:
attributes:
board:
name: 名前
title: タイトル
“`
ここでテーブル名とカラム名は、
ご自身のアプリで使用しているものを記載して下さい。
※今回はboardとname、title

バリデーションの日本語化はこれで完了しました!

## まとめ

いかがでしたでしょうか?
今回は日本語化する方法を紹介させて頂きました。

それではまた!!

元記事を表示

OTHERカテゴリの最新記事