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

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

【Rails】Aws::S3::Errors::RequestTimeTooSkewed への対処

## S3へのリクエストタイムが違いシードが流せない
Railsの本番環境でシードデータを入れる時に、
S3とのtimeがかけ離れているというニュアンスのメッセージが出現した。

“`
[sirius@ip-10-0-11-191 diary_app]$ rails db:seed RAILS_ENV=production
Start inserting first seed “user” …
rails aborted!
Aws::S3::Errors::RequestTimeTooSkewed: The difference between the request time and the current time is too large.
“`
EC2インスタンス上では`JST`(日本標準時)を指定しているので、`date`でそれ確かめてみると、たしかに、実際の時間が10:00なのにインスタンス40分近くずれていることがわかった。

これがシードデータを流すときに、S3バケットにアクセスした際に時間差がおおきすぎるのでエラーが生じたのだろう。

“`
[sirius@

元記事を表示

脳筋が岡山県内のジムを検索するサービスを開発しました(ポートフォリオ、Rails+AWS+Docker)

## はじめに

・この記事はポートフォリオとして開発した、岡山県内のジム検索サービス「Gymseek」の紹介記事です。
・現在はAWSの無料会員期間終了のため、サービスを閲覧することはできません。

![150344970-bab35ab6-8556-427d-9775-44233e3da39a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2086069/fa16a097-41d8-0809-9cb8-89c922161283.png)

https://github.com/omeinu/gymseek

## 目次
– 自己紹介
– 利用方法
– 使用技術
– AWS構成図
– 機能一覧
– ER図

## 自己紹介

初めまして!
私は、元消防士の駆け出しエンジニアです。
29歳で岡山→東京へ上京しました。

エンジニアとして働き始めて1ヶ月が経ちましたので、ここらで転職用に開発したポートフォリオを記録に残しておこうと思い、初めて記事を書かせていただきました。

## 利用方法

トップページ

元記事を表示

Rails7でdevise_token_authをインストールする

## 遭遇したエラー

“`
$ bundle

Fetchings gem metadata from https://rubygems.org/………..
Resolving dependencies….
Bundler could not finde compatible versions from gem “rails”:
In Gemfile:
rails (~> 7.0.1)

devise_token_auth was resolved to 0.1.21.alpha2, which depends on
rails (~> 4.1.4)
“`

rubygemsに上がっているdevise_token_authがRails7をサポートしていないためインストールができない
## 解消法

Gemfileに以下のように`devise_token_auth`を追加する
“`yaml
gem ‘devise_token_auth’, ‘>= 1.2.0’, git: “https://github.com/ly

元記事を表示

Rspec導入で躓いた話

# 概要

既存のRailsプロジェクトにRspecを導入したらつまづいたので解決方法を共有します
1人でも多くの人の役にたてればと思います。

# はじめに

### 使用する環境
– MacOS(M1)
– Rails 6.1.5
– Ruby 3.1.0
– yarn 1.22.17
– Homebrew 3.4.8

### はじめにアプリケーションを作成するディレクトリを作成

“`shell
$ mkdir rails_Rspec_app
$ cd rails_Rspec_app
“`

### railsプロジェクトの作成
“`shell
$ rails new rails_Rspec_app
“`

### プロジェクトへ移動
“`shell
$ cd rails_Rspec_app
“`
### サーバー起動

“`shell
$ rails s
“`
http://localhost:3000 にアクセスしてこの画面が出たら成功です

![スクリーンショット 2022-04-29 16.18.29.png](https://qiita-image-s

元記事を表示

Railsのバージョンを変える方法

# 現状
“`terminal:ターミナル
gem install rails
“`
このコードを実行すると、デフォルトで最新版のRailsがダウンロードされますが、、、
“`terminal:ターミナル
gem install -v 6.1.4.4 rails
“`
このように、**バージョン指定して実行**しても、なぜか最新版のRails(7.0以上)がダウンロードされることがしばしば起こっています。。。(多くは、初心者のバージョン指定忘れですが、稀に起こっています🤔)
今回は、その解決策を書いておきます!!🙌

# 解決策
## 手順
1. railsをアンインストールする
1. railtiesをアンインストールする
1. 再度railsのバージョンを指定してインストールする

## 実際の手順
### 1. railsのアンインストール
以下のコマンドを実行し、アンインストールします。
“`terminal:ターミナル
gem uninstall rails
“`
### 2. railtiesのアンインストール
次に、以下のコマンドを実行します。
“`term

元記事を表示

🔰【初学者用】deviseを使ってユーザー管理機能を実装しよう!【Ruby on Rails】

## はじめに
プログラミング初学者の私がアウトプットとこれから学習される皆様の参考になればと思い投稿しています。
まだ、マークダウン記法も不慣れな初学者ですので、間違い等があれば指摘いただけると幸いです。

## この記事を見てできるようになること
Ruby on Railsのgemであるdeviseを使用して、ユーザー管理機能を実装できるようになります!

## deviseとは?
ユーザー管理機能(例:ログイン、ログアウト、新規登録)を簡単に実装するためのGemです。

## deviseの導入
まずGemfileを編集します。追記する場所はGemfileの最後の行で構いません。
“`:Gemfile
gem ‘devise’
“`
:::note warn
**⚠注意**
**device**としないこと!
私はこれでかなりの時間を消費しました\:cry:
:::

使用するアプリディレクトリを開き以下のコマンドでgemをインストールします。

“`:ターミナル
bundle install
“`
次にローカルサーバーを起動or再起動させます。
サーバーを起動していなか

元記事を表示

【PostgreSQL】A server is already running の対応

## エラー内容

Railsアプリを実行している中でpostgresqlへの書き込みが永遠に終わらない状況に直面した。

Contorl + C でシャットダウンしようとしても効かず、仕方なくターミナルを強制終了。その後にアプリを立ち上げようとすると以下のメッセージが表示された。

“`
ynamiki@YoheinoMacBook-Pro sora % rails s
=> Booting Puma
=> Rails x.x.x.x application starting in development
=> Run `rails server –help` for more startup options
A server is already running. Check /Users/ynamiki/Desktop/sora/tmp/pids/server.pid.
Exiting
“`
※soraはprojectフォルダ

起動しようとしているPostgreSQLが既に走っていると認識されており、それとぶつかって起動できないらしい。QiitaにはPumaサーバーが

元記事を表示

Gemネイティブ拡張機能のビルドに失敗

## スペック
– macOS Monterey 12.3.1
– Rails 7.0.2.3
– Bundler version 2.3.7

## 実行したコマンド
`bundle install` のコマンドを実行したら下記のエラー内容が返ってきました。

## エラー内容
“`
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:

~~~ 省略 ~~~

rake aborted!
Could not find MIME type database in the following locations: [“/usr/local/share/mime/packages/freedesktop.org.xml”,
“/opt/homebrew/share/mime/packages/freedesktop.org.xml”, “/opt/local/share/mime/packages/freedesktop.org.xml”,
“/usr/s

元記事を表示

説明変数(要約変数)のメリット・デメリットと、発展例

## はじめに
この投稿では説明変数と要約変数は同じものとして扱った上で、
**メリット・デメリットの解説** と、**説明変数を更に発展させた例**を解説していきます。

## **説明変数・要約変数とは何か?**

長くて複雑な処理や、意図が分からない処理を理解しやすくするために
**あえて定義する変数**のことです。

## 説明変数の導入例

* サンプルコードは、「最近公開された記事」を取得する処理を題材にしています。
「最近」の定義は、「3日以内に公開されたかどうか」で判定しています。
* サンプルコードにはRuby及びRuby on Rails, RSpecを使った書き方を採用しています。

**Before**

“`ruby
def hoge
Article.where(publication_start_at: 3.days.ago..Time.current).each do |article|
# 何かの処理を行う
end
end
“`

**After**

“`ruby
def hoge
# (訳: 最近公開された記事)
rec

元記事を表示

cloud9でrailsの環境構築をする

cloud9でrailsの環境開発を行う際にすることをまとめた。まずはターミナルで
“`
$rails new sample app
“`
と打ち込む。ここのsample appは好きなファイル名でOK!
その後
“`
$cd sample app
“`
で移動したのち
“`
$rails s
“`
でサーバー起動します。無事起動できれば終了です。しかし,以下のようなエラーが出てくるかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2500127/5b6d06a5-bba6-180b-8ba5-74af78433db2.png)

対処方法としてはGemfileを編集します。
Gemfileに以下を追記します。
“`ruby:Gemfile
gem ‘sqlite3’, ‘~> 1.3.6’
“`
修正前
![スクリーンショット 2022-05-01 23.59.10.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

【備忘録・Rails】deviseを用いた管理者機能の実装

## 初めに
こんばんは、だいごです。
今回は、自身が作成中のオリジナルアプリに用いたdeviseの管理者機能についてまとめます。
よかったらご覧ください。

## 実装の手順
初めに、deviseを導入していきます。
この手順に関しては、省略しますが、気になる方はこちらの記事を参考にしてください。

[devise導入手順](https://qiita.com/pro_daigo/items/683cf5e0f34184609b7e)

ここからは、管理者機能を実装していきます。
まずは既存のusersテーブルにデータ型がboolaen型のadminカラムを追加するためにmigrationファイルを作成します。

“`zsh:ターミナル
% rails g migration add_admin_to_users admin:boolean
“`

※**boolean型**:真理値の「真 = true」と「偽 = false」という2値をとるデータ型

続いて作成したマイグレーションファイルを編集していきます。
以下のように記述します。

“`rb:2022XXXXXXXXX

元記事を表示

Railsにメールが2通来るお問合せ機能を作ってみた

自分のポートフォリオにお問合せ機能が欲しくなり、実装してみました。

こちらの記事を参考
https://qiita.com/japwork/items/145645e281b81d9bf92c

開発環境
ruby ‘2.7.5’
gem ‘rails’, ‘~> 6.1.4’,
OS: macOS Catalina

まず最初にmailerを作成します。
“`
rails g mailer ContactMailer
“`
そして、送信先と件名を指定します。
自分の場合は、メールの送信先と送信元の二箇所にメールを送りたいため、
2つ作っています。
“`
class ContactMailer < ApplicationMailer default from: 'noreply@example.com' default to: 'admin@example.com' layout 'mailer' def send_mail(contact) @contact = contact mail(from: contact.email, to:

元記事を表示

Heroku でのDBをリセットしシードデーターを投入する手順

“`
この記事の環境
mac OS
Rails 6.0.3
ruby 3.0.1p64
“`

gitの変更内容をherokuにpushsする
“`
 git push heroku step5:master
“`

新たにカラム追加やデータ内容を変更する為。データーベースリセットをする 。
“`
heroku pg:reset -a myapp
“`

マイグレーション実行
“`
heroku run rake db:migrate
“`

seedデータ投入
“`
heroku run rails db:seed
“`

おまけ
データーベースの詳細が取得できるコマンド
heroku pg -a アプリ名
“`
=== DATABASE_URL
Plan: Hobby-dev
Status: Available
Connections: 1/20
PG Version: 14.2
Created: 2022-04-11 15:

元記事を表示

RailsとVueの組み合わせで’Hello Vue’がうまく行かなかったときの備忘メモ

## 背景
書籍『【Rails x Vue.js】メモアプリを作成しながらモダンな開発を学ぼう!』
を参考にVueを導入しようとするも、Hello Vue!になかなかたどり着けなかったため、備忘メモ

## 環境
Rails 6.1.5.1
vue ~~3.2.33~~ → 2.6.14 ※今回のエラーの原因

## 起きていた事象
以下記載があるViewページへアクセスしても、何も表示されない自称が発生
`<%= javascript_pack_tag 'hello_vue' %>`

コンソールに以下の表示有り。
`”export ‘default’ (imported as ‘Vue’) was not found in ‘vue’ RAILS`

## 解決方法
rails new のあとにpackage.jsonを以下の通り編集。

“`diff_json:package.json
– “vue”: “^3.2.33”,
– “vue-loader”: “^17.0.0”,
– “vue-template-compiler”: “^2.6.14”
+ “vue”: “^2

元記事を表示

AWS/Rails デプロイ後の『502』エラー奮闘記

## 概要

先日、[「AWS – Capistranoを使ってデプロイした際のエラー奮闘記」](https://qiita.com/iloveomelette/items/3c0f2dd3faa2fcefc948)を書きました。
今回は、そのデプロイ後に起きた「**502**」エラーの対処法を述べていきます。

**デプロイには成功したのに、アプリが表示されない**、といった方の参考になれば幸いです。

前提として、デプロイにはCapistranoを利用しています。
構成は以下の通りです。

– macOS Monterey 12.3.1 (M1)
– Ruby 3.1.1
– Rails 6.1.5
– nginx
– puma
– MariaDB 10.6.7
– EC2(Amazon Linux 2 AMI / t2.micro)
– RDS

こんな感じです。

## 「502」エラーとは

そもそも「502」エラーとは何なのでしょうか。

>502エラーとは、Webサーバで起きるエラーの種類の一つで、目的地のWebサーバが機能していないことを、経路途上にある中継サーバ(プロ

元記事を表示

docker-composeでrails7の開発環境を作る

現在rails7で使える情報がないので記す。webpackerがなくなったので構築するための
ノウハウも変わっている。

## 5つのファイルを準備する

“`ruby:Gemfile
source “https://rubygems.org”
gem “rails”, “~> 7.0.2”, “>= 7.0.2.4”
“`

“`
$ touch Gemfile.lock
“`

“`Dockerfile:Dockerfile
FROM ruby:3.1.2
RUN apt-get update -qq \
&& apt-get install -y nodejs npm \
&& rm -rf /var/lib/apt/lists/* \
&& npm install –global yarn

ENV APP_NAME=myapp
ENV TZ=Asia/Tokyo

WORKDIR /${APP_NAME}

COPY Gemfile /${APP_NAME}/Gemfile
COPY Gemfile.lock /${APP_NAME}/Gemfile

元記事を表示

[Rails]RSpecでbinding.pryがNoMethodError: undefined method `pry’ for *** になるときの対処法。

RSpec初心者です。

RSpecのテストがどうしても通らないので、変数の中身を確認したい、という状況がありました。
調べてみるとexample中(`it ‘hoge’ do`の中)で`binding.pry`が使えるらしいです。

しかし、`NoMethodError`が出てデバッグできませんでした。

“`console
Failures:

1) DeviseSessions POST #sign_in パラメーターが有効な場合 ユーザー個別ページにリダイレクトされる(リクエストが成功する)こと
Failure/Error: binding.pry

NoMethodError:
undefined method `pry’ for #
Did you mean? try

“`

## 原因
`spec/spec_helper.rb`に`require ‘pry’`が記載されていない。

参考:

https://stackoverflow.com

元記事を表示

「[ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!」エラーの対処法

 この記事では、初学者である私がDockerを利用してRails, Nginx, MySQLの環境構築の際に直面したエラーを自己解決した方法を記載します。ググって色々な記事を参照したのですが解決しませんでした。結論から述べますと、MySQLのバージョン対応によるエラーでした。
各バージョンは以下になります。
* Rails: 7.0.2.4
* Nginx: 1.20.2
* MySQL: 5.7 → 8.0 (変更後)

今後、開発を進めていくうえで別の問題が発生しましたら追記する次第です。
同じ状況の方の一助となれば幸いです。
内容に誤り等ございましたらコメントよろしくお願いします。

元記事を表示

【Rails】WebpackerでインストールしたVueが表示されない

Webpackerを利用してVue.jsをインストールしたところ、`Hello Vue!`を表示させることができませんでした。
解決法を得るのに時間がかかってしまったので、同じ状況に遭遇した方向けに情報を残しておきます。
結論から言うとインストールされたVueのバージョンが原因でした。

## 前提
まず、不具合が発生するまでの過程をまとめると下記の流れです。

### Vueのインストール
まずは下記のコマンドでWebpackerをインストール
“`
$ rails webpacker:install
“`

次にWebpackerでvueをインストール
“`
$ rails webpacker:install:vue
“`

### ルーティングを追加
“`config/routes.rb
Rails.application.routes.draw do
get ‘home’, to: ‘home#index’
end
“`

### コントローラーを作成

“` app/controllers/home_controller.rb
class HomeContr

元記事を表示

Webアプリデプロイ方法(AWS EC2編) – 補足 –

# はじめに
以前の記事「[Webアプリデプロイ方法(AWS EC2編)](https://qiita.com/Unimaru/items/66a01ad5dab54e66ff47)」でデプロイしたアプリについて、機能改善などで都度更新する内容を本番EC2インスタンスに反映させる手順。
上記の記事内で初回デプロイ時に各種設定を実施していることが前提。

# 開発環境にてコード編集、リモートリポジトリにpush
– Macなど、開発環境にて機能改善などにより、プログラムコードを編集する
– 編集したコードをリモートリポジトリにpushして反映させる

# リモートリポジトリからpull

– デプロイ対象のEC2インスタンスにssh接続し、ローカルリポジトリに移動する

“`sh:EC2
[memadmin@ip-xx-x-x-xxx memory_tank]$ pwd
/var/www/rails/memory_tank
“`
– commitがされていないファイルが存在する場合、commitするかgit checkoutで以前のcommitまで戻す
※ リモートリポジトリと競合し

元記事を表示

OTHERカテゴリの最新記事