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

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

Alma Linux 9 にrvm インストール(passenger + nginx 環境構築)への道

# rvm のインストール

この部分はrvm の公式手順に従って、インストールを進めていきます。
まずは、gpg key のインストール。

“`
# gpg key のインストール
gpg –keyserver keyserver.ubuntu.com –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
“`

rvm でruby のstable のバージョンをインストールしたかったので、今回はstable のバージョンをインストールしていきましょう

“`
# rvm install
curl -sSL https://get.rvm.io | bash -s stable

Downloading https://github.com/rvm/rvm/archive/1.29.12.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.29.12/1.2

元記事を表示

Rubyってなんだ

# 目次
– [Rubyとは](#rubyとは)
– [オブジェクト指向とは](#オブジェクト指向とは)
– [Rubyの特徴](#rubyの特徴)
– [「Ruby on Rails」とは](#ruby-on-railsとは)
– [フレームワークとは](#フレームワークとは)
– [Rubyでできることとは](#rubyでできることとは)
– [Rubyの将来性について](#rubyの将来性について)

# Rubyとは
日本発のプログラミング言語で、オブジェクト指向の言語です。
Webアプリケーションの開発現場で需要があります。

#### ※オブジェクト指向とは
ある程度そのプログラミングのもとになるプログラミングを作って、作業を効率化していく考え方。**クラスを使ってデータ構造を定義し、柔軟かつ安全なプログラムを作成することができます**。これにより、より大規模で複雑なシステムの開発が容易になります。

“`Ruby:Ruby
class TweetsController < ApplicationController before_ac

元記事を表示

Ruby on Railsで作成したアプリをHerokuにデプロイするまでにでたエラー

## 初めに
Railsを使ってWebアプリの開発を進めていましたが、Herokuにデプロイする際につまづいた箇所が何箇所かあったので、備忘録としてこちらにまとめておきます。

デプロイの流れはこちらのページを参考に進めました。

https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39#heroku%E3%81%B8%E3%81%AE%E7%99%BB%E9%8C%B2

## つまづき① デプロイ時に必要なパッケージがない問題
### 内容
エラー文はこちらでした。
“`
Precompiling assets failed / Error: Cannot find package ‘@babel/plugin-proposal-private-property-in-object’
“`
`@babel/plugin-proposal-private-property-in-object`というパッケージがないようです。

package.jsonには記載がなければ新たにインストールするだけなのですが、しっかりと

元記事を表示

Ruby の pack と unpack が分からない。あと日本語でエンコードが元に戻せない。

# pack / unpack とは何なのか?

公式の例で分かりやすそうなものをひとつ

文字列を数値(文字コード)の配列に変換する例

“`rb
“Ruby”.unpack(‘C*’) # => [82, 117, 98, 121]
“`

数値(文字コード)の配列を文字列に変換する例

“`rb
[82, 117, 98, 121].pack(“C*”) # => “Ruby”
“`

なんとなくpackとuppackの語感と役割が逆なような気がして戸惑うが

たとえば上記のように

– 文字列を数値(文字コード)に「ほどく」のが unpack
– 逆に数値(文字コード)を文字列に「固める」のがpack

ということだと受け止めた

## 参考

https://docs.ruby-lang.org/ja/latest/method/Array/i/pack.html
https://docs.ruby-lang.org/ja/latest/method/String/i/unpack.html

# 引き数のアルファベットと数字

unpack/pac

元記事を表示

Railsでメモリ使用量を削減できるメソッド

先日、rake taskを実行した際に、扱うレコード数が多すぎて、サーバーに負荷をかけてしまいました。その解決策として、役立つメソッドを知ったので、まとめています。
## メモリ使用量の削減
### – find_each
##### 使用例
“`ruby:find_each.rb
Model.find_each do |model|
model.update!(hoge: hoge)
end
“`
1000件ずつレコードを取り出し、1レコードずつブロック内の処理を実行していきます。
Modelの内容を一度にすべて取り出すのではなく、1000件ずつ取り出すので、メモリ使用量を抑えることができます。

##### batch_sizeオプションを指定する場合(3000件ずつ)
“`ruby:find_each.rb
Model.find_each(batch_size: 3000) do |model|
model.update!(fuga: fuga)
end
“`

取り出す件数を1000件ずつではなく、任意の件数にしたい場合は、batch_sizeオプション

元記事を表示

英数字のランダム文字列をRubyで生成する

# はじめに
最近、Qiitaに投稿することに少しハマってます。
以前ははてなブログに書いていたのですが、Qiitaの方が綺麗に書けるので
それもあります。

つべこべ言わずに始めましょう

# 結論
使うのは次のコードになります。

大文字小文字含む文字数7の英数字を10個生成します。

“`
10.times do |i|
p [ *’a’..’z’, *’A’..’Z’, *0..9].sample(7).join
end
“`
# 説明
– `*`について
アスタリスクは展開をしてくれます。
今回の場合だと’a’..’z’や’A’..’Z’、0..9を展開します。
流石に
abcdefghijklmnopqrstuvwxyzABCDEFGHYJKLMNOPQRSTUVWXYZ0123456789
を配列に書くわけには行かないですからね。

– sample(n)
配列に作用させるとnこの文字列を重複なしで抽出し、新しい配列を生成します。

– join
作用させた配列の各要素を指定した文字列で連結した文字列を返します
今回は特に指定していないのでそのまま区切り文字を

元記事を表示

見たことある開発言語の命名規則まとめたぞオラッ!!!

—————————————————————————————————————–
# Ruby

## 変数やメソッド:
スネークケースを使用。複数の単語はアンダースコア(_)で区切る。
### 例: my_variable, calculate_sum

## クラスやモジュール:
キャメルケースを使用。単語の先頭を大文字で始め、連結する単語の先頭も大文字。
### 例: MyClass, MyModule
—————————————————————————————————————–
# Python

## 変数や関数
スネークケースを使用。複数の単語はアンダースコア(_)で区切る。
### 例: my_variable, calculate_sum

## クラス:
キャメルケースを使

元記事を表示

GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う I2C – 加速度センサー編

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

[Grove Beginner Kit for Arduino](https://wiki.seeedstudio.com/Grove-Beginner-Kit-For-Arduino/) を使ってみる記事の第4回、今回から I2C 接続のセンサーを題材にします。
このキットに付属している I2C 接続のセンサーは、以下の3種類です。

* 3軸加速度センサー
* 気圧センサー
* 温湿度センサー

その中でも今回は、3軸加速度センサーを題材にします。

このレポートでは、

「メーカーのデータシートを見て、センサICを直接コントロールをすること」

を、方針とします。
もちろん、プログラムを書く上で既存のライブラリ等の実装を参考にすることは良い事です。しかしながらこのレポートは、I2C バスやセンサ IC の扱い方、データシートの読み方を示す事も目的としているため、できるだけ低レイヤーでの説明を行います。

元記事を表示

Ruby – バイナリと16進数のHEXを相互変換する

# コード例

“`rb
def bin_to_hex(str)
str.each_byte.map { |b| b.to_s(16).rjust(2, ‘0’) }.join
end

def hex_to_bin(hex)
[hex].pack(‘H*’)
end

bin_to_hex(binary_string)

hex_to_bin(hex_string)
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# プロフィール・経歴

https://github.com/YumaInaura/YumaInaura

元記事を表示

MySQL 8.3環境でmysql2 gemをインストールする方法

## はじめに
MySQL 8.3の環境でmysql2 gemをインストールするのにちょっと苦労したので、対処法を書いておきます。

### 実行環境

本記事は以下の環境で検証しました。

– MySQL 8.3.0 (Homebrewでインストール)
– macOS 14.4.1
– MacBook Air M3
– Ruby 3.3.0

### 注意事項
この記事を書いている時点ではmysql2の最新バージョンは0.5.6です。
よって、mysql2 0.5.6を使う前提で記事を書きますが、さらに新しいバージョンがリリースされたときは対処法が異なる可能性があります。

https://github.com/brianmario/mysql2/releases

### 念のため用語の整理
本記事ではMySQLとmysql2というよく似た用語が出てきます。
プログラミング初心者の方はこれらをしっかり区別しながら読み進めてください。

– **MySQL** = RDBMS(DBサーバー)。執筆時点の最新バージョンは8.3.0(2024/1/16リリース)
– **mysql2**

元記事を表示

空の区間はすべて等しいか

## 経緯

社内で勉強会を開いていて、こんな話をしました。

> $l \leq x \lt r$ のような片側の端点だけを含む区間を**半開区間**といい、$[l,r)$ のように表記します。
> 配列のスライス(連続する部分列)を表すときは、半開区間を使って「$l$ 番目から $r$ 番目まで($l$ 番目を**含み**、$r$ 番目を**含まない**)」とすると便利です。この方法のいいところは、 $l = r$ とすれば空の区間を表すことができ、それを要素と要素の間を表すのにも使えるという点です。たとえば $[0, 0)$ は最初の要素の直前、$[1, 1)$ は最初の要素と $2$ 番目の要素の間、$[N, N)$ は最後の要素の直後、といった具合です。[^1]

ここまで説明したところで、聴衆の数学ガチ勢からツッコミが入りました。「それはおかしい、まるで $[1, 1)$ と $[3, 3)$ が異なるものだと言っているように聞こえる。」

……なぬ?空の区間で要素と要素の間を表すと言ったからには、確かに $[1, 1)$ と $[3, 3)$ が異なるものだと言っ

元記事を表示

Ruby Rails そのCSVどんな文字コードだろうと取り込んでやるよ

# 文字コード…
…日本で開発をしている皆さん。こんにちは。文字コードです😈

# もう嫌なんだ
– CSVが取り込めない?
– 文字コード?
– UTF-8?
– SHIFT-JIS?
– BOM?
– BOM付?え?
– ローカルではいける?
– あの人は取り込めないらしい?
– Macならいける?
– Windowsならいけない?
– エクセルで開いた?
– メモ帳で保存して?
– スプレッドシートから出力?
– 取り込めないんですけど😡?
– こっちでは取り込めるんだよなあ?
– ああああああああああああああああああ

# どんなものでも取り込めるそんな魔法のような実装はないのかね
あるかもしれない、ないかもしれない。
僕が辿り着いたところはここまでだ。
効率がいいか?そんなことはしらん。
いいから魔改造だ!

“`rb
require ‘csv’
require ‘nkf’

def import_csv(file_param)
# どんなものでも取り込めるように魔改造
file_encoding = NKF.guess File.read(file_par

元記事を表示

Gemfileに追記せずに、自分だけ使うgemを追加

Railsのプロジェクトで、
peformance測定とか、debugのgemを入れたいとか…
チームの方針で`irb`になっているが、自分はpryを使いたいときとか…

## 方法1. `.pryrc`からinlineで呼び出す

“`~/.pryrc
require ‘bundler/inline’

gemfile do
source ‘https://rubygems.org’
gem ‘awesome_print’
gem ‘pry-doc’
end

AwesomePrint.pry!
“`

## 方法2. `Gemfile.local`を作成する方法
1の方法だと、rails serverを立ち上げたときなどは、gemが呼び出されません:cry:
なので方法2を紹介しますが、ちょっと複雑なので、基本的に方法1をおすすめします

### 1. プロジェクトのルートディレクトリに`Gemfile.local`を作成
“`Gemfile.local
gem ‘awesome_print’
gem ‘pry-doc’

eval_gemfile ‘G

元記事を表示

rails consoleのsandboxオプション、使ってる?

:::note info
1分で読めます
:::

## sandboxオプションの嬉しい点

sandboxオプションのメリットは、コンソール終了時に自動でデータベースへの変更をロールバックできる点です。

「手元で更新とか色々試したいけどデータベース変更したくないよ〜」という場合に便利。

そうでなくても誤って操作する可能性もあるので、とりあえずこのオプションで触っておけば
ローカル環境のデータに影響が出ることはないので嬉しいですね。

## 使用方法

いつものコンソールを起動するコマンドに`–sandbox`でオプションをつけるだけ。

“`
rails console –sandbox
“`

※`rails c -s`でも可能

## 注意点

ただし本番環境で使う場合は注意をしましょう。
大規模な障害につながる危険性があります。

https://zenn.dev/shuhei_takada/articles/18ba8524049a04

元記事を表示

【Ruby on Rails】paramsを使ってURLとDBを紐づけてデータを表示させる

## 今回の目標
URLが`localhost:3000/tests/1`の時は`testsDBのid:1`のデータを表示
URLが`localhost:3000/tests/2`の時は`testsDBのid:2`のデータを表示

といった形にする。

**基本条件**
・rutes.rb
・tests_controller.rb
・show.html.erb
・Testモデルtestsテーブル
それらが存在している

### やること
:::note info
①ルーティングの設定を追加
②コントローラーを作成
 params変数を学ぶ
③確認
:::

## ①ルーティングの設定
1つずつルーティングを設定していくとした場合
“`routes.rb
get “tests/1” => “tests#show”
get “tetss/2” => “tests#show”
get “tests/3” => “tests#show”

#それぞれのURLに対してtestsコントローラーのshowアクションを実行する
“`
これでも問題ないが、DBに対応という部分を考え

元記事を表示

Flutter環境構築のためのCocoaPods・Rubyのダウンロード

Flutterでアプリを実際に動かしたいが、runしてもchromeアプリさえ表示されない。そのためにCocoaPodsというモジュールのインストールが必要だったのだが、2時間ほど手こずったのでメモを残しておく。

# cocoapodsのインストール、でもできない
公式サイトを参考に、CocoaPodsのダウンロードを試みる。

https://guides.cocoapods.org/using/getting-started.html

“`sh
sudo gem install cocoapods
“`

しかし、cocoapodsがインストールできない。
Rubyがダウンロードできていないとダメなようです。

## Rubyのインストール

[ruby install](https://gorails.com/setup/macos/14-sonoma)のサイトを参考にしながらRubyをインストール。

“`sh
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/H

元記事を表示

Ruby で解く AtCoder ABC 044 A – 高橋君とホテル (ARC 044 A)

# はじめに
– [AtCoder Problems](https://kenkoooo.com/atcoder/#/table) の ABC042 以降の問題を解いています
– 勉強のために Ruby で解いています
– 速度的な面で他の言語には劣りますが、あくまで勉強のためです

# お題
– 今回のお題は、 [ABC 044 A 高橋君とホテル](https://atcoder.jp/contests/abc044/tasks/abc044_a) という問題です
– K+1 日目から宿泊費が安くなるホテルに N 泊した際の合計宿泊費を求めます

# 考えたこと
– ホテルの値段が安くなる前に宿泊を終える場合がある
– 条件を使えば簡単にできるが、出力処理は1行でコンパクトにしたい

# コード
“`ruby
n = gets.to_i
k = gets.to_i
x = gets.to_i
y = gets.to_i

puts [n, k].min*x + [n-k, 0].max*y
“`

元記事を表示

【Rails】link_toとPrefixと引数と【初心者】

# link_toでprefixで繋ぐ時、引数を何を渡せばいいのか
link_to自体のやり方はこちら

https://qiita.com/junyawatanabe/items/327019369352c73d8ad1

どういうものを作っているかによって変わると思うのだが
link_toでindexとnewに行く時は引数を基本使わない。
indexとかから、edit、show、destroyに行く時は基本使う。
editに行くとしてproductモデルで@products.each do |product|で回してるなら、
edit_product_path(product)とかedit_product_path(product.id)とかで、
editに引数を使ってproduct.idを渡して、editのコントローラーの方で
@product = Product.find(params[:id])で情報を全て拾う。
destroyの時だけmethod: :deleteをlin_toに入れる。
<%= link_to '削除' , product_path(product), m

元記事を表示

Ruby On RailsにおけるjQuery初期設定

# Ruby On RailsにおけるjQuery初期設定
## 背景説明
現在のrailsに即したjQuery導入説明です。
私のような初学者にも伝わる日本語での説明を見つけられませんでした。英語での説明はあったのでこちらにメモしておきます。
ムダな記述が多いです。記述を省ける箇所や訂正箇所をコメントで教えてください。[^1]

[^1]:[参考文献](https://stackoverflow.com/questions/70921378/how-to-install-jquery-and-bootstrap-in-rails-7-app-using-esbuild-without-webpac)

## 初期設定
### アプリを作成します。
“`sh
rails new useJquery
“`
### 作成したフォルダーへ移動
“`sh
cd useJquery
“`
### コントローラーとビューを作成
“`sh
rails g controller tests index
“`
### ルーティング設定
“`ruby
Rails.applicatio

元記事を表示

【Ruby】<< をそのままメソッドの戻り値にするより、[*array, element] を使おう

## はじめに: `<<`をそのままメソッドの戻り値にする? コードレビューをしていると、ときどき以下のようなコードを見かけます。 ```ruby def do_something foo = [] # 処理があれこれ続く # ... # ... foo << 123 end bar = do_something puts bar ``` 注目してほしいのは `foo << 123` の行です。 ここは配列 `foo` に123を追加し、なおかつそのときの戻り値をこのメソッド(`do_something`メソッド)の戻り値にしています。 ```ruby def do_something foo = [] # 以下の1行は2つの意味を持つ # - fooに123を追加する # - 123を追加したfooをこのメソッドの戻り値とする foo << 123 end ``` たしかに配列に要素を追加する `<<` は戻り値としてその配列自身を返しますが、ふだん `<<` を使うときはあくまで要素を追加するだけで、`<<` の戻り値を利用すること

元記事を表示

OTHERカテゴリの最新記事