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

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

フロントエンドの人が未経験からバックエンド開発をするために実践した学習方法と複数言語習得のススメ【Ruby on Rails】

## TL;DR

– [自作メモを作り、知識をアウトソーシングしよう!](https://qiita.com/sunnymerryAce/items/70f2807a7fa00e56b44a#%E8%87%AA%E4%BD%9C%E3%83%A1%E3%83%A2%E3%82%92%E4%BD%9C%E3%82%8A%E7%9F%A5%E8%AD%98%E3%82%92%E3%82%A2%E3%82%A6%E3%83%88%E3%82%BD%E3%83%BC%E3%82%B7%E3%83%B3%E3%82%B0%E3%81%97%E3%82%88%E3%81%86)
– [複数言語を習得しよう!](https://qiita.com/sunnymerryAce/items/70f2807a7fa00e56b44a#%E8%A4%87%E6%95%B0%E8%A8%80%E8%AA%9E%E3%82%92%E7%BF%92%E5%BE%97%E3%81%97%E3%82%88%E3%81%86)

## はじめに

Livesense Advent Calendar 19日目を担当

元記事を表示

vue.jsをrails6で動かすためにwebpack.config.jsを設定してたらエラー出過ぎて草

### webpack CLIを動かせるようにしてみる

webpack.config.jsを設定しているのでその設定が正しいかの確認ができればと思いやってみた。

![webpack_config_js_—_chat-vue-app.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652172/d43461db-a191-ba45-6513-3bdfa8314fae.png)

このようなファイル構成にしているのでfrontendディレクトリで以下のコマンドを実行してみた。

“`frontend
webpack –config webpack.config.js
“`

すると以下のように表示される。

“`
webpack –config webpack.config.js
CLI for webpack must be installed.
webpack-cli (https://github.com/webpack/webpack-cli)

We will use “npm”

元記事を表示

railsでメール送信機能実装

# はじめに

[現場で使える Ruby on Rails 5速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4-ebook/dp/B07JHQ9B5T)でインプットを行っており、アウトプットで投稿しています。
サンプルは、タスク管理アプリです。今回の投稿では、ユーザーがタスクを登録したときに、「○○タスクが登録されました」というメールを送る機能を実装します。

# 目次

1. [メイラーの作成](#Chapter1)
1. [メソッドを追加](#Chapter2)
1. [テンプレート作成](#Chapter3)
1. [送信処理実装](#Chapter4)
1. [動作確認](#Chapter

元記事を表示

【初心者向け】Ruby on Rails チュートリアル第4版(Rails5.1)の環境構築を1時間以内で!

# 内容

言わずと知れたRuby on Railsチュートリアル、素晴らしい教材ですよね。全くの門外漢だった自分を駆け出しエンジニアのレベルまで引き上げてくれた神チュートリアルだと思っており、エンジニアとして就職した今も頻繁に見返す最高の教科書です。

Railsチュートリアルをはじめるにあたって最初に大きな壁として立ちはだかるのが環境構築です。私自身も約3ヶ月前に異業種からの転職でRubyエンジニアとして働きはじめたばかりなので、環境構築などの「プログラミング学習を始める以前の準備」に時間を取られた時のことは記憶に新しいです。

本記事では、一人でも多くのプログラミング初学者の方にRailsチュートリアルの魅力を感じて欲しいという思いから、無料で公開されているRailsチュートリアル第4版のための、すなわち「Ruby on Rails 5.1.6 開発環境を1時間以内に手に入れる」ための手順を紹介します。

※ Railsチュートリアルが推奨しているAWS Could9によるものではなく Virtual Box + Vagrant による環境構築となります

元記事を表示

Rails再び。Homebrewで早速詰まる。

#唐突に思い出す
役1年半前、ひたすらRailsを勉強していたことを思い出した。そしておもむろに書籍を買ってみた。ちなみに前回勉強していたときは、Railsチュートリアルでherokuでデプロイでつまずき脱落。

##Homebrewインストールで早速詰まる
“`terminal:
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`
Homebrewのサイトからコピペでインストール

しかしこんな感じのエラー↓

“`
Error:
homebrew-core is a shallow clone.
To brew update, first run:
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch –unshallow
This restriction has been made on GitHub’s request because upda

元記事を表示

「時間が経って、別の人が見ても使いやすいコードを書こう」( n回目 )

こんにちは、株式会社ベストティーチャーで元気に働く たわら です。

## とある日

先輩 「 キャンペーンのダミーデータを作ってくれる? rakeタスクで 」
ボク 「 ハイ! 」

ボク 「 ゴニョゴニョ、、、よし」

“`ruby
task campaign: :environment do
Campaign.create(
title: “ダミーキャンペーン”,
message: “条件 2021年1月1日(金)〜1月31日(日)までにキャンペーンに参加”,
duration: Time.zone.parse(‘2021-01-01 00:00:00’)..Time.zone.parse(‘2021-01-31 23:59:59’))
end
“`

ボク「 できました! 」

先輩 「 …… 」
先輩 「 …… 」
先輩 「 これ一回きりしか使えないね、、、汎用性があるかたちに改善しよう! 」
先輩 「 時間が経って、別の人が見ても使いやすいコードを書こう 」
先輩 「 たとえば、先に変数で定義すると

元記事を表示

[Rails]deviseを導入した(つもり)後、コマンドが効かなくなった

Ruby on Railsでアプリケーションを作成中、deviseを導入しました。インストール後に`rails db:create`でデータベースの作成を行おうとしたところ、

“`
undefined method `devise’ for Install (call ‘Install.connection’ to establish a connection):Class (NoMethodError)
“`

というエラーが出ました。
`rails s`のコマンドも効きません。

# 原因

`history`コマンドで直近の入力履歴を探ってみると、

“`
bundle install
rails g devise install
rails db:create
rails s
“`

`rails g devise:install` と入力すべきところが `rails g devise install`と入力されていました。
`:`の書き忘れです。
deviseがそもそもインストールされていなかったようです。

#対策
install.rb というモデルが作成さ

元記事を表示

余計なクエリ数を減らしたい。counter_cacheの検討からcounter_cultureの導入まで。

## 起こっていた問題
Railsでインスタグラムを模したアプリを作っています。
データベース構造はこんな感じです。

[![Image from Gyazo](https://i.gyazo.com/3ff5532b162755ce3983340414e8fc9a.png)](https://gyazo.com/3ff5532b162755ce3983340414e8fc9a)

このアプリのトップページ(投稿一覧)でこんなメソットを実装していたところ、

“`slim
– if post.images.count >= 2
– # 処理
“`
クエリがこんなことになってしまいました^^;

[![Image from Gyazo](https://i.gyazo.com/2ac982cf4d976aca9d99e1ed8a3f5a41.jpg)](https://gyazo.com/2ac982cf4d976aca9d99e1ed8a3f5a41)

imagesのcountが大量に回っている…^^;

そういえば、Railsには`counter_cache`と

元記事を表示

git push herokuし、herokuのURLを開くとMethod Not Allowedが出る問題

## 問題
git push herokuすると以下のような表示が出ますよね
ここの下から2行目を開くと**Method Not Allowed**がでます。

![スクリーンショット 2021-01-06 20.13.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699910/35d1265f-cdf5-edeb-14e4-4cc732d0e152.png)

## 解決法
上の写真の下から2行目はgit用のファイルなので、remote:の後のURLを開きましょう。

リンクを確認せずに開くとこういうことになってしまいます。
気をつけましょう(戒め)

## ちなみに

このgitのリンクはデプロイ用のgit repositoryらしいです。
なんらかの問題があった場合の最終手段としてcloneしたりするのはいいらしいですが
正規の”オリジン”リポジトリとしては使用してはいけないそうです。
詳しくは以下のリンクを参照してください。

## 参照

[herokuにgit pushしたURLを開く

元記事を表示

ニコニコ動画apiを使って埋もれてる面白い動画を発掘する

#はじめに
– ニコニコが好きなので作ってみました。

#背景
– ニコニコ動画のとりあえずマイリストの廃止で動画のマイリスト数が激減した
– マイリストは面白い動画を見分ける判断材料になっていたのでとても残念
– とりマイの代わりにできた「いいね」の数はなぜか非公開(意味がわからない)
– 良質な動画を発見する機会と材料がなくなった

#概要
– ニコニコのスナップショットAPIを使って、動画のタグ検索を行い動画リストを作成する
– 埋もれている動画の基準として、”(コメント数+マイリスト数×100)/再生数”が60%以上で、かつ再生数が500以上の動画
– csvファイルにて出力

#開発環境
– 言語
– ruby

#検索例(一部)
“実況プレイ動画”タグで検索。
対象の投稿日時は、2020年1月から12月末まで。
全部で1053件の動画が抽出されました。
![niconico.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784464/54196c32-c13b-9444-56fc-2

元記事を表示

【circleCI】Rails6/mysql8のProjectを自動テスト&自動コードチェック

## はじめに
久しぶりにyml職人していたら、circleCIの書き方を忘れてしまったので、備忘録として残します
折角なので冗長なymlをCircleCI Orbsでスッキリさせてみました
CircleCIで設定する環境と、実際にアプリを運用する環境をできるだけ合わせることがポイント
GithubでPull Requetを作成したら、masterにマージする前に自動でビルドされてテストやリンターが走ったら便利。

## 前提
– Githubのアカウントをもっていること、既にRailsのプロジェクトがあること
– Rspec & Rubocopが設定済みであること
– Mysqlをつかった例を説明します

## 開発環境
– Rails6
– Mysql8
– Docker
– AWS ecs

## config.ymlの設定

?全体はこんな感じ
・commitした時とmergeした時にRspec&RUbocopが走る
・mergeしたらecsに自動デプロイ

“`yml:.circleci/config.yml
version: 2.1

orbs:
ruby: cir

元記事を表示

【Rails】シングルテーブル継承を使って、テーブルの数を削減する【STI】

#シングルテーブル継承(単一テーブル継承、STI)とは
シングルテーブル継承(以下、STI)は、単一の継承階層に所属するクラス群を、ただひとつのテーブルを使って永続化する手法です。

言葉だけでは伝わリにくいので、下図を御覧ください。

![スクリーンショット 2021-01-05 18.49.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680641/d3974cd0-ab5f-573b-734f-2136a0937078.png)

Postsテーブル(スーパークラス)が、サブクラスに継承する形になります。
しかし、注意点が2点あります。

* **Books,Clothes,Goodsテーブルは実際には存在しない。**
* **個々のデータはすべてスーパークラスのテーブルに保存されます。この場合はPostsテーブル。**

それでは、STIはどういう場面で使えばいいのでしょうか。

#STI継承しないと中間テーブルが再生産が起きる
自分はSTIの存在を知らずにアプリを作っていったら下図のよう

元記事を表示

[Gem不要!!HTML&CSSのみ]初心者が簡単にドロップダウンメニューを作成する方法

# はじめに

ハンバーガーメニューやドロップダウンメニューの作成をしたいけど、***Gem導入***の方法がよくわからない・***JavaScript***は思うようにいかない。
そんな初心者の方におすすめの記事なっております。

#開発環境

・Rails6.0.0
・MySQL5.6.50

#ドロップダウンメニューの実装

早速ドロップダウンメニューの実装の方法の流れを解説します。
ちなみにドロップダウンメニューとは以下のようなメニューのことです。

![f15d1dda5826200510a6a8d6eabad639.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/879778/211ef73d-4f93-8c43-3268-6257cedf664e.png)

「…」 を押すとメニューが表示されるものです。

よく見かけますが、JavaScriptでやるには面倒だし、Bootstrap導入のためにGemやjQueryを導入したりするのは初心者には中々ハードルが高めかなと思います。

それで

元記事を表示

rbenvでRubyのバージョンが切り替わらないときの対応

rbenvでRubyのバージョンが切り替わらなかったので、それのメモです。

# 事象
rbenvでバージョンを切り替えても変わりません

“`bash
$ rbenv versions
system
2.6.6
* 2.7.1 (set by RBENV_VERSION environment variable)
$ rbenv global 2.6.6
$ rbenv versions
system
2.6.6
* 2.7.1 (set by RBENV_VERSION environment variable)
“`

# やったこと
`set by RBENV_VERSION environment variable`と言われているのですが、特にどこにも書いていません。
また`.zshrc`で`export RBENV_VERSION=2.6.6`をすると、rbenvのversionはうまく変更されますが、
rubyのバージョンを確認しようとするとエラーになります。

“`bash
$ rbenv versions
system
* 2.6.6 (

元記事を表示

Rails6でvue.jsを使った開発を行うための設定に挑戦

Rails x Vue.jsを用いた開発に挑戦している。手探りなので間違っている箇所もあるかもしれないが自分なりに検索してやってみた。そういう記事としてご覧いただけると嬉しいです。

### 環境構築

①npmを導入(ホームディレクトリでOK)

“`terminal
brew install npm
“`

②npmのパッケージをアプリに導入(アプリのディレクトリで)

“`terminal
npm init
“`

ここで対話プロンプトが起動し、いくつか入力を求められる。()内はnpmコマンドがデフォルトで用意した値。

“`terminal
package name: (a) sample
version: (1.0.0) 0.0.0
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
“`

name…packageの名前。ソースコードでimportやrequireをする際に使われる。

version…最初なので1

元記事を表示

【Rails × Docker】*エラー* Could not find gem ‘mysql2 (~> 0.5)’ in any of the gem sources listed in your Gemfile.

__◆目的__
ずっと悩んでいたDockerの課題解決に一歩近ずけたので忘却録のため、記述します!
__*補足__
私の場合、mysql2がないよ!というエラーが出た際、無理くり手動でmysql2を入れてみました。ですが、Gemfileのmysqlの次に記述されてるpumaがないですよ!というエラーが出たので、別の方法を探していたところwebpackerにたどり着きました。

__◆結論__
コンテナ上で「rails webpacker:install」このコマンドを打った後、
Gemfile.lockの中身を削除して、
docker-compose up –build コマンドを打ったらコンテナが起動しました^^

“`
root@c9fe1cb41fda:/app2# rails webpacker:install
“`

##エラー文
__docker run コマンドを入力__
mysql2がgemのどのリストを探してもないとエラーがでる。
↓↓↓
__Could not find gem ‘mysql2 (~> 0.5)’ in any of the gem so

元記事を表示

簡単カレンダーを少し装飾してみた

#はじめに
 昨日、導入したsimple_calendarについて、少し装飾を加えたので、紹介します。

[簡単カレンダー
](https://qiita.com/TerToEer_sho/items/561844cecf16cd7013fd)

##表示のされかたを変えたい

“`erb

<%= month_calendar do |date| %>
<%= date.strftime("%d") %>
<% end %>
“`

`strftim(“%d”)`によって表示を変えることができます。ちなみに、この記述で、日にちだけの表示にできます。

##曜日に色をつけたい

“`css:calendar.css
.wday-0 {
color: red;
}
.wday-6 {
color: blue;
}
“`

###変更前
![](https://i.gyazo.com/e644433b996e823cd23b0cf4a403cb66.png)

###変更後
![](https://i.gyazo.com/134dbbb227e978cd66ef9227

元記事を表示

simple_calendarを導入したRails6.0でのDB環境PostgreSQLの設定

学習メモ用です。

#解決したい問題
simple_calendarを導入したRails6.0で
開発環境DBがSQLite3、本番環境DBがPostgreSQL

本番環境において下記エラーが発生し、posts/index viewが表示されない事態に。
simple_calendarを使っているから?

`ActionView::Template::Error (PG::UndefinedColumn: ERROR: column posts.user_id does not exist`

なぜか、本番環境ではpostsテーブルにuser_id columnだけが存在しないからうまくいかない。

と、いうことで開発環境にもPostgreSQLを適用してみる!

#開発環境
Ruby 2.7.1
Rails 6.0.3
OS macOS Catalina

## pggemのインストール

rails6.0では

“`% rails db:system:change –to=postgesql“`

このコマンドで簡単に移行できるよう。

以下のようにsqlite3だ

元記事を表示

Rails 初心者から抜け出すべく意識すること (※随時追加予定)

コードが動けばいいやの時期はそろそろ終わりたい
と思い、調べてメモする

また業務でおこなっていて指摘されることも書きます

##Ruby編

###メソッド
**1つのメソッドに複数のロジックを書かずに**別のメソッドに抽象化させる
ロジックや操作ごとにメソッドを作って、それを呼び出す形にする

例) if文で条件により操作を分岐させているときに、
2つ以上の操作をその**メソッド内に直接書く**のではなく、
操作ごとにメソッドを作って、それを呼び出す形にする

##定数
ロジックで用いる具体的な数字は**定数に格納**する

ロジックを作るときに、生の数字を書いてしまうと初見の人には伝わらない
**名前をつけた定数に格納**することで、その**数字が何を意味するのか分かる**

例) 税 **TAX = 10**
基本ストレージ **DEFAULT_STORAGE = 5** など

##Rails

###Routing
ルーティングの書く順番だけではなく**ネストできるところはする::

独自URLを設定しているルーティングは
resourcesにネストして書いた方が分かりやす

元記事を表示

gem bulletを入れてみた(N+1問題に自分で気づけない人のために)

## 何をしたか
Railsアプリを作っています。`N+1問題`について前々から関心はあったのですが、SQLについて学習が不足していることもあり、自分では気づけないことも多いので、N+1問題が発生している箇所があったら教えてくれる`gem bullet`を入れてみることにしました。

▶︎公式のドキュメントはこちら:[bullet](https://github.com/flyerhzm/bullet)

## 導入方法
以下のコードをGemfileに記載します。

“`ruby:Gemfile
group :development do
gem ‘bullet’
end
“`
`bundle install`後、以下のコマンドを実行します。

“`
bundle exec rails g bullet:install
“`
この時、テスト環境にも`bullet`を入れるかどうか聞かれると思いますが、公式の`install`のところには`develop`環境へのインストールだけが記されていたのと、

[公式のテスト環境へのインストールの記述](https://github.

元記事を表示

OTHERカテゴリの最新記事