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

Ruby関連のことを調べてみた2023年10月16日
目次

開発ツールに頼らず 様々な言語から WebAssembly(第7回)

WebAssembly は多くのプログラム言語からライブラリの様に呼び出す事が出来る。
WebAssembly のコードを書く方法は多くの記事で書かれているが、その使い方はフレームワーク等のツールに頼っている事が多い様だ。
本記事では、そのような便利ツールに出来るだけ頼らず JavaScript, Rust, Python, Ruby から WebAssembly を実行する方法を記載する。

WebAssembly は新しい技術である。
目先の最先端ツールに飛びつくのもよいが、その基礎を学んで長く使える知識を身に着けないか?

本記事はシリーズの第6回である。シリーズ記事の一覧は [第1回] の **#シリーズ記事一覧** に載せている。シリーズの記事を追加する時は [第1回] の一覧を更新して通知を行うので興味の有る人は [第1回] をストックして欲しい。

# 本記事の概要と過去記事の復習

[第6回] では 3 種類の WebAssembly モジュール(クラスの様な物) を作成し、オブジェクト指向の「委譲の様な事を行った。」
具体的には WebAssembly インスタンス

元記事を表示

【初心者向け】Railsでテストコードを書くときにテストデータにidをベタ書きするのはやめよう

## はじめに:idはベタ書きするな!

テストコードを書くのに慣れていない初心者の方のコードレビューをしていると、次のような方法でテストデータを作っているのをよく見かけます。

“`ruby
# これはNGなコードです!!
alice = FactoryBot.create(:user, id: 1)
alice_report = FactoryBot.create(:report, user_id: 1)

bob = FactoryBot.create(:user, id: 2)
bob_report = FactoryBot.create(:report, user_id: 2)

# 以下、テストコードが続く
“`

上のコードは何がまずいかわかるでしょうか?それは`id: 1`や`user_id: 1`のように、直接idをベタ書きしている点です。

## なんでidをベタ書きしちゃダメなの?

初心者さんの気持ちをエスパーすると、idをベタ書きするのはモデル同士のデータの関連を指定したいからだと思います。
たとえば、上のコードではaliceというユーザーとaliceが書

元記事を表示

CSVファイルを検証する

# 背景+まとめ

CSVデータを使って、データ登録・更新を行う機能をRSpecでテストする場合にちょっと工夫が必要だった箇所をメモしてます。
例えば、CSVデータの値で更新されているか?をチェックする場合、更新後のデータの比較にCSVデータ自体を用いることで後の変更が容易な記述にすることができます。

# CSV.table

`CSV.table`が使いやすくて便利だった。

“`:users.csv
code,email,gender,status
“001”,test@example.com,1,1
“002”,test2@example.com,1,2
“`
“`ruby
file_path = “users.csv”
users_csv_table = CSV.table(file_path)

# 配列で出力
users_csv_table.to_a
=> [[:code, :email, :gender, :status], [1, “test@example.com”, 1, 1], [2, “test2@example.com”, 1, 2]]

# hea

元記事を表示

プロを目指す人のためのRuby入門を読んで

# はじめに
今回はRubyの定番参考書、
**プロを目指す人のためのRuby入門(通称チェリー本)** を読了したのでその感想を書かせていただきます。

https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AERuby%E5%85%A5%E9%96%80-%E6%94%B9%E8%A8%822%E7%89%88-%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA%E3%83%BB%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%8A%80%E6%B3%95%E3%81%BE%E3%81%A7-Software-Design/dp/4297124378/ref=sr_1_2_sspa?_

元記事を表示

rails7.1 + MySQLの環境構築をdockerで行う

# 本ページは
rails + MySQLをコンテナ上で動かせるようにする。railsはweb単体では動かせないので、今回構築するのが最小限の環境になる。
* rails: 7.1.1
* ruby: 3.1.4
* MySQL: 5.7

案件で開発環境を0から作る機会なんてそうそうないと思うので、1回自分のPCでやってみましょう。色々と学びが深いはず。

# ローカル環境
* mac(proの中では最弱)
![スクリーンショット 2023-10-15 1.53.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/948431/0eed060c-fb83-24f7-37ca-4c84581ea498.png)
* docker-compose: v2.22.0-desktop.2
* docker-engine: 24.0.6

dockerさえ入っていれば、linuxでもwindowsでも手順は基本同じ。windowsの場合は適宜コマンドを読み替えて下さい。
# 流れ
1. ディレクトリ、各種設定フ

元記事を表示

Docker で rails のプロジェクトを作成する手順(PostgreSQL)

Docker で rails プロジェクトを作成して起動できるまでの手順です。
WEB で調べると何種類かやり方が出てくるのですが、作成されるプロジェクトのバージョンが意図したものが作れなかったり、手順通りにしてもすんなり起動できなったりとしっくりくるものがありませんでした。

手順通りにしてもすんなり起動できない場合にエラーを理解して自分で対処することもできず困っていました。
そもそも Docker や rails についても初学者であるため、まずは基本的な構築方法を習得し、そこからカスタマイズして理解したいと思ったので基本的な状態でのプロジェクトの起動手順をまとめました。

この手順の目的は rails プロジェクトを新規作成し、その状態で起動確認できるところまでなので、この手順通りに作成したプロジェクトをそのまま使うのではなく、あくまで基礎としてプロジェクトに合わせてカスタマイズするためのものです。

最初からプロジェクトに合わせた設定をして構築できればいいのですが、そもそも起動できる状態のものがなければカスタマイズできないので、その素体として使用します。

### 作成するプロ

元記事を表示

Everyday Rails – RSpecによるRailsテスト入門を読んだ感想

こちらは、初学者が初めて読んだ自動テスト本の感想になります。

## 良かったところ
– 環境構築やgemのバージョンエラーなどで動作しないといった問題に初学者はよく遭遇しがちだと思います。Gitの基本的な操作は不可欠ですが、それさえできれば簡単に始めることができます。
– 各セクションは短く、コード例も提供されています。一緒に動作を確認しながら進められるので何をしているかがわかりやすいです。また、なぜそのテストが必要かという説明も書かれているので、その目的を理解しやすくなっています。
– URLが細かく記載されているので、詳細を知りたい場合にすぐ確認できるようになっています。

## 学んだこと
– テストを書く際のアウトラインの重要性
– Factory、Capybara、LaunchyといったGemの使い方
– テスト駆動開発の一般的なプロセスについて

## 難しかったこと
– 後半に進むにつれて、前章までの内容が積み重なるので整理するのが難しい
– モックとスタブの概念について完全には理解できなかった

1週読んだ内容の理解度は半分程度ですが、初学者にもわかりやすい表現で書

元記事を表示

Ruby と Hunspell でスペルチェック

# はじめに

与えられたテキストのスペルチェックがしたい。
Ruby ではどうやるのがいいのか。

# Hunspell

昔,そういうことを調べた人(私を含む)は [Ispell](https://ja.wikipedia.org/wiki/Ispell) とか [GNU Aspell](https://ja.wikipedia.org/wiki/GNU_Aspell) の名を知っているかもしれない。

これらの後継として,[Hunspell](http://hunspell.github.io/) が今は有力であるらしい。

Hunspell はブラウザーやメールソフト,ワープロ,組版ソフトなど,テキストを扱う多くのアプリケーションに組み込まれている。
また,コマンドラインツールもあり,単独で使うこともできる。

少なくとも百数十の言語の Hunspell 用辞書が配布されているようなので,対応言語の数もなかなかのものだ[^a]。

[^a]: とはいえ,正書法が確立している言語の総数から見ればわずかと言えるかもしれない。なお,百数十というのは言語の数であり,一つの言語に幾つかの

元記事を表示

【Ruby on rails】boolean型って便利!

# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。

# そもそもboolean型ってなに?
この型は、二つの値しか持たないことが特徴です。boolean型では、値を「真 (true)」または「偽 (false)」で表示します。真は通常1や真の値(true)、偽は通常0や偽の値(false)と表現されます。

boolean型の詳しい内容については、@mmaumtjgj(kamin_k)さんの記事で記載されています。
分かりやすく解説されているので、ぜひ読んでみてください。

https://qiita.com/mmaumtjgj/items/b9b04ea64e30a16569fe

# boolean型を使ってできること
boolean型は上記の通り、「true」か「false」で表します。例えるなら、スイッチの「オン」と「オフ」同じような機能です。
この機能と条件分岐を組み合わせることで、見た目上でもスイッチのようにオンとオフを表すことができます。

それでは、実際にboolean型を使用して実装してい

元記事を表示

Rubyのoptparseライブラリを使ってオプション付きプログラムを実装しよう!

## はじめに
Ruby初心者がオプション付きのプログラムをゼロから自前で実装する場合かなり大変です。そんな時に大活躍してくれるがのoptparseライブラリです。オプション解析を良い感じにやってくれます。

## 最初に知っておくと良いこと
– Rubyのoptparseは使用時にロードが必要なタイプの標準ライブラリで `require “optparse”`と書いてから使用します。
– optparseの記事をインタネットで調べた際、ARGVとう変数によく出くわします。しかしARGVはoptparseとは直接は関係ありません。ARGVはRubyの特別な変数でコマンドライン引数を格納する配列となります。

### 実例を使ってoptparseを理解しよう!
– 例として年と月を引数に取るカレンダープログラムを考えます。年のオプションを `-y`、月のオプションを `-m`とします。

例えば2023年10月のカレンダーを表示するプログラムなら下記のように記述するとします。
“`calendar.rb
ruby calendar.rb -y 2023 -m 10
“`

calen

元記事を表示

【Ruby on rails】戻るボタンの実装

# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。

# 戻るボタンを実装したい
戻るボタンを実装するとなった時にまず思いつくことが、
`<%= link_to 'Back', root_path %>`のようにパスを指定することで実装すると思います。

しかし、このパス指定では、今表示されているページから一つ前のページに戻ることはできません。

こんな時に便利なのが下記の記述です。
`<%= link_to '戻る', 'javascript:history.back()' %>`
ブラウザの履歴を記憶し、前のページに戻ってくれます。

どのページからでも飛べるページがあり、そこに戻るボタンを表示したい場合はこの記述が有効になると思います。

# 終わりに
分かりづらい点が多かったと思いますが、最後まで読んでいただきありがとうございました!!
すごく便利な機能だと思うので、みなさんのアプリでも使ってみてください!

元記事を表示

【初学者向け】「実装時に頭真っ白…」でもう悩まない!プログラムの実装方法(コーディング編)

# 筆者について
* 筆者は地方中小SIerの現職エンジニアです。3年目で実力はまだまだですが、主に初学者・未経験者・独学者へ向けた記事を作成しています。
* 筆者はスキルアップ&Web系企業への転職を目指し、[HappinessChain](https://happiness-chain.com/)というスクールで勉強を進めております。
* 若干の開発経験者として、最近はスクール内の初学者の方にペアプロを行うことが増えてきました。ペアプロの中で、**初学者の方はプログラミングの進め方そのものを知る機会がほとんどない** ことに気が付きました。そういった初学者の方に「実装の方向性だけでも示したい」思いから本記事作成に至りました。

# まえがき
* プログラム初学者、未経験の方にとってプログラムのコーディング作業はとても難しい作業だと思います。スクールに入っている場合、実装課題・コーディング課題になった瞬間太刀打ちできないケースも多いと思います。(筆者もかつてはそうでした。)
* 本記事は、筆者が先輩エンジニアに教わった **「コーディングの進め方」と自身の経験から得られた知見をマージ

元記事を表示

Rails DeviseのReply-Toを消す

# DeviseのデフォルトだとFromがReply-Toになる
デフォルト設定のままだとReply-ToにFromのアドレスが入ってしまう。
邪魔だなあ。どうにかしたいなあ。そんなあなたへの解です。

![スクリーンショット_2023-09-06_16_39_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147005/795c839c-4a46-244e-c55f-c12072ab89d0.png)

この状態のinitializerはこちら

“`config/initializers/devise.rb
Devise.setup do |config|
# ==> OmniAuth
# Add a new OmniAuth provider. Check the wiki for more information on setting
# up on your models and hooks.
google = Rails.application.secrets.goog

元記事を表示

【超簡単!】RailsアプリでOGPを動的に変更する方法

# はじめに
こんにちは、プログラミングスクールRUNTEQにて、未経験からエンジニア転職を目指して学習中の[すずゆー](https://twitter.com/suzuyu_0115)と申します。

今回はRailsでのWebアプリ開発において、OGPをページ毎に変化させる方法について説明していきます!
「SNSシェアする時に、投稿やページに応じて画像が変化するようなアプリを作りたい」「でもやり方がわからない…」
そんな方に初心者目線で分かりやすく伝わるように書かせていただきました。

今回は解説にあたって、私の作成したWebアプリをベースに説明させていただきます。

https://meshitelog.com

[GitHubはこっち](https://github.com/suzuyu0115/meshitelog)

また、上記のサービスについて詳しくまとめている記事もございますので、お暇な方は拝見していただけると大変嬉しいです✨

https://qiita.com/suzuyu0115/items/6ca6ce071d0379467459

# OGPとは
###

元記事を表示

コメントを投稿機能の流れと注意点

## はじめに
投稿した内容に対してコメントをつける機能を導入する時のRuby on railsの流れがわかりづらかったので、まとめてみました。
スクール初学生さんも同じところで悩まれる方も多いと思いますので参考にして頂ければなと思います。

## 解決したい内容
投稿内容の詳細ページにコメントをつけるまでの流れを解説

### 前提条件
今回は
投稿したツイートを prototype
投稿に対するコメントを comment
とします。

## 全体の流れ
①まず初めにprototypeコントローラーのshowアクションにて@commentに空のインスタンスを生成

“`ruby
def show
@prototype = Prototype.find(params[:id])
@comment = Comment.new
@comments = @prototype.comments.includes(:prototype)
end
“`
※ @prototypeは詳細画面を表示する情報があらかじめ入っていってshowのviewファイルに渡されるて

元記事を表示

フレームワーク「Spin」を簡単に触ってみた

# はじめに
以前、[こちらの記事](https://qiita.com/Takaharu_01/items/fac8829bebd59c441308)でruby.wasmを少し触っていたこともあり、wasm関係で「Spin」というフレームワークが存在することを教えていただいたので、どんなものなのか少し調べてみました!

# Spinって何?
[こちらの記事](https://dev.classmethod.jp/articles/wasm-spin/)から抜粋させていただきます。
SpinとはWebAssemblyを使用するイベント駆動型フレームワーク。
SpinはWebアプリ用のフレームワークで、
HTTPリクエストに対してレスポンスを返すWASMモジュールを
作成するためのインターフェイスを提供する。
とのことです。

# Spinを触ってみる
Spinのサポート言語の中にRubyがあったので、Spinを使用してRubyファイルの動かしてみようと思います。

## Spinのインストール
[こちらの記事](https://zenn.dev/shinyay/articles/hel

元記事を表示

ぼっち演算子について(&.)【self, レシーバについても触れてみる】

## はじめに
現在、プログラミングスクールにて、主にRubyやRuby on Railsを勉強している者です。
Railsのコードの中で、ぼっち演算子を見かけた際に、調べれば調べるほどRubyへの理解が乏しいと感じたため、記事にさせていただきました。

## ぼっち演算子とは
ぼっち演算子(セーフナビゲーション演算子とも呼ばれる)とは、「&.」という記号で表されるRubyの演算子となります。この演算子を使用することで、オブジェクトがnilの場合にメソッド呼び出しを安全にスキップすることができます。
ちなみに、ぼっち演算子はRubyの2.3から実装された機能です。

## 安全にスキップできるとは?
Rubyでは、オブジェクトに紐づいたメソッドを呼び出そうとしたとき、そのオブジェクトがnilだった場合にNoMethodErrorという名前のエラーが発生します。
ぼっち演算子を使用することで、そのオブジェクトがnilだった場合に、紐づいたメソッドを実行することなく、nilを返すことができ、NoMethodError になることを防いでくれます。

### NoMethodErrorの例(

元記事を表示

Railsを使ったファイルアップロード処理方法

### Rails Active Storageの使い方ガイド

Ruby on Railsには、ファイルアップロードを簡単に扱うためのモジュールとして`Active Storage`が提供されています。この記事では、`Active Storage`を使ってファイルアップロード機能をRailsアプリケーションに組み込む方法を解説します。

#### 1. 必要なGemのインストール

まず、`Gemfile`に`active_storage`を追加します。Rails 5.2以降であれば、デフォルトで`active_storage`はGemfileに含まれていますが、それ以前のバージョンや特定の理由で含まれていない場合は以下のように追加します。

“`ruby
gem ‘activestorage’, ‘~> 5.2’
“`

追加したら、以下のコマンドを実行してgemをインストールします。

“`bash
bundle install
“`

#### 2. Active Storageのインストール

次に、以下のコマンドを実行してActive Storageの必要なファイル

元記事を表示

Rubyのプログラムを実行する際にオプションを指定して引数を渡す方法。【optparseの使い方]

optparseの使い方について自分なりにまとめてみました。

## はじめに

Rubyで作成したプログラムを実行する際に引数を渡して実行したい場合

“$ sample.rb hello“

のような形で実行するとプログラム内で配列ARGVで引数を使うことができます。
## optparseでオプションを指定する
上記のようなやり方の他、optparseという標準ライブラリを使うことで引数の前にオプションを指定して実行する方法があります。
“$ sample.rb -m hello“
みたいな感じです。“-m“がオプションになります。

### この方法を使うメリットとして
– オプションによって引数が何を意味をするのかがわかりやすくなる。(バージョンを引数にしたい場合オプションを“-v“にするなど)
– 引数が複数ある場合、通常のやり方だと定義した順番に引数を記述しないといけないが、オプションで指定する場合、順番を気にしなくて良い。

### optparseの使用方法

以下利用方法になります。

#### 1. プログラム内にoptparseを読み込む
`

元記事を表示

【Rails】OGPを設定したのにX(旧Twitter)で反映されない時に試すといいかもしれないこと!

# はじめに
お疲れさまです!
おおくまです!

“Rails“で実装した“Webアプリ“に“OGP“を設定したのですが、“X(旧Twitter)“でなかなか反映されず、「設定が間違っているのかな?」と、とても試行錯誤しました!
~~気付けば2日ほど溶かしました。笑~~
しかし、**あること**を試すと解決しました!
その際の備忘録になります!

# 環境
:::note
Ruby 3.2.2
Rails 7.0.8
gem meta-tegs を用いてOGP設定済み
:::

# 注意点
:::note warn
私はプログラミング学習中で、初学者です!
内容に誤りがある場合があります!
コメント等で教えていただけると幸甚です!
:::

# 試してもダメだったこと

・“キャッシュ“を削除する
・“OGP“を何度も設定し直す
・[OGP確認ツール](https://rakko.tools/tools/9/)で確認する(こちらできちんと表示されていれば、いずれ反映されると思います!)

# クロール
皆さんは、“クロール“をご存知でしょうか!
“クロール

元記事を表示

OTHERカテゴリの最新記事