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

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

[Ruby]インスタンス変数と普通の変数の違い

## はじめに
Rubyのコードを見たとき、何これ(下のコードを参照)と思ったことがあったのでインスタンス変数の違いと普通変数の違いをまとめます。

“`.rb
@calculator = Calculator.new
“`

## 目次
– はじめに
– 違い
– インスタンス変数とは
– 普通の変数とは
– おわりに

## 違い
3つの要素による違いがあります。

– スコープ
– 寿命
– 表記方法

それぞれ以下で解説します。

## インスタンス変数とは

【スコープ】
– インスタンス変数は、クラスのインスタンス内で有効
– クラスのメソッド内やインスタンスメソッド内で宣言され、そのクラスのインスタンス内で共有される

【寿命】
– インスタンスが存在する限り生きてる!
– インスタンスが亡くなったら破棄される!

【表記法】
以下参照

“`.rb
@instance_variable = “This is an instance variable”
“`

## 普通の変数とは

【スコープ】
– 通常の変数は、メソッド内で宣言されます!
– メソッド内での

元記事を表示

【Rails】session[:user_id]とは

# session[:user_id]とは
`session[:user_id]`は、セッションにユーザーIDを格納するための方法です。セッションは、Webアプリケーションでユーザーの状態を維持するための仕組みであり、クライアントとサーバーの間で情報を保存するために使用されます。

具体的には、`session[:user_id]`は、ユーザーがログインしたときにセッションにユーザーIDを保存し、ログアウトするまでそのユーザーが認証されていることを示します。これにより、ユーザーのログイン状態を保持し、適切なユーザーに関連付けられたデータや機能にアクセスできるようになります。

# 使用方法
例えば、以下のようにしてユーザーIDをセッションに保存することができます:
“`rb
session[:user_id] = @user.id
“`
そして、以下のようにしてセッションからユーザーIDを取得することができます:
“`rb
user_id = session[:user_id]
“`
セッションは一般的に、クッキーなどのメカニズムを使用してクライアントのブラウザに保存されます。

元記事を表示

未経験エンジニアがハッカソンに出場した理由

# 概要
RUNTEQというプログラミングスクールで知り合った方とチームを結成してハッカソンに参加してきました!!

メンバー紹介

参加者 2名
・chihiro
私は今も大手カレーチェーンで生活費を稼ぎながらエンジニアになる夢を叶えるために学習を続ける未経験エンジニアです。

・若きエリートエンジニアくん 
スクールの同期中で一番最初にエンジニアになったスーパーエリートくんです。(ほんと尊敬)

以上、2人で出場しました。本当はもう一人出場する予定でしたが当日高熱を出してしまいました。とほほ…
人間体調が一番大切!まあ、こんなトラブルがありながら気合いで乗り越えました。

# qiitaハッカソンとは
今回私たちが出場したのはQiitaが主催している今年初めて開催された大会です。
ハッカソンという言葉はハック(hack)とマラソン(marathon)を合わせた混成語のことです。
題材は当日発表、1.5日でプログラミング言語を用いた作品を作成、プレゼンテーションを行い審査、決勝出場者が決まります。

# サービス概要
「Rails bridge」
Railsに

元記事を表示

【Rails】インスタンスメソッドの定義

# インスタンスメソッドの定義
Railsにおけるインスタンスメソッドの定義は、Active Recordモデルやコントローラーなどのクラス内で行われます。これらのクラスはRubyのクラスであり、インスタンスメソッドを定義することができます。

例えば、Active Recordモデル内でインスタンスメソッドを定義する方法を示します:
“`rb
class User < ApplicationRecord def full_name "#{first_name} #{last_name}" end end ``` この例では、`User`モデル内で`full_name`というインスタンスメソッドが定義されています。このメソッドは、`first_name`と`last_name`属性を組み合わせてユーザーのフルネームを返します。 コントローラー内でのインスタンスメソッドの定義も同様です: ```rb class UsersController < ApplicationController def show @user = User.find(params

元記事を表示

【Rails】flash.nowとは

# flash.nowとは
`flash.now`は、Railsのコントローラーでフラッシュメッセージを表示する際に使用されるオブジェクトです。通常の`flash`とは異なり、`flash.now`で設定されたメッセージは次のリクエストでは保持されません。

通常の`flash`メッセージは、リクエストの終了時にセッションに保存され、次のリクエストで表示されます。しかし、`flash.now`メッセージは、現在のリクエストにのみ適用されます。つまり、レンダリングするビューに対して直接メッセージを表示したい場合に使用されます。

# 使用方法
例えば、次のように使用します:
“`rb
# コントローラー内のアクション
def create
@user = User.new(user_params)
if @user.save
flash[:success] = “User created successfully!” # このメッセージは次のリクエストで表示される
redirect_to @user
else
flash.now[:error] =

元記事を表示

【Rails】form_tagとは

# form_tagとは
`form_tag`は、Railsでフォームを作成するためのヘルパーメソッドの1つです。このヘルパーメソッドを使用すると、HTMLの`

`タグを簡単に生成できます。

form_tagを使用すると、次のようなことができます:

1\. フォームのアクションやメソッドを指定する。
2\. フォームに含まれる入力フィールドやボタンなどの要素を含める。

以下は、form_tagの基本的な使用例です:
“`erb
<%= form_tag('/search', method: 'get') do %>
<%= text_field_tag(:query) %>
<%= submit_tag('Search') %>
<% end %>
“`
この例では、`form_tag`は`/search`に対するGETリクエストを行うフォームを生成します。フォームには1つのテキストフィールド(クエリ)と1つの送信ボタンが含まれています。

`form_tag`を使用すると、Railsで簡単にフォームを作成し、サーバーにデータを送信することができます。

元記事を表示

【Rails】Assets: precompileとは

# Assets: precompileとは
`assets:precompile`は、Railsアプリケーションのアセット(JavaScript、CSS、画像など)を事前にコンパイルするためのコマンドです。これにより、本番環境でのパフォーマンスを向上させるために、アセットを最適化してバンドルすることができます。

具体的には、`assets:precompile`コマンドは、アプリケーションのアセットをコンパイルし、`public/assets`ディレクトリにプリコンパイルされたファイルを生成します。これにより、アプリケーションが本番環境で実行される際に、アセットの読み込みが高速化されます。

`assets:precompile`コマンドは、アプリケーションを本番環境でデプロイする前に実行する必要があります。通常は、次のようにして実行されます:
“`
$ rails assets:precompile
“`
このコマンドを実行すると、アプリケーションのアセットが事前にコンパイルされ、本番環境での高速な読み込みが可能になります。

元記事を表示

【Rails】コンソールでレコード追加する方法

# レコードの追加方法
Railsのコンソールでレコードを追加するには、Railsのコンソール(rails console)を起動し、Active Recordモデルを使用して新しいレコードを作成します。以下は一般的な手順です:

### 手順
1\. ターミナルでRailsのプロジェクトディレクトリに移動します。
2\. rails consoleと入力してRailsのコンソールを起動します。
3\. レコードを追加したいモデルを選択します。例えば、Userモデルの場合は以下のようにします:
“`rb
user = User.new
“`

1\. レコードの属性を設定します。例えば、`name`や`email`などの属性がある場合は以下のようにします:
“`rb
user.name = “John Doe”
user.email = “john@example.com”
“`

2\. `save`メソッドを呼び出して新しいレコードをデータベースに保存します。
“`rb
user.save
“`
これで新しいレコードがデータベースに追加されます。すでに存在する属性を一度

元記事を表示

【Rails】単数リソースとは

# 単数リソースとは
単数リソース(singular resource)とは、RESTfulなルーティングにおいてリソースを表現する際に、特定のリソースに対してCRUD操作(作成、読み取り、更新、削除)を行うためのルーティングを定義する方法の1つです。

通常、リソースは複数形で表現されます(例:`resources :articles`)。これは、記事(`articles`)に対する複数の操作を可能にします。一方、単数リソースは特定のリソースに対して単一の操作を提供します。

例えば、`resource :profile`というルーティングは、ユーザーのプロフィール情報に対してCRUD操作を行います。この場合、次のようなルーティングが生成されます:

– GET /profile: プロフィールの表示
– GET /profile/edit: プロフィールの編集フォーム表示
– PUT /profile: プロフィールの更新
– DELETE /profile: プロフィールの削除

単数リソースは、ユーザーごとに1つのリソースを想定しており、通常はIDを使用しないため、リソースの識

元記事を表示

rbenvでRubyのバージョンを指定できてない理由はパスが通ってないからだった

この前rbenvでRubyのバージョンを3.3.0にしたはずなのに、`ruby -v`で確認したら2.6.10に戻っていた。なんでだ?

“`ruby
$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin23]
“`

少し前にRubyのバージョンを更新したときはここを指定してたんだよな…。
(そのときのメモに書いてあった)
“`ruby
$ which ruby
/Users/*username*/.rbenv/shims/ruby
“`

rbenvでインストールしようとしたら、すでにあると言われた。
“`ruby
$ rbenv install 3.3.0
rbenv: /Users/*username*/.rbenv/versions/3.3.0 already exists
continue with installation? (y/N) N
“`

rbenvのパスを通していないからか?
rbenvはどこにあるんだ?

“`ruby
$ which r

元記事を表示

【個人開発】自己受容をテーマにしたサービス「JustBe U」をリリースしました

# はじめに
こんにちは、yoshiと申します。
このたび、自己受容をテーマにしたWebサービス「JustBe U」をリリースいたしました。🌱
初めての個人開発だったため、エラーやわからないことでつまずくこともありましたが試行錯誤して完成させることができました。今回は、実装でこだわった部分や工夫した部分をお伝えできればと思いますので、技術的な部分で誤りがありましたらコメント等いただけますと幸いです。

# サービス名: JustBe U
[![Image from Gyazo](https://i.gyazo.com/86a98f1e31a850317778766d1fa7bb69.png)](https://gyazo.com/86a98f1e31a850317778766d1fa7bb69)
##### サービスURL: https://www.justbe-u.com
##### Github: https://github.com/yoshi5170/self_acceptance_journey
##### Xアカウント: https://twitter.com/Justbe

元記事を表示

商品が購入された時の条件分岐

# はじめに
今日の学習で学んだことを掲載していきます。
初心者ですので温かく見守ってください、、、、
# 商品が購入された場合の条件分岐
今回は商品が購入された場合にはSold Out!!の文字が出るように実装しました。
#### 商品一覧画面
“`html
<% if item.order %>

Sold Out!!

<% end %>
“`
itemという商品が保存されているテーブルとorderという商品が購入されたことが保存されるテーブルの二つが存在し、これらはアソシエーションが組まれています。
ですので、orderテーブル内にitemがあった場合に文字が反映されるような条件分岐は上記のようになります。

#### 商品詳細画面
詳細画面における「購入ボタン」「削除ボタン」「編集ボタン」の表示の条件分岐にも同じように記載します。
“`html
<% unless @item.order %>
<% if user_signed_in? %>

元記事を表示

【Ruby】ループ処理について掘り下げて考えた

## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。完全異業種からのエンジニア転職を目指して学習をしています。

## 概要
自分は完全未経験であり、Rubyで初めてプログラミングを学んだため、「繰り返し」と言う概念が当たり前にある前提で`each`文などの説明が始まり、 ???🧐??? となりました。
通っていたスクール内で技術面談等を利用したり、さまざまな技術記事を見たりして、
自分が理解できるまで掘り下げて考えたものをまとめました。

## 注意
私は前職が完全異業種であり、英語も苦手で、スクールに入って初めてプログラミングに触れました。
そんな自分が理解しづらかった部分を、同じように初めてプログラミングの概念に触れた人に向けてまとめました。
自分の復習も兼ねて、超超噛み砕いて書いているため、周りくどい書き方になっている箇所もあるかと思います。

また、初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです🙇

  
## ループ処理(繰り返し)とは
Rub

元記事を表示

enumの使用方法

### **enumとは?**

enum(enumeration: 列挙)は、名前を整数の定数に割り当てるのに使われるデータ型です。(列挙型というみたいです。)

名前は言語の定数として振る舞う識別子なので、整数を直に扱う場合よりもプログラムの読みやすさとメンテナンス性が向上します。

例::publicを0、:draftを1として、0や1で状態を定義できる

### 使い方

例として、article(記事)というモデルにstatus(状態)というカラムを作成し、それをenumを使って表します。

デフォルトで0(draft)になるように設定してます。

### カラム作成

“`ruby
class CreateArticles < ActiveRecord::Migration[6.0] def change create_table :articles do |t| # 他のカラムの定義 t.integer :status, default: 0 t.timestamps end end end ``` ###

元記事を表示

【Ruby Silver】Rubyのループ処理まとめ

## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。完全異業種からのエンジニア転職を目指して学習をしています。
 
## 概要
Ruby Silver3.1 の学習のために使用した、Rubyのループ処理のまとめです。
既にわかりやすくまとめられている記事も多いですが、Ruby Silverの問題を解きながら学んだ、引っかかりやすい部分なども含めてまとめています。

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

## ループ処理の基礎
ループ処理の概念や基礎についてはこちらの記事でまとめました。

https://qiita.com/lemonade_37/items/0660f9ee6ca2dc09d42d

## 配列やハッシュ内で繰り返す系
– `for`:指定した配列の要素に順番に実行したり、指定した範囲分繰り返しを行う。
※`do`省略可
“`ruby
fo

元記事を表示

[Ruby]シンボルと文字列の違いを爆速で理解する

## はじめに
実務で、rubyを触った際に、シンボルが出てきて何だっけこれ?となったのでその違いをまとめます

## シンボルとは
任意の文字列と一対一に対応するオブジェクトのこと。
文字列の代わりに用いることができるが、必ずしも文字列と同じ振る舞いをするわけではない。

“`シンボル.rb
:apple
:japan
:ruby_is_fun
“`

## 違いは
– 文字列はStringクラスのオブジェクト

– シンボルはSymbolクラスのオブジェクト

これです。

また、シンボルは
– 文字列よりも高速に処理できること
– 全く同じシンボルであるということ

です。

## 同じオブジェクトかどうかを調べてみる

object_idを使って、調べてみると

“`.rb
:apple.object_id #=> 1143388
:apple.object_id #=> 1143388
:apple.object_id #=> 1143388

‘apple’.object_id #=> 703212292
‘apple’.object_id #=> 70321129

元記事を表示

【Rails】ActiveRecordでSQLっぽくテーブル結合する方法

# 環境
Ruby 3.0.1
Rails 6.1.6
PostgreSQL

# やりたいこと
Railsのメソッドを使ってテーブルを結合し、結合先の値を集計・並べ替えを行いたいと思います。
例えば、以下のようなデータベースがあるとします。

![ActiveRecord_sql_sample_er.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3674409/4891d4f4-1c2b-136f-a410-8e700a12b59d.png)

こちらは、ユーザーが持っている本をuser_booksに登録していくテーブルです。usersとbooksを多対多でアソシエーションを組んでいます。
これを使って、たくさん本を持っているユーザー順に並べ替えたいと思います。

# 準備
前述のER図を元にモデルを作成し、アソシエーションを組んで、コンソール等で必要なデータを作ります。詳細はトグルの中に記載しています。

作り方がわかる方は飛ばしてください。

詳細
元記事を表示

MisskeyのAPIの叩き方(curl, Ruby)

https://misskey-hub.net/ja/docs/for-developers/api/

Misskeyの各サーバーはAPIを公開していて、そのAPIを使ってBotやツールを作れます。GoやJavaScriptなどいくつかの言語ではAPIのラッパーが存在していますが、今回はそれらを使わず標準ライブラリや標準的なツールのみを使ってAPIを叩く際のコードを紹介します。

トークンの取得方法やAPIのエンドポイントの一覧などについては省略しますので、上記のURLをご覧ください。

## シェルスクリプト(curl)

### フォローしているチャンネルのリストを取得

“`sh
misskey_token=”misskeyのトークン”
channels=$(curl “https://misskey.io/api/channels/followed” \
-H ‘content-type: application/json’ \
–data-raw “{\”i\”:\”${misskey_token}\”, \”limit\”:100}” \
| jq –

元記事を表示

Railsでデータを効率的にカウントする方法

### 自己紹介
現在、SEとして業務系システムの開発に従事している者です。
WEBエンジニアとして転身するにあたり、主にRuby on RailsとNext.jsを中心とした勉強をしています。
よろしくお願いします。

—————

今日は、Railsでデータをカウントする際に便利な`count`関数の使い方について詳しく解説します。データの数を数えることは、Webアプリケーション開発においてよくある要件の一つです。Railsでは、このようなデータ操作を簡単かつ効率的に行うためのメソッドが豊富に用意されています。

### `count`メソッドの基本

`count`メソッドは、ActiveRecordのスコープに対して呼び出すことができ、指定された条件にマッチするレコードの数を返します。最もシンプルな形では、モデル全体のレコード数を取得することができます。

“`ruby

User.count

“`

このコードは、`users`テーブルのレコード総数を返します。

### 条件付きカウント

`count`メソッドは、条件を指定して特定のレコードの数

元記事を表示

【Ruby,Rails】クラスメソッドとインスタンスメソッドの違い

どうもこんにちは。

今回は、初心に帰ってクラスメソッドとインスタンスメソッドについてまとめます。

# まずは実行される時の形から覚える

## クラスメソッド

クラスメソッドは以下のような形で実行されます。

“`ruby:Railsコンソール
# newメソッド
pry(main)> Sample.new
# createメソッド
pry(main)> Sample.create(name: ‘サンプルA’)
# findメソッド
pry(main)> Sample.find(1)
# allメソッド
pry(main)> Sample.all
“`

## インスタンスメソッド

インスタンスメソッドは以下のような形で実行されます。

“`ruby:Railsコンソール
# インスタンスを作成してから…
pry(main)> sample = Sample.new
# saveメソッド
pry(main)> sample.save
# updateメソッド
pry(main)> sample.update(name: ‘サンプルB’)
“`

## 違いは…

元記事を表示

OTHERカテゴリの最新記事