Rails関連のことを調べてみた2021年10月29日

Rails関連のことを調べてみた2021年10月29日
目次

RailsにRedisを接続するシンプルなやり方

イントロダクション

他の記事が初心者のためにわかりやすくし過ぎていたり、自分が理解した部分だけ書いていて分かりにくかったため記述した。

前提

Redisインストール済みであること(Macならbrewでインストールする

参照: https://qiita.com/sawa-@github/items/1f303626bdc219ea8fa1

Redis接続方法

Railsの新規プロジェクト作成

Gemfileに「gem redis-rails【Rails初心者】Chart.jsの使い方

グラフ(折れ線グラフ、棒グラフ、レーダチャートなど)を書くのに優れているrubyライブラリを学習しましたので、記録のために残します。

#公式ドキュメント
[Chart.js公式サイト](http://www.chartjs.org)

#使い方

##① rails newしてアプリ作成

“`
% rails new chart
“`

まず学習用のファイルを作成します。

## ② controllerとroutesの設定

コントローラーを作成します。

“`
% rails g controller home
“`

続いてコントローラーにindexメソッドを作成します。

“`ruby:app/controllers/home_controller.rb
class HomeController < ApplicationController def index # 追記 end end ``` コントローラーの記述が終わったらルーティングを作成します。 ```ruby:app/confing/routes.rb Rails.application.ro

元記事を表示

【Rails】Herokuでのお問い合わせフォームの作成方法

## お問い合わせフォームの実装

利用環境
・ruby 2.7.3
・Rails 6.1.4

## 前提
お問い合わせフォームでメールを受信するためのメールアドレスを作成
ここではGmailを登録する前提で進めます。

## Gmailアカウントの設定
・2段階認証に設定する
・アプリで利用するためのパスワードを作成
 リンク先:https://myaccount.google.com/u/3/security

## ActionMailerの設定
本番環境のみでの設定とします。
開発環境でのメール確認に興味がある方はこちらを参考にしてみてください。
https://github.com/fgrehm/letter_opener_web

“`terminal:ターミナル
touch config/initializers/mail.rb
“`

“`ruby:config/initializers/mail.rb
if Rails.env.production?
# 自身のドメインに置き換えてください
host = “Herokuのサブドメイン.herokuap

元記事を表示

railsチュートリアル第10章 管理ユーザー

##ユーザーを削除する
###管理ユーザー
特権を持つ管理ユーザーを識別するために、論理値をとるadmin属性をUserモデルに追加

“`
ubuntu:~/environment/sample_app (updating-users) $ rails generate migration add_admin_to_users admin:boolean
Running via Spring preloader in process 3171
invoke active_record
create db/migrate/20211016122254_add_admin_to_users.rb
““

####boolean型のadmin属性をUserに追加するマイグレーション
db/migrate/[timestamp]_add_admin_to_users.rb

“`rb
class AddAdminToUsers < ActiveRecord::Migration[6.0] def change add_column :use

元記事を表示

railsチュートリアル第10章 パーシャルのリファクタリング

###パーシャルのリファクタリング
railsの便利なツールを使ってコードを整理する

####indexビューに対する最初のリファクタリング
app/views/users/index.html.erb

“`rb
<% provide(:title, 'All users') %>

All users

<%= will_paginate %>

    <% @users.each do |user| %>
    <%= render user %>
    <% end %>

<%= will_paginate %>
“`
####各ユーザーを表示するパーシャル
app/views/users/_user.html.erb

“`html

  • <%= gravatar_for user, size: 50 %>
    <%= link_to user.name, user %>
  • “`
    ####indexページの完全なリファクタリング
    app/views/users/index.html.

    元記事を表示

    【Rails×LIFF】 モテたい人向けのマッチングアプリ完全攻略サービス 「マッチングアプリマスター」 を作りました。 (男性向け) 【個人開発】

    # サービス概要
    ![マッチングアプリマスター トップページのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/5b55db01-0083-8a4f-1a8a-a2c37478f7c7.png)
    対応端末は`iPhone X 以降(スマホ)`を推奨しております。
    LIFFアプリ(LINEで動くWebアプリ)なのですが、外部ブラウザ(SafariやChrome)からも開くことが出来ます。
    ※ 二極化

    URL:https://dating-apps-master.com/top
    Github:https://github.com/ryuki7/dating-apps-master

    マッチングアプリを利用しているが女性と上手くいかない、女性の扱い方がわからない、女性との出会いが無くて困っている人に
    目的別に適したマッチングアプリを導き出し、そのアプリごとのテクニックやコツを全て指南して、モテ男(マッチングアプリマスター)への道標となる
    マッチングアプリ完全攻略サービスです。

    元記事を表示

    テーブルにないカラムにも値を入れて送信できる件

    #はじめに
    ECサイトを作ってみましたが、以下のイメージのように、お届け先をいくつかの選択肢の中からチェックボックスで選ぶような場面でどうすれば良いのか少し戸惑ったのでまとめておきます。

              ![スクリーンショット 2021-10-28 21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2214201/ef84a14b-06e5-f07f-b945-e66d192478ed.png)

    #分からなかったこと
     選択肢に値を持たせて、その値によってコントローラーで処理を分けるところまでは想像がついたのですが、今回で言うと、注文テーブルに選択肢(option)カラムはないのでどうすれば良いのか戸惑いました。
     とりあえず、`option = 0`なら「ご自身の住所」、`option = 1`なら「登録済みの住所から選択」として以下のように書いてみました。

    “`ruby:orders/new.html.erb
    <%= form_with model: @order, url: or

    元記事を表示

    【RSpecエラー】validate_uniqueness_ofを使うとテストが通らないとき

    ##環境
    Ruby 3.0.2
    Rails 6.1.4.1

    ##状況

    バリデーションのテスト実行時に下記のエラー
    デフォルトでは大文字と小文字を区別している

    “`model.rb
    validates :email, uniqueness: true
    “`

    “`spec.rb
    it { is_expected.to validate_uniqueness_of(:email) }
    “`

    “`
    Expected Employee to validate that :email is case-sensitively unique,
    but this could not be proved.
    After taking the given Employee, setting its :email to ‹”dummy
    value”›, and saving it as the existing record, then making a new
    Employee and setting its :ema

    元記事を表示

    RailsからGoogleスプレッドシート連携させる際に認証でつまづいた点(2021/10時点)

    # はじめに
    よくあるRailsアプリケーションからGoogleスプレッドシートに連携するのを実装したかったのだが盛大につまづいたのでポイントをメモ
    大まかな手順としては以下などを参考にしてください

    Google Sheets API を使ってスプレッドシートを操作


    https://techblog.hacomono.jp/entry/2020/10/21/095900

    ## OAuth 同意画面のアプリケーションの種類で「その他」が選択肢にない
    ![スクリーンショット 2021-10-28 18.08.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27192/2dfbedf8-6225-5466-ea10-c9451d341a0c.png)

    「その他」がないなら「ウェブアプリケーション」だろうなぁと思ってたら落とし穴。
    承認エラーになります
    ![スクリーンショット 2021-10-28 18.03.42.png](https://qii

    元記事を表示

    git push heroku masterをしたら、Precompiling assets failedが表示された時の対処法

    **結論**

    webpackerをインストールしていませんでした。

    **エラー文**

    “`ruby:ターミナル

    remote: ! Precompiling assets failed.

    #省略

    error: failed to push some refs to ~~~
    “`

    **解決までの流れ**

    赤字で書かれていた上の2つの文をそれぞれGoogleで調べましたが、自分にあった対処法が見つけられませんでした。
    色々と悩みましたが、ログを上から順に見ていくことにしました。
    そうすると、大事なことが書かれている部分を発見しました!

    “`ruby:ターミナル
    #省略
    remote: webpack binstubs not found.
    remote: Have you run rails webpacker:install ?
    “`

    「webpackないよ? rails webpacker:installした?」 と言われていました。

    なので、

    “`ruby:ターミナル
    rails webpacker:i

    元記事を表示

    【備忘録】git pushでのerror “src refspec main does not match any”

    rails学習中につき、よくやってしまうので備忘録として残しておきます。
    私と同じような初学者の方の参考になれば幸いです。

    “`
    % git push -u origin main
    “`

    を実行したときにこのようなエラーが出たら

    “`
    error: src refspec main does not match any
    error: failed to push some refs to ‘https://github.com/[githubアカウント名]/[githubリポジトリ名].git’
    “`

    mainをmasterに変えて

    “`
    % git push -u origin master
    “`

    を実行すればよい!

    元記事を表示

    [Rails]暗黙的レンダリングでハマった

    ## 概要
    開発環境とrspecで、APIレスポンスがなんか全然違う・・・開発環境だとステータスコード204なのに、rspecだと500どういうこと?
    ということがあったので調査したことまとめ。

    ## 前提
    参考: [ActionController::ImplicitRender](https://api.rubyonrails.org/classes/ActionController/ImplicitRender.html)

    以下のメソッドを使った明示的なレスポンスを返さないコントローラーのアクションメソッドに対して「暗黙的なレンダリング」がなされる。

    – render
    – respond_to
    – redirect
    – head

    ## 暗黙的なレンダリング
    ### パターン①
    https://railsguides.jp/api_app.html
    でapiのアプリケーションを構築した場合(= ApplicationControllerをActionController::API から継承している場合)は、

    204 No Content

    が返るらしい

    ### パターン

    元記事を表示

    【Ruby on Rails】よくあるエラー集

    # Routing Error
    まずはrailsの中でroutingがどのような役割をもっているか理解する必要があります。
    ・[Routingとは](https://railsguides.jp/routing.html)
    ![S__29761599.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2165607/6dbee024-2cdc-4f25-5c83-6078c4cdee79.jpeg)
    それではエラーについて解説します。
    **Routing Error**
    routes.rbで定義したルーティングに存在しないURLにアクセスされた場合に起きるエラーです。

    **原因**
    routes.rbに記述されているものが間違っている。

    **解決策**
    routes.rbに記載されているものが、コントローラー名とアクション名とマッチしているか確認する(スペルミスなどが考えられます)

    # Syntax Error
    **SyntaxError**
    コードの中にRubyの文法エラーがあるときに発生します。S

    元記事を表示

    【Rails】コントローラーの処理を共通化したい

    ##環境
    Ruby 3.0.2
    Rails 6.1.4.1

    ##共通化する前

    UsersControllerとHomeControllerともに同じコードがあるので共通化したい。

    “`posts_controller.rb
    class PostsController < ApplicationController def index @post = current_user.post end end ``` ```home_controller.rb class HomeController < ApplicationController def index @post = current_user.post end end ``` ##共通化した後 共通化したいコードをconcerns下にメソッドとして定義する。 ```concerns/common_action.rb module CommonAction extend ActiveSupport::Concern def set_posts @posts = c

    元記事を表示

    駆け出しエンジニアの「今すぐ質問したい!!」を解決するサービスをリリースしました

    ## はじめに
    駆け出しエンジニアのみなさん、分からないときにすぐ聞ける環境がありますか?

    プログラミング学習において大切なことの一つに、「学習を継続していくこと」があると思います。
    しかし、実際にはエラーで立ち止まる日々で時間だけが過ぎていくことも。

    ・質問したいことはあるけどどう質問すれば良いかわからない
    ・わからないことがわからない..
    ・テキストで質問してもすぐに回答がこないし..
    ・今すぐ単発で相談したいけど、そんな環境がない

    そんな時に**「Tech Spot」**ならzoomを使用して自分が学びたい分野のメンターに質問ができます。
    [https://techspot.jp/](https://techspot.jp/)
    [](https://techspot.jp)

    ## アプリの概要
    プログラミングに関する質問・回答サービス

    元記事を表示

    ユーザー管理機能初期手順②!

    #①.deviseのビュー作成!

    前回の続きです!

    deviseを使用してログイン機能を実装すると、自動的にログイン画面とサインアップ画面が生成されます!

    deviseでログイン機能を実装すると、ログイン/サインアップ画面が自動的に生成されますがビューファイルとしては生成されません!

    これは、deviseのGem内に存在するビューファイルを読み込んでいるためです!

    deviseのビューファイルに変更を加えるためには、deviseのコマンドを利用して、ビューファイルを生成する必要があります!

    #②.rails g devise:viewsコマンド

    deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドです!

    HTMLを修正できるため、カスタマイズ可能になります!

    deviseのコマンドで、devise用のビューファイルを生成します!

    下記がコマンドです!

    “`php
    ターミナル
    % rails g devise:views
    “`

    上記の作業でdevise用のビューファイルを生成することができました!

    #③.ストロン

    元記事を表示

    Railsチュートリアル2週目を終えて

    #概要
    Railsチュートリアル2週目を終えたので、感想を書こうと思います。

    ##かかった期間
    10/10 ~ 10/27 (24~26を除く、約2週間)
    合計:約63時間

    1週目では約48時間かかったので、2週合計で110時間ほど費やしました。

    ##開発環境
    1週目からクラウドIDEではなくローカル環境で開発に挑戦しました。

    – Macbook Pro(13-inch, M1, 2020)
    – Mac OS Big Sur 11.6
    – VSCode (Visual Studio Code – Insiders 1.62.0)
    – Ruby 3.0.2p107
    – Rails 6.1.4.1

    ##1週目と2週目の間にやったこと
    1週目を終えた時点で「Rubyのコードが読めない」「なにが書きたいのかわからない」と気づきました。恥ずかしながら。Rubyの基礎力がかなり不足していたのです…。Rubyの力を養うために、「たのしいRuby」で文法をメインに勉強しました。

    # 2週目で心がけたこと
    1週目では上記の通りコードを読めないことに加え、**コードに対するコメント**を全然

    元記事を表示

    railsチュートリアル第10章 ユーザー一覧のテスト

    ###ユーザー一覧のテスト
    今回のテストでは、ログイン、indexページにアクセス、最初のページにユーザーがいることを確認、
             ページネーションのリンクがあることを確認
    テスト用のデータベースに31人以上のユーザーがいる必要
    ####fixtureにさらに30人のユーザーを追加する
    test/fixtures/users.yml

    “`yml
    michael:
    name: Michael Example
    email: michael@example.com
    password_digest: <%= User.digest('password') %>

    archer:
    name: Sterling Archer
    email: duchess@example.gov
    password_digest: <%= User.digest('password') %>

    lana:
    name: Lana Kane
    email: hands@example.gov
    password_digest: <%= User.digest('pa

    元記事を表示

    railsチュートリアル第10章 サンプルのユーザー ページネーション

    ###サンプルのユーザー
    ユーザーを一気に作成

    fakerは実際にいそうなユーザー名を作成するgemです

    ####GemfileにFaker gemを追加する
    Gemfile

    “`
    source ‘https://rubygems.org’

    gem ‘rails’, ‘6.0.3’
    gem ‘bcrypt’, ‘3.1.13’
    gem ‘faker’, ‘2.1.2’
    gem ‘will_paginate’, ‘3.1.8’
    gem ‘bootstrap-will_paginate’, ‘1.0.0’
    .
    .
    .
    “`
    サンプルユーザーを生成するRubyスクリプトを追加
    ####データベース上にサンプルユーザーを生成するRailsタスク
    db/seeds.rb

    “`rb
    # メインのサンプルユーザーを1人作成する
    User.create!(name: “Example User”,
    email: “example@ra

    元記事を表示

    railsチュートリアル第10章 ユーザーの一覧ページ

    ##すべてのユーザーを表示する
    indexアクションを追加しましょう。
    すべてのユーザーを一覧表示します。
    ・データベースにサンプルデータを追加する方法
    ・将来ユーザー数が膨大になってもindexページを問題なく表示

    ページネーション(pagination=ページ分割)の方法を学びます
    ・ユーザーの一覧
    ・ページネーション用リンク
    ・移動用の[Users]リンクのモックアップ

    管理者権限を新たに実装し、ユーザーの一覧ページから(管理者であれば)ユーザーを削除できる機能も実装
    ###ユーザーの一覧ページ
    indexアクションを追加しましょう。
    不正から守るためにテストを作成
    ####indexアクションのリダイレクトをテストする
    test/controllers/users_controller_test.rb

    “`rb
    require ‘test_helper’

    class UsersControllerTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) @oth

    元記事を表示

    OTHERカテゴリの最新記事