Rails関連のことを調べてみた2020年06月14日

Rails関連のことを調べてみた2020年06月14日
目次

【エラー備忘録・ターミナル原因】vscodeターミナルのbundle installでハマった

##環境

mac
vscode
rbenv

##エラーの状況
vscodeのターミナルで`rails new`したときの`bundle install`でエラーが発生。エラーが表示されたターミナルを閉じたため正確なエラー全文は分からないが以下のようなエラー。

“`
ArgumentError: user .rbenv doesn’t exist

rakeがinstallできない

Gemfileにgem 〇〇がありませんよ
↑〇〇は、Gemfileのrails下にあるgemが表示された。
個別にそのgemをinstallしてbundle installし直すと、
その次にあるgemがないと表示されループに。
“`

##原因

以下の写真のようにvscodeのチェックを外せば直った。

スクリーンショット 2020-06-14 10.40.05.png[Rails]某フリマアプリのカテゴリー機能の実装方法

# なにこれ
某スクールのカリキュラムでフリマアプリのクローンを作成中です。
そこで、フリマアプリ等によくあるカテゴリー機能を
[ancestry](https://github.com/stefankroes/ancestry)というgemを使って実装したので、
そちらの実装方法を説明用と備忘録として書いておきます。

# この記事を読んで分かること
gem ancestryの導入からカテゴリーボックスまでの実装まで
(ブランドと商品サイズは実装してません)

# 完成図
0cd9ba9b63522a6228918b080238fca0.png

# 開発環境
ruby 2.5.1
Rails 5.2.4.3
Sequel Pro(MySQLデータベース)

# 前提条件
◎商品出品テーブルが作成済みであること

元記事を表示

[Rails]Carrierwaveを用いて画像をアップロードする方法

## carrierwaveとは▼
簡潔に述べると画像をアップロード機能を簡単に追加してくれるRailsのライブラリ(gem)です。
アップロードする画像のサイズを指定したりできます。

## 投稿された画像の保存ファイル▼
投稿される画像は、アプリケーションのpublic以下に溜まっていきます。
画像をGitHubで管理する必要が無い場合は、下記のように.gitignoreに記述を追加して
Gitで管理しないようにしましょう。

“`
# .gitignoreへ追加
public/uploads/*
“`

## carrierwaveの追加方法▼
上から順に実行。

“`
# ターミナルで実行
$ brew install imagemagick
“`

“`
# Gemfileに追加
gem ‘carrierwave’
gem ‘mini_magick’
“`

“`
# ターミナルで実行
$ bundle install
“`

“`
# ターミナルで実行
$ rails g uploader image
“`

“`
# app/models/

元記事を表示

「a duplicate default server for 0.0.0.0:80」という nginx問題の解決方法

同じNGINX サーバーで、二つのサイトを立ち上がりたいところでした。

“`
sugoi.website.net
website.net
“`
上記の二つドメインです。

/etc/nginx/sites-available/

上記のフォルダーにコンフィグファイルも設置しました。nginx サーバー再起動したら、以下エラー出ました;

“`
: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default:2
“`

各ドメインのコンフィグファイルです

どうやら、ipv6only=on と default_server は二つ記載されているのはダメでした。

片方で削除してみたら問題なく動けます

“`
server {
server_name sugoi.website.net
#listen 80 default_server; <----問題1 listen 80; #listen [::]:80 default_se

元記事を表示

RailsでMySQL8を使うときに出てくる認証方式エラーのスマートな回避方法

RailsでMySQL8を使おうとするとこのようなエラーが発生します。

“`
Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
“`

ググると原因と対処方法はたくさん出てきますが、どれも大体my.cnfを設定するという内容のものです。

もっとシンプルに対応できないのか?調べたところcommandとして設定を渡せば良いということが分かりました。
docker-composeだとこんな感じです。
[MySQLのDockerHub](https://hub.docker.com/_/mysql)にちゃんと書いてありました。

“`
services:
db:
image: mysql
command: –default-authentication-plugi

元記事を表示

[Rails]トップページの背景を動画にしようとしたらハマった

トップページの背景を画像から動画にしようと思い実装していたら、ハマりました。

##video_tagを使う

“`ruby:index.html.erb
<%= video_tag("/videos/top-video.mp4", autoplay: :true, loop: :true, muted: :true, class: 'video-content') %>
“`

###ひとつひとつ見ていく

“`ruby
“/videos/top-video.mp4”
#/assets/videos/埋め込む動画

autoplay: :true
#ページ更新時に自動再生

loop: true
#繰り返し再生

muted: true
#無音になる railsではこの設定をしないといけないらしい

class: ‘video-content’
#クラス名の指定
“`

video_tagは初めて使ったのですが、中身は問題なさそう。
基本的には、これで行けると思っていました。
が、ブラウザでみると全く動画が現れない。

拡張子をmp4からwebmにコンバーターで変換して再

元記事を表示

【Rails6】Dockerコンテナを再起動しないとソースコードが反映されない

#いちいちコンテナの再起動めんどくさすぎ問題
環境構築は初学者には難しいと言われていたがなんとかDockerでの環境構築に成功で歓喜!!

せっかく環境構築したしAPIでも叩いてみるか、、と思いコードを書いていたらリロードしても変更が即時反映されない、、**docker-compose restart**でコンテナ再起動したら変更反映されるけどコード変更のたびにこれするの時間もったいなすぎる、、これの解決策を備忘録として投稿させていただきます。
やり方はめちゃくちゃ簡単です。

##環境
– Windows 10 Pro
– Docker for Windows
– Rails 6.0
– Ruby 2.7
– MySQL8.0

##方法
Railsのアプリケーションファイルにある“`config/environment/development.rb“`の末尾の方にある

“`
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
“`

“`
config.file_watcher = Activ

元記事を表示

ファイルがあるのにActionController::MissingExactTemplateが出た

#ActionController::MissingExactTemplate

“`error
ActionController::MissingExactTemplate (Customer::TopController#index is missing a template for request formats: text/html):
“`

こんなエラーが出た。
Railsで開発を行っている中で時々見るエラーだな。
適切なTemplateが見つかりません。というエラー。
まあいつもみたいに対応しよう

controllerのアクションに対して適切なビューがないんだろ…
controllerのアクション名とviewのページ名を確認しよう…
ファイル名でも間違えたのかな…?

間違ってないや。
ディレクトリもあってる。
なんでだ?

Completed 406 Not Acceptable in 2ms
ん? 406error?

406error初めてみたわ

##解決方法

そういえばerbじゃなくてslimファイル使ってたんだ!
Gemfileに以下を追

元記事を表示

【学習記録】herokuへrailsアプリのデプロイ

### 詰まった点
– gitのリモートリポジトリの内容がデプロイされる。(解釈、間違いかも)
 そのため、変更はリモートのmasterブランチにマージする
– テンプレートリテラルを使用しているとエラーになる。

対処法

“`ruby

config/environments/production.rb

config.assets.js_compressor = :uglifier をコメントアウト
もしくは
config.assets.js_compressor = Uglifier.new(harmony: true) とする

“`
– デプロイできるが、jsが読み込まれない。

“`application.js

//= require jquery を一番前に

元記事を表示

【Rails】.gitignoreの設定について

# 経緯
先日、Gitに**commitする際に余計なファイルまで上がって**しまって苦しんだのですが、
すごく便利な.gitignoreの設定方法を教えていただいたので、共有します。

# giboってしってるかい?
こいつ、.gitignoreを自動で生成してくれんです。
### インストール
“`
$ brew install gibo
“`
### gitignoreの生成
“`
$ gibo Rails
“`
これだけ。
こんな感じで生成されます。↓↓
>/.bundle
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
.byebug_history
.DS_Store### https://raw.github.com/github/gitignore/18aa6d83774d514da479d73a4beb864cd4220231/Rails.gitignore
.rbc
capybara-*.html
.rspec
/db/*.sqlite3
/db/*.sqlite3-journal
/db/*.sqlite3-[0-9]*
/pu

元記事を表示

【heroku】S3を用いた画像投稿のエラー解決について( Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError))

# 経緯
どうも、プログラミング(3ケ月)初心者です!
今回は、herokuデプロイしたアプリケーションへ画像投稿できるように、s3を導入しました。
この中で2日苦しんだことがあったので、共有したいと思います。

ちなみに、作業自体は、以下のサイトを参考に実施しました。
[herokuでS3に画像をアップロード(Rails)](https://qiita.com/4EAE_Learner/items/a8c0513c51e4199d8cdf)

※今回紹介するコードは全てターミナル上で実行するものになります。

# エラーについて
### (意気揚々)最初に紹介したページに沿って設定、いざ!!
“`
git push heroku master
“`

###(地獄の始まり)あれ、ちゃんと設定したのに…
>remote: Tasks: TOP => environment
remote: (See full trace by running task with –trace)
remote:
remote: !
remote: ! Pre

元記事を表示

Git clone から 環境構築 して プロジェクトに参加するまでの道のり(全部盛り)

他の人が作っているプロジェクトに参加したい! と思い、とりあえずGit Cloneするものの、そのあともなかなか骨が折れます。道すがらバージョンあわせ(ここではRuby・MySQLを使用)に見舞われたり、共同作業を想定している場合は、参加される側([記事末尾に記載](#製作者側がすること))もあらかじめしておかなくてはならないことがありますので、その道のりを丸っと記録しておきました。部分的にでも、参考になるところがあればうれしいです。

# Gitリポジトリからcloneする
参加したいGitHubのページにアクセス。「Clone or download」のボタンをクリックするとURLが取得できる。
![スクリーンショット 2020-06-13 12.17.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410392/7f028040-90e8-d3d5-3cc9-6bf7c5a1963d.png)
このURLをコピーして、ターミナルで以下のようにコマンドを打つと、現在いる場所にフォルダが作成される

元記事を表示

MVCモデルってなに???

Rails初学者の中には、**MVCモデルって何かよくわからない**という方が意外とたくさんいらっしゃいます。
MVCモデルがわからず、コードをひたすら書くことは果たしてrailsを理解していると言えるでしょうか?いいえ言えません!(反語
そんな方々にMVCモデルに対する苦手意識を無くして欲しいと思い、記事を書いてみました。
ぜひ最後までお付き合いください。

#MVCモデルについて
MVCとは、プログラムを構成している中身を**「モデル(Model)」**、**「ビュー(View)」**、**「コントローラ(Controller)」**の3つに分類したものを言います。
それらの頭文字をとってMVCモデルと呼んでいます。
####・モデル(Model)
モデルとは、データを扱う部分です。データベースに対してデータの登録・取得・更新・削除などの処理をします。
####・ビュー(View)
PCの画面(ブラウザ)に表示される部分を言います。実際に入力する処理を行ったりする部分です。HTMLの作り込みはここになります。
####・コントローラ(Controller)
ユーザからの要求に対して

元記事を表示

コンテナ上で RSpec 実行中、身に覚えのない MYSQL Lock TimeOut エラー

ポンコツすぎる過去の自分に贈る。
# 原因

– 原因 1. コンテナ上でテストを走らせる際、`binding pry`で実行を停止しながらデバッグ等を行っていた。

– 原因 2. あろうことか、**コンテナを停止せず**(binding pry で止まっている状態)、**新しいターミナルを立ち上げ、再度テストを実行。**

– 原因 3. コンテナが乱立し、**同タイミングで複数コンテナがテスト用データの作成等で、 同じDBのテーブルをいじろうとしている状態**に。

イメージScreenshot 2020-06-13 16.32.25.png

– その結果、引き起こされたのが

“`ruby
Mysql2::Error::TimeoutError: Lock wait timeout exceeded
`

元記事を表示

stylesheet_pack_tag と Webpackerの設定 extract_css

環境: Rails 6.0、Webpacker 4.2

[Rails 6にjQueryとBootstrapを入れる](https://qiita.com/kazutosato/items/d47b7705ee545de4cb1a) で紹介したように、BootstrapのCSSをWebpackerで入れるとします。

“`css:app/javascript/stylesheets/application.scss
@import ‘~bootstrap/scss/bootstrap’;
“`

“`javascript:app/javascript/packs/application.js
import ‘bootstrap’;
import ‘../stylesheets/application’;
“`

“`erb:app/views/layouts/application.html.erb
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= styleshe

元記事を表示

開発環境において既存のRailsアプリにDockerを導入する方法(Rails、nginx、mysql)

Dockerに興味があり、作成したポートフォリオに組み込もうと思い、様々な記事を見ながら導入を試みましたが、かなり苦戦を強いられました。
無事導入することができましたので、今回は既存のRailsアプリにDockerを導入する方法を書いていきたいと思います。

# 環境
– Mac OS
– Ruby2.5.7
– Rails5.2.4
– mysql5.7
– nginx1.15.8

# 事前準備
– OS上に Docker と docker-compose をインストールしてください。
以下のコマンドを実行して、それぞれ表示されればインストールできています。

“`
$ docker -v
Docker version 19.03.8, build afacb8b

$ docker-compose -v
docker-compose version 1.25.5, build 8a1c60f6
“`

# ファイル構成
ローカルのファイル構成は最終的に以下の通りになります。

“`
myapp
|– app
|– bin
|– config
|– c

元記事を表示

Herokuデプロイ最速手順(MySQL)

###
ようやくHerokuを使ってデプロイが出来ました。
AWSよりは簡単にデプロイ出来ましたが、少し詰まったところもありましたので、
Herokuへのデプロイ最速手順を備忘録として残します。

## 参考にさせていただいたページ
– [RailsアプリをHerokuにデプロイ(MySQL)](https://qiita.com/rainbow___0/items/1789920cf797b5e80a5e)

– [Heroku ClearDBにSequel Proから接続する](http://hhmmm.hateblo.jp/entry/2016/02/15/204638)

## 事前準備
– Herokuアカウントを取得しておきましょう
[Heroku公式サイト](https://jp.heroku.com/)
– HerokuでMySQLを使用するためにクレジットカードを登録しておきましょう
(Herokuの右上のユーザー情報から”Account Setting” → “Billing”にてクレジットカードを設定できます)
※ 超過しない限り請求されるこ

元記事を表示

high_voltageでコントローラー不要のページを作成

##目的
プライバシーポリシーや利用規約などそれ1枚だけで完結する静的なページを作成したかった。
それだけにコントローラー作るのも……と思っていたらドンピシャの自分でルーティング設定もしなくていい素晴らしいgemを発見。

詳細は公式を見れば分かります。内容も短くて分かりやすいです。
https://github.com/thoughtbot/high_voltage

##higt_voltage導入

“`ruby:Gemfile
gem high_voltage
“`

“`
$ bundle install
“`
ビューを設置。
これで完成。

“`erb:app/views/pages/privacy_policy.html.erb

プライバシーポリシー

“`

静的ページのデフォルトのURLは`/pages/○○`であるが、`pages`を付けたくないときは以下のようにファイルを新規作成して設定すればよい。これで`/○○`のURLになる。

“`ruby:config/initializers/high_voltage.rb
HighVolt

元記事を表示

HTTPS対応503にハマった

Railsのwebアプリをhttps対応する時に、503のエラーで鬼ハマったので、、、記事にまとめてみました。
参考にしてください。

基本以下の記事を参考にしております。

ALB-EC2構成のhttps接続を構築

#段取り
AWSのロードバランサー(ALB)を使いました!

ルートは以下となります。

①EC2 → ②ロードバランサー(ALB) → ③Route53 → ④クライアント

②のところで、HTTPSにします!

##環境
Rails5
unicorn
nginx
capistrano

##AWS
EC2
ロードバランサー(ALB)
ACM
Route53

##前提
EC2にデプロイ完了済とします。
デプロイでnginxを使っています。
route53に登録済とします。

#やり方

##ACMの登録
ACMを利用して、SSlの証明書を発行します。

こちらは以下の記事を参考にしてください!

ALB-EC2構成のhttps接続を構築

##ロードバランサー(ALB)の作成

元記事を表示

Index name ‘index_foo’ on table ‘bar’ already existsが出たときの対処

# はじめに

railsアプリを作成中にタイトルのようなエラーにエンカウントしたので備忘録として

# Index name ‘index_foo’ on table ‘bar’ already exists

同じ名前のindexがありますよというエラーです。

indexってなんぞやという人はこちらをどうぞ -> [データベースにindexを張る方法](https://qiita.com/seiya1121/items/fb074d727c6f40a55f22)

とりあえずmysqlにログインして状態を確認する
参考記事[rails generate migrationしてエラーが出たときの対処法](https://qiita.com/katsuyuki/items/5ba39293f16f5d6cbb56)

“`terminal:terminal
$ mysql -u ユーザ名 -D database名 -p

-u ユーザ名指定するオプション
-D 接続先databaseを指定するオプション
-p パスワードを送信するオプション
“`

なおデータベース名がわからなく

元記事を表示

OTHERカテゴリの最新記事