Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う ADC編

[しまねソフト研究開発センター](https://www.s-itoc.jp)(略称 ITOC)にいます、東です。

[Grove Beginner Kit for Arduino](https://wiki.seeedstudio.com/Grove-Beginner-Kit-For-Arduino/) を使ってみる記事の第2回、今回は、アナログ入力を題材にします。
このキットに付属しているアナログ入力センサーは、以下の3種類です。
* [Rotary Potentiometer](https://wiki.seeedstudio.com/Grove-Rotary_Angle_Sensor/)
* [Light Sensor](https://wiki.seeedstudio.com/Grove-Light_Sensor/)
* [Sound Sensor](https://wiki.seeedstudio.com/Grove-Sound_Sensor/)

ターゲットは、以下の通り。
* Arduino - 付属の Arduino Uno 互換機
* Ruby – Raspberr

元記事を表示

なぜ、Strong Parameters がいいのか

# はじめに
Railsを学習していて、
なぜ、Strong Parametersが重要なのか、マスアサインメントではなぜダメなのかを
整理したくて記事にしてます。
## この記事を読むと分かること
* Strong Parametersがどういうものか分かる
* なぜ、マスアサインメントがダメなのかが分かる
## Strong Parametersとは?
Strong Parametersは、Action ControllerのパラメータをActive Modelに
「マスアサインメント」で渡すことを良しとしない。:x:

開発者側はアップデートしたいパラメータを、
Active Controllerで明示的に指定する必要がある。

要は、Active Controllerのアクションで本当に使用したいパラメータだけを
厳密に指定してモデルに渡してあげる事でより安全だよねというお話。

## マスアサインメントではなぜ、ダメか?
まず、**「マスアサインメント」** とは、
チェックされていないパラメータをまるごとモデルに保存する行為の事を言います。

以下のコードでは「マスアサイン

元記事を表示

【Ruby】デザインパターン学習メモ Bridge

## 背景
[オブジェクト指向のこころ](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AE%E3%81%93%E3%81%93%E3%82%8D-SOFTWARE-PATTERNS-%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%BB%E3%82%B7%E3%83%A3%E3%83%AD%E3%82%A6%E3%82%A7%E3%82%A4/dp/4621066048)10章「Bridgeパターン」を読んで
自分の中に落とし込むためのメモです。

本書ではJavaで書かれていますが実務ではRubyを使用しているため
Rubyに書き直しています。

## このパターンの目的
機能と実装を切り出すことで、クラス数の爆発を招かず、それぞれを拡張可能にする

## いつパターンを使用するのか
ある抽象的側面と様々な実装が共存している時

## この記事の流れ
「オブジェクト指向のこころ」では図形を描画する一連のプ

元記事を表示

cloneしたリポジトリが要求するRubyバージョンが新しい時のアップグレード手順

# この記事を読んでほしい人

– rails6から7へのバージョンアップがうまくいかない人
Rubyのインストール時に`make: *** [build-ext] Error 2`のようなビルドエラーが出て、進めなくなっている人です。

– macOSで開発環境を構築している人
新しいプロジェクトを始める際や、職場や個人のプロジェクトで特定のRubyバージョンを必要としていて、それに合わせて環境をセットアップしようとしている人です。

# Ruby 3.2.0のインストールに失敗した時の対処法

Rubyの新しいバージョンのインストールは通常簡単ですが、たまに予期せぬエラーに直面することがあります。この記事では、`rbenv` を使用して Ruby 3.2.0 をインストールしようとした時に発生した問題と、その解決法について詳しく共有します。

## 問題の説明

`rbenv`を使用してRuby 3.2.0をインストールしようとすると、`make: *** [build-ext] Error 2`というエラーが発生し、インストールが失敗しました。
“`
rbenv install

元記事を表示

【Rails7・Docker・Sidekiq】Sidekiq導入とメール自動送信のバックグラウンド処理の実装

## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
駆け出しエンジニアとして働き始めて約1ヶ月が経過しました🐣

## 概要
RailsアプリにSidekiq(redis)を導入し、メールの自動送信の機能を追加していきます。
この記事のために、メールを10分後に送信するだけのサンプルアプリを用意しました。
完成形のコードはこちらです。

https://github.com/satou-haruka-37/sidekiq_sample

### 環境
– Docker
– Ruby 3.2.3
– Rails 7.1.3
– Importmap
– Tailwindcss、daisyUI
– PostgreSQL

:::note warn
間違っている箇所や、紹介した方法よりも良い方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇
:::

## バックグラウンド処理とは?
Railsアプリケーションでは、ユーザーが特定の動作を行った際に「投稿する」「画面を表示させる」などのア

元記事を表示

Qiita で parallel_tests を後から入れた時にやった工夫

最近 Qiita で [parallel_tests](https://github.com/grosser/parallel_tests) による RSpec の並行実行を導入したので、どういう設定をしたかをまとめます。

## なぜ parallel_tests を導入したか

そもそもの導入のモチベーションは「CI にかかる時間と料金を減らせる」ということです。

Qiita では CI 実行に GitHub Actions を利用していますが、デフォルトのランナー (実行マシン) が CPU 2 Core になっています。(Ref: [GitHub ホステッド ランナーの概要 – GitHub Docs](https://docs.github.com/ja/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88-%E3%83%AA%E3%83

元記事を表示

【初心者】link_toの使い方【Rails】

# 初めましてlink_toと申します
私はrailsのview作成時、他のページに飛ばすため、使う目的のメソッドです。
ここ押したらサイト飛べるようにしたいな・・・
そういう気持ちから私は生まれました。
## 私はこういう風に使います。
“`ruby
<%= link_to 'untyoko', ヘルパーメゾットorURL %>
“`
こちらでuntyokoをひとつまみしていただきますと、
リンクに飛ぶシステムとなっております。

###### ※もちろんuntyokoでなくても結構です。

ヘルパーメソッドはorURLに関しましてはお好みのどちらかをご入力ください。

ちなみにヘルパーメソッドはルーティングエラーを出した時のHelperと書いてるものとなっております。
下のスクショで言うdashboads_pathとかproducts_pathとかですね。
rails内でページの移動をするときは、基本URLではなくヘルパーメソッドで書くのが嗜みとなっております。

![スクリーンショット 2024-03-31 20.02.28.png](https://qiita-image-

元記事を表示

「Ruby on Rails チュートリアル」でローカル環境を構築して「git push」まで実施する方法・後編

## はじめに

こんにちは、@kosei-matsubaraです。

Web系エンジニアの転職を目指して「Ruby on Rails チュートリアル」の学習を始めました。

「Ruby on Rails チュートリアル」の第一章を後半まで進んだところ「GitHub Codespaces」の自動ログアウトおよび再接続が手間だと感じるようになりました。

今後ポートフォリオを作り、Web系開発企業ではローカル環境での開発が前提になると想定しています。

したがって最初からローカル環境で開発を行い、早々に今後の作業環境に慣れた方がいいと考えローカルで開発構築することにしました。

ローカル環境構築までの手順を公開することで、同じく「Ruby on Rails チュートリアル」をローカル環境を構築する方のご参考になればと思い記事を投稿しました。

なお、[前回記事](https://qiita.com/kosei-matsubara/items/977a322ffbd1369f1924)は環境構築開始からRailsインストールまで、当該記事でRailsインストール以降から「git push」

元記事を表示

【トリビア】Rubyで users .map(&:name) の形式で呼び出せるのはpublicメソッドだけ

## はじめに
たとえばUserクラスに`name`というprotectedメソッドがあったとします。
(protectedメソッドの登場頻度はかなり少ないと思いますが)

“`ruby
class User
protected

def name
‘Alice’
emd
end
“`

さらに、`fetch_names`というpublicメソッドも定義されていたとします。

“`ruby
class User
def fetch_names(users)
users.map { |u| u.name }
end

protected

def name
‘Alice’
end
end
“`

では`fetch_names`メソッドを呼び出してみましょう。

“`ruby
users = [User.new, User.new, User.new]
users[0].fetch_names(users)
#=> [“Alice”, “Alice”, “Alice”]
“`

はい、問題なく呼び出せまし

元記事を表示

rbenvでRubyの最新バージョンが表示されない

## 経緯
アプリを作ろうとしたところ、作成ファイルの中にある「Gemfileの中身」には「ruby “3.1.2”」が入っていたため、最新バージョン3.3.0にするようrbenvで更新を試みました。

しかし、「rbenv install –list」で確認したところ最新バージョンの3.3.0は表示されませんでした。
“`
2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.8.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.2.0
truffleruby+graalvm-22.2.0
“`
今回はその解決までの記録をまとめます。

## 問題を定義
rbenvで最新バージョンが表示されない

## 仮説と検証①
仮説・・「rbenv」のバージョンを更新することで解消できるのでは?
検証・・「rbenv」のバージョンを更新するために「brew upgrade ruby-build」コマンドを入力
結果・・表示されない

## 仮説と検証②
仮説・・「rbenv」のバージョンの大元であるHomebrewのバ

元記事を表示

Gemfile: Undefined local variable or methodエラーの解決

bundlerを使用してgemをインストールしようとしたところエラーが発生したので原因調査を行い解決したプロセスをまとめていきます。

## 背景
rspecの学習をするために、`Gemfile`にrspecを追加して`bundle install`した際にエラーが発生しました。

## 発生したエラー
“`
[!] There was an error parsing `Gemfile`: Undefined local variable or method `rspec’ for Gemfile. Bundler cannot continue.

# from /Users/xxx/Documents/ruby/Gemfile:7
# ——————————————-
#
> gem rspec
# ——————————————-

“`

## 原因
`Undefined local variable or method`というエラーメッセー

元記事を表示

Mac(M1)でrbenv install時に BUILD FAILEDになった場合の対処法

### 概要
`brew upgrade rbenv ruby-bild`してから、`rbenv install 3.1.4`をしたら、ruby 3.1.4 のインストールに失敗。
BUILD FAILEDのログは以下のような感じ。
“`sh
# `rbenv install 3.1.4` build failure log

readline.c:1903:37: error: use of undeclared identifier ‘username_completion_function’; did you mean ‘rl_username_completion_function’?
rl_username_completion_function);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rl_username_completion_function
readlin

元記事を表示

RSpecで学ぶbuildとcreateの違い

# 初めに

こんにちは!taisei_codeです。
「書いて、慣れろ!」をしてると、前提知識の理解が浅いことで苦しみます。
焦らずに、知識を定着させましょう。ということで、FactoryBotのbuildとcreateについて理解できたので書きました。

# 問題

メールアドレスのバリデーション
“`ruby
validates :email, uniqueness: { case_sensitive: false }
“`

FactoryBotでテストデータを生成
“`ruby
email { “info@example.com” }
“`

テストデータで生成した小文字のメールアドレスと大文字のメールアドレス “`{ build(:admin_user, email: ‘INFO@example.com’) }“` が重複するケースを作る
“`ruby
RSpec.describe AdminUser, type: :model do
let(:admin_user) {build(:admin_user)}

describe “バリデーションの検

元記事を表示

Ruby on RailsとReactでBlogアプリを作りました。

##

使用技術一覧






Rubyの継承と定数を組み合わせるとどうなるか?

みなさん、継承についてはよくご存知のはずです。

サブクラスで基底クラスと同じ名前のメソッドを定義すると、サブクラスのメソッドが呼び出されます。

では、サブクラスで規定クラスと同じ名前の**定数**を定義するとどうなるでしょうか?

# 結果

`FOO` のように定数を直接参照するとメソッドが定義されたクラスの定数が参照されます。

`self.class::FOO`のように参照すると、selfのクラス(子クラス)の定数が参照されます。

“`ruby
class Parent
FOO = “parent”

def refer_foo
FOO # 常に Parent::FOO に解決される
end

def refer_self_class_foo
self.class::FOO # 常に Parent::FOO または Sub::FOO に解決される
end
end

class Sub < Parent FOO = "sub" end puts "refer_foo" p Parent.new.refer_foo # => “par

元記事を表示

二次元配列に対するsort_byの挙動の覚書き

初学者向けの記事です。
二次元配列(配列の中に配列が入れ子になっている)のsort_byの挙動について、大分混乱したのでメモ的に残しておきます。

*その前にsort_byメソッドはこちらの解説がわかりやすいです。
>
https://zenn.dev/ganmo3/articles/fdda007796a7cb


“`ruby
array = [[1, 6], [3, 4], [2, 5], [1, 7]]
sorted_array = array.sort_by { |a| a}
puts sorted_array.inspect
# 出力:[[1, 6], [1, 7], [2, 5], [3, 4]]
“`
二次元配列のソートでは、サブ配列(配列の中の配列)の最初の要素を比較してソートが行われる。最初の要素が同じ場合は、次の要素を比較して順序を決定する。つまり、サブ配列は最初の要素で主に昇順に並べられ、同じ最初の要素を持つサブ配列がある場合は、次の要素で昇順にソートされる。
配列`[[1, 6], [3, 4], [2, 5], [1, 7]]`では、最初の要素1,

元記事を表示

Array.newで異なる値を持つ配列を作成する方法

初学者向けの記事です。簡単なコーディング問題で学習したのでメモ的に。
※当初「Array.newで異なる値を持つ配列は作成出来ない」という記事でしたが、訂正しました。

—–
`Array.new(n)` は、指定された要素数 `n` で新しい配列を作成するRubyのメソッドです。このメソッドは、`n` を引数に取り、その数だけnilで初期化された配列を生成します。
“`rb
arr1 = Array.new(3)
puts arr1.inspect
# 出力:[nil, nil, nil]
“`
—–
ブロックを与えることで、ブロックの評価結果を各要素に代入した配列を作成することもできます。
“`rb
arr2 = Array.new(3) { ‘a’ }
puts arr2.inspect
# 出力:[“a”, “a”, “a”]
“`
—–
続いてArray.newで異なる値を持つ配列を作成する方法です。
まず直接的に異なる値を持つ要素を生成することはできません。例えば、[“a”, “b”, “c”]みたいな配列を作成しようと、`Array.new(3)

元記事を表示

PHPerがRuby(Ruby on Rails)を約3年経験した結果

# はじめに
Hubbleでバックエンドエンジニアをしている @power3812 です。オブジェクト指向大好きマンで、神クラスを作れないかと模索の日々です:innocent:

今回はHubbleに転職して約3年経つので、振り返りの意味も込めてPHPerで一切Rubyを触ったことがなかった僕が、約3年Rubyを使った所感を書こうと思います!

# 筆者のサマリ
大学は電子情報で大学院は技術経営を学んでしました。大学院は21卒なので21卒で就活をして、サマーインターンでWeb開発を知り、PHPと出会い、Web開発の沼にハマりました。

しかし、大学院にいるよりも早く実践を積みたいと、大学院を中退し、20卒としてソーシャルゲーム会社に就職しました。
ソーシャルゲームということで、PHPをそのまま経験、その後受託系の会社に転職し、そこにはPHPerKaigiの運営にも携わっている方にPHPの真髄を叩き込まれました。

その後、自分が完全未経験のRubyで開発しているHubbleに入社しました。

# 結論
RubyもPHPも本質はなにも変わらないです。
これはその通りと言えば、その通りのこ

元記事を表示

rubyで画像の色を変更してみた

# はじめに
今回は遊びで画像の色を変換させるプログラムを作成したので、
メモ程度に投稿します。
# 本題
### 前提
この記事のゴールとしては、
画像の色を反転させる、または一部色を指定して変更させることです。

1. Docker環境の準備
2. 色を反転
3. 色の変更

作成したファイルは以下になります
“`
作成したファイル
– Dockerfile
– docker-compose.yml
– detail.rb
– reverse.rb
– color_change.rb
“`

画像は以下の画像で試してみることとします。
(調べた限り著作権的にも問題なさそうなので?)
画像を実行ファイルと同様のディレクトリに配置した場合を仮定して、以下記述します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1295486/5e48c7a7-22f4-3acb-7dff-0f5b8a88a9e8.png)

### 1. Docker環境の準備
まずはDocker環

元記事を表示

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う GPIO編

[しまねソフト研究開発センター](https://www.s-itoc.jp)(略称 ITOC)にいます、東です。

[Grove Beginner Kit for Arduino](https://wiki.seeedstudio.com/Grove-Beginner-Kit-For-Arduino/) というものを買ったので、数回に分けて Arduino と Ruby での使用レポートを書いてみようと思います。

ターゲットは、以下の通り。
* Arduino - 付属の Arduino Uno 互換機
* Ruby – Raspberry Pi + [Grove Base HAT for Raspberry Pi](https://www.seeedstudio.com/Grove-Base-Hat-for-Raspberry-Pi.html)
* mruby/c – [Rboard](https://www.sjc-inc.co.jp/service/rboard)

予定しているレポートは、以下の通りです。

1. デジタル入出力 – GPIO編 (今回)
2. [アナログ入

元記事を表示

OTHERカテゴリの最新記事