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

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

credentials.yml master.key関係について

「credentials.yml」と「master.key」はRails5.2から追加された秘密情報を管理する仕組みです。

環境変数を使用せずにRails単体で秘密情報を管理できるため、ローカルの環境に依存しない大変便利な機能。

# 秘密情報の管理
開発をしていく中で、共有ツールを使用するのは当たり前、誰もがアクセスできて、プルリクなどをもらったり、自分にコードを見てもらうことが当たり前なオープンソース時代。

●そこで問題が発生
・自分の個人情報をさらけ出していると外部から攻撃され、個人情報が盗まれる可能性がある。

## 秘密情報とは
・例えば、AWSのアカウントだったり、データベースのパスワードなどです。
・他にも決済機能を入れている場合だったらstrpeやpaypalの秘密鍵や公開鍵がそれに値するでしょう。
・これらをGithubなどのバージョン管理システムでPublic(公共的)にみられないようにしないと大変なことになります。

# Rails5.2でcredentials.ymlが誕生
●作成手順と流れ
①クマさんがcredentials.ymlを作成
②Githubに

元記事を表示

Railsエラーまとめ

# rubyとrailsのバージョンが不一致

“`
% rails -v
rbenv: rails: command not found

The `rails’ command exists in these Ruby versions:
3.1.1
“`

rails7はruby2.7.0必須、ruby3.0推奨
$ rbenv versions
のコマンドで確認しよう。

元記事を表示

ruby on rails を AWS Cloud9で実施 2 コントローラー Viewについて python初心者

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

前回の続きです

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## controllerの作成

まずは
controller
を作成してみます

## MVC アーキテクチャの復習
model
データベースアクセスなど データ関連処理

View
画面表示

controller
リクエストやレスポンスを制御
view と model の橋渡し

さっそくコマンドを入力します

generate を g 省略可能です
“`
rails g controller
“`
上のコマンドで controller を作成してくださいという
命令になります

#### 今回は rails g controller users index を実施
以下の users はコントローラーに付ける名前です
データベースと連携する場合は複数形にするの

元記事を表示

deviseとdevise_token_authとomniauthの使い分けがわからなかったので調べてみた

はじめに

自分の備忘録として、わからなかったことや詰まった部分をアウトプットしています。
同じ部分で悩んでいる方の力になったら幸いです。

何に詰まったのか

現在ポートフォリオを作成しており、バックエンドをrails apiで開発をしています。
その中でアカウントを作成しなくてもTwitterのアカウントでログインができる機能を実装したいと考えました。

この機能を実現するためには、ログイン機能のgemとして有名なdevise以外に何が必要なのかな?と思い調べたところ、
・devise_token_auth
・omniauth
のgemが検索でヒットしました。

実装方法についてはたくさんの記事があったので、おそらく理解していなくてもなんとなくで作成できる気がします。
「それぞれ何の役割があるのか/何をしたいときにどのgemが必要なのかが分かっていない」まま開発をしてもエラーの際にとても時間がかかったり、目的からずれた使い方をしてしまうと思ったので実装前にそれぞれの役割を簡単に整理しようと思いました。

色々な記事を参考にして自分なりに整理をしてみましたが、ポートフォリオ

元記事を表示

【Rails6】Initialization autoloaded the constants ApplicationHelper を解消する

# 初めに

Rails6 で Rspec を稼働させると`DEPRECATION WARNING`が出るので、それを解決します。

# 解決方法

## エラー内容

以下のエラーが発生しました。

“`console
DEPRECATION WARNING: Initialization autoloaded the constants ApplicationHelper,DeviseHelper、ApplicationController、
DeviseController、Devise::SessionsController、Devise::PasswordsController、Devise::UnlocksController、Devise::RegistrationsController、
Devise::ConfirmationsController.

Being able to do this is deprecated. Autoloading during initialization is going
to be an error condition in

元記事を表示

ゲストのアクセス制限

## はじめに

ポートフォリオ製作で作成したゲストログイン機能に閲覧制限をかける際に悩んだのでメモとして残そうと思いました。

## ゲストログイン機能

“`ruby
class Menber < ApplicationRecord # ゲストユーザー def self.guest_user find_or_create_by!(email: 'guest_user@example.com') do |guest| guest.password = SecureRandom.urlsafe_base64 end end end ``` ```ruby class Admin::SessionsController < Devise::SessionsController  def guest_log_in guest = Menber.guest_user sign_in guest # ユーザーをログインさせる redirect_to root_path, notice: 'ゲストユーザーとしてログインしました

元記事を表示

「パーフェクトRuby on Rails【増補改訂版】」第一章

# 第一章 Ruby on Railsの概要

## Railsの思想
– Railsには設計思想として以下4つの思想を強く打ち出している。

### ①CoC(Convention over Configuretion)
– 直訳すると「設定より規約」
– 社員情報を表現するモデルをEmployeeモデルとした場合、Railsでは以下のような規約に則う。
– データベースのテーブル名はモデル名の複数形のEmployeesにする。
– /employeesというURLは社員の一覧を表す。
– /employees/1というURLは社員ID:1の社員情報を表す。

### ②DRY(Don’t Repeat Yourself)
– 「同じことを繰り返さない」という思想

### ③REST(Representational State Transfer)
– Webアプリケーション設計概念の1つ
– CRUDによる機能追加がしやすい自然な設計になる。

### ④自動テスト
– 自動テストを重要視している。
– Railsのプロジェクトを作成すると、雛形の一部として

元記事を表示

環境変数でパスを通す

## 調べようと思ったきっかけ

home brewをインストールしたあと、[brew -v](https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/203showcomver.html)でうまく確認できなかったのがきっかけで調べようと思いました。

**home brew についての参考文献**
[【完全版】Homebrewとはなんぞや](https://zenn.dev/sawao/articles/e7e90d43f2c7f9)
## 実際に起きたエラー

“`bash
Warning: /opt/homebrew/bin is not in your PATH.
==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
“`

google翻訳先生にお願いしたところ /opt/homebrew/bin  がパスに含まれていないとのこと

~~それぐらい読めるようになっとき

元記事を表示

「パーフェクトRuby on Rails【増補改訂版】」まとめ

# はじめに
– 「パーフェクトRuby on Rails【増補改訂版】」を通して学んだことや自身が疑問に思ったことをまとめるためのQiitaです。
– 自身の不足している知識や曖昧だった知識を補填するための材料として本書を使用するため、既知の内容については記事にはまとめません。
– 本書を通して個人的に疑問を持った箇所についてもまとめるため、本書に記載のないものを含んだまとめ記事となります。

## 対象とするRuby on Railsのバージョン
– Ruby 2.6.6
– Rails 6.0.3

## 各章リンク
– [第一章 Ruby on Railsの概要](https://qiita.com/drafts/c64e59552ef9a012f52e/edit)

元記事を表示

ActiveRecord::StatementInvalid in 〇〇Controller#indexのエラーについて

## 経緯
勉強を始めて1ヶ月ぐらいで、同じエラーを出す人も滅多にいないだろうし、おそらく検索しても同じような記事がない様にも感じ、エラーが発生してしまったので、メモとして記録したいと思います。

## 内容
![スクリーンショット 2022-08-08 18.59.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745288/788c294a-6487-d7a2-9973-b0619ee11ece.png)

このような
Mysql2::Error: Table ‘storagame_development.application_records’ doesn’t exist

が発生したときの改善策について記述したいと思います。

まず、自分がやってしまったミスについてですが、
“`ruby:app/controller/application_controller.rb
class ApplicationController < ActionController::Base befor

元記事を表示

本当にRubyが死んだ、Railsが時代遅れなのか?そうと思わないです。

Rubyは死んだ、Railsは時代遅れという人が最近増えてきたようですが、
本当にそうなりますか。

僕が大学から日本でRubyを勉強して、Railsでいろんなサービスを開発しました。
本当にRailsが大好きです。
10年前(2012頃)、Railsがすごく発展しました。Railsエンジニアになりたい若いものが多いし、
Railsエンジニア給料も他の言語より高かったです。

その後、ReactJSとかGo Langなどが現れて、Railsの人気がどんどん減ったことを感じました。
でもRails強みは失われるのではなく、うまく活かせていないと思います。
以下の強みは他の技術より優れていると思います。

1. プロダクトを開発するスピードが速いです。
ベンチャー企業によって、スピードが一番重要です。MVP版を早めにリリースして、ユーザーに早く評価してもらって、サービスを改善していきます。Railsでは要件定義からリリースまで3ヶ月以内に実現可能です。それにPM、Railsエンジニア、テスターの4人開発チームで十分なので、コストも低いです。

2. Agile開発に向いています。
Agil

元記事を表示

net-smtpがインストールされていないといわれた。

railsで実行すると以下のエラーが発生する状況
実行

❯ rails g controller users

You don’t have net-smtp installed in your application.
Please add it to your Gemfile and run bundle install

エラー内容:
net-smtpがインストールされていない。
gemfileに加えたうえでbundle installを行ってください。

考えたこと:
①net-smtpの自体はローカルにあるが
newappにうまく伝えられていない。


コマンドでrails newを実行作成後に、エラーを理由に
newappを再度作り直すことを避けたい。

そこで以下の作戦を立てました。6系のrailsを使っています。

1
コマンド
rails _6.1.6_ new SampleApp –skip-bundle
を最初に実行

2
newappを作成後に、
SampleApp/gemfileで以下の記述を追加
gem ‘net-smtp’
gem ‘net-ima

元記事を表示

Railsのdeviseで新規登録画面URLは親テーブルのidを渡し、ログインURLには渡さない

## 背景
deivseを使ってユーザー管理をしています。
今回新規登録時には親テーブルのidをパラメータに渡し、ログイン画面では渡さない、というルーティングを実装しました。

## バージョン
Ruby3.1.2
Rails7.0.3

## sign_upのルーティング
sign_upは下記の記事に書きました。
[Railsのdeviseで新規登録の際に親テーブルの外部キーをパラメーターに渡す](https://qiita.com/r-kubo/items/e412e7a0fd8cd47e5e88)

## sign_inのルーティングを追加
“`routes.rb
devise_for :admin_users, skip: :all
devise_scope :admin_user do
get ‘/admin_groups/:admin_group_id/admin_users/sign_up’, to: ‘admin_users/registrations#new’, as: ‘admin_user_registration’
get ‘/adm

元記事を表示

Railsのdeviseで新規登録の際に親テーブルの外部キーをパラメーターに渡す

## 実装背景
deviseを使ったユーザー管理を実装していますが、パラメーターに親テーブルのidを渡してユーザー新規登録を実装する必要がありました。
具体的には下記のようなURLで新規登録画面を開くことを目標とします。
“`
/admin_groups/:admin_group_id/admin_users/sign_up
“`

## 該当DB
管理会社テーブル
| admin_groups |
| —- |
|name|

管理者テーブル
| admin_users |
| —- |
| name |
| email |
| password |
| admin_group_id |

## 新規登録フロー
参考までに今回実装予定の新規登録フローを紹介します。
1. 既に登録されているユーザーがログインする。
1. 新規ユーザー招待画面で招待したいユーザーのメールアドレスを入力、送信
1. 届くメール本文には、自動で新規登録画面のURLが記載されている。
1. URLのパラメータにはログインユーザーのデータに入っているadmin_group_idが自動で入り、同じ

元記事を表示

Address already in use – と言われました

rails s

を実行したところ。
エラーに

#省略
Address already in use – bind(2) for “127.0.0.1” port 3000 (Errno::EADDRINUSE)
#省略

と表示された。

エラー文の意味
既に3000番ポートが使われているということ。
3000ポートは既に使われるからサーバーと繋げられない。

参考:
https://qiita.com/A__Matsuda/items/78b5c3f8c6578d807e09

やること:
使用しているプロセスを切る必要がある。切った後に

コマンド
rails server

ブラウザ
http://localhost:3000

でrailsが正常に動作するか確認する。

1.既に繋がっているポート番号の特定:
$ lsof -i:指定番号(,2個目以降ある時の指定番号)

2.実行後に表示されたポートのPID項目を調べる。

3.kill -9 [PIDの数字] 
(-9をつけると強制終了)で強制終了に持ち込む。
4.

コマンド
rails server
ブラウザ

元記事を表示

【Rails6】入力テキストの改行とURLのリンクの有効化

## はじめに
ポートフォリオを作成する中で、入力フォームで登録した内容をビューで表示させると、改行できていない・URLが有効化されていないということに気付きました。
URLについては、入力フォームでurl_fieldを使用すれば簡単に解決できるかと思います。しかし、今回は、入力フォームに普通の文章とURLを混ぜ合わせて入力できるようにしたかったので、違う方法での実装を考える必要がありました。
そんなに難しい内容ではありませんが、記事にまとめることにしました。
## 実装環境
Ruby 3.1.2
Rails 6.1.6

## 実装方法
### 前提条件
モデル :Book(インスタンス変数として`@book`を使用します)
┗カラム:content
今回は、Bookモデルのcontentというカラムを表示させることにします。

### 【入力テキストの改行の有効化】
一般的にには、以下のように記述すると思います。
“`html
<%= @book.content %>
“`
しかし、これだとtext_area等の入力フォームで改行しても、表示される時には改行が反映されていません

元記事を表示

100日後くらいに個人開発するぞ!day066

## 今日はビュー・コントローラ・ルーティングを学んでみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/b3cf51c0-ae7d-6d92-f302-a1dc343369cd.png)

## 今日の学び

### ページの作成に必要なもの
* ビュー(view)
* コントローラ(controller)
* ルーティング(routing)

### ビューとは
* ビューとはページの見た目を作るためのHTMLファイル
* ビューはviewsフォルダの中に格納されている

### コントローラとは
* ページを表示するときRailsの中ではコントローラを経由してビューをブラウザに返している
* コントローラ内のメソッドを「アクション」と呼ぶ
* アクションはブラウザに返すビューをviewsフォルダから見つけ出す役割を担う

### ルーティングとは
* ルーティングはブラウザとコントローラをつなぐ役割を担う
* ルーティングは送信されたURLに対して適切なコン

元記事を表示

ストロングパラメーターの基本的な書き方と対応できないオブジェクト例

## なぜ記事を書こうと思ったか
Railsのアプリ開発している際に、ストロングパラメータで対応できないオブジェクトがあることを知った為、今回ストロングパラメータの基本的な書き方と一緒にこの記事にまとめようと思います。

## ストロングパラメーターの書き方
### 基本的なオブジェクト
“`
{
name: “田中”,
age: 23
}
“`
“`
params.permit(:name, :age)
“`

### 配列が入っている場合
“`
{
name: “田中”,
hobbies: [
“サッカー”, “映画鑑賞”
],
age: 23,
favorite_food: [
“ラーメン”, “寿司”
]
}
“`
**値に配列が入っているプロパティはストロングパラメーターで最後に記述する**
“`
params.permit(:name, :age, hobbies: [], favorite_food: [])
“`

### オブジェクトがネストした場合
“`
{
name: “田中”,
set

元記事を表示

削除機能:destroyがうまくいかなかった

Rais7系の不具合

行き詰まったことを書き出しています。

### 解決できなかったこと
削除を押下時に適切な挙動をするようにしたい。
現状、写真のような形です

Ruby on Railsで簡易的なWebアプリをつくっています。
railsのメッセージ投稿アプリ(CRUD処理の確認用)の箇所を作業しています。

削除の実装箇所がうまくいかず、困った。
具体的に言えば、作成したアプリで以下がうまくいかない
・投稿一覧から任意の削除ボタンをクリックすること
・投稿詳細に遷移するだけで削除ができないこと

原因の推測:
問題箇所を特定して、誤りがないか確認してみました。
コードには問題はなさそうでした。
理由を考えると以下の線が濃厚そうだった。
実際にバージョンを落として動かしてみます。その後、追記に書いてみようと思う。

参考:
https://qiita.com/jnchito/items/5c41a7031404c313da1f#link_to%E3%81%AEmethod%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE

元記事を表示

Deviseを使った時に複数画像の削除機能が効かなくなったときにしたこと

はじめに

ユーザー情報編集画面を作成した時に、編集画面上で複数画像の削除ができる機能を実装しました。
その後Deviseを導入し、ユーザー情報編集画面をDeviseのRegistrations/edit.html.erbの方に置き換えた時に、この画像削除機能がうまく機能しなくなった時のお話です。
画像の操作はActiveStorageを使っています。

今回はこちらのアプリ上での削除機能の実装です。

Web URL: https://scouter.fun
GitHub URL: https://github.com/delicha/scouter

修正後

![Videotogif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730398/ba9bc974-bb3d-b789-53d2-af3af5816ae1.gif)

環境

macOS Big Sur(11.6.6)
rails 6.1.6
ActiveS

元記事を表示

OTHERカテゴリの最新記事