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

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

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 (変更後)

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

元記事を表示

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まで戻す
※ リモートリポジトリと競合し

元記事を表示

【carrierwave】deviseで作ったuserにプロフィール画像を割り当てる

参考: https://zenn.dev/yukihaga/articles/e63a224431bc96
       : https://scrapbox.io/rails-beginners/Devise%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AB%E3%83%97%E3%83%AD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E7%94%BB%E5%83%8F%E3%82%92%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B(CarrierWave)

今、インスタみたいな(厳密には全然違うけど)アプリケーションを作っているんですが
投稿ポストにはactivestrageで画像ファイルを保存させているんですが、
「この手のサイトってアイコンとかプロフィール画像あるじゃん」ってことに気づいてしまい。後付けでuser登録時にimageを紐づけることに。

経験値が浅い私は
「ac

元記事を表示

RailsプロジェクトにVue.js導入の仕方

# 概要

RailsとVue.jsで開発を行うときにVue.jsの導入で躓いたので共有します
色々記事を見ながら試したんですけどエラーで詰まってハマってしまったので1人でも多くの人に共有できればと思います。

# はじめに
Railsの環境構築は終わったものとする(rails new できる状態)

# 環境構築
環境構築にはhomebrewとrbenvを使用します
まだの方はこちらからインストールしてください
– rbenv: https://github.com/rbenv/rbenv#installation
– homebrew: https://brew.sh/index_ja

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

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

“`shell
$ mkdir rails_Vue_app
$ cd rails_Vue_app
“`

### Rails プロジェクトの作成
バージョンを指定して

元記事を表示

【個人メモ】N+1問題 preload、eager_loadのまとめ

# N+1の対策メソッド
1. joins
1. left_outer_joins
1. eager_load
1. preload
1. includes

eager_load、preload、includesは、一度取得したデータをキャッシュする。2回目以降は、DBではなく、メモリ上にキャッシされたデータを取得することになる。
キャッシュが不要な場合は、joins或いはleft_outer_joinsを使用する。これらはSQLの句なので、この記事で詳細は触れない。

# N+1問題とは?
ループ処理の中で都度SQLを発行してしまう問題のこと。
[【Ruby on Rails】N+1問題ってなんだ?](https://qiita.com/massaaaaan/items/4eb770f20e636f7a1361)

# preload
joinは行われず、2つのテーブに対してそれぞれSQLを発行する。(=2回SQLを発行)
joinを行わないため、where句による絞り込みが出来ない。
レコード量が多い場合、joinの処理を行うeager_loadはパフォーマンスや負荷に影響する場

元記事を表示

EC2+Mysql8.0+Railsまでの構築の流れ

# 概要
EC2にMysql,Ruby,nginxを構築しELB,RDSとの連携まで行い完成を目指す。

#### 構築の際の環境
– Mac (M1 MacbookAir)
– OS : Amazon Linux2
– rbenv ver : 1.2.0
– Ruby ver : 3.1.2
– rails ver :
– mysql ver : 8.0.28

#### 前提準備 (作成済みなもの)
– VPC×1
– Subnet(public×2 , private×2)
– EC2×1
– RDS×1
– route table
– internet Gateway
– seculity group (EC2用)×1
– seculity group (RDS用)×1
– githubに新規リモートリポジトリ×1
– EC2へのssh接続設定済み
– GitHubのターミナルへのインストー設定済み

## 設定用ツールのインストール
Rails搭載JavaScriptのパッケージを管理するためのパッケージマネージャ
“`ruby:
$ sudo yum -y update

元記事を表示

Rails PamaのDaemonaization設定

### 概要
EC2にnginxの構築を完了し、RailsのPamaデーモン化を構築した際の備忘録として。

### 環境
– Mac M1 macbookAir
– Rails 6.0.4.8
– ruby 2.6.5
– Bundler 1.17.2

### Gemfileに追記し、bundle installの実施
“`ruby:Gemfile
<省略> # Use Puma as the app server $ gem 'puma', '~> 5.0’                                  #5.0に変更
$ gem ‘puma-daemon’, require: false        #追記

<省略>

# bundle installの実施
$ bundle install –path vender/bundle
“`
### config/puma.rbに追記し、pumaを起動
“`ruby:Config/puma.rb
<省略>

require ‘puma/daemon’

元記事を表示

【コピペOK!失敗しない!】Ruby on Rails 6系のDocker環境構築(Ruby 2.6.6、Rails6.0.3、Mac)

## はじめに
DockerでRuby on Railsの環境構築をするにあたり、色々な記事を読み比べ、エラーが出ては周りのエンジニアとして活躍されている方達にアドバイスをいただきました。

そうしていくうちに自分なりの「解」を見出せたので、自分が忘れないように、また他の方々の参考になればと思い当記事を作成いたしました。

## RailsとRubyのバージョンについて
![B08D3DW7LP.01._SCLZZZZZZZ_SX500_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366336/9f92b5d1-d3d7-650e-6f6d-9c53b806a9c4.jpeg)
画像引用元:Amazon 「パーフェクト Ruby on Rails 【増補改訂版】 」

上記画像の著書「[パーフェクト Ruby on Rails 【増補改訂版】](https://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%

元記事を表示

[RSpec]Expected response to be a <3XX: redirect>, but was a <200: OK> – deviseによるログイン / アカウント登録のテスト

RSpec初心者です。
deviseのユーザー認証に関するテストで表題の文言と共にテストに失敗したので、意味を調べました。

“`console
Failures:

1) DeviseSessions POST #sign_in パラメータが正しい場合 ユーザー個別ページにリダイレクトされること
Failure/Error: expect(response).to redirect_to user_url(user.id)
Expected response to be a <3XX: redirect>, but was a <200: OK>

“`

## 原因

Createアクション実行後にユーザープロフィールにリダイレクト(status 302)されるところ、Createに失敗してフォームが再表示されている。

>The error message means that the create action is failing, and instead of >redirecting to the user’s profile (s

元記事を表示

【CircleCI】”Unable to find gem rubocop-discourse; is the gem installed? Gem::MissingSpecError”が出た時の対処法

# はじめに
CircleCI実行時にRubocopを実行させようとした時に、発生したエラーとその対処方法について、メモしておきます。

### 実行環境
ruby 3.0.2
rails 6.1.4
rubocop 1.24.1
circleci version 2.1

# 発生したエラー
`.config.yml`を以下のように記述し、CIを実行しようとしたところ、rubocopを実行する部分でエラーが発生しました。

“`:config.yml
version: 2.1

orbs:
ruby: circleci/ruby@1.4.0

jobs:
build:
docker:
– image: cimg/ruby:3.0.2
working_directory: ~/appname_backend
steps:
– checkout:
path: ~/appname_backend
– ruby/install-deps

test:
docker:
– imag

元記事を表示

Google Ads APIバージョンの確認・アップグレード

# アップグレード通知は突然に
それは突然やってきました。
(メール引用)
![スクリーンショット 2022-04-28 13.50.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147005/32e8cce1-fd85-585c-1547-9889008866aa.png)

あ、アップグレードしなきゃ:neutral_face:
いや待てよ…そもそもバージョンの指定なんてした覚えがないのですが?

# APIの呼び出し環境
RoRで開発を進めているプロジェクトなので、もちろんAPIの呼び出しには公式のgemを使っています。
https://github.com/googleads/google-ads-ruby

# バージョン指定箇所の大捜索
プロジェクト内で指定している箇所を検索しました。
しかし、探せど探せど見つからない。
流石にconfigファイルにあるだろうと思ったけど見つからない。

# そうだGitHub上で探そう
こう思えるようになったのも自分の成長の証な気がしました。
G

元記事を表示

Firestoreでcollectionのfield名をcamelCaseとsnake_caseで交互に置換したい

# 問題

– Javascriptは通常camelCaseで書く
– Rubyは通常snake_caseで書く

そうするとFirestoreのcollectionのfieldはcamelCaseだけど、rubyにデータがある時はsnake_caseにしたい。

# 解決

Railsとしてここに置く

“`rb:config/initializers/firestore.rb
module FirestoreOliveBranch
module Outgoing
def create(data)
d = data.deep_transform_keys { |key| key.to_s.camelcase(:lower) }
super d
end

def set(data, merge: nil)
d = data.deep_transform_keys { |key| key.to_s.camelcase(:lower) }
super d, merge: merge
end
end

元記事を表示

RailsアプリにPython3系の実行環境構築する

## まえおき
Railsを使ったプロジェクトにて大量レコードをエクセルに書き込む処理があるのだが、
使用していたRubyライブラリの「RubyXL」ではメモリ効率や出力速度に限界があり、「数十時間出力にかかる」、「出力する前にメモリ枯渇」するなどの問題があった。
Rubyには他にもエクセルのライブラリがあるが、書式設定などが自由にできないものが多く採用に至らず。
調査したところ現状の仕様を満たすかつ、メモリ効率が高いライブラリとしてPythonに「openpyXL」というものあったので導入した。
そこでRailsアプリ内でPythonを実行するための環境を用意する必要が出てきた。
なお単発的にRubyファイルからシェルスクリプトを経由してPythonファイルを実行する想定。
特にバージョン管理は必要ないのでPyenvは無し。

## 環境
– GCE
– OS:CentOS7
– 言語:Ruby(2.2.2)
– フレームワーク:Rails(4.2.5)

## 環境のチェックなど
①OSのバージョン確認
cat /etc/redhat-release
>CentOS Linux

元記事を表示

AWS – Capistranoを使ってデプロイした際のエラー奮闘記

こんにちは。
早く駆け出しエンジニアになりたい@iloveomeletteです。

標題にある通り、Capistranoを使ってデプロイした際に少々苦戦したので、
共有していこうと思います。
ポケモンのジム戦のようにエラーを解決するたび、またエラーに遭遇するということを繰り返してました。しょうもないエラーも紹介しつつ解決までの過程を書いていきます。
誰かの参考になれば幸いです。

尚、ご指摘箇所がございましたら
ご教授いただけますと幸いです。

それでは以下の目次でお送り致します。

| ラウンド | エラー項目 |
|:-:|:-:|
| 1 | VS 『supports platforms』 問題 |
| 2 | VS 『An error occurred while installing mysql2 (0.5.3)』 問題 |
| 3 | VS 『Mysql2::Error: Unknown database ‘アプリ名_production’』 問題 |

## 前提

それでは、まず環境などの前提部分からですね。

– macOS Monterey 12.3.1

元記事を表示

graphql-deviseのmount_graphql_devise_forの処理を追う

## これは何か

mount_graphql_devise_for の処理がブラックボックスでgraphql_deviseの理解が進まないため、理解を進めるために詳細な実装を追ったときのメモです。

## 前提

– [graphql-devise](https://github.com/graphql-devise/graphql_devise) v0.18.2
– まだ、マイナーバージョンのgemで内部の構造は結構な頻度で変わっている模様で、これは2022/04/27時点の情報です。
– 間違っている箇所などあるかもしれません。間違いありましたら、優しくご指摘いただけると嬉しいです。

## mount_graphql_devise_forの処理を追う

graphql-deviseで`bundle exec rails generate graphql_devise:install`を実行して`routes.rb`を見ると下記のコードが定義される。今回はこの処理が何をしているのかを追っていきたいと思います。

“`ruby:routes.rb
mount_graphql_de

元記事を表示

OTHERカテゴリの最新記事