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

Ruby関連のことを調べてみた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の名前を表示したいときは、次のような

元記事を表示

【解決】Linux Mint に Red OpenCV を インストールしようとして苦労したメモ

RubyでOpenCVを使おうと思って調べていたら、[ruby-opencv](https://github.com/ruby-opencv/ruby-opencv)は最近更新が滞っていて、最新の[OpenCV](https://opencv.org/)が使えないとのこと。
イマドキのイケてるライブラリは[Red OpenCV](https://github.com/red-data-tools/red-opencv)だ、という情報を得てインストールを試みたところ、苦労したのでメモを残します。

# 苦労した理由(かもしれないこと)

苦労したのは私の環境が[Linux Mint](https://linuxmint.com/)だったからかもしれません。
[Ubuntu](https://www.ubuntulinux.jp/)や[Debian](https://www.debian.org/)、[CentOS](https://www.centos.org/)だったらすんなりインストールできた可能性があります。
(Red OpenCVはUbuntu、Debian、CentOS用のイン

元記事を表示

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

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

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

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

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

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

## 入学準備

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

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

教材と質問出

元記事を表示

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

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

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

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

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

元記事を表示

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

元記事を表示

Ruby 問題15 銀行からお金を引き出すプログラムを作成

#問題

銀行に100,000円預金残高があり、お金を引き出すプログラムを作成して下さい。

* お金を引き出すと手数料110円かかり、「◯◯円引き落としました。残高は◯◯円です」と表示する(残高は手数料を引いた額を表示)

* 引き落とし金額と手数料の合計が、預金残高より大きい場合は「残高不足です」と表示する

#ヒント

“`.rb
def withdraw(balance, amount)
fee = 110 #手数料

end

balance = 100000 #残高
puts “引き落とし金額を入力して下さい(手数料110円かかります)”
amount = gets.to_i
withdraw(balance, amount)
“`

#解答

“`.rb
def withdraw(balance, amount)
fee = 110
if balance >= (amount + fee)
balance -= (amount + fee)
puts “#{amount}円引き落としました。残高は#{balance}円です”
els

元記事を表示

【Ruby】10進数 ⇔ n進数の変換

# n進数の文字列を10進数の数値へ変換する → String#to_iメソッド

“`ruby
# 2進数を10進数に変換
puts ‘101’.to_i(2)
#=> 5

# 5進数を10進数に変換
puts ‘144’.to_i(5)
#=> 49

# 16進数を10進数に変換
puts ‘FA’.to_i(16)
#=> 250
“`

# 10進数の数値をn進数の文字列へ変換する → Integer#to_s

“`ruby
# 10進数を2進数に変換
puts 1010.to_s(2)
#=> ‘1111110010’

# 10進数を8進数に変換
puts 1010.to_s(8)
#=> ‘1762’

# 10進数を16進数に変換
puts 1010.to_s(16)
#=> ‘3F2’
“`

https://docs.ruby-lang.org/ja/latest/method/String/i/to_i.html

https://docs.ruby-lang.org/ja/latest/method/Integer/i/to_s.html

元記事を表示

[Ruby]スキルチェックC練習問題 Fizz Buzz

https://paiza.jp/works/mondai/skillcheck_sample/fizz-buzz

Fizz Buzz (paizaランク C 相当)
C問題に挑戦してみました!
こちらはスキルチェックの見本問題なので、コードの公開等は自由だそうです。

私の解答コード↓

“`
input_line = gets.to_i

for i in 1..input_line
 if i%15==0      
 puts”Fizz Buzz”
 elsif i%3==0
 puts”Fizz”
 elsif i%5==0
 puts”Buzz”
 else
 puts i
 end
end
“`

まず最初に標準入力で与えられた数字まで、順に数字を出力するように記述し、それからif文を入れていきました。
(プログラミングはまず小さいところから、、でしたっけ…?)

“`
input_line = gets.to_i
与えられた文字まで、1ずつ出力する。

for i in 1..input_line
puts i
end

“`

ちなみにp

元記事を表示

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

元記事を表示

collection_select

collection_selectのメソッドを使うことでデータをプルダウンを表示させることができる。
引数が第一から第五までありそれぞれの役割は以下の通り。

第一引数に保存したいカラム名を記述。
第二引数に配列データを指定する。(この際、クラス名の命名規則があるのでアッパーキャメルで記述)
第三引数に表示する際に参照するカラム名を記述。
第四引数に実際に表示させたいカラム名を記述
第五引数にオプションの指定。(include_blankという値のない選択肢を先頭にするオプションもある)

記述方法の例としては以下の通り。

“`ruby
<%= form.collection_select(保存されるカラム名, オブジェクトの配列, カラムに保存される項目, 選択肢に表示されるカラム名, オプション, htmlオプション) %>
“`

実際に記述したコードは以下の通り。
例えば発送地域などを表示させたい場合はまずモデルにプルダウンに表示させたい情報を記述。

“`ruby
class DeliveryArea < ActiveHash::Base self.data =

元記事を表示

Railsアプリに隠しコマンド・隠しページを実装してみる

## 概要

Railsアプリを作っている際、特定のコマンドを知っている人だけが辿り着けるページみたいなものがあれば面白いなと思い調べてみたところ、JavaScriptを上手く使えば実装できる事がわかったので試してみました。

実運用できるレベルかどうかは別として完全に遊び心みたいな感じです。(URLを直打ちすれば普通に飛べちゃうみたいな野暮なツッコミは無しでお願いします(笑))

## 完成イメージ

![マイ-ムービー(7).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/3444aa18-c61b-b48c-0a1e-54adb58f1077.gif)

今回はかの有名な [コナミコマンド](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%8A%E3%83%9F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89) (上上下下右左右左BA)を入力した場合、隠しページにつながる導線をアラートメッセージで表示するような仕組み

元記事を表示

Docker上のRuby on Rails 6をVisual Studio Codeでデバッグするまでの手順

# 必要なもの

Docker Desktop
Visual Studio Code

今回の作業環境は以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82535/d4e8146f-3f4d-43ad-d6a7-e59104c4f379.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82535/a02cbc08-1e97-42df-32e1-19ee2df46c47.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82535/d56993c8-04d5-2630-75e5-a13124e19934.png)

# Docker ファイルを作成

“`dockerfile:Dockerfile
FROM ruby
RUN apt-get update

元記事を表示

Railsチュートリアル 第7章 リスト7.23のテストでArgumentError: wrong number of arguments (given 2, expected 1)

# はじめに
Railsチュートリアル7章のリスト7.23のテストで
`ArgumentError: wrong number of arguments (given 2, expected 1)`
とエラーが出たので、解決した方法をまとめておきます。

自分の環境
– ryby: 3.0.1
– rails: 6.1.3.2

## エラーが出た原因
ruby3.0以上を使っていると、キーワード引数の書き方が変わったため、書き方の問題でひっかかったぽいです。

## エラーがでたコードとエラーメッセージ

“`ruby
require ‘test_helper’

class UsersSignupTest < ActionDispatch::IntegrationTest test "invalid signup information" do get signup_path assert_no_difference 'User.count' do post users_path, params: { user: { name: "",

元記事を表示

OTHERカテゴリの最新記事