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

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

プログラミングスクール生におすすめのVSCodeプラグイン

## はじめに
プログラミングスクールを卒業して、現在**物流×IT**の企業でエンジニアをしているyukiと申します。
この記事を読んでいる多くの方は、きっとプログラミングスクールに通われているor通おうと思っている方だと思います。

皆様は、テキストエディターは何を使われているでしょうか?
テキストエディターってなんぞや?という方は、[こちら](https://www.pc-master.jp/words/text-editor.html)をご覧ください。(以下、エディター)

プログラミングスクールから推奨されているエディターもあるかと思いますが、個人的におすすめなのはVSCodeです。
今回はそのVSCodeをより便利にしてくれる機能「プラグイン」について、スクール生向けに記事にしてみました。

インストール方法などは、素晴らしい参考記事があるので、一番下の見出しから閲覧ください。

## 記事の対象者
– プログラミングスクールでRuby/Railsが主要なカリキュラムに含まれている生徒の方
– VSCodeのインストールはすでに済んでいる方
– Macユーザー

## そも

元記事を表示

【Rails】Simple Calendarのミニアプリをカスタマイズ仕様で作ってみた

#はじめに
自分のアプリにカレンダーが欲しかったので、Simple Calendarのミニアプリをカスタマイズできるように作ってみました。
以前、「FullCalendar」を作ったのですが、欲しい機能をプラグインできそうになかったので、細かな実装ができる「Simple Calendar」も作ってみたいと思います。

#完成図
![スクリーンショット 2020-10-29 17.57.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/aa6b4b3c-82f2-ebec-9a94-bda05bd4c34f.png)

###目次
1. 新規アプリケーション作成
2. simple_calendarの導入
3. カレンダー機能の雛形作成
4. カレンダーの表示と「イベント追加」機能の実装
5. 見た目を整える

#対象者
カレンダーを導入したい方
MVCを実装できる方

#開発環境
ruby 2.6.5
rails 6.0.0
データベース mysql2 0.4.4
simple

元記事を表示

【Rails/他にも応用できるかも?】RSpec実行時に、failure/error __send__(method file) rspec cannnot road such fileが出た場合の対応策

# はじめに
こんにちは、[yuki](https://twitter.com/yuki82511988)と申します。よろしくお願いします。
現在、物流関係の企業でWebエンジニアとして勤務しております。(1年目)
弊社はメインで利用している言語がPHPなのですが、自分が個人の開発でRubyを使うことがあるので
今回はRSpecに関する記事を書きました。

## 読者の対象
– 掲題のエラーが発生している方
– エラーに遭遇しており「load」という単語がエラー文に含まれている方

## 読んで分かること
– 掲題のエラーの解決方法
– Load関係のエラーへの一種のアプローチ方法

# エラーが起きた状況
プログラミングのメンターをしていた際に、生徒さんの方で
Rspecの実行コマンド
`bundle exec rspec spec –format documentation`を行った際に、掲題のエラーが出ました。

## 原因
直接的な原因は、**specフォルダを2個作っていること**でした。
それが原因で、読み込みの際にエラーが出ていたようです。

エラー文を解読しようとする

元記事を表示

Railsを動かすために、WebpackerとYarnをインストールする

# 環境
Ubuntu16.04.7 LTS
Windows10 + Vegrant
Rails 6.0.3

# やったこと

railsを起動したところ、Webpackerが存在していなので、インストールして下さいのエラーメッセージが表示されるのでインストールする事に。

“`
$ rails s
Webpacker configuration file not found /vagrant/xxx/config/webpacker.yml.
Please run rails webpacker:install Error: No such file or directory @ rb_sysopen – /vagrant/xxx/config/webpacker.yml (RuntimeError)
“`

ところが、Webpackerをインストールしようとすると、今度はYarnをインストールして下さいと出てくる。

“`
$rails webpacker:install
Yarn not installed. Please download and install Ya

元記事を表示

swagger書くのがめんどくさい!- Rspecからyaml自動生成してみた –

## はじめに
こんにちは。サーバーサイドエンジニア1年目のものです。
APIを作っていて最近いつも思うわけです。「swagger書くのだるい」と。どうにか自動化できないかと模索している中で、5ヶ月ほど前に作られたgemを発見したのでそれを使って自動化してみたという記事です。

rspec-openapi: https://github.com/k0kubun/rspec-openapi

ちなみにswaggerっていうのはこれです。swaggerの導入の仕方などはここでは省略します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376893/e09b16ec-b33a-9c2f-f594-c37800610cf7.png)

## 今までgemとの違い(Readme参照)
これまでにもrspecからswaggerを自動生成するgemはありました。
– [zipmark/rspec_api_documentation](https://github.com/zipmark/rspec

元記事を表示

docker + mysql が接続できない /Can’t connect to local MySQL server through socket ‘var/run/mysqld/mysqld.sock’ (2)

# 概要

ポートフォリオ制作真っ最中です。
mysqlとのアクセスの際に躓いてしまったので、備忘録の意味も含めて書きます。
初心者で同じところで躓いてしまった方に届けば嬉しいです。
※誤りなどあれば、コメントくださると嬉しいです。

# 今までのフロー

* docker-compose.ymlを作成
* config/database.ymlの環境変数を修正
* `$docker-compose up`
* http://localhost:port/でアクセスした際に、以下のエラー

> ***Can’t connect to local MySQL server through socket ‘var/run/mysqld/mysqld.sock’ (2)***

# 解決法

①docker-compose.ymlでユーザーとパスワードを設定
②同様のユーザーとパスワードをdatabase.ymlで設定

# 原因到達までの流れ

`$docker exec -it /bin/bash`でdbコンテナに入った後、
`$mysql -u root`

元記事を表示

herokuにデプロイすると 『We’re sorry, but something went wrong.If you are the application owner check the logs for more information.』が立ちはだかった。

プログラミング初学者です。
認識の誤り、そもそも間違ってるで?というところはご教授いただけると嬉しいです。

“・エラー発生の要因
・要因発見までの方法
・なぜその要因がエラーになるのか“

について記述しています。

#herokuデプロイ後に特定ページで『We’re sorry, but something went wrong.If you are the application owner check the logs for more informatio』が立ちはだかった件
ユーザー登録後に遷移するページでエラーがでました。
![デプロイエラー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764924/7b621319-735b-9cea-0173-c1208ecf12bb.png)

ローカル開発環境(cloud9)では問題なく表示できていたのですが・・
エラー発生以降、ググって試して、ググって試してを繰り返し、1日半かけて無事解決。

__さて、何が原因だったのか__

##結

元記事を表示

Rubyの人に今すぐ伝えたいwebpackとwebpacker

# 導入部

## はじめに

 RubyやRailsをメインで開発していて、「正直JSはよくわからん」という人は、結構いると思います。
 しかしブラウザがそこにある限り人類はJSから逃れることはできません。
 この記事は、JSに苦手意識のあるRubistたちにwebpackとお友達になってもらうために書きました。

 webpackerが何なのか知っておくと、役に立つ日が絶対に来るので、ぜひ知らない人は読んでください。
 もし私がJSをよく知らないRails開発者だったら、webpackやwebpackerが何者なのかを、こう教えてほしいという気持ちで書いています。

## 対象読者

– webpackがなんのためにあるのか分かっていない開発者
– webpackerをよく分からないうちに使っているRails開発者

## 概要

### この記事で説明すること

– なぜ私達はwebpackを使うのか(前半)
– webpackとwebpackerは何をしているのか(後半)

### この記事で説明しないこと

– webpack.config.jsの詳細な書き方

# webp

元記事を表示

ActiveStorage vs CarrierWave

ActiveStorageが公表されてから1年以上経ちますが、いまだに伝統的手法(?)であるCarrierWaveに置き換わることはなく、どちらを使うか論争が続いているようです。(私は何となくActiveStorageを使っていました。)

基本的にバリデーションやクラウドストレージとの連携においては、手順の違いこそあれどちらもできますし、設定手順やコードの記述量もそれほど変わらないので、使用可否を判断する決定的な基準にはならなさそうです。

ですが、今回アプリ開発においてCarrieWaveを使おうと決めましたので、その理由をメモしておきます。

# 結論

– **viewsをvue.jsで書く場合は、Carrier Waveを使う**

## 理由1 erbを書かない場合はactive storageの強みを活かせない

– erbを使うか否かの違いは、HTML内に<%= %>を使えるかどうかです。
Active Storageは前提として、<%= %>でform_withで入力したりや@imageとかで画像表示をする時に、この中に画像の処理を記述することで、controll

元記事を表示

【JavaScript】axios(ajax)でエラー時のレスポンスbodyが取得できない

## はじめに

盲点だったのでメモ。
フロントからRailsのAPIへpostしてエラーになった際、詳細なメッセージをresponseボディに入れて返したかった。

##Ruby on Rails

“`ruby
if user.save
render json: { status: 200, data: user }
else
render status: :unprocessable_entity, json:{ messages: user.errors.full_messages }
end
“`

## JavaScript

“`javascript
axios
.post(process.env.API_URL + ‘/api/v1/users/signup’)
.then((res) => {
console.log(res)
})
.catch((e) => {
console.log(e)
})
“`

## 結果

“`shell
Error: Request failed with status co

元記事を表示

コメント機能を実装

#コメント機能を実装してみる
##アプリケーションを作成
“`java:ターミナル
% cd projects
% rails _6.0.0_ new mini_talk_app -d mysql
% cd mini_talk_app
% rails db:create
“`
##コントローラーとモデルを作成
“`java:ターミナル
% rails g controller messages new
% rails g model message text:text
% rails db:migrate
“`
##ルーティングを設定
“`java:app/config/routes.rb
Rails.application.routes.draw do
root ‘messages#new’
resources :messages, only: [:create]
end
“`
##messages_controller.rbを編集
“`java:new.html.erbを編集

mini_talk_app

<%= form_with model

元記事を表示

deviseでよく使うメソッドについて

#はじめに
 以前に、deviseの導入等について投稿したので、今回はdeviseで扱えるメソッドに焦点を当てて、説明をする。

【以前の投稿】

[初見で難解だったdeviseを改めてまとめてみた](https://qiita.com/TerToEer_sho/items/b5523ad100d08126a547)
[続・初見で難解だったdeviseを改めてまとめてみた](https://qiita.com/TerToEer_sho/items/9231d4fd8155dd3063be)

###user_signed_in?メソッド
ユーザーがサインインしてる状態かどうかを判断し、真偽値を返す。

サインインしているユーザーとそうでないユーザーで表示させたいものを変えたいときにif文を用いて使うことが多い。
例えば、サインインしているユーザーには、「ログアウト」サインインしていないユーザーには「サインイン」など

###authenticate_user!メソッド
ログインしていないユーザーをログインページの画面に遷移させる。
コントローラーにbefore_actionで記述す

元記事を表示

railsでコントローラー、モデルを新規作成する際の命名規則

新規で

“`
$ rails g controller
$ rails g model
“`

する際に、

**「あれ、コントローラーの時って複数形にするんだっけ?」**
**「モデル名に複数単語指定する時ってどう書けば良いんだ?」**

みたいに毎回ググっていたので、記憶の定着も兼ねて。

#一番大事なポイント

・コントローラの新規作成は**複数形**
・モデルの新規作成は**単数形**
・コントローラ、モデル共に**スネークケース、キャメルケースどちらも使用可能**

#コントローラ

コントローラを新規作成する際は、必ず複数形で指定する。

“`
$ rails g controller users
$ rails g controller posts
$ rails g controller likes
“`

複数の単語を組み合わせる際は、スネークケース、キャメルケースどちらでもOK。

“`
$ rails g controller post_likes #スネークケース
$ rails g controller PostLikes #キャメルケース

元記事を表示

Railsでアプリ作成時、大まかな手順の言語化アウトプット

# Ruby on Railsでアプリ作成時の大まかな手順

今回の記事の目的はアプリ作成の際の手順を大まかに言葉で説明したものになります。
勉強を初めて自分のアウトプット用に作成しました。

## 1.準備
ターミナルで以下のコマンドを実行。
・ rails new (バージョン指定) (指定したいデータベース)
・ cd (作成したディレクトリ)

## 2.データベース作成
ターミナルで以下のコマンドを実行。
・ rails db:create
・ rails s

## 3.Gemファイルの編集
必要に応じてRailsのバージョン指定、必要なGemをインストールする。
完了後、以下を必要に応じてターミナルで実行。
・ bundle install
・ bundle update

## 4.投稿モデルの作成
ターミナルで以下を実行。
・ rails g model (モデル名)

## 5.テーブル作成
マイグレーションファイルを編集し、データベースに作成したいカラムを記述する。完了後にターミナルで以下を実行。
・ rails db:migrate
※一度マイグレートしたフ

元記事を表示

bundle install時のエラーAn error occurred while installing nokogiri (1.10.10), and Bundler cannot continue. Make sure that `gem install nokogiri -v ‘1.10.10’ –source ‘https://rubygems.org/’` succeeds before bundling.の解決法

久しぶりにrailsをコマンドを動かすとエラー。

“`
An error occurred while installing nokogiri (1.10.10), and Bundler cannot continue. Make sure that `gem install nokogiri -v ‘1.10.10’ –source ‘https://rubygems.org/’` succeeds before bundling.
“`

##原因
“`which gem、which ruby“`でパスが通っていない。

“`
$ which ruby
/usr/bin/ruby
“`

こうしたい↓

“`
$ which ruby
/Users/shogo/.rbenv/shims/ruby
“`

##解決法

rbenvにパスを通すため、シェルの設定ファイル(.bashrcや.zshrc)に以下を追加。

対象アプリのディレクトリで1行ずつ行わなければいけないことに注意。

“`
[[ -d ~/.rbenv ]] && \
export

元記事を表示

devise_parameter_sanitizerメソッドが訳わかってないのでここにアウトプットしてみる

Railsで写経をしていた際に出てきたメソッドで「何これ」となったので、もう一度復習してみて、それをアウトプットと忘備録として書いてみようと思います。

###devise_parameter_sanitizerとは
devise_parameter_sanitizerはdeviseというgemに用意されているメソッドで
ユーザー管理機能を実装する際に、ログインや新規登録などのリクエストからパラメーター(名前やメールなど)を取得するメソッドであるということです。

###パラメーターについて
パラメーターとはリクエストに含まれる外部から渡されるデータで、
コントローラーで処理されて、モデルを通じてテーブルのカラムにデータとして登録されます。
ブラウザの入力欄などから入力して送られてくるデータといったところでしょうか…

フォームにデータを入力してそれをリクエストとして送信するためには下記のような記述を書いてみます。

“`ruby:index.html
#これは送り手側の話
<%= form_with url:”URL”, method: :post, local: true

元記事を表示

vim-plug でRuby on Rails関連PluginをInstallしてみた

# 概要
普段、Ruby on Rails開発でVSCodeを使っているが、無性にVimが使いたくなったので
いくつかのVim Plugin Managerから`vim-plug`を選択、
pluginをインストールしてみた。

# ローカル環境
* macOS Catalina 10.15.7

# インストール手順
### vim-plug ダウンロード
“`
$ curl -fLo ~/.vim/autoload/plug.vim –create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
“`

### .vimrc に以下Pluginを追記
ファイルツリー表示Pluginと rails関連Pluginを記述

“`
# .vimrc ファイルツリー、rails関連プラグイン
call plug#begin()
Plug ‘scrooloose/nerdtree’, { ‘on’: ‘NERDTreeToggle’ }
Plug ‘tpope/vim-r

元記事を表示

Railsのバージョンを指定してアプリを作成する

#やりたいこと
Railsのバージョンを指定して新規アプリを作成をしたい

#開発環境
* Windows10
* AWS Cloud9

#問題の背景
教材の学習をする時に、以前Cloud9にインストールしていたRailsのバージョン(-v6)と教材のバージョン(-v5)が違ってるせいでエラーか発生し、学習が行き詰る事があった。
**バージョンの違いが原因で起こるエラーを回避して学習したかった。**

#解決方法
* 教材と同じRailsのバージョン(-v5)をインストールする
* rails new 〇〇 でアプリを作成する時に教材と同じRailsバージョン(-v5)を指定する

下記のコマンドで行いました。
`cd ~/environment`
`gem install rails -v 5`
`rails _5_ new ○○`

これでRails(-v6)がインストールされていても、Rails(-v5)で新規○○アプリ作成が出来ました。

#解決のキーワード
`gem install rails -v △`コマンドでバージョン△を指定してrailsをinstall出来

元記事を表示

[Rails]星評価の実装方法

# 実装したい機能
– 星評価で入力、登録できるようにする
– 登録した星評価を表示
![](https://i.gyazo.com/70c7d28382557f1bda0ce13beead9af7.png)

# 目次
1. カラムの設定
2. 星評価の準備
3. 星評価の入力と保存
4. 星評価の表示

# 1. カラムの設定
評価を保存しておくカラムを設定します。
カラム型は星半分評価をできるようにするため、float型を用います。

“`ruby:db/migrate/20XXXXXXXXXXXX_create_posts.rb
class CreatePosts < ActiveRecord::Migration[6.0] def change create_table :posts do |t| ~略~ t.float :evaluation, null: false ~略~ end end end ``` # 2. 星評価の準備 ### 星の画像 https://github.com/wbotelhos/raty

元記事を表示

「param is missing or the value is empty:」に戸惑った件について。

##背景
DM機能の作成途中に、遭遇
Entryはチャットルームに入るユーザーを管理するためのテーブル
Roomはチャットを行うための中間テーブル

##エラー内容
![スクリーンショット 2020-10-25 19.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/724449/152754ad-572b-3b62-4da0-8c73f7c0a395.png)

entryにparamが存在しない、もしくはparamの値が空であることを指す。

##解決した対応
①ストロングパラメータのrequireメソッドを削除
②permitメソッドのみ記載

##ストロングパラメータとは
フォームからデータを送信する際に、
「マスアサインメント脆弱性」と呼ばれるセキュリティ上の問題がある。
例えばデータ送信時のタイミングで不正リクエストが行われた場合、
そのデータが想定されるものと異なる恐れがある。

➡︎この脆弱性を防ぐための仕組みのこと。
各メソッドにあらかじめ登録や更新を許可するカラム名を指定する

元記事を表示

OTHERカテゴリの最新記事