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

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

基礎知識③HTTPについて

## はじめに
転職活動をする中で、MVCそれぞれの役割やhttp通信についてなど、基礎的な技術知識について問われるシーンがあったので、改めて基本に立ち返って自己学習しようと思った。

## HTTPリクエストとHTTPレスポンスについて
– HTTPリクエスト
ユーザーがブラウザ(PC上で見ている画面)からサーバー(サイトページの情報が存在するコンピュータ)へ送るもの
– HTTPレスポンス
ブラウザから送られてきたリクエストに応じた情報を返す(レスポンス)こと

ユーザーがブラウザを通じてサーバーに「このページが見たいよ〜」とリクエストし、
そのページの情報をレスポンスするというのが一連の流れですね。

## HTTPメソッドとは
クライアントからサーバーへ「なんの要求なのか」を伝えるメソッド

– GET
サーバーにリクエストを送る時に使うメソッド。
リクエストの内容に沿って、サーバー側で情報を検索して取得することができる。
リクエストの内容はURLにクエリとして含まれる。
そのため、キャッシュカードの情報や個人情報など機密データを取り扱う場合はおすすめしない🙅‍♀️
リクエスト

元記事を表示

基礎知識②ルーティングについて

## はじめに
転職活動をする中で、MVCそれぞれの役割やhttp通信についてなど、基礎的な技術知識について問われるシーンがあったので、改めて基本に立ち返って自己学習しようと思った。

### ルーティングとは
どのURLにどのようなHTTPメソッドでアクセスがあった場合にどのコントローラのどのアクションを呼び出すかを定義したもの
アクセスを受けてどのアクションへ案内する仕組み

### ページを作る流れについて
基本的にはルーティング→コントローラ→(モデル)→ビュー
モデルは必要な時とそうでない時があるので適宜

– ルーティング
アクセスがあった際に、どのコントローラのどのアクションを実行するかを定義した案内板、対応表

– コントローラ
モデルとビューを仲介する役
ビューからの入力、データ更新、削除などの操作に応じてモデルに依頼。
モデルで処理されたデータをビューに渡す。

– モデル
データベースの操作を担当。
データの登録、更新、削除を行い、処理された結果をコントローラに返す。

– ビュー
ビューに書いてあることをHTMLファイルとして表示。
システムにおけるユーザーイン

元記事を表示

他の言語からRubyを学ぶならTry Rubyがオススメ!

ある日、業務でRubyを使うことになり、Rubyを学ぶ方法を探していたところ、Ruby公式サイトで非常に役立つリソースを発見しました。それが [Try Ruby](https://try.ruby-lang.org/) です。他の言語をある程度触ったことがある人にとってTry RubyがRubyを最短で学ぶのに最適なツールだと思います!

## Try Rubyとは?

[Try Ruby](https://try.ruby-lang.org/) は、ブラウザ上でインタラクティブにRubyを学ぶことができる無料のチュートリアルサイトです。

## いいところ

### 簡単に始められる

他の言語を学んだ経験がある方なら、最初に環境構築に苦労したことがあるかもしれません。しかし、Try Rubyならブラウザだけで完結するため、
インストールや設定は一切不要で、すぐに始められます!

### 可愛いイラスト

![try ruby](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403148/737177ac-c6

元記事を表示

基本知識①MVCモデルとは

## はじめに
転職活動をする中で、MVCそれぞれの役割やhttp通信についてなど、基礎的な技術知識について問われるシーンがあったので、改めて基本に立ち返って自己学習しようと思った。

## MVCについて
### 「MVCモデル」とは
システム開発の方針の一つ。
「Model」「View」「Controller」の3つに役割を分担させコードを管理する。

#### なぜ分けるのか?
1. 保守性の向上
コードを役割ごとに分けることで、システムにバグが起こった時、バグ発生箇所を特定しやすい。
また、例えばViewでバグがあったとして、ControllerやModelに影響が少なく、影響範囲を小規模で止めることができる。

2. 生産性の向上
コードが役割ごとに独立しているため、管理がしやすい。
分担作業がしやすい。

### Modelとは
**表示や入力に関連しない処理**
DBとのやりとりを担当。
データの登録・更新・削除の処理を担う。
処理したデータはControllerに送る。

### Viewとは
**表示や入力に関する処理**
HTMLなど、ユーザーが実際目にするページの

元記事を表示

Dockerを使ってRails7.1環境の構築をしてみる

Railsで学習をする機会があったので、7.1の環境を自身のPCに作ってみたので
構築方法を記録する。

(環境)
Mac(バージョン:14.5 チップ:Apple M2)

(構築)
Rails:7.1.3
Ruby:3.3.2
MySQL8.0

## memo
* Rails7になってWebPackが不要になった
* 途中でDockerfileが書き換わるので、build前にDockerfileを一部変更した

# 1.Docker for Macのインストール
(インストール済みならスキップ)
https://docs.docker.com/compose/install/

# 2.Rails / MySQLアプリケーションを設定

## 2-1.ファイル用意

開発していくディレクトリにアプリケーションを構築するために必要な4つのファイルを設定する。

“`
{プロジェクト}
|_Dockerfile
|_Gemfile
|_Gemfile.lock
|_entrypoint.sh
|_docker-compose.yml
“`

元記事を表示

Web API 混在の Rails アプリケーションで500エラーを適切に処理したい

## はじめに

Rails で、Web API でJSONを返すものと、HTMLのページを返すものを混在させたアプリケーションを `rails new` で作成していました。

routing で、Web API は、 `/api` 以下にマウントしていました。

`/api/xxx` で Web API が呼ばれて想定外のエラーが発生した時、JSON でレスポンスを返すようにしたいと考えたのですが、意外に手間取ったので自分用にメモしておきます。

なお、動作確認は、Rails7.1 で実施しています。

## 500エラーを発生させる
意図的に 500 エラーを発生させるために、Controller で以下のようなコードを書きます。

“`ruby
class Api::UsersController < ApplicationController def index raise StandardError, 'error' end end ``` ## 何もしない場合 何もしない場合、Rails は、`/500.html` を返します。JSON ではなくて、H

元記事を表示

gemが上手く動作せず、gemの内部処理でデバッグしたい/モンキーパッチを作りたいときのやり方

gemの怪しいと思った部分をoverwriteして、binding.pryを追加すれば、追加した場所で止まってくれます。

overwriteのやり方
https://qiita.com/arakaji/items/dbf26f0b1d1c4659ef32#%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%86

元記事を表示

after_saveでsidekiqを叩いてもデータが存在しない

# はじめに

E2Eがコケて原因が謎だったところについてまとめておきます

# 問題

ユーザーをDBに保存すると、Sidekiqのジョブを叩くような実装をしました

“`rb:user.rb
after_save TriggerIndexingCallbacks
“`

しかしジョブでは作成したユーザーが存在しませんでした

# 解決方法

“`rb:user.rb
after_commit TriggerIndexingCallbacks
“`

`after_commit`にすることでDBに保存してから実行されるようになりました
保存前に動いていたのが原因でした

# おわりに

初めてafter_commitというものを使いました
そもそも知らなかったです

元記事を表示

【Ruby】文字列演算子 <<

## 概要
この記事では、`<<` 演算子を使用した文字列の連結方法について詳しく見ていきます。

## 文字列連結方法
Rubyでは文字列の連結にいくつかの方法があります、一般的なのが `+` 演算子、
次に今回の記事のお題にもなっている `<<` 演算子。 **`+` 演算子:** 「str1 + str2」 という形式で使用される。 str1 と str2 を連結した新しい文字列を作成します。 この操作では、元の文字列は変更されず、新しい文字列オブジェクトが毎回生成されます。 **`<<` 演算子:** 「str1 << str2」 という形式で使用される。 str2 の内容を str1 に直接追加します。 この操作は str1 を破壊的に変更し、新しいオブジェクトの生成を伴わないため、メモリ効率が良く、処理速度も速いです。

## << 演算子の利点 大量の文字列データを扱う際に特に有効で、大きなファイルの内容を読み込んで処理を行いたい場合、 `+` よりも `<<` 演算子を使う方がパフォーマンスが良いです。 理由として、`<<`演算子は元の文字列に

元記事を表示

【Ruby】文字列をスペースで区切って配列にし、配列の要素を取り出す。

文字列をスペースで区切って配列にし、配列の要素を取り出すプログラムを作りました
Rubyで作りました。

“`Ruby
str1 = “Hello paiza”
array1 = str1.split(‘ ‘)
length1 = array1.size()
for i in 0…length1 do
puts array1[i]
end
“`

結果
![kekka.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710584/8859e6f4-1ecd-8d6c-ae10-a5b99cdecab9.jpeg)

元記事を表示

SHA-1で作成したsigned_idをRails 7.0でもfind_signedで検索できるようにする

## はじめに:困ったこと・解決したいこと
Rails 7.0ではActive RecordのデフォルトのハッシュダイジェストアルゴリズムがSHA-1からSHA-256に変更されました。

https://railsguides.jp/upgrading_ruby_on_rails.html#active-record-%E6%9A%97%E5%8F%B7%E5%8C%96%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AE%E5%A4%89%E6%9B%B4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

この変更が入ると、Rails 6.1以前に生成したsigned_idはRails 7.0以降で利用できなくなります。

“`ruby
# Rails 6.1時代に user.signed_id で生成した署名付きid
signed_id = “eyJfcmFpbHMiOnsibWVzc2FnZSI6Ik1USXpORFU9IiwiZXhwIjpudWxsLCJwdXIiOiJ1c

元記事を表示

【Ruby】each処理を簡潔に書く

見やすいコーディングを心がけながらコーディングをしてる矢先、
繰り返し処理の中身が簡潔なときにもっとスマートに書けないかなあ…と、
最近ふと思ったりしてたのでRubyのeach系の簡潔化をまとめてみました。

単語と示してる場所がよく一致しなくなるのでひとまずメモ
“`ruby:qiita.rb
配列オブジェクト.メソッド {|初期値, 要素| ブロック処理 }
“`

そして本題
“`ruby:qiita.rb
# 共通変数
arr = [1, 2, 3]
“`
## .map
用途:各要素に対して処理をする
返り値:配列
“`ruby:qiita.rb
# .eachで書いた場合
new_arr = [];
arr.each do |i|
new_arr << i * 10 end ``` ```ruby:qiita.rb # .mapで書いた場合 new_arr = arr.map{|i| i * 10} ``` ## .select 用途:blockの結果がtrueである要素を全て含む配列を返す 返り値:配列 ```ruby:qiita.rb # .eachで書い

元記事を表示

wordmoveのDB同期を動かすまで

WordPressのサーバー間同期ツールのwordmoveですが、長いことお世話になっているものの、しばらくテンプレートしか同期していませんでした。

が、数日後に運用中のサイトで価格をすべて変更するSQLを流し込むのにローカルテストをしたかったので、DBの同期を試してみましたが、予想はしてたものの、ぜんぜんうまく出来ませんでした。その原因調査した報告です。

まずは初めのエラー。

![Cursor_と_movefile_yml_—_local-site3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38388/164cebf7-c9a1-dd9d-5bca-99cdc66d0546.png)

“`
OpenSSH keys only supported if ED25519 is available
“`

wordmoveを動かしているコンテナ内のOpenSSHでは Githubの公式でもキーの生成に案内されているED25519が使えないとのこと。
ED25519で暗号化された認証鍵は次の

元記事を表示

【Ruby初級】クラスメソッドを用いて野菜の金額を表示する

# 問題
以下の要件を満たすVegetableクラスを実装しましょう。

### 条件
##### クラスメソッド
メソッド名:description
処理:”新鮮で美味しい野菜です”と表示する

##### インスタンス変数
name:野菜の名前
color:野菜の色

##### インスタンスメソッド
メソッド名:initialize
処理:引数で名前と色を受け取り、インスタンス変数に代入します。

メソッド名:details
処理:”【名前】は【色】です”と表示します。

### 雛形
“`ruby
class Vegetable
def クラスメソッド
# 正しくメソッドを定義した上で、ここに処理を記入してください
end

def initialize
# ここに処理を記入してください
end

def インスタンスメソッド
# 正しくメソッドを定義した上で、ここに処理を記入してください
end
end

# 3つのインスタンスを生成してください

# クラスメソッドを呼び出し、「新鮮で美味しい野菜です」と表示してください

元記事を表示

Rubyでハッシュを文字列にできるのに文字列をハッシュにできなくて困りました

# 結論
`eval`を使えば大体できる。使い所は`testコード`。
# 背景
ハッシュを文字列にしたログの出力結果をminitestで検証しようとした時に、文字列をハッシュに変換し、各項目に正しく値が入っていることを確認しようとした時でした。
**文字列に対してto_hashしようとしてもエラーになる。**
ハッシュオブジェクトに`to_s`すると文字列になるのに、文字列に対して`to_hash`するとエラーになります。
どうすれば文字列をハッシュに変換できるか、私なりに考えてみました。
# evalを使う
evalを利用すると簡単に文字列をハッシュに変換することができます。
“`ruby
hoge_hash = { key1: ‘hogehoge’, key2: 999 }
# => {:key1=>”hogehoge”, :key2=>999}
hoge_string = hoge_hash.to_s
# => “{:key1=>\”hogehoge\”, :key2=>999}”
eval(hoge_string)
# => {:key1=>”hogehoge”, :key

元記事を表示

【Ruby初級問題】それぞれの野菜の重さは合計いくつ?

# 問題
以下のように、野菜の名前と重さが入った配列があります。この配列を用いて、野菜の名前とそれぞれの総重量が出力されるコードを記述してください。

“`ruby
veggies_weight = [[“carrot”, [120, 150, 130]], [“potato”, [200, 250, 180]], [“onion”, [100, 80, 90, 110]]]
“`

### 出力例
“`
carrotの総重量は400グラムです”
“`
## ヒント
`sum`メソッドを使いましょう。
リスト内のすべての値を合計してくれます。

### 例
“`ruby
banana_price = [100, 100, 100]

puts banana_price.sum
# 出力結果「300」
“`

# 回答
“`ruby
veggies_weight = [[“carrot”, [120, 150, 130]], [“potato”, [200, 250, 180]], [“onion”, [100, 80, 90, 110]]]

veggies

元記事を表示

【Rails】FontAwesomeのCDN読み込みと使い方

## はじめに
この記事では、「Font Awesome」のCDN(Contents Delivery Network)を使った読み込み方法と基本的な使い方についてまとめました。
SNSのアイコンや設定、編集、削除などの機能をアイコンで表現する際に、Font Awesomeは非常に便利です。自前でアイコンを作成する手間を省き、豊富なアイコンライブラリを簡単に活用できる方法をお伝えします。

この記事が皆さんの役に立てば幸いです。

## 環境
– rails
– docker
– taiwindcss

## Font Awesomeセットアップ

まずはFont Awesomeの公式ページにアクセスし、アカウントを作成します。

https://fontawesome.com/

登録後、以下の手順で自分用のCDNリンクを取得します。

### 1.ヘッダーメニューまたは画面中央の「**Your Kits**」をクリックします。

![スクリーンショット 2024-06-12 10.26.50.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

【超初心者未経験】udemyで「ruby on rails」を学習してみた ①

# ① はじめに

初投稿になります🌷
IT業界に未経験で転職して約1週間が経過し、
元々HTML/CSSの知識がごく僅かしかない私が、Ruby on Railsを学習してみました。
特に重要だなと思ったところや、自分の中で引っかかったところを中心にアウトプットしていきます!

# ② 使用した教材

今回はudemyの、
[はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう](https://www.udemy.com/course/the-ultimate-ruby-on-rails-bootcamp/?couponCode=KEEPLEARNING) を使って勉強しました。

![スクリーンショット 2024-06-10 13.29.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812430/7b404efc-7a79-8e27-f512-3662d2b67786.png)
                       

元記事を表示

【Ruby】世界恐慌が本当に木曜日から始まったのかを検証してみた

## はじめに
*この記事は、Rubyを使えば簡単に曜日を算出できるということを伝えたいという思いから生まれたものです。

さて、皆さんは「世界恐慌」と呼ばれるものを知っていますでしょうか?

おそらくご存知でしょうが、念のため簡単に説明しておきます。
### 世界恐慌とは?
1929年10月24日にニューヨーク・ウォール街の株式取引所で株価が大暴落したことによって世界的な不景気に突入しました。
これを世界恐慌といいます。
また、この株価大暴落は「暗黒の木曜日」とも言われいます。
### 暗黒の木曜日(1929年10月24日)って本当に木曜日?
世界恐慌の始まりが「暗黒の木曜日」と呼ばれていることについて、今更不信感を覚えたのでRubyを用いて検証しようと思います。

## Rubyで曜日を計算する方法は?
`.wday`メソッドを使うと、曜日を0(日曜)から6(土曜)の数字で表現することができます。
具体的な使用方法は以下のコードをご覧ください。
“`check.rb
# 今日は2024年6月3日(月)です。
week = [‘日曜日’, ‘月曜日’, ‘火曜日’, ‘水曜日’,

元記事を表示

OptionParser のオプショナルで non-space な指定の可否


Ruby の OptionParser の挙動の考察を書き残します。

OptionParser のあまり知られていなさそうなこととして、オプショナルなパラメーターをとるスイッチの定義の仕方が 2種類あり、指定時(パース時)の挙動が違うということです。


まず、ショートオプション、ロングオプションなどと呼ばれているものは、本来は「スイッチ」と呼ぶべきだと思います。
OptionParser::Switch クラスですから。

そして、ハイフン1つから始まるものはショートスイッチ、ハイフン2つから始まるものはロングスイッチです。また、スイッチには、▷パラメーター(argument)をとらないスイッチ、▷必須の(mandatory な / required な)パラメーターをとるスイッチ、▷任意の(optional な)パラメーターをとるスイッチ――の3つがあります。

パラメーターをとらないスイッチは、

* `opt.o

元記事を表示

OTHERカテゴリの最新記事