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

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

【Ruby】クラス変数、クラスインスタンス変数、インスタンス変数の違い

# はじめに
クラス変数、クラスインスタンス変数、インスタンス変数の違いについて「なんとなく」理解しているようで、はっきりと説明するのが難しい。この記事では、それぞれの変数の特徴と使い分けについて、身近な例に置き換えて解説したい。

# 説明
Rubyには「クラス変数」「クラスインスタンス変数」「インスタンス変数」の3種類の変数がある。

今回は、これらの違いを「小学校の名前」「小学校の予算」「生徒の情報」に例えて説明していく。

## クラス変数(小学校の名前)
クラス変数の特徴は、以下の通り。

– クラス全体で値が共有される。
– クラス内のメソッドやインスタンスメソッドからアクセスできる。
– サブクラスでも共有される。

例えば、小学校の名前は、すべての生徒に共通して知られている情報である。クラス変数を用いることで、この「小学校の名前」をクラス全体で共有できる。

“`ruby
class 小学校
@@名前 = “さくら小学校” # クラス変数で小学校の名前を設定

def 名前
@@名前
 end
end

class 生徒 < 小学校 d

元記事を表示

【Ruby】論理演算子

# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
今回は、演算子の中でも論理演算子について触れたいと思います。
これまで学習してきた中でなんとなく使ってきましたが、しっかり理解できていなかった部分があったので、まとめてみました。

# 論理演算子
演算子は、`&` や `+=` のように、値の計算や操作に使われる記号や機能のことです。
今回はその中でも、論理演算子 `||` と `&&` に注目して解説していきます。
この2つの演算子は条件式で使われ、次のような特徴があります

* 左の式から順に評価される
* 論理式の真偽が決定すると、残りの式は評価されない
* 最後に評価された式の値が論理式の全体の値になる

### `||`を論理演算子として使う場合
まずは`||`についてみていきます。
“`ruby
language || “Ruby”
“`
`||` は、どちらか一方が真であればその値が返ります。
ここで、`language` が真であれば、次の `”Ruby”` は評価されません。
`language` が返

元記事を表示

【Ruby on Rails × TMDB API × Mecab × AWS】ユニークなあらすじから映画を発掘するポートフォリオPlotForgeを作成しました!

### はじめに
初めまして、はしと申します。
バックエンドエンジニアを志して転職活動中です。

この度、ポートフォリオ「[PlotForge](https://plotforge.net/users/sign_in)」をリリースしましたので、投稿いたします!

https://plotforge.net

映画が好きなので、映画の発掘ができるアプリを作成してみたいという思いから作成しました。

#### きっかけは??
YouTubeの映画紹介ショートです。
「⚪︎⚪︎な映画挙げてけw」のようなショートで知らなかった映画のことを
どんどん知ることができ実際に鑑賞すると面白かったので、
映画を知る機会を広げるアプリを作りたいと思いました。

#### どんなアプリ?
ランダムに呼び出された映画からユニークなあらすじが作成することができます。
![plotforge_introduction_qiita.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606327/7136a927-1df4-6afb-82

元記事を表示

【Rails】Rails APIを用いたグループ機能実装:グループ作成とユーザーの入退会処理

Rails APIでUser周りの実装をしたので、グループの作成とユーザーの入退会処理をしていきます。
[【Rails】JWTを用いたUser周りのAPI実装](https://qiita.com/kay903347/items/3847a5cf4642e122128c)
## Groupテーブル
| カラム名 | データ型 | 制約 | 説明 |
| — | — | — | — |
| id | integer | 主キー、オートインクリメント | グループの一意な識別子 |
| name | string | null: false | グループ名 |
| created_at | datetime | null: false | レコード作成日時 |
| updated_at | datetime | null: false | レコード更新日時 |
## GroupMembershipテーブル
| カラム名 | データ型 | 制約 | 説明 |
| — | — | — | — |
| id | integer | 主キー、オートインクリメント |

元記事を表示

【Rails】Rails APIでログイン、ログアウト

前回、Rails APIでUser周りの実装をしました。
[【Rails】JWTを用いたUser周りのAPI実装](https://qiita.com/kay903347/items/3847a5cf4642e122128c)
その記事のログイン、ログアウトで気になったことをまとめます。
先にmodel、controllerを貼り付けておきます。
“`ruby:models/usr.rb
class User < ApplicationRecord before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAI

元記事を表示

【Rails】Rails APIで新規登録、退会処理

前回、Rails APIでUser周りの実装をしました。
[【Rails】JWTを用いたUser周りのAPI実装](https://qiita.com/kay903347/items/3847a5cf4642e122128c)
その記事の新規登録、退会処理で気になったことをまとめます。
先にmodel、controllerを貼り付けておきます。
“`ruby:models/usr.rb
class User < ApplicationRecord before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL

元記事を表示

【Ruby】irbとbinding.irbとは

# はじめに
こんにちは!現在アメリカの大学で語学を学びながら、ソフトウェアエンジニアを目指して独学しているものです。
本日は、Rubyでデバッグに使われる `irb` と `binding.irb` について詳しく解説していきます。実務で使われる機会が多いかはわかりませんが、`irb`は教材でよく登場する基本的なツールですので、使い方を知っておいて損はありません。

# `irb`とは
`irb`(Interactive Ruby)は、Rubyの対話型シェルです。
対話型シェルとは、ターミナル(黒い画面)に入力された内容をすぐに実行し、結果を表示する環境のことです。
`irb`ではRubyコードを1行ずつ実行し、即座に結果を確認できるため、コードの学習や動作確認、デバッグにとても役立ちます。

通常のプログラム実行では、コードエディタ(例:`Visual Studio Code`など)でスクリプトを書き、コマンドラインでファイルを指定して実行しますが、`irb`ではターミナル上で直接Rubyコードを入力し、結果をその場で確認できます。

### `irb`の基本的な使い方
ターミナル

元記事を表示

Tips: ファイルの作成日時をファイル名のソート順と同じ順序になるように変換するRubyスクリプト

## この記事は何
タイトルの通り、ディレクトリ内のファイルの作成日時をファイル名のソート順と同じ順序になるように変換するRubyスクリプトを作成したので記事として残しておきます。

## スクリプト
以下の通りです。

“`rb
require ‘fileutils’

directory = ‘/path/to/directory’

files = Dir.glob(File.join(directory, ‘*’)).sort

base_time = Time.now

files.each_with_index do |file, index|
new_time = base_time + (index * 600) # 600 seconds = 10 minutes
File.utime(new_time, new_time, file)
end

puts “Successfully updated creation dates for files in #{directory}”
“`

元記事を表示

ffmpegで複数のVOBファイルを一つのmp4ファイルに変換するRubyスクリプトを実装する

## この記事は何
最近DVDに保存していた動画ファイルをmp4ファイルとして書き出す必要があったため、
スクリプトを作成しました。
この記事では記録のためスクリプトの実装を残しておきます。

## 環境
– Ruby: v3.2.2
– ffmpeg: v7.1
– マシン: MacBook Air M1, 2020

## 実装したRubyスクリプト
実装したスクリプトは以下の通りです。

“`ruby:eport_dvd.rb
require ‘fileutils’

# Get the output directory from command-line arguments
if ARGV.length != 1
puts “Usage: ruby export_dvd.rb
exit 1
end

# Define the directory containing the VOB files
input_directory = “/path/to/input/directory”

output_directory = “path/to/o

元記事を表示

wc代替rubyスクリプト

### サンプルソース

対象ディレクトリのファイルの行数を合計します。

“`wcl.rb
files = Dir.glob(“target/*.csv”)
count = 0
files.each do |file|
File.foreach(file) {}
count += $.
end
puts count
“`

### 【背景】`wc -l` は、最終行の改行有無を吸収してくれない

ファイルの行数をみるのに`wc -l`を使うことが多いのですが、残念ながら最終行に改行がないと1行扱いしてくれません。

不満はあれどファイルの最後に改行がつくかどうかはケースバイケースです。なんなら標準入力の最後に改行がつくかどうかも怪しいです。

CSVファイルなどは最終行に改行がなくともその後の処理系では問題なく処理されるので、なおさらファイル最後の改行の有無は混在します。

ということで、`wc -l` ではどうにもならないので、別スクリプトを書くしかないということです。

### ソースの解説

“`
files = Dir.glob(“target/*.csv”)

元記事を表示

ビット演算を利用すると 1 つの整数値で複数の属性を表現できる

## 内容

ビット演算を利用すると 1 つの整数値で複数の属性を表現できて便利です 😉

“`rb
# 整数を 2 進数の文字列に変換するメソッドを定義する。
using (Module.new do
refine Integer do
def to_binary_string(digits = 4)
to_s(2).then { “%0#{digits}d” % _1 }
end
end
end)

高血圧 = 1
高血糖 = 2
高コレステロール = 4
高尿酸 = 8

高血圧.to_binary_string
#=> “0001”
高血糖.to_binary_string
#=> “0010”
高コレステロール.to_binary_string
#=> “0100”
高尿酸.to_binary_string
#=> “1000”

太郎 = 2
太郎.to_binary_string
#=> “0010”
太郎.anybits?(高血圧)
#=> false
太郎.anybits?(高血糖)
#=> true
太郎.anybi

元記事を表示

【個人メモ】Ruby on Rails チュートリアル 第8章

Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです

# 個人メモ
– Sessionを設定することでコンピュータ間(ユーザーのパソコンのWebブラウザとRailsサーバーなど)を半永続的に接続することが可能
– cookies
ユーザーのブラウザに保存される小さなテキストデータのこと
Cookiesを保存場所とすることでセッション機能を実現する
– form_with(url: login_path, scope: :session)
セッションではSessionモデルがなく、そのためsessionインスタンス変数に相当するものがない
したがって、form_withヘルパーにはscopeとurlを指定する必要がある
– Rubyではnilとfalse以外のすべてのオブジェクトは、真偽値ではtrueになる
– flash.nowのメッセージはその後リクエストが発生したときに消滅する
– 全コントローラの親クラスである「Applicationコントローラ」にセッションヘルパーをincludeすることでどのコントローラからでもメソッドを呼び出せる

元記事を表示

Facebook 広告アカウントを購入する USA

Facebook 広告アカウントを購入する
一部の企業は、広告にもっとお金をかけるために Facebook 広告アカウントを購入します。Facebook では、1 つのアカウントで使える金額に制限があります。Facebook 広告アカウントを購入すれば、より多くの広告を掲載でき、
おそらく売上も増えるでしょう。Facebook 広告アカウントを購入すると、良い履歴を持つアカウントも手に入るかもしれません。これにより、広告の成果が向上する可能性があります。
Facebook は、長い間存在し、ルールを守っているアカウントを好みます。複数のアカウントを持つことは、1 つのアカウントに問題がある場合にも役立ちます。
Facebook 広告アカウントを購入すれば、1 つのアカウントが機能しなくなっても、すべての広告を失うことはありません。ですから、Facebook 広告アカウントを購入しましょう。

当社のサービス品質

• 100% 満足保証
• 超高速配信
• 米国アカウント (必要な場合) (米国 IP 付き)
• すべての国に対応
• Facebook 広告マネージャー アカウント

元記事を表示

何重にも条件分岐する話

条件は3つ。
1,未ログインユーザーは編集、更新、削除ページに入るとログインページにリダイレクトされて
2,編集、更新、削除ページにいくとトップページに遷移されて
3,ログイン済みであっても商品出品者(@item.user)ではない場合はトップページにリダイレクトされる

“`
Class ItemsController < ApplicationController before_action :authenticate_user!, only: [:edit, :update, :destroy] # 未ログインユーザーはログインページにリダイレクト before_action :move_to_index, only: {:edit :update, :destroy] 3アクションはmove_to_index実行 中略 def move_to_index return unless current_user == @item.user # ログイン済みでも出品者でない場合はトップページにリダイレクト redirect_to root_path e

元記事を表示

RUBYのアクセサメソッドについて

![スクリーンショット 2024-11-01 231941.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921010/9f5ba6e3-9c20-c475-b868-e60cb35ee14a.png)
RUBYではsetterメソッドとgetterメソッドを上記のように書くことができる。
![スクリーンショット 2024-11-01 232517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921010/ebdd5b2b-11e7-10e9-4146-97ba6b045efb.png)
上記のようにattr_accessorメソッドを使うことによりsetterメソッドとgetterメソッドを使うと長くなってしまうコードを同じ意味で上記のようなスマートなコードで書くことができます。
![スクリーンショット 2024-11-01 233120.png](https://qiita-image-store.s3.ap-

元記事を表示

最新のRubyをインストールする

## はじめに

長年、Ruby2.6を使っていたが、最新版のRubyをインストールする必要性がでてきました。ついでにrbenvも最新版にしました。

## 環境

Ubuntu20.4

## rbenvのバージョンアップ

現状のrbenvのバージョンを確認します。

“`
$rbenv -v
rbenv 1.2.0-87-ge8b7a27
“`

rbenvが入っているディレクトリ(ルート)を調べます。

“`
$rbenv root
“`

rbenvのルートが分かったら、そこに移動してGitから最新版を取得します。

“`
$cd “$(rbenv root)”
$git pull
“`

rbenvのバージョンが最新になったことを確認します。

“`
$rbenv -v
rbenv 1.2.0-91-gc3ba994
“`

ついでに、ruby-buildのルートに移動して、ruby-buildも最新版を取得します。

“`
$cd “$(rbenv root)”/plugins/ruby-build
$git pull
“`

ruby-buildが最

元記事を表示

【超初心者ミス】ハッシュを設定してる際に『no implicit conversion of Symbol into Integer』がでてしまった

## 状況
hashを設定している際に上記のエラーが出てしまった。
`no implicit conversion of Symbol into Integer` を調べても原因がでてくるが解決法がピンとこない(試したが上手く行かない)

## 解決策
`return`で返り値設定しているか確認
下記の場合はhash値を指定しているメソッドの最後に **`hash`** をつけたら解決した
~~~ruby
def edit_hash
hash = {}

#メソッド内容

hash # ここの宣言が必要 ”return hash”を省略した記述
end
~~~

## 何故だったのか
Rubyの返り値には`最後に評価された値が返る`という暗黙のルールがある。
そのため返り値を”return”で指定しているのだが、上のコードのように省略して書かれているので初学者は忘れやすい。(忘れた)

~~~ ruby
# retrunを設定していない
def edit_hash
hash = {}
hash[:name] = ‘鈴木’
hash[:age] = 24
h

元記事を表示

Rubyの記述ルール(個人メモ)

## はじめに
これまでの個人アプリ開発ではJavaScript、TypeScript、Pythonなどを使ってきました。今回初めてRubyを使うため学習を始めました。
Ruby開発者としての一歩として、Ruby独自の記述ルールやクラスの定義の仕方を理解しようと思い、個人メモを作成することにしました。もし誤り等がありましたら、ご指摘いただけると幸いです。

## null値
Rubyではnull値の場合、「nil」(ニル)と表示されます。

## ハッシュ
JavaScriptでいうところのオブジェクトと同じで、キーとバリューのペアで格納し、キーを指定してバリューを取得するデータ構造です。
また、キーは文字列で指定する方法とシンボルで指定する方法があります。

### 構文
“`ruby
ハッシュ名 = {“key” => value, … }
# または
ハッシュ名 = {:key => value, … }
“`

【**キーの指定方法**】
– **文字列** “key名”(ダブルクオーテーション)
– **シンボル** :key名(コロン)

### 具体例

元記事を表示

Railsでパンくずリストを作成する方法 – Gretelを使った実装

# はじめに

こんにちは!
記事をご覧いただきありがとうございます。

本記事では、Railsでパンくずリストを作成する方法についてまとめます。

# 目次
1. [パンくずリストについて](#パンくずリストについて)
1. [手順](#手順)
1. [書き方](#書き方)
4. [最後に](#最後に)

# パンくずリストについて
パンくずリストとは、Webサイトの現在のページの位置を示すナビゲーションリンクのことです。ユーザーがどのページにいるかを視覚的に把握できるため、サイトのユーザビリティが向上します。今回は、Rails用のGretelというGemを使って、パンくずリストを簡単に実装する方法を以下にまとめています。

# 手順
#### Gretelをインストールする

まず、GretelをGemfileに追加し、インストールします。
“`ruby
# Gemfile
gem ‘gretel’
“`
インストールコマンドを実行します。
“`
bash
$ bundle install
“`
#### 設定ファイルを作成する
次に、以下のコマンドを実行して、conf

元記事を表示

Kaigi on Rails 2024 に参加してきた

[Kaigi on Rails 2024](https://kaigionrails.org/2024/) 参加してきました!
Qiita からは自分を含め3人が現地参加してきました。

https://x.com/nemunemu3desu/status/1849979399145390397

## 聞いたセッション (の一部) の紹介

めちゃくちゃ面白いものが多かったので、全部は書ききれないですが、たくさん書いてます。
2日目ガス欠気味だったので、1日目が多めです。

### 基調講演: Rails Way, or the highway

https://evilmartians.com/events/keynote-rails-way-or-the-highway-kaigi-on-rails-2024

Rails は 「Rails scales from HELLO WORLD to IPO」と呼ばれるが、その長い期間

元記事を表示

OTHERカテゴリの最新記事