Ruby関連のことを調べてみた2023年08月30日

Ruby関連のことを調べてみた2023年08月30日

[Ruby JavaScript] ハッシュ、オブジェクト比較

# 目的
現在携わっているRails + Vue.jsのプロジェクトで、Ruby、JavaScriptそれぞれのキーと値を組み合わせてデータを管理する方法の呼び方、表記の仕方が混乱したので比較する。
# Ruby ハッシュ
“`
currencies = {‘japan’ => ‘yen’, ‘us’ => ‘dollar’, ‘india’ => ‘rupee’}

# キーと値
# 値を取り出す
currencies[‘japan’]
“`

シンボルを使った場合
“`
# キーのみシンボル
currencies = { japan: ‘yen’, us: ‘dollar’, india: ‘rupee’}
currencies = { :japan => ‘yen’, :us => ‘dollar’, :india => ‘rupee’}

# キーも値もシンボル
currencies = {japan: :yen, us: :dollar, india: :rupee}
currencies = { :japan => :yen, :us => :dollar, :ind

元記事を表示

Ruby テストコードの書き方、見方

“`ruby
# テストコードのひな型
# テストは、コードが期待通りに動作しているかどうかを確認するために使用されます。

# minitestライブラリを読み込む
require ‘minitest/autorun’

# SampleTestというクラスを定義し、Minitest::Testクラスを継承する
class SampleTest < Minitest::Test # test_sampleという名前のテストメソッドを定義する def test_sample # assert_equalメソッドを使って、'ruby'.upcase の結果が 'RUBY' に等しいかをテストする assert_equal 'RUBY', 'ruby'.upcase end end # ------------------------ console ----------------------------- # okuyama@okuyama:~/ruby_book$ ruby sample_test.rb # Run options: --seed 3

元記事を表示

viewファイルのrenderメソッドについて【虎の巻】

### 【概要】

以前Railsでフォームの作成について解説しました。(詳細は下記。)

https://qiita.com/iijima-naoya-45b/items/98e03a9d6f2252ebf47d

しかし、`form_with`とセットで使用される`render`について解説がなかったためにこちらで詳細を解説しようと思いました!
renderにも特殊な使い方があるので、少し混乱した箇所があるのですが、慣れると良いコードを書けるようになります。

こちら使い方をおさらいしておきましょう。

### 【環境】

この記事は下記の実行環境で動作確認しております。
・Rails 7.0.4
・Ruby 3.1.4

### renderとは

例に倣って、`render`を解説したいと思います。「render」とは、部分テンプレートを行うためのフレームワークとなっております。
まずは、下記をご覧ください。

“`ruby
def index
@posts = Post.all
render ’posts/index’# postsフォルダ内のi

元記事を表示

Rspec【虎の巻】

### 【概要】

今まで、COBOL言語を経験しており、始めてRspecなるものに触れた時はかなり戸惑いました。
というのも、COBOLの場合、UTやITを実施する際には、テスト仕様書やJCL、テスト用のインプットファイル作成などかなり広範囲に渡って作成する必要がありました。

しかし、Rspecではそれらを一括で記述することができてかなり、便利な機能であると知りました。
(最初見た時は気持ち悪!ってなりました。。。)

そこで今回は、Rspecの備忘録としてまとめましたので、Rspecが難しい!と思っている方でもポイントを抜粋して解説するのでよかったら見ていってください。

### 環境

この記事は下記の実行環境で動作確認しております。
・Rails 7.0.4
・Ruby 3.1.4
・Rspec 3.11
・Factorybot

### 【Rspecとは】

例に倣って、`Rspec`とは何かを見ていきましょう!
>RspecとはRubyプログラミング言語向けのテスティングフレームワークです。プログラムの動作確認やテスト自動化を行うために使用されます。RS

元記事を表示

[Ruby] JSON相互変換

# 目的
Railsで外部APIと通信した際に、APIから返ってきた値をJSONからHashに変換したり、逆に送る値をHashからJSONに変換する処理を行ったのでまとめる。
# 前提
`ruby 2.7`

# RailsのHash
Rubyでキーと値を組み合わせでデータを管理するオブジェクト。他の言語では連想配列とも
 
#### 形式
– 文字列を囲むのは`”`でも`””`でもどちらでもいい。
文字列で囲まれていないものはシンボル
囲まれているものでもシンボルのものがある。
“`
{ ‘id’ => 1, ‘name’ => ‘user1’, ‘age’ => 22}

# キーがシンボル
{ “id”: 1, “name”: “user1”, “age”: 22}
{ id: 1, name: “user1”, age: 22 }
{ :id => 1, :name => “user1”, :age => 22}
“`

# JSON
– 「JavaScript Object Notation」の略で、「JavaScriptのオブジェクトのオブジェクトの書き方を元にしたデ

元記事を表示

Rails7のAction Cableを使ったLINE風のチャット機能の実装

### はじめに

私はプログラミングの初学者です。
自分のサービスを開発する中でチャット機能を作成いたしました。
同じようなところで困っている人や学習のアウトプットのために投稿させていただきます。

### 実現したいこと

RailsでLINEのような非同期のチャット機能ををつけたいです。
付ける場所としては投稿詳細画面のところです。
もしよろしければゲストログインして触ってみてください。
##### 以下実際のアプリURL
[自分、探してます](https://www.sagashitemasu.com/)

### 使用した技術

・Rails7系で開発
・クライアントサイドの実装としてJavaScriptを使用
・データベースはPostgresql
・Bootstrapを使用
・gem device

### 作成手順
非常に分かりやすくまとめてくれている以下の記事を参考にさせていただきました。
以下をご覧になられていることを前提に説明していきます。
https://techtechmedia.com/action-cable-rails6

### 見た目
そこから私が必要

元記事を表示

Ajaxについて【虎の巻】

### 【概要】

ajaxを初めてみた時になかなか処理について理解することができなかったので、思い出し確認の意味をこめて書いていこうと思います。

### 【環境】

この記事は下記の実行環境で動作確認しております。
・Rails 7.0.4
・Ruby 3.1.4
・gem ‘turbo-rails’

### 【補足】

・この記事を編集時点で、様々な気づきがありましたため、一部認識が異なる場合がございます。その場合は、ご指摘くださると幸いです。

### 【Ajaxとは】

例に倣って、ajaxとは。を確認していきましょう!

>Ajaxとは、AsynchronousとJavaScriptに、XMLを組み合わせて作られた造語です。先の項で紹介した非同期通信を、「JavaScriptの技術で実行すること」を指します。企業によっては、単純に「非同期通信」のことを指してAjaxと呼ぶケースもあります。AjaxはWebページに搭載されている技術ですが、このAjaxを使うことで、Webページ全体を更新することなく「一部分だけ情報を更新する」ことが可能です。Aj

元記事を表示

Form_withヘルパー【虎の巻】

### 【概要】

Railsでフォームを作成する際には、form_withヘルパーが必須知識となります。ぜひマスターして使いこなせるようになりましょう!
またセットでrenderを使用することがありますが、そちらの詳細については別紙で解説しております。

### 環境

この記事は下記の実行環境で動作確認しております。
・Rails 7.0.4
・Ruby 3.1.4

Rails5.1以前のバージョンについては割愛しますので、そちらをご使用の方は下記記事をご参照ください。

【Rails】form_forの基本の基

https://qiita.com/manbolila/items/b8336ab115f3aebacbb9

### Form_withヘルパーとは

まずは、Form_withヘルパーについて整理しておきましょう。
Form_withヘルパーとは下記のような機能を実装する手助けとなるものです。

### ・Viewファイル内で簡潔にフォームを生成することができるヘルパーを生成できます。
### ・入力値の送信先も設定できる為、コントローラへの

元記事を表示

クラスの継承(単一テーブル継承)について【虎の巻】

### 【概要】

作業時に、schemaの情報が定義されていないのにも関わらず、ActiveRecordでテーブルの情報を使用できることに疑問を感じ、調査してみると、単一テーブル継承と呼ばれる考え方が記されておりました。
下記に考え方や手順を備忘録として、残そうと思います。

### 環境

この記事は下記の実行環境で動作確認しております。
・Rails 7.0.4
・Ruby 3.1.4
### 【クラスの継承について】

まず、警鐘について確認したいと思います。

継承とはあるクラスを継承し、新たにクラスを作成することを指します。
┗例 Animalクラスを継承したdogクラスなど。(下記参考)

恩恵として、継承元の親クラス(スーパークラス)で定義された機能を子クラス(サブクラス)でも使用ができるようになります。

![スクリーンショット 2023-08-27 20.55.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538926/b87c2adb-6d5f-c933

元記事を表示

【Rails】Simple Calendarをカラム追加無しで実装しよう。

# はじめに
?こんにちは!Web系の企業に勤務し、地方からフルリモート勤務をしている@takakouと申します?️✨

今回は、「**Simple Calendarをカラム追加無しで、既存のモデルに実装してみよう**」というテーマで記事をシェアします!?

この記事を執筆しようと思った経緯としては、私自身が **Simple Calendar** の実装をしている記事では、なぜ新規のカラム、モデルを追加する記事しかないのか疑問に思ったからです。?

そこで、同じ疑問を持つ方の解消ができればと思い執筆しました?

記事執筆は未熟者で、至らない点もあるかと思いますが、皆さんのコメントやフィードバックをお待ちしています!??
# 目次

1. [対象者 ?](#1-対象者)
1. [動作環境 ?️](#2-動作環境)
1. [前提知識 ?](#3-前提知識)
1. [導入手順 ?](#4-導入手順)
1. [参考文献 ?](#5-参考文献)
1. [おわりに ?](#6-おわりに)

# 1. 対象者

* スクー

元記事を表示

Ruby言語内での FiberScheduler#address_resolve の使われ方

## この記事について

Ruby3.x にて使用可能な `FiberScheduler#address_resolve`を自前実装している。

https://github.com/kudojp/async_scheduler/pull/23

このメソッドが返す値がRuby言語の中でどのように使用されるのかを確認したい。

## `FiberScheduler#address_resolve`について

以下の通り。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/50a0e7c3-f25c-4d88-8834-f2124686ed34.png)

https://docs.ruby-lang.org/en/3.1/Fiber/SchedulerInterface.html#method-i-address_resolve

## 調査内容

自分が実装するスケジューラにおいて、`FiberScheduler#address_resolve`が、`[“1.1.1.1”

元記事を表示

【Rails/JavaScript】アクティブストレージの画像をプレビュー表示させるときに出会ったエラー

# はじめに
アクティブストレージの画像をプレビュー表示させるときに出会ったエラーについてその解決法をまとめました。

# プレビュー表示の方法
これは色々な記事でまとめてましたので[こちらの記事](https://qiita.com/study_matome/items/7831961de214c8935f09)を参照。

# 出会ったエラー
## ①Uncaught TypeError: Cannot read properties of null (reading ‘addEventListener’)at HTMLDocument.

Javaのファイル内容を以下のように書いたときにローカル環境にて確認時にコンソールに表示されたエラーです。

“`javascript
document.addEventListener(‘DOMContentLoaded’, function(){
const orderForm = document.getElementById(‘item-image’);
const previewList = docume

元記事を表示

【Ubuntu】Ruby3.2.2 をインストールしようとしたらエラーになった

## まとめ
* Ruby(3.2.0)から`libyaml`や`libffi`の同梱が廃止された。
* Rubyインストール前に`apt-get`コマンドで`libyaml-dev`を別途インストールする必要がある。
“`
$ sudo apt-get install libyaml-dev
“`

## 環境
* Windows(10)
* [WSL2]Ubuntu(20.04)
* rbenv(3.2.2)
* `ruby-build`追加済み
* `.bashrc`にいろいろ追記済み

## どうした
rbenvからRuby(3.2.2)をインストールしようとしたらエラーになった。
## エラー内容
Ruby(3.2.2)をインストール
“`
$ rbenv install 3.2.2
To follow progress, use ‘tail -f /tmp/ruby-build.YYYYMMDD.00000.log’ or pass –verbose
Downloading ruby-3.2.2.tar.gz…
-> https://cache.

元記事を表示

8.26

# 今日の日記メモ

Railsの環境作成に挑む
cmd+shift+. ホームディレクトリでのファイルを出す

https://chikinmasa.org/ruby_install/\

試した
“`
x21024xx@x21024xxnoAir ~ % echo $SHELL
/bin/zsh
x21024xx@x21024xxnoAir ~ % echo ‘eval “$(rbenv init -)”’ >> ~/.zshrc
x21024xx@x21024xxnoAir ~ % source ~/.zshrc
/Users/x21024xx/.zshrc:1: parse error near `then’
x21024xx@x21024xxnoAir ~ %
“`
なぜか echo ‘eval “$(rbenv init -)”’ >> ~/.zshrc が上手くいかない
↓ .zshenv の中身

“`
‘eval “export PATH=”/Users/x21024xx/.rbenv/shims:${PATH}” export RBENV_SHELL=z

元記事を表示

Railsで、Datetime型に対するタイムゾーン無表記+Rspecテストの記述方法

## はじめに
タスク管理アプリを作成する際、日付と時間を入力するため、datetime_fieldを使用した。
しかし、表記にすると謎の+0900が後付けされるわ、Rspecテストでこの場合どうやって入力値を打ち込むんだ? と混乱した経緯があったので、調べて試してみた。

※Railsに触り始めて1ヶ月ほどほどぐらいの健忘録みたいなものです。生優しい目でご覧ください。

## 開発環境
Rails 6.1.7.4
ruby 3.0.1

### +0900の数字は何?
UTC(協定世界時)、世界各地の標準時を決める基準。日本の標準時は、UTCより9時間進んでいるため、+0900と表示される。
datetime_fieldで取得した情報をそのまま表示すると下記のようになる。
![スクリーンショット 2023-08-21 23.12.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3508102/0cb347eb-cd6a-35bb-e67b-2bfdcae2a08d.png)

正直、この状態になる

元記事を表示

webアプリをDocker化する方法

## はじめに
今回はdocker-composeで既存のrailsアプリをDocker化する方法をまとめました。
Dockerの学習がメインのためRubyやRailsに詳しくなくても実施できます!

### docker-composeとは
複数のコンテナを組み合わせて1つのアプリケーションとして構成を定義するファイルです。
`docker-compose`を使用ことで以下のメリットがあります。
1. docker run コマンドを短くすることができる
1. 複数のコンテナをまとめて起動できる
`docker run`コマンドは複数のオプションを使用する場合があるためどうしても長くなってしまいます。それをdocker-composeが解消してくれます!
※docker-composeには`docker-compose.yml`が必要です。

### 環境
以下の環境で構築してます。
“`
Rails 7.0.6
ruby 3.2.2
postgres 12
“`

### 手順
Docker化するのにRailsとpostgres2つのコンテナを立てるためdocker-comp

元記事を表示

コードの信頼を高めよう! RSpecによるRailsテスト入門

## RSpecとは
 Rubyプログラムやアプリケーションを自動的にテストするための振る舞い駆動型開発(BDD)フレームワーク。
#### BDDとは
 開発の前に仕様や要件を定義し、それを基にテストを開発者以外がみても理解できるように自然言語に近い形式で記述する。
## テストを書く意味
– アプリケーションの品質担保
– システム要件の理解度向上
– プログラムのバグ削減
– 不具合再発防止
– 後々リファクタリングしやすくするため。
「テストコードがない状態だとリファクタリングできない。きれいなコードを書くなら、まずテストコードから」
## テストを書くときに意識すること
– DRYであること(Don’t Repeat Yourself:同じことを繰り返すな)
– 信頼できるものであること
– 誰が見ても理解できること。将来の人のためにも。
– テストコードのコーディングルールを厳しくしすぎない。
## モデルスペックテスト
### validationテスト

“`ruby
RSpec.describe User, type: model do
describe ‘va

元記事を表示

既存のRailsのwebアプリをdocker化する方法

## 今回構築したい環境
– 既存のRailsのWebアプリをdocker化し、docker-compose upでRailsプロセスとdbが起動し、http://localhost:3000 でこのwebアプリにアクセスできるようにする。
– Rubyのバージョンは3.2.2を使用する。
– DBはpostgresを使用し、バージョンは12を使用する。
– ホストのファイルシステムとコンテナのファイルシステムを同期している。

## Dockerfileを作成
①下記のLinuxコマンドを実行し、空のDockerfileを作成します。
“`cmd
$ touch Dockerfile
“`

②作成したDockerfileに以下のようなDockerコマンドを記述していきます。
“`Dockerfile
FROM ruby:3.2.2
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs \
postgresql-client \
y

元記事を表示

BundlerのグループによるGitHub Actions (ruby/setup-ruby@v1) におけるRubocopの実行最適化

# TL;DR

GitHub Actions で RuboCop を実行する際,デフォルトでは Gemfile に記載されている gem を余剰にインストールする必要があり冗長性が生じる.そこでBundlerのグループ機能を使って最小限の gem をインストールし,ジョブの最適化を行う.

具体的な手順は次のとおりである,RuboCopの関連gemを`:rubocop`グループに入れる.`bundle config`コマンドを使用して,`with`と`without`を設定することで,`:default`グループに属するgemを除いて`:rubocop`グループのgemのみをインストールすることができる.GitHub Actionsでは,`ruby/setup-ruby@v1`アクションを使用してRubyを設定し,`bundler-cache`フィールドの値を`false`に設定する.

以上の手順により,`bundle install`の所要時間が20秒程度に短縮された.

# 諸言

CI ツール (GitHub Actions,Circle CI など) で Rubocop を

元記事を表示

RubyとRubyGemsのバージョン違いで困ったときの解決策:rbenv編

## rbenvとは?

rbenvはRubyのバージョンを管理するためのツールです。rbenvを使えば、プロジェクトごとに異なるRubyのバージョンを使うことができます。

## rbenvでの対処法

### 対処 1: rbenvでRubyのバージョンを揃える

Gemfileに指定されたRubyのバージョンと、実際にシステムで使っているRubyのバージョンが異なる場合、rbenvを使って解決できます。

#### Step 1: 利用可能なRubyのバージョンを確認

“`bash
rbenv install –list
“`

#### Step 2: 必要なRubyのバージョンをインストール

“`bash
rbenv install 3.2.2
“`

もし、`definition not found`というエラーが出た場合は、ruby-buildをアップデートしてください。

“`bash
brew update && brew upgrade ruby-build
“`

#### Step 3: プロジェクトディレクトリで使うRubyのバージョンを指定

元記事を表示

OTHERカテゴリの最新記事