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

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

【エラー】自動デプロイの際のエラー【AWS】

# Aws::Sigv4::Errors::MissingCredentialsError

アプリを自動デプロイした際、下記のようなエラーが出現。
※アプリのサーバには、EC2、unicorn、Nginxを利用

“`
Aws::Sigv4::Errors::MissingCredentialsError: Cannot load `Rails.config.active_storage.service`:
missing credentials, provide credentials with one of the following options:
– :access_key_id and :secret_access_key
– :credentials
– :credentials_provider
“`

※上記のエラー内容は下記の方法にて確認した。
(ターミナルにて、EC2にログインし下記コマンドを入力。)

“`
[ec2-user@ip-000-00-0-000 アプリ名]$ cd current
[ec2-user@ip-000-00-0-0

元記事を表示

mapとeachの違い

#map
配列の入った変数.map {|変数名| 処理内容 }

“`ruby
food = [“fish”, “beef”, “banana”,”potato”]
food.map {|a| a.length}

#元の配列の変更していない
#戻り値は [4, 4, 6, 6]
“`

#map!(破壊的メソッド)
配列の入った変数.map! {|変数名| 処理内容 }

“`ruby
food = [“fish”, “beef”, “banana”,”potato”]
food.map {|a| a.length}

#元の配列の変更している
#戻り値は [4, 4, 6, 6]
“`

#each(mapとの違い)

“`ruby
food = [“fish”, “beef”, “banana”,”potato”]
food.map {|a| a.length}

#戻り値がもとの配列を返す
#戻り値は [“fish”, “beef”, “banana”,”potato”]
“`

元記事を表示

Docker+ECS(fargate)+Railsで環境構築をした際tmp/pids/server.pidのエラーが消えない時の対処

## やりたかったこと
以下の手順でDocker環境で開発を行なっているRailsプロジェクトの本番環境を構築

“`sh
# Dockerイメージを作成
$ docker build -t リポジトリ名 . -f Dockerfile-prod –build-arg RAILS_MASTER_KEY=xxxxxxxxxxxxxxx
# リポジトリにイメージをプッシュできるようにタグ付け
$ docker tag リポジトリ名:latest アカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/リポジトリ名:latest
# リポジトリにプッシュ
$ docker push アカウント番号.dkr.ecr.ap-northeast-1.amazonaws.com/リポジトリ名:latest
“`

## エラー発生
しかし、ECSのタスクのログを見ると以下のエラーが発生し上手く立ち上がらない。

“`
=> Booting Puma
=> Rails 5.2.4.2 application starting in development
=

元記事を表示

Rails (V1::Auth::Customers::ConfirmationsController, but didn’t (Zeitwerk::NameError))

## railsのプロジェクトをEc2にデプロイしたのち、`rails console -e production`を行うと次にようなエラーが

“`console
[ec2-user@ip-10-0-0-93 room_backend]$ /home/ec2-user/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/zeitwerk-2.4.2/lib/zeitwerk/loader/callbacks.rb:18:in `on_file_autoloaded’: expected file /var/www/room_backend/app/controllers/v1/auth/customers/confirmations_controller.rb to define constant V1::Auth::Customers::ConfirmationsController, but didn’t (Zeitwerk::NameError)
from /home/ec2-user/.rbenv/versions/2.6.1/l

元記事を表示

【Rails】Rubocopによるコード解析と修正の方法(airbnb設定)

# Rubocopとは
Ruby(Rails)のコードが、コーディング規約に則っているか解析し、修正までしてくれるgem(=静的コード解析ツール)。
*開発現場では、コードの可読性や統一性を保つために、企業やプロジェクト単位で「コードの書き方のルール(コーディング規約)」が設けられていることが多い。

# Rubocopには様々な設定がある
Rubocopが解析する際の基準となるコーディング規約は、上述の通り、あくまで企業やプロジェクト単位で決められたルールなのでバラバラですよね。

そんな中、今回はairbnbで使用されている設定を使用します。

# 準備
1. Gemfileに以下追記 + `bundle install`

“`ruby:Gemfile
group :development do
#中略
gem ‘rubocop-airbnb’
end
“`
2. 設定ファイルの作成
アプリケーションフォルダ配下(appと同じ階層)に、.rubocop.yml、.rubocop_airbnb.ymlを作成。

3. 設定ファ

元記事を表示

初心者がmacにRuby on Rails環境を構築した話

#この記事で書くこと
macにRuby on Rails環境を構築したときのメモ。
途中、webpacker, Node.js, yarn がインストールされていない等の問題が発生したが、これらの解決策についても記載。

#対象読者 ( = 筆者のレベル)
Progate1周したばかり、くらいの初心者。

#環境
macOS Catalina 10.15.7
MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
 2GHz クアッドコアIntel Core i5
 16GB 3733 MHz LPDDR4X
シェル zsh
ターミナル iTerm2 Build 3.4.4
Ruby 2.7.2
Homebrew 3.0.7
rbenv 1.1.2

#事前準備
Homebrew, rbenv をインストールしておく。
私が上記インストールを実施した際に遭遇したエラーの解決方法は[この記事](https://qiita.com/yu17/items/3b42d269e265b9fc14fb)に記載した。

#実施事項
##1.

元記事を表示

【Ruby】stripメソッドを使って空白文字を取り除く方法

#プログラミング勉強日記
2021年3月28日

#stripメソッドとは
 文字列の先頭や末尾に含まれる空白文字やタブを削除することができるStringクラスで用意されているメソッド。空白文字とタブだけでなく、改行コードや垂直タブなど(`¥t`, `¥r`, `¥n`, `¥f`, `¥v`)を削除する。ただし、全角スペースは削除しない
 メソッド名の最後に`!`(ビックリマーク)を付けて破壊的メソッドを使用することもできる。`strip!`メソッドを使うと、先頭と末尾の空白文字を取り除いた文字列を元の文字列に書きかえる。

“`ruby:stripメソッドの使い方
str = ” Hello World ”
stripStr = str.strip
#=> “Hello World”
“`

“`ruby:strip!メソッドの使い方
str = ” Hello World ”
str.strip!
#=> “Hello World”
“`

#サンプルプログラム

“`ruby
# 先頭と末尾に改行コードがある
str = “\nHello Worl

元記事を表示

【Rails】ルーティングの理解

#ルーティングとは
Railsでは「どのようなURLへどのようなHTTPメソッドでアクセスされたら、どのコントローラーのどのアクションを呼び出したいか」をconfig/routes.rbに定義します。アクセスを受けて、適切なアクションへ案内する仕組みをルーティングと呼びます。

##5つの構成要素
ルーティングは、リクエストをアクションへと誘導する「ルートの」集合と捉えることができます。1つの「ルート」は主に以下表の5つの構成要素から成り立ちます。

| 要素の名前 | 要素の内容の例 | 説明 |
| ———- | ———————— | ————————————————————- |
| HTTPメソッド | GET、POSTなど | サーバーへのリクエストで、情報の送信

元記事を表示

【Rails6】友達登録機能(ユーザーフォロー機能)の単体テストの実装例

以前別の記事で実装方法を紹介した友達登録機能の単体テストの実装例を紹介します。

[【Rails6】友達登録機能(ユーザーフォロー機能)の実装方法](https://qiita.com/yamaday0u/items/c4793b2b16ead7b2db76)

**目次**
– 前提条件
– Modelの確認
– 単体テストのコードの実装

## 前提条件
– RSpecをインストール済み。
– [前回の記事](https://qiita.com/yamaday0u/items/c4793b2b16ead7b2db76)で紹介した通りに友達登録機能を実装していること。

## Modelの確認
[前回の記事](https://qiita.com/yamaday0u/items/c4793b2b16ead7b2db76)からの再掲です。

“`app/models/relationship.rb
# アソシエーションの定義
class Relationship < ApplicationRecord belongs_to :follower, class_name: "User"

元記事を表示

RailsにおけるSeedファイルの作成

##seedファイルって何??

seedファイルというのは簡単に言うと初期データのことです。  
コーディング中に何らかの理由でデータベースをリセットした場合、中に入っているデータももちろんですが消えてしまいます。
しかし、Seedファイルを最初に作成してしまえばあとは反映させるだけで何回でも蘇ります。

##基本的な書き方

“`
User.create!(
email: ‘test@test.com’,
name: ‘テスト太郎’,
image: File.open(‘./app/assets/images/test.jpg’)
)
“`

Userモデルに対して[ email ][ name ][ image ]というカラムを指定し、それぞれの型に合わせて記述します。

Userモデル以外にも、Postモデルなども同じ要領で作成します。
モデル名とカラム名が変わるだけです。

“`
Post.create!(
user_id: 2,
title: “テスト”,
product: “テストです”
)
“`
Postモデルの場合、投稿はユー

元記事を表示

herokuで画像を正しく配置しているのにActionView::Template::Errorがでる場合の対処法

# 背景
作成したアプロケーションをherokuにデプロイしたところ下記のエラー画面が表示された
![スクリーンショット 2021-03-28 17.26.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248254/b2fb3aa4-8b18-519a-190d-a13668836c51.png)

ログを確認してみると以下のようなエラー文が表示されている。

“`ruby
ActionView::Template::Error (The asset “slider-01.jpeg” is not present in the asset pipeline.
“`
トップページに使用しているslider-01.jpegがassetに配置されていないと言われているがローカルでは問題なく表示されている。
画像のサイズの問題かと思い、画像サイズの変更も行ったが改善は見られなかった。

# 環境
ruby 2.6.5
Rails 6.0.3.5
heroku/7.51.0

# 解決方法

試行

元記事を表示

【Railsチュートリアル】第3章 ほぼ静的なページの作成 演習と解答

Ruby on Railsチュートリアル第3章の演習問題と解答をまとめました。
[第3章 ほぼ静的なページの作成 – Railsチュートリアル](https://railstutorial.jp/chapters/static_pages?version=6.0#cha-static_pages)

# 演習と解答

## 3.1 セットアップ

### 3.1 – 1

> Markdown記法のREADME(リスト 3.3)がHTMLとして正しくGitHub上で描画されているか、確認してみてください。

答え:__Github上で正しく描画されていた__

Qiitaの記事を書くときにMarkdown記法を使うので内容もすんなりと入ってきます。

> 本番環境(Heroku)のルートURLにアクセスして、デプロイが成功したかどうか確かめてみてください。

答え:__デプロイに成功している__

hello,world!が表示されています

## 3.2.1 静的なページの生成

### 3.2.1 -1

> Fooというコントローラを生成し、その中にbarとbazアクションを追加

元記事を表示

Rails APIモード + devise_token_auth + Vue.js 3 で認証機能付きのSPAを作る(Vue.js編 その2)

# はじめに
本記事はAPIをRailsのAPIモードで開発し、フロント側をVue.js 3で開発して、認証基盤にdevise_token_authを用いてトークンベースの認証機能付きのSPAを作るチュートリアルのVue.js編の記事(その2)になります。

Rails側のチュートリアルを終わらせてからこちらのチュートリアルに取り組まれることを推奨します。

Rails編はこちら
https://qiita.com/kk-icare/items/c4cd040824c7d6b434d6

Vue.js編その1はこちら
https://qiita.com/drafts/401114a1284f8e9ca135

# 環境
Vue.js 3.0.5
Vue CLI 4.5.9
npm 6.14.8
node 14.15.0
TypeScript 3.9.7
TailwindCSS

# TailwindCSSの導入

スタイルが全く当たらないのは味気ないので、今流行りのTailwindCSSを導入したいと思います。

下記公式ドキュメントに沿って導入を進めます。

https://tail

元記事を表示

RailsでECサイトのカート機能を実装する(ユーザーログインあり・なし両方対応)

## 環境
Ruby 2.6.6
Rails 6.0.3

## 実装機能
簡単なECサイトのカート機能を作成します。
ログインユーザーにはユーザーに紐づいたカート情報を呼び出し、未ログインユーザーにはsessionを利用します。

## 前提
ユーザーのログインのためにdeviseを導入しています。 (モデル名はUser)

## モデル
![ec.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1053396/e251337e-ee34-6e2b-efa8-ae6ea3dca43c.jpeg)

※Userモデルは省いています
カートモデルを作成することでカート内アイテムを管理しています。

“`migrationファイル
class CreateCartItems < ActiveRecord::Migration[6.0] def change create_table :cart_items do |t| t.integer :quantity, default:

元記事を表示

【Railsチュートリアル】第2章 Toyアプリケーション 演習と解答

Ruby on Railsチュートリアル第2章の演習問題と解答をまとめました。
[第2章 Toyアプリケーション – Railsチュートリアル](https://railstutorial.jp/chapters/toy_app?version=6.0#cha-a_toy_app)

# 演習と解答

##2.2.1 ユーザーページを探検する

###2.2.1 – 1
> CSSを知っている読者へ: 新しいユーザーを作成し、ブラウザのHTML検証機能を使って「User was successfully created.」の箇所を調べてみてください。ブラウザをリロードすると、その箇所はどうなるでしょうか?

答え:__消える__

usersで新規ユーザーを登録(New User)後

“`HTML:HTML

User was successfully created.

“`
“`CSS:CSS
#notice {
color: green;
}
“`

新しく作成されたユーザーのshowページには上記のHTMLとCSSが追加されました

元記事を表示

【RubyOnRails + MySQL】AWS Cloud9 環境構築 MySQLの文字化け解消まで

AWS Cloud9で RubyOnRails + MySQL の環境構築を行う
(大変初歩的なことで申し訳ないが)

Create environment後、

##Rubyの設定

####Rubyの好きなバージョンをインストールせよ

“`
$ rvm install バージョン
“`

実行後、

“`
$ ruby -v
“`
をすることで現在インストールされているバージョンを確認できるよ。
Cloud9には元々Rubyはインストールされてるけど、自分の好きなバージョンを入れてね

####インストールしたRubyを使用できるようにせよ
上記のインストールだけでは、ただAWSにインストールしただけだよ

“`
$ rvm –default use バージョン
“`
にて、使用するバージョンを決めておいて

##Rails の設定
####好きなバージョンのRailsをインストールせよ
“`
$ gem install rails -v バージョン
“`
Rubyのときと同じく、念のためインストールしたRailsのバージョンを確認しといて

“`
$ ra

元記事を表示

deviseのログインフォームをトップページにも実装したい

# 概要
こんにちは。

現在Docker×Rails×MySQLでアプリを開発中です。
わざわざログイン画面に遷移しなくても、ユーザー登録が済んでいればトップページからでもメールやパスワードを入力してログインできるようなサイトをよく見かけます。
自分の開発しているアプリにもぜひ取り入れたいと思い実装をしたのですが、少し難儀したのでまとめたいと思います。

もっとも伝えたいことが、**ビューのコピペだけではログインできなかった**という点の解消です。

# 前提条件

・ユーザー管理機能には**devise**を使用しています。
・ログイン画面にてログインができることを確認の上、別のページでもログインフォームを作るのが目的です。
・ログインフォームのみ。新規登録画面(サインアップ)は実装しません。

# 実装(ビューファイルのみ)

#### ログイン画面におけるビューはこのような形です。

“`ruby

<%= form_with model: @user, url: user_session_path, class: 'registration-main', local: tr

元記事を表示

はじめて共同開発にトライする方へ向けた便利TIPS

初めて共同開発を体験して、昔の自分がこれを知っておいたら便利だろうと思えることを備忘録をかねて書き記します。

##slackの情報共有はとっても便利

下記記事をご参考ください。
https://qiita.com/unsoluble_sugar/items/e42ac352400598a24915

連携するとGitHubの変更履歴がSlackと同期するのでSlackの掲示板で進捗確認できて便利です。
![スクリーンショット 2021-03-28 15.34.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455521/6c92eca6-8ee9-8f81-3731-ae6e62a27a12.png)

##まずはブランチを作成しよう
“`Ruby:ブランチの作成
git checkout -b ブランチ名
“`

“`Ruby:ついでに覚えておくと便利
git switch “ブランチ名”
#↓
#ブランチの切り替えができます。
git branch -d “ブランチ名”
#↓

元記事を表示

RailsでNewaAPIを使ってみる

# はじめに
Newsアプリを作成したいと思っていたところ、たまたまNewsAPIという面白いAPIを見つけたので少し遊んでみました。

-環境
・docker-compose
・Ruby 2.6.5
・Rails 6.0.3.4
# 目次

1. [NewsAPIとは](#Chapter1)
1. [導入方法](#Chapter2)
1. [導入作業](#Chapter3)
1. [まとめ](#Chapter4)
1. [参考](#reference)



# NewsAPIとは
世界中のニュースが収集できるAPIです。
世界中のニュースをキーワードや国名で絞り込んだりできる面白いAPIです。
[こちらNewsAPIリンクになります](https://newsapi.org/)

# 導入方法
導入方法は2種類あるようです。

*1、JSONでデータを受け取ってパースして使用する*
*2、ライブラリを取り込んで使用する(未

元記事を表示

Railsがmimemagic無くてbundle installできない

## 概要
2021年3月下旬、Ruby on Railsの依存していたmimemagicの0.3.5以下がyank(削除)されました。そのため以前は`bundle install`ができていたのに急にできなくなった、といった事が起こります。

“`
Fetching gem metadata from https://rubygems.org/……..
Your bundle is locked to mimemagic (0.3.5), but that version could not be found
in any of the sources listed in your Gemfile. If you haven’t changed sources,
that means the author of mimemagic (0.3.5) has removed it. You’ll need to update
your bundle to a version other than mimemagic (0.3.5) that hasn’t been remove

元記事を表示

OTHERカテゴリの最新記事