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

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

Rails6でJavaScriptの動的読み込み

## 実現したいこと
JavaScript内からDB内のデータを動的に読み込みたい✅

## 開発環境
Rails6系
Ruby3系

アプリ:[Muscle Beat](https://www.muscle-beat.com)(スマホ専用筋トレ系音ゲー)
[GitHub](https://github.com/jibiking/muscle_beat)
テーブル(例)↓
[![Image from Gyazo](https://i.gyazo.com/a0eef96b76e54d3df43a1c5255f5566e.jpg)](https://gyazo.com/a0eef96b76e54d3df43a1c5255f5566e)

## 結論
view内の“`scriptタグ“`に“`erbタグ“`を用いて動的に読み込ませたいJSを記載します!

たしかにRails6系のJavaScriptの記述は“`app/javascript/packs“`以下にするのが通常です。
しかし上記pack

元記事を表示

Railsでphina.jsの動的読み込み

## 実現したいこと
バックエンド(Rails)から保存したDB内のデータを呼び出して、動的にフロント(phina.js)に入れて、ゲームをプレイできるようにする✅

[phina.jsとは](https://phinajs.com/):ゲームを簡単に作ることのできるJavaScriptのライブラリ

## 開発環境
Rails6系
Ruby3系
phina.js 0.2.3(CDN)
アプリ:[Muscle Beat](https://www.muscle-beat.com)(スマホ専用筋トレ系音ゲー)
[GitHub](https://github.com/jibiking/muscle_beat)
テーブル(例)↓
[![Image from Gyazo](https://i.gyazo.com/a0eef96b76e54d3df43a1c5255f5566e.jpg)](https://gyazo.com/a0eef96b76e54d3df43a1c5255f5566e)

## 1. viewでphina.jsの環境構築
ゲームプレイ画面を作成するvi

元記事を表示

「Rails」urlとpathの違いを初心者向けに解説

# _urlと_pathの違いについて

簡単に申し上げるとurlは絶対パスでpathは相対パスである。

### urlについて解説

_urlの形は絶対パスである。例えば、 
“`new_user_url“`という書き方は “`http://localhost:3000/users/new“`と書くのと同意である。
リダイレクトではHTTPの性質上、完全なURLが求められるのでredirect_toメソッドの引数はURLで指定するべきである。
逆に言えばredirect_toメソッドの引数でしか_urlという書き方は使われない。
### pathについて解説

_pathの形は相対パスである。
“`new_user_path“` という書き方は “`/users/new“`と書くのと同意である。
_pathという形は基本的にredirect_to以外で使うと覚えておけば良い。
例えばform_withやlink_toなど。

## 「“`redirect_to @post“`」という書き方(上級者向け)

“`redirect_to post_url(@p

元記事を表示

Git,Githubを使用してherokuへデプロイ

初めての投稿になります。
こちらは、私の備忘録として残しておきます。

# 前提
デプロイしたいアプリが作成済み、GitHubにアカウント登録済み、GitHubにリポジトリを作成済みで、ブランチを切っている状態で、今回はrailsで作成したアプリをデプロイしていきます。

# 実行の流れ
“`!!!
まず、ステージングエリアにカレントディレクトリ以下のファイルをまとめて追加します
git add .

次に自分が変更したファイルをローカルリポジトリに保存します。
git commit -m “コミット名”

Githubにプッシュします。
git push –set-upstream origin ブランチ名

こちらでmasterブランチに変更します。
git checkout master

Githubにプッシュしたブランチ名を使用してマージを行います。
git merge ブランチ名

最後にherokuにデプロイします。
git push heroku
“`
これでherokuへのデプロイが完了です。

# まとめ
初めての投稿なので、誤字脱字やご指摘等ありましたらコメ

元記事を表示

エラーメッセージの日本語化

オリジナルアプリを開発する過程で、ユーザー登録時に入力に誤りがあった場合に表示されるエラーメッセージを日本語化に。

備忘録のため手順を記載する。

まずはapplication.rbを編集。

“`ruby:config/application.rb
module Grucale
class Application < Rails::Application version. config.load_defaults 6.0 config.i18n.default_locale = :ja #追記 end end ``` ※``:ja``は日本語設定を意味する 次にGemfileの記述 ```rubu:Gemfile #最下部に追記 gem 'rails-i18n' ``` 追記したら``bundle install``を実行。 ここまでで挙動を確認すると、``Passwordを入力してください``のように一部しか日本語化されていない。 それを解消するために英語から日本に翻訳してくれるファイルを作成する。 config/localesディレ

元記事を表示

Ruby と Python で解く AtCoder ABC243 D

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
https://atcoder.jp/contests/abc243/tasks/abc243_d

今回のテーマ、ビット演算

この問題は、扱う数値が大きいので計算が大変そうに見えます。
しかし、数値(10進数)を2進数で表しよく見ると...
![20220312.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/cc255973-9d05-bade-892f-c4f7a7e6b780.png)
+ S の i 番目の文字が `U` のとき、今いる頂点の親に移動する
-> 2進数の右側の文字を除去
+ S の i 番目の文字が `L` のとき、今いる頂点の左の子に移動する
-> 2進数の右側に`0`

元記事を表示

Rubyの基礎文法1(表示・計算・変数・メソッド)

# 目次

– [表示](#表示)
– [計算](#計算)
– [変数](#変数)
– [メソッド](#メソッド)

# 表示

「print」「puts」「p」

“`Ruby
print “Hello”
print “World”
print “10”
print 10
#=> HelloWorld1010
# 末尾に改行なし

puts “Hello”
puts “World”
puts “10”
puts 10
#=> Hello
#=> World
#=> 10
#=> 10
# 末尾に改行あり

p “Hello”
p “World”
p “10”
p 10
#=> “Hello” #文字列
#=> “World” #文字列
#=> “10” #文字列
#=> 10 #数値
# 末尾に改行あり
# データの型(文字列か数値か)が分かるように表示できる
“`

ダブルクォーテーションとシングルクォーテーションの違い

“`Ruby
puts “Hello\nWorld”
#=> Hello
#=> World
# バックスラッシュ記法が出力結果に反映される

puts

元記事を表示

【個人note】Ruby on Rails

## 慣習

#### Rubyでは真偽値(true, false)を返すメソッド名は慣習的に’?’をつけることが多い。
参考:[Array#include?](https://docs.ruby-lang.org/ja/3.0/class/Array.html#I_INCLUDE–3F)

####

####

####

####

## 演算子
true = 真
false = 偽

参考:[Rubyの演算子まとめ!Rubyの演算子をマスターしよう!](https://blog.codecamp.jp/posts-34186)

## Rubyのクラスとインスタンスそしてselfの説明

参考:[Rubyのクラスとインスタンスそしてselfの説明](https://ogatanoyarou.com/index.php/2021/03/24/rubyself/)

“`models/user.rb
TODO: ゲストかどうか判別するメソッドを定義
def guest?
self.email == “guest@example.com

元記事を表示

【初心者向け】Ruby on Rails 入門(1) Ruby on Rails 紹介

:::note info
この記事は読者が既にRubyとweb開発基礎内容を習得すると仮定
Ruby on Railsの使え方以外、Why(なぜ使う),What(何ができる),他のweb開発仕組みについてもそれぞれを説明します。
筆者は日本語の初心者ですから、もし記事の文法などが間違えたら、ぜひコメントして教えてください。
= w =
:::
# Ruby on Rails とは何?
名前の通り,Rubyを基づくのWeb frameworkである

Web frameworkというのは、一言に言うと「Web開発には必要な機能を予め用意したの枠組み」である。規定された基準の上で開発を行うと,開発効率やソフトウェア品質を向上することが期待られる。

**Ruby on Rails二つの原則**
1. DRY(Don’t repeat yourself)同じコードを繰り返しないで
2. CoC(Convention over Configuration)設定よりも規約を優先する
## Ruby on Railsの Why(なぜ使う)
開発者として、Ruby on Railsの基準に従って、い

元記事を表示

RubyGoldの対策内容まとめ

3ヶ月ほど前にRubyGoldに合格したので行った対策等をまとめました。
# 受験者ステータス
– Railsを使った開発経験 2ヶ月程度
# 結果
94点/100点
# 対策内容
– [『公式教本』](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%91%E6%9B%B8/dp/4774191949) (おすすめ度★★★)

公式の本だけあって、丸々同じ問題が本番でいくつか出た。

– [CTC模擬問題集 (おすすめ度★★★)](
https://www.school.ctc-g.co.jp/ruby/training_ruby_gold_01_10

元記事を表示

Rubyのぼっち演算子について

# ぼっち演算子`&.`

「レシーバがnilのときに起こるエラーを回避するため」に`.`の代わりに` &.`を使います。
レシーバがnilでもエラーにならず、nilを返してくれます。

“`ruby
user = User.new
user.name # => “ユーザー名”

object = nil
object.name # => NoMethodError
object&.name # => nil
“`

ifや三項演算子でも書くことができます。

“`ruby
# ifを使った書き方
name = if object
object.name
else
nil
end

# 三項演算子を使った書き方
name = object ? object.name :nil
“`

元記事を表示

【Rails 6】片方の選択によってもう片方のオプションの値が変化する動的なセレクトボックスを作る

## 概要

タイトル通りのものを作ります。文字だけだとわかりにくかったら、次の完成イメージを見てください。

## 完成イメージ

![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/63098019-e563-05c7-934f-2f6811b17010.gif)

## 仕様

– Ruby 3
– Rails 6
– MySQL 5.7
– Bootstrap 5
– Docker

※ Bootstrap はバージョン5から JQuery が不要になり導入方法が少し変わったのでご注意ください。

## 下準備

まず最初に下準備から始めていきます。

### 各種ディレクトリ & ファイルを作成

“`
$ mkdir rails-dynamic-selectbox && cd rails-dynamic-selectbox
$ touch Dockerfile docker-compose.yml entrypoint.sh Gemfile Gemfile.loc

元記事を表示

Rubyの大クラス主義について解説してみた

Rubyを勉強していったら、「Rubyには大クラス主義というものがあるんだよ」というのを聞いて、自分はよくわからなかったので調べてみてわかったことを記事にしようとおもいます。

## 大クラス主義
例えば、配列を表すクラスにArrayクラスというものがRubyにあります。そしてArrayクラスにはpopメソッドやunshiftメソッドがあります。
ここから分かることはArrayクラスにはキューやスタックとしても使えるんです。
自分はJava等の言語を触ったことはないのですが、JavaではQueueクラスやStackクラスとそれぞれ分かれているみたいです。
他にもeachメソッドがありますが、JavaではIteratorクラスが用意されていて、それぞれが処理するみたいです。

このようにRubyのArrayクラスでは、Arrayクラスでは担う役割が大きいんですね。そのことを**大クラス主義**といいます。

※キューやスタックについてよく分からない方は以下の記事を参照にしてみてください

https://qiita.com/jnchito/items/62b9bab0455ed0f47d

元記事を表示

同じテーブルに複数の関連づけ

同じテーブルに対し、複数のリレーションを持っている時のModelの書き方

Staff(職員)は複数のAsessments(評価)を持っている。その評価には評価される人(staff_id)と評価する人(input_staff_id)が存在する。両者に関係を持つようにModelに追記したい。

以下のようなER図を想定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2508607/a56f21f1-3c0f-760f-0ad8-fe7b89523968.png)

外部キー(foreign_key)と関連先のクラス名(class_name)を指定するだけでOK。

“`Assessment.rb
belongs_to :input_staff, foreign_key: ‘input_staff_id’, class_name: ‘Staff’
belongs_to :staff, foreign_key: ‘staff_id’
“`

`input_staff`と`st

元記事を表示

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コ

元記事を表示

OTHERカテゴリの最新記事