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

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

[Rails] routesのnamespaceとget … to: の書き方

#namespace
`namespace: hoge` で名前空間を付与することができます。これはコントローラーをグルーピングし、またURLにもその情報を付与することを意味します。

“`ruby:routes.rb
namespace :api do
namespace :v1 do

end
namespace :v2 do

end
end
“`

例えばこのようにnamespaceは複数配置することもできるため、`api/v1/fuga_controller.rb`と`api/v2/fuga_controller.rb`を分類することもできます。

#####名前空間(namespace)
名前空間とは、各要素に一意の異なる名前をつけなければ識別できない範囲のこと。
また、名前の集合全体を小さな空間に区切り、それぞれに異なる識別名を与えることで、
その空間内では他の空間に含まれる名前の競合・衝突を意識しなくて良いようにしたもの。

#get … to:
特定のリソースに対するルーティングを生

元記事を表示

RailsのViewファイルにおける部分テンプレートの呼び出し`renderメソッド’ のエラー

## Renderメソッドが正しく読み込まれない!!

### 状況
・Railsを使ったアプリケーションの制作中
・アプリの新規登録画面`new.html.erb`を作成中。
・このトップページは、SamplesコントローラーのnewアクションのViewとする。
・Viewの記述に、`renderメソッド`を使用して部分テンプレートを呼び出そうとした。

エラー画面
![スクリーンショット 2021-05-29 10.57.24のコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1335471/78256fc7-5092-04dd-c1c8-1889cd8fc92e.jpeg)

Samplesコントローラーのindex.html.erbには

“`ruby
<%= render ‘shared/second-header’ %>
“`

と記述している。
一見、間違ってなさそうだけど、なぜ?

### 原因と解決
理由は単純でした。
部分テンプレートの`_header.html.erb`の

元記事を表示

RailsのGem ‘devise’ のエラー localserverが起動しない

# gem ‘devise’のエラー備忘録と解決方法紹介
本記事では、Rails(6.0.0)における
`gem devise`を導入後に起きたエラーを紹介します。

### devise導入後にローカルサーバーが起動しない
・ターミナルで`bundle install`を実行し、成功。
・ローカル環境での挙動を確認する`rails s`
エラー発生! サーバーが起動しない!

このような場合によくあるのは、
サーバーが起動したままターミナルを閉じて、
ログが残ったままのために起動しないパターン。
その場合は、こちらの解決方法でOKです。

https://qiita.com/TechOtome/items/d33f05840253fad44717

しかし今回はちょっと違う。はて?
よくよくエラー文を探ると

“`bash
dynamic_matchers.rb:22:in `method_missing’: undefined method `valitades’ for User (call ‘User.connection’ to establish a co

元記事を表示

RSpecでCookies(永続ログイン)のテストをする方法

#「show_me_the_cookies」をインストールする

詳細はこちらを参照してください。

https://github.com/nruth/show_me_the_cookies

Capybaraの統合テストでブラウザのCookiesを扱うメソッドがいくつか用意されています。

“`
# puts a string summary of the cookie
show_me_the_cookie(cookie_name)

# returns a hash of the cookie
# form: {:name, :domain, :value, :expires, :path}
get_me_the_cookie(cookie_name)

# puts a string summary of all cookies
show_me_the_cookies

# returns an array of cookie hashes
# form: [{:name, :domain, :value, :expires, :path,

元記事を表示

Active RecordとNull Objectパターン

Active RecordでNull Objectパターンを使うことはできるのか考えてみました。

# Null Objectパターン
Null Objectパターンは、値が存在しない場合の処理を共通化したい場合に使えるデザインパターンです。

## RubyでNull Objectパターンを利用する
CutomerクラスとLicenseクラスを使って、CustomerのLicenseのname要素を表示することを考えます。CustomerがLicenseを持っているとします。Licenseは空でも良いです。

“`ruby
class Customer
attr_reader :license

def initialize(license=nil)
@license = license
end
end

class License
attr_reader :name

def initialize(name)
@name = name
end
end
“`

Coustomerの持っているLicenseの名前を表示したいときは、次のような

元記事を表示

localhost以外のポートで接続する方法[Rails] Blocked host

## **エラー内容**

Rails6の開発環境において、localhost以外のドメイン名でブラウザにアクセスした以下のエラーが発生したので、その解決方法を記載します。

![スクリーンショット 2021-06-24 19.40.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/779676/1727f5a6-fefd-c86e-3ec4-ac78ef839078.png)

## 原因

Rails6からの設定だそうです。”DNSリバインディング攻撃防止”の目的で、許可されていないドメイン名からのアクセスを拒否する機能です。デフォルトでは`localhost`が登録されている為、これまではエラーが発生しませんでした。解決策は以下の2つです。

## 解決策1

ホワイトリストに許可したいhostを追加する。

“`ruby:config/environments/development.rb
Rails.application.configure do
:
config.hosts

元記事を表示

市場価値0の34歳からのテックキャンプ卒業からの転職

# 34歳から転職できた
70日のカリキュラム、20日就活で受託開発会社へ就職
結果から言うと、本当に運が良かったというのが一番です。
学歴や経歴があるか、戦略的に入学しないとこの年齡で未経験転職は厳しいのかもしれません
私自身は副業でネットショップを立ち上げた経緯があったので、主体性を評価していただき入社出来ました。

## 就活
なんと1社目に応募した会社で就職出来ました!
ただ選考期間中に応募した14社は書類選考落ち全滅
・求人サイトwantedlyのみ

## プロフィール経歴
・34歳
・男
・高卒
・飲食店店長
・家具職人
・家族あり
・簡単なエクセル、ホームページ・ビルダーの技術くらい
・副業でネットショップ

## テックキャンプ入学経緯

副業でネットショップを始めてからITに興味を持ち転職を決意、妻をなんとか説得しテックキャンプ(オンライン)に入学

## 入学準備

・学費約70万
・macbook約15万
・プロゲートでHTMLとCSSだけ一周していた
・勉強に集中出来る環境
・ノイズキャンセリングイヤホンおすすめ

## テックキャンプでの学習

教材と質問出

元記事を表示

bulk_insertより高速!?postgres-copyで大量データinsertしてみた

# はじめに

本記事では、postgres-copyの使い方とRails6から追加されたinsert_allのパフォーマンスの比較を行います。

# 環境
Ruby 2.6.6
Rails 6.0.3
Docker for Mac

# 前提

下記のテーブルを作成済みとします。

– postsテーブル

|name|type|description|
| — | — | — |
|id|bigint|主キー|
|title|string|投稿タイトル|
|body|text|本文|
|created_at|datetime|作成日時|
|updated_at|datetime|更新日時|

# postgres-copyの導入

https://github.com/diogob/postgres-copy

まずはGemfileにpostgres-copyを追加します。

“`ruby
gem ‘postgres-copy’
“`

その後bundle install(Dockerを使っています)

“`
$ docker-compose run web bu

元記事を表示

rspecのモックとスタブを使いこなせ!!!

# 記事について
完全未経験状態から独学で勉強し、今年の4月から都内一部上場企業のwebエンジニアとして働くことになりました。
月に1~2回、学んだことをアウトプットするために記事を書いていこうと思います。記事内容は実務使う技術だったり、技術書や動画で学んだことだったり、適当に興味あることを書いていきます。

# 今回の背景
実務でrspecを書く時に初めてモックとスタブを知りました。非常に重要な技術かつ、最初理解するのに苦労しましたので今回ざっとまとめて見たいと思います。

#目次
1. モックとスタブとは何か
2. allowでスタブ化
3. allowで例外を起こす
4. allow_any_instance_ofは強力なallow
5. doubleでダミーオブジェクトを作成
6. 最後に

## 1. モックとスタブとは何か
モックやスタブといった技術は代品オブジェクト(テストダブル)の1種です。個人的には本物のフリをする偽物のオブジェクトを作成するものと覚えています。モックやスタブ以外にもスパイ、フェイクなどがあり、下記サイトに詳しく書いてあります。厳密にテス

元記事を表示

Rials いいね・コメント・フォロー・メール・チャットのテーブル設計

#ユーザーと投稿物(book)

“`.rb
create_table “users”, force: :cascade do |t|
t.string “email”, default: “”, null: false
t.string “encrypted_password”, default: “”, null: false
t.string “reset_password_token”
t.datetime “reset_password_sent_at”
t.datetime “remember_created_at”
t.string “name”
t.text “introduction”
t.string “profile_image_id”
t.datetime “created_at”, null: false
t.datetime “updated_at”, null: false
t.index [“email”], name: “index_users_on_ema

元記事を表示

ransackによる検索機能の実装

##概要

ransackというgemを用いて、railsアプリケーション内にユーザー検索機能を実装する

##実装手順
####Gemfile
“`
gem ‘ransack’
“`
記述後にbundle install

####users_controller
“`
def index
@q = User.ransack(params[:q])
@user = @q.result(distinct: true).includes(:user).order(created_at: :desc)
end
“`
・User.ransack(params[:q] で検索データを取得
・distinct: true を用いることで、重複したデータをまとめる

####users/index.html.erb
“`
<%= render 'search_form', q: @q, url: users_path' %>
“`
パーシャルに切り分けることによって、再利用性の向上に繋がる

####users/_search_form.html.erb
“`
<

元記事を表示

Rails これから調べること

# 概要

– ポートフォリオとして作成するWebアプリケーションにバックエンドでRailsをAPIモードで使用することにしたので、調べたことをまとめる

# 基本方針

– API開発をするにあたって、最初に設定する内容のみを最低限行うこと
– その後の開発に必要になるGemについてはその時々で導入すること

そうすることで、最初にバグっていなければ、後からGemを追加してバグったら
どのGemが原因でバグっているのか見当がつきやすい
また、どの機能を実装したり、どのように改善したりするのにGemを導入するのかが
最初に入れるとlogを見たときにわかりづらい

– 最初はpry,ruboCop,annotate,sprint,jbuilderのみを入れる

– サインイン、サインアップ機能を実装するときにDevice,bcryptを入れる

– 画像アップロード処理を実装するときにcarrierwaveをいれる

# やること

【Ruby on Rails環境構築】インストールから起動までの手順【MySQL】

# リンク集

– Rails APIモード 環境構築
[【Rails】Rails6

元記事を表示

[Ruby]eachメソッドを活用したExcelライクなマトリクス図の作り方

はじめまして、ふろしゅと申します!
railsにてeachメソッドを活用してマトリクス図を作ろうとした際に結構な時間ハマってしまったので、備忘録を兼ねてシェアさせて頂きます。
本記事では前半にマトリクス図の概略とコードを掲載し、後半にコードの解説をしております。

#本記事にて取り扱うマトリクス図はどのようなもの?
本記事にて解説するマトリクス図は以下の画像のようなものです。
(画像は原神というゲームにおけるキャラクターの育成素材の対応をマトリクス図でまとめたものとなります)
![マトリクス図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/761280/4806483d-86d8-652a-694b-8554b098de4a.png)
キャラクターにはそれぞれ見出し列(自由、抗争などの書物)および見出し行(東風の羽などのモンスター素材)のアイテムが育成に必要なアイテムとして設定されており、各セルには必要なアイテムに該当するキャラクターが出力されています。

#実際のコードはこちら

“`erb:mat

元記事を表示

【完全SPA】Sier出身者がWeb系企業へ転職するために作成したアプリの開発記録(Rails/Vue.js/AWS/Docker/CircleCI)

## 記事の内容

**Webアプリケーション開発の経験が少ないSE**が、Web系エンジニアになるべく作成したポートフォリオに関して、以下の情報をまとめます。

– ポートフォリオの紹介
– 技術選定理由
– おすすめの書籍やWeb媒体の紹介

同じような境遇の方の参考になればと思い、記事を書かせていただきました。

## 自己紹介

ももんがザムライ([@momonga11_d](https://twitter.com/momonga11_d))と申します。
文系学部で大学卒業後、中小規模のSierに就職し、7年間勤めました。
主にクライアント・サーバーアプリの設計、開発、パッケージソフトの顧客への導入に従事。使用言語は`VB.NET`でした。
よりモダンな環境で手を動かすエンジニアとしての技術を身につけたい思いで、Web系エンジニアへのキャリアチェンジを決意しました。

## ポートフォリオ「NOTENEXT」 紹介

### 概要

NOTENEXTは、**ノートとタスクを一緒に管理する**ためのアプリケーションです。
こういった課題を解決できます。

– チームの打ち合わせ中

元記事を表示

【M1チップ/Docker/Rails6/MySQL5】デプロイ済みアプリをHEROKU環境でDocker構築するまでの道程

### やりたいこと
既存アプリに対してHEROKUでのdocker導入

### 環境
Ruby 2.6.5
rails 6.0
MySQL 5.6
M1チップ搭載MacOS

### 目次
[1.導入手順](#1-導入手順)
[2.発生したエラー](#2-発生したエラー)
[3.まとめ](#3-まとめ)

###1.導入手順

“`
% heroku login
% heroku container:login
% heroku container:push web -a <アプリ名>
% heroku container:release web -a <アプリ名>
% heroku run rails db:migrate
“`

###2. 遭遇したエラー

“`
Error: Exec format error
“`
heroku run rails db:migrate実行したとき
(heroku run consoleやrails c実行時も同様)

heroku logs –tailでエラーログ確認するもわからず、

[M1 MacでHeroku cont

元記事を表示

【第2回】Railsのjoinsとleft_outer_joinsの挙動と違いをまとめた

前回はN+1問題が発生する状況とタイミングについて解説しました。
→[【第1回】RailsのN+1問題と解決するためのメソッド完全版](https://qiita.com/kurokawa516/items/6c6e895843e199c52ac2)
もしまだご覧になっていなければ、一読していただけると理解がスムーズになります。

##本記事の内容
今回はN+1問題を解決するメソッドを5つ紹介していきます。

1. joins
2. left_outer_joins <=(本記事ではここまで) 3. eager_load 4. preload 5. includes ##joinsメソッド SQLの``INNER JOIN句``が発行されます。(内部結合) 内部結合とは、指定したそれぞれのテーブルのカラムの値が一致するデータだけを取得する方法のことです。 内部結合についてはこちらを参考にすると理解しやすいです。 [内部結合を行う(INNER JOIN句)](https://www.dbonline.jp/mysql/join/index1.html) ###使い方 ```ruby

元記事を表示

【M1チップ/Docker/Rails6/MySQL5】既存アプリをローカルでDocker環境を構築する道程で遭遇したエラー

### やりたいこと
既存アプリに対してローカル環境でのdocker導入

### 環境
Ruby 2.6.5
rails 6.0
MySQL 5.6
M1チップ搭載MacOS

### 遭遇したエラー
[1.ERROR RUN bundle install](#1-ERROR RUN bundle install)
[2.error Integrity check failed](#2-error Integrity check failed)
[3.ActiveRecord::NoDatabaseError](#3-ActiveRecord::NoDatabaseError)
[4.Aws::Sigv4::Errors::MissingCredentialsError in items#index](#4-Aws::Sigv4::Errors::MissingCredentialsError in items#index)

###1.ERROR RUN bundle install

##### 発生したエラー

“`
Could not locate Gemfile
bund

元記事を表示

Herokuで独自ドメイン設定(SSL)

# Overview
– herokuで公開したRailsアプリに独自ドメインを設定するよ
– ネット上の記事にvaluedomainでの設定方法がピンポイントでなかったのでvalue domainの設定方法
– heroku側の設定と、valuedomain側の設定をそれぞれ

# Heroku
> 基本的にherokuのダッシュボードからブラウザのみで設定できるよ
> terminalのCLIからでもできるけどね
> 今回は例としてhello.comというドメインを設定していきます

1. アプリのsetting
1. Domains
1. Add domain
1. www.hello.com(wwwをつけるところがポイントらしい)

# Value domain

1. ドメイン
1. ドメインの操作設定
1. DNS/URL
1. 以下の内容を貼り付けます

“`
a @ 75.101.163.44
a @ 75.101.145.87
a @ 174.129.212.2
cname www [herokuで発行されたDNSTarget].
“`
> point
>

元記事を表示

Rails 個人的に覚えておきたいコマンド【初心者】

##操作取り消し系

コントローラ作成~取り消し

コントローラ作成 ※例
“`rails generate controller StaticPages home help“`
取り消し ※上記で作成された関連ファイルもすべて削除される。
“`$ rails destroy controller StaticPages home help“`

モデル作成~取り消し

モデル作成※例
“` $ rails generate model User name:string email:string“`
取り消し※カラム名の指定は不要
“` rails destroy model User“`

migrate~取り消し

migrate実行
“`$ rails db:migrate“`
1つ前に戻す
“`$ rails db:rollback“`
最初の状態に戻す
“`$ rails db:migrate VERSION=0“`

元記事を表示

Railsでブログシステムを作りたいPart1

#1.なぜやるのか

・Web系企業に未経験で転職し一ヶ月たち、技術書インプットメインの自己研鑽に飽きた(とゆうか身についてない感じがした)

・もともとブログを運営したいと思っていたが、せっかくならWordPressを使わない(会社でつかっているRails)でやりたい

というモチベーションです。そのため、Railじゃないと実現できない機能があるから使うわけではなく、あくまでもRailsを勉強したいというのが先行しています。

#2.実現したいシステム
###概要
旅行先や飲食店、遊んだ場所を紹介するブログを作りたいと思っています。
想定読者は日本人と台湾人です。僕の彼女が台湾人なので台湾中国語対応のブログにしたいと思っています。

###欲しい機能
・日本地図や台湾地図で記事をソート
・地図表示
・2ヶ国語対応 
・リッチテキストエディター
・バックヤード(管理者画面)
・pc+sp対応
等々

#3.開発環境(予定含む)
ruby 3.0
rails 6.1.3
MySQL
AWS(本番環境インフラ)←まだちゃんと調べてないのでざっくりです
bootstrap
rspec
ci

元記事を表示

OTHERカテゴリの最新記事