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

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

rails永続的なセッション

# 概要
railsを勉強している時に永続的なセッションを作成するのに
便利なメソッドがあったので記録として残します。

# 実際のコード
“`.rb
cookies[:remember_token] = { value: remember_token,
expires: 20.years.from_now.utc }
“`
上記は20年後期限切れになる記憶トークンです。
これをメゾットを使うことで
“`.rb
cookies.permanent[:remember_token] = remember_token
“`
のように書くことができます。

元記事を表示

[Rails7]submitにつけるdisable_withオプションについて

## はじめに

Rails7以前までは[[Rails]submitタグにつけておきたいdisable_withオプション](https://qiita.com/sue738/items/09f569bdc3a73d26df88)の記事にあるように、data属性に`disable_with`を付与すれば、二重送信が防止できておりました。

“`slim
= form_with(model: model) do |form|
= form.submit ‘登録’, { data: { disable_with: ‘登録中・・・’ }
“`

ですが、Rails7移行では、`disable_with`オプションが機能しなくなっているので、どのように実現したかを残しておきます。

## どう変わったのか

[Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ
](https://qiita.com/jnchito/items/5c41a7031404c313da1f#disable_with%E3%81%AE%E6%8C%87%E5%AE

元記事を表示

CocoaPodのインスコで詰まった話

# 背景
アプリに地図を入れたい!と思い立ち、[こちらのチュートリアル](https://developers.google.com/codelabs/maps-platform/maps-platform-101-swift?hl=ja#2)を進めていたところ、パッケージマネージャーにCocoaPodを使うようだったのでインストールすることにしました。
しかし、Macに標準で入っているRubyのバージョンが古かったためインストール自体出来ないという踏んだり蹴ったりな状況となりました。
かなり詰まったため、備忘録として残します。

# 作業録
ではここから私の作業録を書いておきます。

## そもそもの目的
やりたかったことは単純明快で**CocoaPodをインストールする**こと、それにつきます。

## 試したこと
### CocoaPodの公式サイトに則ったインストール
公式サイトに行くと
“`terminal
$ sudo gem install cocoapods
“`
でインストールすることとありますが、これではエラーが出ます。
“`
You don’t have w

元記事を表示

Rubyの基本概念だけを学習してみた

# はじめに

Ruby は、そのシンプルで直感的な文法、強力なメタプログラミング機能、そして豊富なライブラリによって、多くの開発者に愛用されています。この記事では、Ruby 独自の概念について学び、そのメリットを探ります。

# オープンクラス

Ruby では、既存のクラスやモジュールを再オープンして、その定義を拡張することができます。この特性は「オープンクラス」と呼ばれ、動的にクラスを変更することができます。

“`rb
class String
def shout
self.upcase + “!!!”
end
end

puts “hello”.shout # “HELLO!!!”
“`

この例では、標準の String クラスに shout メソッドを追加しています。これにより、全ての文字列オブジェクトで shout メソッドを使用できるようになります。

## オープンクラスのメリット

1. 柔軟性: 既存のクラスに対して動的にメソッドを追加できるため、プログラムの柔軟性が向上します。

2. コードの再利用: 標準ライブラリやサードパーティのラ

元記事を表示

Rubyでデザインパターン (2) Adapterパターン

## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。

## Adapterパターンとは
Adapterパターンとは、既存のクラスを変更せずに、新しいインターフェースに適用させるためのデザインパターンです。

詳しくはこちらをご覧ください。

https://qiita.com/shoheiyokoyama/items/bd1c692db480b640c976

## Rubyでのコード例
Rubyにはインターフェースがないため、moduleで代替します。

“`rb
module NewInterface
def new_method
fail NotImplementedError
end
end

class OldClass
def old_method
‘This is OldClass method’
end
end

class Adapter < OldClass include NewInterface def new_meth

元記事を表示

最終課題を終えて

2024年2月からプログラミングオンラインスクールに入学し早4ヵ月。
PCを購入するところから:sweat_smile:始まり、ようやく最終課題のフリマアプリを完成できたので全体を通して振り返りや今後についてまとめたいと思います。

#### きっかけ
プログラミングを習おうと思ったきっかけは現職(美容師)であと何年働けばいいんだろう・・・?という不安からでした。
一人息子を一人で育てる親として、現職では収入も時間も満足に確保できないと考えていました。

#### なぜプログラミング?
これは単純に憧れです:flushed:
現場で立ち仕事、カラー材でシャツは汚れ、手は荒れ、長時間労働している美容師からすると(スマートに仕事をこなす美容師さんもいます!あくまで私の現状です:pray_tone1:)、
PCカタカタ(カッコいい!)、リモートワークで家事育児仕事をこなせる仕事って魅力的過ぎました!
また、淡々と同じスタイルを100回切ってようやく1スタイル身につけたり、毎日何十人・月何百人の初めましてのお客様と約2時間マンツーマン対応する臨機応変能力は、プログラミング初心者に必要な探求心・

元記事を表示

Rubyでデザインパターン (1) Iteratorパターン

## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。

## Iteratorパターンとは
Iteratorパターンとは、集合体に対して順番にアクセスするためのインターフェースを提供し、その実装を容易にするデザインパターンです。
詳しくは以下の記事をご覧ください。

https://qiita.com/shoheiyokoyama/items/3f42d0057d9d5a861039

## Rubyでのコード例
元々のJava等での実装に則って実装すると以下のような形になると思います。
ただ、Rubyではこのような実装を行うことはあまりないと思います。(詳しくは次の項で解説します)

“`rb
class ItemListIterator
def initialize(item_list)
@item_list = item_list
@current_index = 0
end

def has_next?
@current_index < @

元記事を表示

Quineから始めるRuby超絶技巧プログラミング入門

# はじめに

あなたは **超絶技巧プログラミング** を知っていますか?

書籍「あなたの知らない超絶技巧プログラミングの世界」では以下のように書かれています。

> 超絶技巧プログラミングとは、「実用的なプログラミング言語を使って全く実用的でないものを作る遊び」です。

超絶技巧プログラミングの例として、以下のようなものがあります。

上記のポストを投稿した tompng さんが RubyKaigi にて紹介していた超絶技巧プログラミングに魅了され、僕も入門してみました。

この記事では、書籍「あなたの知らない超絶技巧プログラミングの世界」の紹介と、書籍に記載の方法で作ってみたオリジナルのプログラムの紹介を行います。

https://gihyo.jp/book/2015/978-4-7741-7643-7

# 超絶技巧プログラミング

様々な種類の超絶技巧プログラミングがあります。書籍では以下のプログラムの紹介がありました。

– 自己生成プログラミング (Quine

元記事を表示

Ruby safe navigation operator (ぼっち演算子)

# 概要
Ruby on Railsを勉強していて
あまり見かけない演算子が出てきたので
メモとして残しておきます。

# 例
“`.ruby
user && user.authenticate(params[:session][:password])
“`
のような論理値(boolean値)の条件式を
“`.ruby
user&.authenticate(params[:session][:password])
“`
という風に短縮して記述できる。

元記事を表示

実務未経験の初心者が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)
                       

元記事を表示

PythonエンジニアがRubyでスクレイピングをしてみた

# はじめに
普段、Pythonでコードを書いていますが、最近Rubyにも興味を持ち始めました。
言語によって同じコードでどのくらい違いがあるのか気になったので、RubyとPythonで`Selenium`を使った同じスクレイピングを行ってみました。
学習のためのアウトプットなので、間違い等あれば指摘していただけると幸いです。

# Rubyのスクレイピング

## 1. パッケージのセットアップ
“`shell
gem install selenium-webdriver
“`

## 2. コード
“`ruby
require ‘selenium-webdriver’

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument(‘–headless’)
driver = Selenium::WebDriver.for(:chrome, options: options)

driver.navigate.to ‘https://qiita.com’

puts driver.title

元記事を表示

Ruby エイリアスメソッド

# エイリアスメソッドについて
Rubyには全く同じ機能でありながら異なる名前のメソッドが複数存在します。これらのメソッドのことをエイリアスメソッドと呼びます。
可読性向上やプログラマーの好みによって使い分けられています。(メソッドによっては派閥がわかれているとか…)

以下にエイリアスメソッドの一例を記載します。

# エイリアスメソッド一覧

## Array クラス

– `map` と `collect`
– `size` と `length`
– `slice` と `[]`
– `append` と `push`
– `prepend` と `unshift`

## Hash クラス

– `store` と `[]=`
– `size` と `length`
– `key` と `index`
– `to_s` と `inspect`

## String クラス

– `size` と `length`
– `slice` と `[]`
– `to_s` と `to_str`

## Enumerable モジュール

– `collect` と `map`
– `f

元記事を表示

低凝集について学んだことをRubyコードに落としてみる

ミノ駆動さんが書かれた「良いコード/悪いコードで学ぶ設計入門 」という書籍の**低凝集**について、自分が理解しやすいRubyのコードに落したものを書いていきます。
自己理解を目的としているのでメモ程度に雑に書いていきます。

## Staticメソッドの誤用
Staticメソッドは、クラスのインスタンスに依存しない処理を定義する際に便利ですが、これを乱用するとクラスの凝集度が低下します。以下は、誤ったstaticメソッドの使用例です。

“`ruby
class Utility
def self.calculate_sum(numbers)
numbers.reduce(:+)
end

def self.format_date(date)
date.strftime(“%Y-%m-%d”)
end

def self.send_email(to, subject, body)
# 仮のメール送信処理
puts “Sending email to #{to}: #{subject}\n#{body}”
end
end
“`

元記事を表示

条件文のリファクタリング-ポリシーパターン

特定の処理を実行するための条件がコンテキスト毎に異なる場合のリファクタリング作業で、ポリシーパターンの「条件をクラス化する」という考え方がとても役立ったので紹介します。

参考にした書籍はこちら

良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方

## 例)キャンペーン機能

キャンペーン機能の仕様として、以下の項目があるとします。

1. キャンペーンにはカテゴリーが存在する

1. キャンペーンの様々な処理はカテゴリー毎に異なる(部分的に一致しているものもある)

例として、キャンペーンの参加条件について考えます。
カテゴリーが normal のキャンペーンは以下のように実装されているとします。
joinable? メソッドは、キャンペーンに参加できるかどうかを真偽値で返します。
以下の全てを満たすときに true を返します。
– 有料化員である
– キャンペーンを達成していない
– キャンペーンに参加していない

“`ruby
class Campaign::Normal
def initialize(campaign)
@cam

元記事を表示

DockerのHealthCheckでコンテナの実行順序を制御する。

## はじめに
プログラミング学習コミュニティ「progaku」で行っているチーム開発で取り組んだ内容になります。

## コンテナの実行順序の制御が必要になった場面
Dockerで環境構築を行い、初めてDB作成のコマンド実行する際に以下のようなエラーが発生
“`
docker compose run backend rails db:create
“`

エラー内容
“`terminal
[+] Building 0.0s (0/0) docker:desktop-linux
[+] Creating 3/0
✔ Network [ネットワーク名] Created

元記事を表示

基礎知識④Active Recordについて

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

出題例にActive Recordについての質問があり、
そういえばちゃんと説明できないな〜…と思ったので学習内容をまとめる。

## Active Recordとは
Ruby on Railsで使用されるデザインパターンの一つで、**DBとのやり取りを簡素化してくれる**もの。
本来DBとやり取りをするためにはDB言語であるSQLが使われますが、
RailsにはこのActive Recordが適用されているため、
複雑なSQL文を書かなくてもRubyで直感的にDBとのやり取りを記述することができる。

### Active Recordで出来る主なこと
– CRUD機能のサポート
Create Read Update Deleteといった基本的なデータ処理機能を
メソッドを用いて簡単に行うことができる。

– モデル同士のアソシエーション
異なるモデル間を結ぶことができます。
ex)1ユー

元記事を表示

Rubyのoptparseの使い方をわかりやすく解説

Rubyでコマンドライン引数を扱いたい場合、どのように実装したら良いでしょうか?
Rubyでは、そうした場合に使える標準ライブラリとして「optparse」というライブラリが用意されています。optparseを使えば、複雑なコマンドライン引数の定義と解析を簡単に行うことができます。
本記事では、optparseの基本的な使い方をどこよりも分かりやすく解説したいと思います。

## optparseの基本的な使用の流れ
Rubyのリファレンスを見ると、optparseを使用する流れについて以下のように書かれています。

1. OptionParserオブジェクトoptを生成する
2. オプションを取り扱うブロックをoptに登録する
3. opt.parse(ARGV) でコマンドラインを実際に解析する

これらのステップにより、コマンドライン引数の処理を簡単に実装することができるのですが、そもそもoptparseを初めて使用する人にとっては、この流れだけを見てもさっぱり分からないと思いますので、以下のサンプルコードを使って、各ステップの内容を具体的に説明していきます。

“`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

元記事を表示

OTHERカテゴリの最新記事