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

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

【rails】rails g controllerコマンドでapi/以下にファイルを生成するコマンド

## はじめに
自分はAPIモードを使わずにapi/以下にコントローラーを作っていて、お目当ての情報にたどり着くのに時間がかかっていたのでメモ
### 参考
https://qiita.com/terufumi1122/items/634dac88de01f3f73821

## 環境
“`ruby
OS: macOS Monterey
Ruby: 3.1.2
Rails: 7.0.4
“`

## コマンド
“`console
rails g controller api/v1/posts
“`

元記事を表示

RubyGemsでrust extensionがリリースされたので、Rustでgemを作ってみた

[Ateam Group U-30 のカレンダー](https://qiita.com/advent-calendar/2022/ateam-group-u30)の2日目はQiitaの @kyntk が担当します。

今年、RubyGems 3.3.11でRust extensionsのexperimentalリリースがありました。

https://blog.rubygems.org/2022/04/07/3.3.11-released.html

変更されたPull Requestは↓です。
この変更で`CargoBuilder`が実装され、`Cargo.toml`ファイルを見つけるとcargoでRustのビルドができるようになりました。
今まではRust用にビルドの設定をする必要があったのですが、かんたんにビルドができるようになりました。

https://github.com/rubygems/rubygems/pull/5175

ちょうど、Qiita社でもRustを使う機会がありそうだったので、勉強がてらRustでgemを作成してみました。

:::note wa

元記事を表示

Ruby 3.0 に含まれる非互換「位置引数とキーワード引数の分離」の乗り越え方

## 0. はじめに

“`text
おはよう、Ruby エンジニアの皆さん。2022 年も年の瀬となりましたが、元気にしていますか?

実を言うと Ruby 2.7.x はもうだめです。突然こんなこと言ってごめんね。

でも本当です。今年の 4/12 に Ruby 2.7.6 がリリースされました。

それが終わりの合図です。程なく始まるセキュリティメンテナンスフェーズは 1 年しかないので気をつけて。

それがやんだら、少しだけ間をおいて終わりがきます。
“`

**参考:** [「実を言うと、地球はもうだめです。」](https://alu.jp/series/%E6%9C%80%E7%B5%82%E5%85%B5%E5%99%A8%E5%BD%BC%E5%A5%B3/article/V6fWmBCTyJYu3xZwTCCi)

## 1. 要するに、来年の 4 月で Ruby 2.7.x のサポートが終了します

そんなわけで、見て見ぬ振りをしてきた、あなたのプロジェクトの Ruby バージョンの更新も、ついには年貢の納め時というわけです。まだ時間は残されていますので、年内

元記事を表示

Rails6 を Docker で開発する為に準備する

# 初めに

プロジェクトの技術選定の中で、`Rails6` を検討しており、**「せっかく新規で開発するならDockerで開発したいよね」** という話になったので、`Docker` を使って `Rails` プロジェクトの作成までの手順をまとめておきます。

# 概要

## 事前準備

– Docker for mac のインストール
– base Image の取得 docker pull ruby:2.6.5-alpine3.10
(これにした理由は、Small. Simple. Secure だからです)

## Rails プロジェクトの作成

### 1. Login to docker container

Docker container に入って `Rails` プロジェクトを作成します。
作業ディレクトリで以下のコマンドを実行します。

“`.bash
$ docker run -v $PWD:/usr/src/ –rm -it ruby:2.6.5-alpine3.10 /bin/sh -c /bin/sh
“`

`-v $PWD:/usr/src/

元記事を表示

Ruby と Go それぞれで依存性の注入を書く

## はじめに
これは [株式会社 RetailAI X Advent Calendar 2022](https://qiita.com/advent-calendar/2022/retail-ai-x) の 2 日目の記事です。

昨日は @kametaro さんの記事でした。 [RaftのErlang実装ことはじめ – Qiita](https://qiita.com/kametaro/private/a680d74da572f43ae493)

本日は、「 Ruby と Go それぞれで依存性の注入を書く」です。
Ruby の DI の是非は問いません。

## 環境
Ruby 2.6.1
Go 1.18.2
macOS Monterey ver. 12.3.1 Apple M1

## Ruby
?
“`ruby
class SubmachineA
def sub_process
# …
end
end

class Machine
def main_process
SubmachineA.new().sub_process
end
end

元記事を表示

【Rails6】コンソールでアソシエーションを理解しよう①(一対多)

この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿2日目のエントリーです。

1日目は @Keichan_15 さんで
[Rails I18n(日本語化)を使用する場合の躓きポイント徹底攻略](https://qiita.com/Keichan_15/items/eae011dccea44abda768)
です。「翻訳ファイルあたらね〜」となる事は多いハズなので、初学者の方には嬉しい記事ですね。

## はじめに

最近DMMでメンターをやらせていただいております。 @tomoaki-kimura です。
RailsはRailsが隠しているコードを理解する事で、ぐっと扱いが上手になります。
今回は、今更のアソシエーションをRailsコンソールを使ってRailsのアソシエーションを理解していきましょう。

## 環境と前提

– ruby 3.1.1
– Rails 6.1.7
– yarn 1.22.18

(今回モデルし

元記事を表示

Railsで腹ぺこカバ問題を解いてみた時の気付き

# INDEX
1. 最初に問題のルールと回答。
2. 最後に俺の最初の考えとやるべきだったこと

# やること
“`ruby
あなたの仕事は、Gameという単純なクラスを作成することです。
このクラスは、カバが何回アリーナの中央に飛び込んで食べ物を集める必要があるかをチェックします。
すべての食べ物を見つけることができる場所を定義する、ボードと呼ばれる整数配列が与えられます。カバがすべての餌を食べるために必要な飛躍の量を表す整数を返す必要があります。
“`

# 条件
“`ruby
1.ボード配列には、スペース用の0と食品用の1が含まれています。
2.ボードのサイズは n*n で、n は5~50です。
3. 1 つの跳躍は、互いに水平または垂直に接続された
食品で構成されます。それらが接続されていない場合は、別の飛躍が必要です。
“`

# 初期状態

“`ruby
board = [[1,1,0,0,0],
[1,1,0,0,0],
[0,0,0,0,0],
[0,0,0,1,1],
[0,0,0,1

元記事を表示

CrystalでWebAssemblyに出力した関数をRubyから呼び出す

## はじめに

この記事は昨日の記事の続編です。前回はCrystalで書いたコードをWebAssemblyにして、wasmer や wasmtimeで実行しました。

https://qiita.com/kojix2/items/4c9376b7e46bfe72d823

今回は、Crystalで書いた関数をWebAssemblyに出力し、Rubyから呼び出して使ってみます。

## 前回のおさらい

CrystalはLLVMの機能を利用して、WebAssemblyを出力できる。
その際、コンパイル済みのwasmのライブラリを入手してリンクする必要がある。

コンパイル済みライブラリを以下のリポジトリのリリースから入手する。(本記事作成時点では 0.0.2 が最新)

https://github.com/lbguilherme/wasm-libs

CUI操作でダウンロードする場合以下のコマンド

“`sh
wget https://github.com/lbguilherme/wasm-libs/releases/download/0.0.2/wasm32-wasi-libs.

元記事を表示

Rails I18n(日本語化)を使用する場合の躓きポイント徹底攻略

# はじめに
こんにちは!
記念すべき **DMM WEBCAMP mentor Advent Calendar 2022** :christmas_tree: **1日目** を担当します @Keichan_15 です!

普段はDMM WEBCAMPで受講生さんの質問対応などを行うメンターとして働いております!
今回は、日頃から受講生さんの対応を行う中で特に躓きが多かった箇所である **「I18nを用いた日本語化が反映されない」** 問題を解決していこうぜ! といった記事になります。

本記事では主に、
– **I18nって何のこと?**
– **日本語化したのに反映されないよ…**

と疑問や悩みをお持ちである、多くの方々の助けとなれれば幸いです!

また本記事が自身のQiita初執筆になりますので、多々目に余る箇所などがあるかとは思いますが温かい目で見守って頂けますと幸いです…。
よろしくお願い致します!

# 1. そもそも I18n は何ができるの?
まず I18n とは何なのでしょうか。
I18n は **internat

元記事を表示

sinatra-contribのgem入れたけど動作しないなぁと思ったけど、時間が経ったら動いた件

問題

sinatra-contribのgemをインストールしたけど,gemを実行できない。

結論

・時間が経てばしっかり反映された。

![スクリーンショット 2022-12-01 22.24.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708737/7def1822-4e2d-579b-bb77-7077e850e365.png)

問題発生の経緯

・sinatra-contribのgemをインストール

“`
#/Users/ユーザ名/Work1
gem install sinatra-contrib –no-document
Fetching multi_json-1.15.0.gem
Fetching sinatra-contrib-3.0.4.gem
Successfully installed multi_json-1.15.0
Successfully installed sinatr

元記事を表示

includeしてるのにN+1問題が発生した理由

### 初めに
イベントの日程調整アプリのrailsAPI作成中に躓いた時の備忘録

1. answers_controllerのupdateアクションで紐づくschedule_answers(回答ステータス)を編集しようとするとN+1問題が発生した
2. HTTPリクエスト送信一度目はN+1問題が起きるがschedule_answerの更新は保存はされており、そのまま続けて送信するとupdateは完了

### ER図
![スクリーンショット 2022-12-01 15.46.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629116/6d84b59d-e9f6-54ee-646c-8982a35d4a4c.png)

### 原因
accepts_nested_attributes_forで、
– answersモデルとschedule_answers
– possible_datesとschedule_answers

とを紐付けていたため、たとえanswer経由でも、schedules

元記事を表示

【RUBY】if,elseを用いたメソッドの実装

# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

# 実装内容
スクールの問題を解いていて、考え方を定着させる備忘録として記していきます。
今回は、
正の整数を入力します。その整数が、
10の倍数(10,20,30…)からの差が2以内であるときはTrue
それ以外はFalse
と出力するメソッドを作りましょう。
というものでした。

“`ruby
def near_ten(num)
quotient = num % 10
end
“`
まず、メソッドを「near_ten」とします。次に「10の倍数からの差」を考えるためには、一の位の値に着目します。すなわち、一の位が「0,1,2,8,9」のどれかであれば「10の倍数からの差が2以内」と判断することができます。
「quotient = num % 10」で10の倍数の余りを求め、変数qu

元記事を表示

Hotwire勉強会ログ (1) Turbo

# はじめに

Rails 7から標準となったHotwireについて勉強会をしました。前半はTurboで後半がStimulusです。場所はSENQ六本木のスカイテラスで、晴れていたのですが少し寒かったかもしれません。

https://www.senq-web.jp/office/roppongi

Railsで有名な万葉さんもHotwireをやっていくそうです。

https://note.com/everyleaf/n/ncc0b77578c58

私の場合は最近のRailsのJavaScriptの機能は使っていなくて、Turbolinksはオフにすることが多かったです。Rails 7ではHotwireが標準になってrails-ujsもフェードアウトしていきそうなので、ここは観念して勉強しようと思いました。

そしてForkwellさんのDHHへのインタービュー動画を見たことも影響しました。