Ruby関連のことを調べてみた2022年03月12日

Ruby関連のことを調べてみた2022年03月12日

Rubyで数値を3桁区切りにする方法

Rubyで 1234567を1,234,567と出力したい。

“`
require ‘active_support’
require ‘active_support/core_ext’
puts 1234567.to_s(:delimited) # 1,234,567
“`
(requireは2つとも必要)

詳しくは
https://rip.hibariya.org/post/ruby-activesupport-to-s-args/
参照して下さい。

元記事を表示

実務未経験者によるRubySilver対策

4ヶ月ほど前(2021年10月)にRubySilverに合格したので、忘れないうちに対策したこと、やって良かったこと、勉強になったことなどをまとめます。

# はじめに

筆者のステータス(受験時):文系出身、実務未経験、Rubyは独学とプログラミングスクールで勉強したのみ
(いわゆる「チェリー本」は読んでいました)

# 試験結果
94点/100点

# 結論
それほど難しい資格ではなかったです。以下をやれば合格圏内に入れると思います。
1. [Ruby技術者認定試験合格教本(基本問題、模擬問題部分)](https://www.amazon.co.jp/%E6%94%B9%E8%A8%822%E7%89%88-Ruby%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-Silver-Gold%E5%AF%BE%E5%BF%9C-Ruby%E5%85%AC%E5%BC%8F%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%

元記事を表示

【超初心者向け】rails migrationファイルの削除方法

# この記事を読むとわかること
1. マイグレーションファイルを削除する方法
1. NO FILE を削除する方法

初学者ですが、自分が躓いた箇所を基礎からなるべく分かりやすく書いたつもりなので
参考にしていただけると幸いです。
また間違っているところがあればご教授お願いします。


# 【STEP0】 migrationの現状把握
まず、migrationの状況確認しましょう
わかる方は読み飛ばしてくださいー
確認コマンドは↓↓↓
“`bash
rails db:migrate:status
“`
ターミナルへ入れると下のように確認ができます。
“`bash
ec2-user:~/environment/sample (main) $ rails db:migrate:status

Status Migration ID Migration Name
————————————————–
up 20211219053729 Devise create users
up

元記事を表示

本日のRuby基礎練習問題(22/3/11)

# 本日のRuby基礎練習問題(22/3/11)
**問題**
FizzBuzz問題
1〜100までの数字をターミナルに出力してください。
ただし、「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzz、
3と5の倍数である「15の倍数」のときはFizzBuzzと出力してください。
プログラムのひな形は以下です。
“`question1.rb
def fizz_buzz
# ここに処理を書き加えてください
end

fizz_buzz
“`
ヒント
① 問題文で与えられている仕様を整理すると以下のようになります

数字の1~100を出力する
値が3の倍数のときだけ、”Fizz”という出力に置き換える
値が5の倍数のときだけ、”Buzz”という出力に置き換える
値が3と5の倍数のときだけ、”FizzBuzz”という出力に置き換える
②「〇〇の倍数」を導き出す時は剰余演算子を用いましょう

③条件を指定して繰り返し処理をする場合は、whileというメソッドを使いましょう

# 私の回答
“`qiita.erb
def fizz_buzz
x = 1

元記事を表示

【エラー備忘録】Windowsローカル環境で$rails db:resetできない場合にマイグレーションを行う手順

# 目次
– 状況、前提
– エラー内容
– 原因
– 解決方法
– 参考リンク

# 状況、前提
Railsでポートフォリオを作成している最中、マイグレーションしなおそうと$rails db:resetした際にエラーにハマる。
Windows 11
Ruby 3.0.2
Rails 6.1.4

# エラー内容
“`
Permission denied @ apply2files – C:/myapp/db/development.sqlite3
Couldn’t drop database ‘db/development.sqlite3’
rails aborted!
Errno::EACCES: Permission denied @ apply2files – C:/myapp/db/development.sqlite3

Tasks: TOP => db:drop:_unsafe
(See full trace by running task with –trace)
“`

# 原因
Windowsではrailsコマンドでファイルを削除できないのが原因。

# 解決

元記事を表示

[Devise] 更新をpasswordなしで可能にする

## はじめに
認証機能で有名なRuby on Railsの gem `Devise`を使ったので記事を残そうと思います。
`update_without_password`を使った方法は`password`の更新ができなくなってしまうので、`update_without_current_password`というメソッドを自作して適応します。
これによりpassword自体の変更も可能にします。

## 環境
M1 Mac
VScode
ruby 3.1.0
rails 6.0.4.7
devise 4.8.1

## routingを追加

“`rb:routes.rb
devise_for :users,
controllers: { registrations: ‘registrations’ }
“`

## registrations_controllerを追加
“`shell:terminal
# vscodeを使っている場合は下記で作成+開く
$ code app/controllers/registrations_controller.rb

# unixコ

元記事を表示

Herokuはどうなっているのか

## 1. はじめに
なんとなくRailsを始めて、なんとなく自分なりのWebアプリを作ってみて、なんとなくHerokuにデプロイしてということをしてきたが、いまいちHerokuの仕組みについてはよくわかっていないのでまとめてみる。

## 2. 前提
まず前提として、Herokuにデプロイした際にドメインが与えられるが、そのHerokuアプリには**固定IPアドレスが与えられていない**。

## 3. dynoとは何か
dynoとは軽量のLinuxコンテナであり、デプロイしたアプリはこのdynoの中で実行される。(ほぼサーバー)
dynoは言ってみればアプリケーションを動かすための箱のようなものであるため、dynoのグレードによってできることが変わってくる。dynoにはFree, Hobby, Standard, Performanceがある。Railsを始めてそれほど経ってない自分みたいなペーペーがデプロイするのは大体Free dyno。

dynoのグレードを上げる(例えばFreeからHobbyに変更する)ことを垂直方向への拡張といい、dynoの数を増やすことを水平方向への拡張

元記事を表示

ruby文字列の定数とfreeze

# 定数

## 定義

アルファベット大文字 ([A-Z]) で始まる識別子は定数です。

## 実験その1

### 実行結果
“`
[27] pry(main)> HOGE = ‘hoge’
=> “hoge”
[28] pry(main)> HOGE = “foo”
(pry):28: warning: already initialized constant HOGE
(pry):27: warning: previous definition of HOGE was here
=> “foo”
[29] pry(main)> HOGE
=> “foo”
“`

### 結論
一度定義された定数に再び代入を行おうとすると警告メッセージが出ます。代入することは成功になります。

## 実験その2

### 実行結果
“`
[30] pry(main)> HOGE = ‘hoge’
(pry):30: warning: already initialized constant HOGE
(pry):28: warning: previous definition of H

元記事を表示

Userモデルのバリデーションを解説【Ruby on Rails】

## どんな値も取れるname属性・email属性は問題!
例えば`name`は空であってはならず、`email`はメールアドレスのフォーマットに従う必要がある。さらに、メールアドレスをユーザーがログインするときの一意のユーザー名として使おうとしているため、メールアドレスがデータベース内で重複することのないようにする必要もある。

属性値には、何らかの制約を与える必要がある。Active Recordでは**検証(Validation)** という機能を通して、こういった制約を課すことができるようになっている。

よく使われるのは
* 存在(preference)の検証
* 長さ(length)の検証
* フォーマット(format)の検証
* 一意性(uniqueness)の検証
* 確認(confirmation)の検証

### 検証はテスト駆動開発にぴったりの機能!
`setup`メソッド内の処理は、各テストが走る直前に実行される。`@user`はインスタンス変数だが、setupメソッド内で宣言しておけば、全てのテスト内でこのインスタンス変数が使えるようになる。
したがって、`

元記事を表示

rails db:migrateを実行した時に出たエラーを解決した話

# はじめに
1月〜プログラミングスクールで学習しています。
これから平日は~3/25まで毎日何かしらアウトプットのため投稿を続ける予定です。
今回は rails db:migrateコマンドを実行した際に出たエラーについて書きます。
※Ruby2.6.5の環境を使用し学習しています。

# 問題
rails db:migrateコマンドを実行すると下記エラーが出ました。
ただ、思い当たる節が合ったためすぐに解決することができました。
“`:ターミナル
% rails db:migrate
== 20220310072650 DeviseCreateUsers: migrating ================================
— create_table(:users)
-> 0.0159s
— add_index(:users, :email, {:unique=>true})
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
“`

元記事を表示

二つのテーブルから検索する機能を実装しました。

# 今回はarticlsテーブルとresolutionsテーブルから検索するコードを掲載します。
1.アソシエーションの状況
[![Image from Gyazo](https://i.gyazo.com/0e3e19e1a852b80c094822158698bfc8.png)](https://gyazo.com/0e3e19e1a852b80c094822158698bfc8)
2.ルーティングの設定
“`routes.rb
Rails.application.routes.draw do
devise_for :users
root to: ‘users#index’
resources :resolutions

resources :articles
resources :users do
collection do
get ‘search’
end
end
end
“`
3.コントローラーの記述
“`users_controller.rb
lass UsersController < Applicat

元記事を表示

【Rails】ソート機能の実装(星レビュー、投稿日順)

## はじめに
前回実装した星レビュー機能へ
星レビュー評価の高い順、投稿日が新しい古い順に並び替えできるように機能を追加していきます。

– 前回の記事

https://qiita.com/kcl215/items/e226ac58d14360fd1b8e

## 今回実装していく流れ

– モデルにカラムデータの取り出し方を指示する記述をする
– コントローラーのアクションを追記する
– ビューにソートするためのリンクを作る
– 日時を日本時間へ変更する

## 開発環境
– ruby 2.6.3p62
– Rails 6.1.4

## 完成図

![sort.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2581621/d5a3dc62-e50e-f0ac-12fd-16908eccb416.gif)

## 1. モデルにカラムデータの取り出し方を指示する記述をする

`scope`ヘルパーを使って

“`diff_ruby:app/models/book.rb
class B

元記事を表示

【個人開発】AI技術を用いたジョジョ立ち検定サービスをリリースしましたッ!

[![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1519716/77a9d63b-51e9-04ee-c7b7-4c70be1ba7ef.png)](https://jojo-pose-exam.jp)
AI技術を用いてユーザーのジョジョ立ち画像を解析し、
ジョジョ立ちの合否を判定する検定サービスをリリースいたしました!

**▼ サービスURL**
[https://jojo-pose-exam.jp](https://jojo-pose-exam.jp)

**▼ 筆者の受験結果ページ**
[https://jojo-pose-exam.jp/exam_results/c71da2f4-fdd8-4851-bbf1-e1f831f0b255](https://jojo-pose-exam.jp/exam_results/c71da2f4-fdd8-4851-bbf1-e1f831f0b255)

# はじめに
はじめまして、ジョジョ好きエンジニアのやまもとと申します。

– **「ジョジ

元記事を表示

Ruby on Railsでデータベースのテーブル名とカラムデータを確認する方法

(開発環境:Ruby3.1.0 Rails7.0.2.2)

まずはターミナルで確認したいアプリケーションディレクトリに移動(ディレクトリの移動方法:cd 1階層下のディレクトリ名)

“`ruby:qiita.rb
ディレクトリ名% rails c #Railsコンソール起動
irb(main):001:0> 確認したいデータのモデル名.all
“`

これで以下のようにテーブル名とカラムデータの内容が確認できます。

“`ruby:qiita.rb
(1.8ms) SELECT sqlite_version(*)
モデル名 Load (0.3ms) SELECT “テーブル名”.* FROM “テーブル名”
id: 1, #自動生成
name: nil, #任意に生成したデータ名(データ名は(例)name、nilは値が何もないという表記)

元記事を表示

動的メソッドの解説

メタプログラミングRuby3章を読んでそれをまとめてみようとおもいます。

タイトルにある動的メソッドとは何なのでしょうか?

## 動的にメソッドを呼び出す
Rubyではメソッドを呼びだすときはドットを使って呼び出しています。
“`array.count“`のようにオブジェクトにたいしてメソッドを呼び出しています。
そのほかにsendメソッドを使う方法もあります。以下のような使い方をします
“`
class Example
def ex_method(arg)
arg * 3
end
end

obj = Example.new
obj.ex_method(30) #=> 90
obj.send(:ex_method, 30) #=> 90
“`
同じex_methodを呼び出してはいますが、コードを実行する際に呼び出すメソッドを決められるのがsendメソッドのポイントです。
このように、コードの実行時に呼び出すメソッドを決められることを**動的ディスパッチ**といいます。

このようにメソッドを動的に呼び出すことができることを紹介しましたが、メソッドを動的に

元記事を表示

駆け出しエンジニアのCI改善 (その1 seed.rbの作成)

## 自己紹介: 駆け出しエンジニア
はじめまして。
私はRailsで自社サービスの開発を行っている駆け出しエンジニアです。
2020年11月|エンジニアとしての学習を開始
—|—
**2021年5月**|**エンジニアへ転職**
**2022年3月**|**現在**(10ヶ月目)

現在、自動テスト作成の業務に取り組んでいます。
取り組んだことや気づいたことについて少しずつ記載して行きたいと思います。

### 実行環境: Ruby3.0 & Rails6.0
Ruby|3.0.3
—|—
**Rails**|**6.0.4.6**

## 目標: GithubActionsでテストを並列実行する

3つのステップに分けて進めて行きます。
1. テスト用DB作成の為にseed.rbを作成する **← 今回の記事**
1. GithubActionsで自動テストを作成する
1. 自動テスト実行時にテストカバレッジの測定をする
1. GithubActionsのテストを並列で実行したい (目標)

ということで、今回は1の **テスト用のDB作成の為にseed.rbを作成

元記事を表示

Rails6でBootstrapを使う

## はじめに
構築で少し迷ったので備忘録
Rails6にbootstrap 5系と4系それぞれの導入方法を記載します。

## 環境
M1 Mac
VScode
ruby 3.1.0
rails 6.0.4.7

## 注意点
bootstrapのversion違いで動かないケースがある
5系と4系ではsetupの仕方が若干違うので、installするversionに合わせて構築する必要がある。

エラーが出力されずbootstrapが動かない原因の多くは、bootstrapのversionと設定が噛み合っていないから

installしたのは5系だが、4系を前提とした設定をしているなど

## bootstrap version 5系
5系は`jquery`が必要なくなりました

## terminalで下記を実行
“`shell
# 2022.03/10 時点では5系のbootstrapがinstallされる
# versionの指定は記事下部を参照
$ yarn add bootstrap@next
$ yarn add @popperjs/core
“`

“`she

元記事を表示

rails consoleでメソッドの一覧や定義場所を確認する

# はじめに
Railsでコードを書いているときにメソッドの有無や定義場所を調べたい!となることがあったので、方法をまとめておきます。

# メソッドの一覧を確認する
メソッドの一覧は`methods`メソッドで確認できます。
使用可能なメソッドがシンボルの配列として返ってきます。

“`irb
[1] pry(main)> user = UserController.new()
=> #
[2] pry(main)> user.methods
=> [:index,
:show,
:create,
:update,
# ~省略~
“`

# メソッドの定義場所を確認する
`method`メソッドと`Metho#source_location`メソッドで確認できます。
0番目の要素に定義ファイルの絶対パスが、1番目に行数が入った配列が返ってきます。

“`irb
[3] pry(main)> user.method(:index).source_location
=> [“/home/user/workspa

元記事を表示

Rails gem postgresqlをインストールできない時の対処法。

## はじめに
Railsを使用して開発した、アプリケーションをherokuにデプロイする際、本番環境用のデータベースとして、PostgreSQLを設定する必要があったのですが、その時に少しハマったので、解決策をここに記録しておきます。

## PostgreSQLの導入
heroku上のデプロイする際、RailsのデフォルトデータベースのSQliteは使用することができないので、本番環境用のデータベースとして、PostgreSQLを導入します。

まず、開発環境では、sqliteを使用し、本番環境では、PostgreSQLを使用する設定をGemfileに記述します。
~~~ruby:Gemfile
# Use sqlite3 as the database for Active Record
gem ‘sqlite3’, ‘~> 1.4’, group: :development
gem ‘pg’, ‘~> 1.3’, ‘>= 1.3.3’, group: :production
~~~

次に、gemfileに記述した内容ターミナルでをインストールします。
~~~teminal:t

元記事を表示

Rubyでargvを使う方法

## argvとは
“argv“とは、argument vectorの略で「引数の配列」を意味する。
コマンドライン(ターミナル)からスクリプトを実行する時に、スクリプトに引数を渡すために利用する。

“argv“は、コマンドライン引数を取得するための仕組みとしてRubyだけではなくて、使い方はそれぞれの言語で違うが、C言語やPython、その他様々な言語にも存在する。

## argvの使い方
“ruby“では、“ARGV“という配列オブジェクトから、Rubyスクリプト実行時に渡された引数が参照できる。
スクリプト実行時に以下のように引数を渡すことで使用できる。
“`
$ ruby スクリプトファイル名 1番目の引数 2番目の引数 3番目の引数…
“`
この場合は、“ARGV[0]“には1番目の引数が、“ARGV[2]“には3番目の引数が設定されている。

## 実際の使用例
以下のようなファイルがあったとする。

“`hoge.rb
p “Hello, #{ARGV[0]}”
“`
この「hoge.rb」に引数を渡して実行してみる。
“`.ター

元記事を表示

OTHERカテゴリの最新記事