Rails関連のことを調べてみた2022年01月05日

Rails関連のことを調べてみた2022年01月05日
目次

Rails7を試す

Rails7がリリースされたので、ざっくり立ち上げまで試してた。

https://edgeguides.rubyonrails.org/7_0_release_notes.html

## Rail7をインストール
“`bash
$ mkdir trial-rais7
$ cd trial-rais7/

# rubyのバージョンを2.7以上にする
$ rbenv local 2.7.2
$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]

$ touch Gemfile
“`

Gemfileを以下のように作成する

“`txt:Gemfile
source “https://rubygems.org”
ruby “2.7.2”
gem “rails”, “~> 7.0.0”
“`

“`bash
$ bundle install

$ rails -v
Rails 7.0.0
“`

## Rails7プロジェククトを構築

“`bash
# mysql2のイン

元記事を表示

【Ruby on Rails】データベースを削除する方法

こんにちは!安田駿介です!

今回は「Railsでデータベースを削除する方法」というテーマで解説していきます。

# ターミナルで「rails db:migrate:reset」と入力する

これだけですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1903726/74424c26-09c3-a93b-1a9a-d9846f44a29b.png)

という結果になります。

#開発環境
・Cloud9
・Ruby 3.0.0
・Rails 6.1.3.1
・MySQL2

元記事を表示

Ruby on Railsを基本からまとめてみた【1】【概要と特徴】

##Ruby on Railsとは

Ruby on Railsはプログラミング言語「Ruby」で利用される代表的なフレームワーク。

##フレームワークとは

システムを開発するために必要な機能がまとまったものをフレームワークと呼ぶ。
文字通り「枠組み」を表し、システム開発がより簡単に行えるように便利なプログラムがひとまとまりとなったシステムを指す。

##Ruby on Railsの特徴

####MVCアーキテクチャー
Ruby on Railsは、MVCアーキテクチャーの基づいたフレームワークである。
データベースとのやり取りやビジネスロジックなどを担当するモデル(Model)、ブラウザへの表示を担当するビュー(View)、モデルやビューへの指令を与える役割としてのコントローラー(Controller)それぞれの頭文字を取ってMVCアーキテクチャーと呼ばれる。

MVCアーキテクチャーによって、機能毎の独立性が高く、開発効率・保守性ともに高いアプリケーションを構築することが可能である。

####CoC
Convention over Configurationの略称で、日本語

元記事を表示

railsチュートリアル rails serverでエラー Blocked host:〜

#railsチュートリアルの1.3.2rails serverのところで一瞬詰まったのでメモ

まずこの1.3.2ではrails serverというコマンドを実行するだけでRailsアプリを実行できるよーというお話。

コマンドを実行する前にローカルWebサーバーへの接続を許可する必要があるので
config/environments/development.rb
のconfig.file_watcherの下の行に

“`
config.hosts.clear
“`
を追加

別ターミナルを開いてrails serverを実行しプレビューで確認すると
Blocked host:〜
というプレビュー画面が表示されてしまった。

#解決方法
ターミナルの画面で

“`
$ rails server
Could not find gem ‘puma (= 4.3.6)’ in rubygems repository https://rubygems.org/ or installed locally.
The source contains the following vers

元記事を表示

Railsプロジェクトの作成からHerokuにデプロイするまで

Rails newコマンドによって新しく作成されたアプリケーションをHerokuにデプロイするだけなのですが、ハマったので備忘録として記載します。

かなり基本的な所からの内容になりますが、エラーに振り回されながらでしたので、同じ過ちを繰り返さないように起きたことをそのまま順序立てて書いていきます。

基本的にはRailsチュートリアルの順序通りですが、そのままこなそうとするとエラーになったりするので、工夫します。

開発環境
mac OS バージョン11.6
エディタ
VScode

デスクトップに空のファイルを用意し、VScodeにドラッグ&ドロップ。ファイル名は何でもいいですが、ここではport-forioにしました。

ここからはVScodeのターミナルで操作します。

“`
$ Rails new アプリ名
“`

これでRailsプロジェクトが作成されます。ここではアプリ名をsampleとします。

“`
$ cd sample
“`
プロジェクトが作成されたら、まずはコミットしておくといいです(以降に変更を加えたときに、どの部分が変更されたのかわかるため)

元記事を表示

【Rails7】Railsで数値を3桁で区切る

Rails で数値を3桁区切りにする際のメソッド名が変更された。

### before

“`ruby
to_s(:delimited) # TypeError: no implicit conversion of Symbol into Integer
“`

### after

“`ruby
to_formatted_s(:delimited)
“`

変更の理由としては、Ruby 3.1では `to_s` のカスタム実装がない場合に高速化がされるが、Railsは多くのコアクラスで `to_s` をオーバーライドしており高速化が無効になってしまうため。

## 外部リンク

### 変更のPR

[Deprecate to_s(format) in favor of to_formatted_s(format)](https://github.com/rails/rails/pull/43772)

### 検索上位記事

https://qiita.com/wacker8818/items/cc213ba3ce72891dfb23

https://qiita.com

元記事を表示

[個人開発] 普段コンビニ食品を食べているが、成分が気になる方へ向けてのサービス 「healthy-combi」を開発しました。

## サービス概要

コンビニ食品をよく摂取するが、炭水化物・脂質・塩分が気になる人へ。組み合わせ食品を共有するアプリです。

URL: https://www.healthy-combi.com/
GitHub: https://github.com/takuya178/healthy-combi

[![Image from Gyazo](https://i.gyazo.com/ca8957b0455b3b00f02595e053678469.jpg)](https://gyazo.com/ca8957b0455b3b00f02595e053678469)

炭水化物、脂質、塩分から控えたい成分を選び、麺類とご飯類から食べたいジャンルを選んでいただきます。
選んでいただいた条件から組み合わせ一覧が表示され、控えたい成分とカロリーの値が表示されます。

## サービスを作成した背景

薬局の従業員の健康改善を目的に作成させていただきました。

そのため薬局の従業員の方達にMVPを定期的に見ていただき、サービスの修正や機能の追加を実装することができました。(本当にありがとうございました

元記事を表示

【Rails】ページ毎にタイトルを変更する方法

##content_forを使ってタイトル名を変えていく
“content_for“というヘルパーを使って**「ログイン(ページ名) | SAMPLE BOARD APP(固定タイトル)」**と出力するやり方を見ていく。

**手順**
①application_helperにヘルパーメソッドを記入
②viewにタイトルを入れていく

##①application_helperにヘルパーメソッドを記入

“`application_helper.rb
module ApplicationHelper
def page_title(page_titlle = ”)
def page_title(page_title = ”)
base_title = ‘SAMPLE BOARD APP’

page_title.empty? ? base_title : page_title + ‘ | ‘ + base_title
end
end
end
“`

“page_t

元記事を表示

Web3層構造とWebサーバー・アプリケーションサーバーについて

# Webアプリケーションの3層構造

> Webアプリケーションはユーザインターフェースとなるプレゼンテーション層(Webサーバーが担う)、業務処置を行うアプリケーション層(APサーバーが担う)、データ処理や保管を行うデータ層(DBサーバーが担う)の3層構造となっている。
https://qiita.com/mk185/items/e914683410fd4ecaf0af

– [WEBサービスとWEB3層構造について](https://nari104.hatenablog.jp/entry/2016/06/05/000004)
– [Web技術の基本 ~Webアプリケーションの構造~](https://qiita.com/mk185/items/e914683410fd4ecaf0af)
– [なぜ、Webサーバが必要か説明できますか?](https://qiita.com/gen10717913/items/a2620579e61449acae3e)
– [ミドルウェア(Web、AP、DB)について知ろう](https://thinkit.co.jp/article/11837)

元記事を表示

【Rails】rails sができなくなった時の対処

##背景
“rails s“実行中にエラーが起き、“⌘+C“で終了出来なかったため、“⌘+Z“で強制終了し、再度起動すると

“`ターミナル.
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
A server is already running. Check /Users/ユーザー名/projects/test/tmp/pids/server.pid
Exiting
“`

と上記のようなものが出た。
“/Users/ユーザー名/projects/test/tmp/pids/server.pid“はサーバー起動する際に使用しているID。本来であればサーバーを終了したら、このIDも削除されるはずだが、今回のような強制終了により、IDが残ってしまうことがある。

##解決策
本来は自動で削除されるであろうこのIDを手動で消してあげれば、解決する。

**手順**
①server.pi

元記事を表示

【 Rails】30分で作る定期通知LINEbot

##はじめに
決まった時間に任意のメッセージを送信するLINEbotを作っていきます。
こちらが返事をすると、さらにメッセージが送られてきます。

####使用技術
– Ruby
– Rails5
– PostgreSQL
– Heroku
– LINE Messager API

##手順
まずLINE Developersコンソールで各種設定を済ませます。
次にRailsで新プロジェクトを立ち上げます。
ローカルで動作が確認できたら、Herokuでデプロイします。
最後に定期実行の設定をして完了です。

##LINE Developers
ログインしたらプロバイダとチャンネルを作成します。
ユーザーIDとチャネルシークレット、チャネルアクセストークンを控えておきます。
最初の二つはチャンネル基本設定、あとの一つはMessaging API設定の項目にあります。
詳しいやり方は[ドキュメント](https://developers.line.biz/ja/docs/line-developers-console/)で確認できます。

##Rails
####アプリを作る
通常のアプリ

元記事を表示

【Rails】コメント機能のparamsにmergeの意味を調べた

コメント機能の実装する際に、comments_controllerにて以下の記述を行なった。

“`comments_controller.rb
class CommentsController < ApplicationController def create comment = current_user.comments.new(comment_params) if comment.save redirect_to board_path(comment.board),success: t('.success', item: Comment.model_name.human) else redirect_to board_path(comment.board),danger: t('.fail', item: Comment.model_name.human) end end def destroy comment = current_user.comments.find_by(id: param

元記事を表示

rails7へのバージョンアップを安全に行うために使用するnew_framework_defaults_7_0.rbの各項目をさらっと解説

# new_framework_defaults_7_0.rbとは

railsバージョンアップの工程で、`rails app:update`コマンドを実行すると、`config/initializers/new_framework_defaults_7_0.rb`と言うファイルが作成されます。
このファイルにはrails6.1から7.0へのバージョンアップにおいて変更されるアプリケーションの設定値が書かれています。
設定値毎にコメントアウトを外していくとその箇所だけ新しい設定に変更できるので、部分的に変更を行うことが可能です。

# 使い方

**1. `config/application.rb`で`config.load_defaults`を`6.1`に指定しておく**

railsのgem自体は7.0をインストールしておきますが、`config.load_defaults`を`6.1`に指定しておくことで設定は6.1の値を読み込む様にしておきます。

**2. `config/initializers/new_framework_defaults_7_0.rb`のコメントアウト

元記事を表示

「heroku run rails db:migrate:reset」時に発生したエラーを対処

# 状況

Heroku上のRailsアプリDB(PostgreSQL)を修正しようと`heroku run rails db:migrate:reset`を実行したところ下記のエラーが発生しました。

“`irb
rails aborted!
ActiveRecord::ConnectionNotEstablished: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: No such file or directory
Is the server running locally and accepting connections on that socket

Caused by:
PG::ConnectionBad: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: No such file or directory
Is the server running lo

元記事を表示

Railsで条件に一致する要素の個数を数え上げる時のコードのリファクタ例

railsで作られているアプリで、countを使用する機会があったので、具体例として書きました。
countを知らない人はググってみてください。

“`ruby
class User
has_many :qualifications # 資格証
end

class Qualification
has_one_attached :image # 画像
end
“`
例えばこんなクラスがあったとして、あるuserが持っているqualificationsのうち、
imageが添付されているものの個数を数えたい場合を考えます。

私はまず以下のように書きました。

“`ruby
attached_count = 0 # 添付されているものの個数を入れる変数
user.qualifications.each do |qualification|
attached_count += 1 if qualification.image.attached?
end
“`
このコードでも、あるuserの、imageが添付されているqualification

元記事を表示

【Rails 6】1つのコントローラー、ビューで複数モデルに対応した汎用性高めのCSVインポート機能を作る

## 概要

先日、Rails でとあるサービスを作っている際に「〇〇 と △△ と □□ 〜 の CSV インポート機能を作ってくれ」といった要望を一度にたくさん受けたのですが、単にモデルの数だけ同じようなコードがダラダラと増えるのも嫌だなぁと思い何か良さげな書き方が無いか探していたところ、そこそこ汎用性の高そうなコードができたので紹介します。

![csv-importer (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/86fcfd44-822a-15fa-b0f4-60020b13577a.gif)

**主な内容**

– 1つのコントローラー、ビューで複数モデルの CSV インポートに対応
– データ挿入前にプレビュー画面を挟み、取り込み予定データの内容を確認可能
– CSVファイルの中身に問題があった場合、何行目のどこが悪いかを表示

全体的に “Dry” かつコンパクトに、たとえ後に対象のモデルが増えたとしてもなるべく少量の追記で対応できるように心がけました。

##

元記事を表示

最小限のテスト容易性を確保するための一提案

## 要約

* システムの保守性をあげるために自動テストを書くのは良いアプローチといえる
* しかし自動テストを書く時間がなかったり書くスキルがないメンバがいるという諸事情はよく発生する
* そうした時は最初(書き始め)のタイミングで、テスト対象のクラス・メソッドの処理を最後まで処理が通る1ケースだけ書こう
* このアプローチはシステムの保守性をあげるだけではなく、個人・メンバのスキルアップにも繋がることがある

## テスト容易性とは

* [テスト容易性をGoogleで調べる](https://www.google.com/search?q=%E3%83%86%E3%82%B9%E3%83%88%E5%AE%B9%E6%98%93%E6%80%A7)と難しそうな話が出てきますが、本記事では **テストがしやすい** というふんわりとした言葉の意味合いで使っていきます
* テスト容易性はシステムの保守性を支える1要素ともいえ、このテスト容易性を高めることでシステムの保守性を少しでも高めることができるものです。(もちろん銀の弾丸ではありません)
* [質とスピード](https:

元記事を表示

【Rails】画像アップロードにcarrierwave

## CarrierWaveとは
Rubyのアプリケーションから簡単にファイルをアップロードするためのgemです。

## 開発環境
mac
ruby: 2.6.4
rails: 5.2.6
db: mysql

## 注意事項
本記事は、ローカルで作業する前提となります。
Gem追加後は読み込みの為にサーバーの再起動をしてください。
Carrierwaveのバージョンが2.0の場合は、Rails 5.0以上・Ruby 2.2以上が必要との事なので注意して下さい。
詳しい内容は下記の公式サイトから参照してください。
[carrierwave](https://github.com/carrierwaveuploader/carrierwave)

## 導入手順
– Gemfileにcarrierwave追加後インストール

“`ruby:Gemfile
gem ‘carrierwave’, ‘~> 2.0’
“`
“`linux:ターミナル
% bundle
“`

– 下記のコマンドでアップローダークラスを生成します。

“`linux:ターミナル
%

元記事を表示

railsのwrap_paramerterがやっている事と設定の方法について

# wrap_paramerterとは

コントローラーの名前からリソースの名前を推測してリクエストパラメータをリソースの名前でラップする仕組みの設定を行います。

https://railsguides.jp/action_controller_overview.html#json%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF

rails6.1までのrailsアプリケーションでは`rails new`した際に`config/initializers/wrap_parameters.rb`というファイルが作成されます。

“`ruby:config/initializers/wrap_parameters.rb
# Be sure to restart your server when you modify this file.

# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.

# Enabl

元記事を表示

【Rails】devise_token_authから送るメールの件名を変えたい!

devise_token_authから送るメールの件名を変えた”い!

ユーザー作成時やパスワードリセットなどのdevice_token_authの機能を使用した際に、Email送信がされるものがありますね。

そのメールの件名がバリバリ英語なので、自分のアプリに合うような最高な件名に変えた”い!

その方法について簡潔に記していきます。

変更方法

方法はいたってシンプル!

config/locales/devise.en.ymlを開いて、自分が変えたいところのsubjectを変えるだけ!

“`yml:devise.en.yml
# Additional translations at https://github.com/heartcombo/devise/wiki/I18n

en:
devise:
confirmations:
confirmed: “Your email address has been successfully confirmed.”
send_instructions: “You

元記事を表示

OTHERカテゴリの最新記事