Ruby関連のことを調べてみた2022年04月06日

Ruby関連のことを調べてみた2022年04月06日

rbenvまとめ

# install
brew update
brew install rbenv ruby-build
rbenv –version
brew upgrade rbenv
rbenv init

# how to use
rbenv install -l
rbenv install 2.5.0
rbenv versions
rbenv global 2.5.0

元記事を表示

Ruby で Array や Hash のメソッドを使いこなしたい

Ruby には、多くのメソッドが用意されています。
私もそうでしたが、他の言語は知っていて Ruby を知らない場合、Ruby のメソッドを使いこなせていないことがあります。
他言語経験者が、知っておくべき Ruby の Array, Hash のメソッドをユースケース毎に書きたいと思います。

## 特定の要素を取得する (Enumerable#find)

特定の条件を満たす要素を取得する場合、
ループと if 文を駆使して探すことを考えるかもしれませんが、

“`ruby
tasks.each do |task|
next unless task.state == state

found = task
break
end
“`

`find` 一行で取れます。

“`ruby
found = tasks.find { |task| task.state == state }
“`

## 特定の要素を削除する (Hash#delete_if)

特定の条件を満たす要素を削除する場合、、、(以下略

“`ruby
schedules.each do |key

元記事を表示

Ruby

こんにちは!初めまして!現在都内大学3年生になります、重村 倫音と申します。
今回は私が大学2年生の秋学期のうち3ヶ月間で習得したruby言語について簡単に初心者さんにもrubyが何なのかという説明記事を書いてみましたのでぜひ読んでみてください!

Rubyというのは、数多くあるうちのプログラミング言語の一種です。主に多くの人に知られているウェブサイト、twitterやcookpadと言ったウェブサービスはrubyを通して作られています。数多く存在するプログラミング言語の中でも、rubyは利用者数がかなり多いです。その人気というのも、

-シンプル
-起動の速さ

という二つの観点が主に挙げられます。

最初にシンプルという観点でプログラミング初心者さんでも簡単に自分のウェブページが作れてしまうところなんです!私自身、プログラミングのプの字も知らずにrubyの言語習得に挑んでみたのですが、ruby on railsというコマンドを打つだけで大枠を自動生成できる機能があるフレームワークにより、本来とても複雑になっている作業が自分でコードの中に数回コマンドを入力するだけで自身の作りたいウェ

元記事を表示

テストコード(RSpec)の構文

テストコードの大まかな全体構造は、下記の通りである。

“`ruby
require ‘rails_helper’

RSpec.describe …, type: :… do
describe ‘どの機能に対してテストを行うか’ do
context ‘テストを行いたい特定の条件’ do
it ‘どのような状況のテストを行うか’ do
end
end
end
end
“`

元記事を表示

良いコードとは

# 今回のアウトプットの目的
良いコードとはどのようなものか?
良いコードを書くにはどうすればよいか?
WEBアプリケーション開発をする上でとても重要だと感じたので、
改めて整理したいと思います。

# 良いコードとは
**結論:他人が見てわかりやすく意味のわかるコードが一番良いコードだと思います**

具体的にどのようなことを意識すれば良いコードになるのか纏めてみたいと思います。
①わかりやすいコメントを書く、and 無駄なコメントはしない。
②変数名やメソッド名は誰が見てもわかりやすい名前にする。
③インデントをつけてしっかりと揃える。
④ネストしすぎない。
⑤直接数字を記述するのではなく変数を利用する。

**またDRYの原則も重要だと思います**
DRY(Don’t Repeat Yourself)とは?
=「同じ情報を繰り返し定義しない」という考え方
ダメな例
“`not_dry.rb
a = 100 * 1.1
b = 200 * 1.1
c = 300 * 1.1
“`
良い例
“`dry.rb
tax = 1.1
a = 100 * tax
b = 200 * t

元記事を表示

オブジェクト指向とは

オブジェクト指向について整理したいと思ったのでアウトプットします。

# オブジェクト指向とは?
A.「ある役割を持ったモノ」ごとにクラス(プログラム全体の設計図)を分割し、モノとモノとの関係性を定義していくことでシステムを作り上げようとするシステム構成の考え方のこと。

# そもそもオブジェクトとは何なのか?
(わかりやすい記事があったので自分なりに解説)
A.ざっくりでいうと「モノ」
プログラミング視点で考えてみる。
例えばケータイでいうと、
**オブジェクト:ケータイ**
**クラス:スマートフォン**
**インスタンス:iPhoneやAndroid**
こんな感じで考えるとわかりやすいと思った。

# オブジェクト指向のメリット
①効率よくプログラムを設計・開発できる
例、サイト制作などで色違いのボタンを5つ作るとします。
オブジェクト指向を使用しない場合は5つ全てにプログラムを実装しなければならない。
しかしオブジェクト指向を使用すれば1つのボタンの「モノ」として作成し設定してしまえば、
色を変えたり、文字を変えたりするだけで済む。

②不具合の原因を特定しやすくなる
オブジ

元記事を表示

本日のRuby基礎練習問題(22/4/5)

# 問題
以下の要件を満たすbubble_sortメソッドを実装しましょう。
要素が数値である配列を受け取り、数値の小さい順に並べ替えること
小さい順に並べ替えた結果を出力すること
**↓雛形**
“`ruby.rb
def bubble_sort(data)
# 配列の数を数える処理を記述
length =

# for文を2つ使用する
# 先頭から隣の数同士の大きさを比べる
# 先頭側の要素の方が大きい場合は、配列の位置を隣同士で交換する
end

# 呼び出し例
number = [1,23,4,6,12,45,79]
bubble_sort(number)
puts number
“`
出力例
1
4
6
12
23
45
79

**ヒント**
・for文を使う
・for文の入れ子を使う
・「隣同士の大きさを比較し、もし先頭側の文字の方が大きい場合は位置を交換する」という処理をする
・配列内の要素の入れ替えを行う
方法:array[a], array[b] = array[b], array[a]

# 私の回答
“`ruby.rb
def bub

元記事を表示

テストコード(RSpec)の種類

単体テストとは、モデルやコントローラーなどの機能ごとに、問題なく動作するか確認するテスト。
結合テストとは、ユーザーがブラウザで操作する一連の流れを再現して、問題なく動作するか確認するテスト。

元記事を表示

Dockerとは 開発環境やファイルについて解説

# はじめに
Dockerの開発環境とはどのようなものか、Dockerでの環境構築の際に作成するファイルについてまとめました。
*この記事は環境構築のやり方を解説した記事ではないため、この記事を参考にして環境構築した場合の動作の保証は一切しません。
# Dockerの開発環境
Dockerのソフトウェアをインストールすると、Moby LinuxというLinuxの軽量な仮想マシンが裏で作成されます。
そして、DockerでRubyの実行環境を立ち上げると、Moby Linux上にコンテナという仮想環境が作成されます(RubyのコンテナはDockser HubというサイトにあるファイルをDLして作成される)。
コンテナのもとになるファイルをまとめたものをイメージと呼びます。Rubyのイメージには、RubyそのもののプログラムやRubyに関するライブラリが含まれています。また、Linuxとして動作するために最低限必要なファイルも含まれています。このコンテナにPC上のRails用のフォルダをマウントして開発を行う。これによって動作確認が行えるわけです。
![image.png](https:/

元記事を表示

【LeetCode】5. Longest Palindromic Substringを解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの5. Longest Palindromic Substringを解いていく。

## 問題文を和訳
– 文字列sが与えられた場合、sで最も長い回文部分文字列を返します。
– Input: s = “babad”
– Output: “bab”
– Note: “aba” is also a valid answer.

## 回答
“`5_LongestPalindromicSubstring.rb
def longest_palindrome(s)
left = 0
right = 0
for i in 0…s.length do
odd = length_from_center(s, i, i)
even = length_from_center(s, i, i + 1)
longest = [odd, even].max
if longest > right – left
left = i – (longest – 1) / 2
right =

元記事を表示

TOTO くじ を題材として Ruby で スクレイピング

# はじめに
`Nokogiro`の練習として、TOTOくじを題材にスクレイピングをやってみました。
# TOTOくじ
https://toto.yahoo.co.jp/vote/toto

例えば、投票状況から皆さんが本命視している組合せを調べます。
# Nokogiri
“`rb
require ‘nokogiri’
“`
`require`します。
“`rb
doc = Nokogiri::HTML.parse(html)
“`
htmlソースをパースします。
今回は、細かなオプションなしでうまくいきました。
“`html

// 必要な部分を抜き出す ↓

<

元記事を表示

RESTとは

## RESTとは

– RESTとはアプリを作る時の考え方のこと!
「ネットワーク上に置かれたデータ(リソース)に対して表示、作成、更新、削除などの操作を行う」という考え方のこと!

“`
Representational : 代表的なもの
State : ある状態
Transfer : 転送、伝達
“`

この考え方に基づいて作られたアプリをRESTフルという。
このRESTフルなアプリ作ることで、結果的に何度も同じことを書かずに済み、開発や保守がより簡単になる

## QどうやってRESTフルなアプリなアプリを作るのか。

ルーティング(routing)

ルーティング(routing)とはURLとアクションを結びつけるもの

URL
URLとはインターネット上に存在するデータを場所を示すもの。身の回りのもので例えると住所と似ている。
“`
Uniform :ユニフォーム、画一的、同じ
Resource :資源、資料、仕様
Locator :位置情報、所在地
“`

元記事を表示

Railsのコーディング規約を作る際に参考にしたもの

# 初めに
Rails/Rubyのコーディング規約やコーディングルールを整備した時に参考にしたもの、使ったものなどをまとめました。

# コーディング規約
独自の規約を作るよりは、一般的なコーディング規約を参考にしましょう。
– Ruby
– [Rubyアソシエーション: コーディング規約](https://www.ruby.or.jp/ja/tech/development/ruby/050_coding_rule.html)
– Rails
– [The Rails Style Guide](https://github.com/rubocop/rails-style-guide/blob/master/README.adoc) / [日本語訳](https://github.com/satour/rails-style-guide/blob/master/README-jaJA.md)
– Rspec
– [Better Specs. Testing Guidelines for Developers.](https://www.betterspecs.o

元記事を表示

Railsの認証ソリューション deviseを使おう

# 初めに
ちょっと前の記事でOpenID Connectを書いたは良いものの、そもそもdevise導入しなきゃな…
ということでdeviseの導入をやっていきます。ただ、OpenID Connectやるだけだったらdevise入れなくても大丈夫です。

# deviseとは
Railsで最もメジャーな認証系のgemです。ログイン機能やパスワード変更など簡単に行えます。

– [heartcombo/devise: Flexible authentication solution for Rails with Warden.](https://github.com/heartcombo/devise)

# 環境
– OS: Windows11 Pro 64bit
– Version: 21H2
– OS build: 22000.493
– WSL2: Ubuntu 20.04.4 LTS
– Ruby: 3.1.1p18
– Rails: 7.0.2.2

# deviseの導入
公式の[Getting started](https://gith

元記事を表示

rails app 取得したデータを並び替えるには orderメソッド

# 結論

orderメソッドを使う。
取得したデータを並び替えるメソッド。

“`
モデル名.order(並び替えたいカラム名:)
“`

## 具体例

モデル名:userの時

“`app/controller/モデル名_controller.rb

class UsersController < ApplicationController def @users = User.order(:id) end # @usersに格納している、右の内容を # idの順番で並べる。 end ``` 一旦、以上です。

元記事を表示

【selenium】session not created: This version of ChromeDriver only supports Chrome version XXX

# 1. 環境
“`Ruby:terminal
$ ruby -v
ruby 2.6.9p207 (2021-11-24 revision 67954) [x86_64-darwin19]
$ rails -v
Rails 5.2.7
“`
“`Ruby:Gemfile
gem ‘rspec-rails’, ‘~> 3.7’
gem ‘factory_bot_rails’, ‘~> 4.11’
“`
– System Specを実行するドライバとして、“`Headless Chrome“`を使うため、“`selenium_chrome_headless“`をドライバーとして設定。

# 2. はまったこと
– [「現場で使える Ruby on Rails 5速習実践ガイド」](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3

元記事を表示

Ruby 試験対策 例外処理編

# 基本形
第一引数、`例外クラス`、第2引数,`エラー文`
“`
raise 例外クラス、ORそのインスタンス , “エラー文”
“`
※第一引数は、省略可能。その場合は、`RuntimeError`クラスの例外が発生。
ただ、このままだとエラーが発生した場所で止まってしまう。
## RuntimeErrorとは
特定の例外クラスには該当しないエラーが発生した場合や例外クラスを省略した場合などに起こる

## 変化形
“`
err = 例外クラス.new(“エラー文”)
raise err
“`
## 例外処理のbegin
“`
begin
通常はここが実行
rescue
  エラーがあれば、実行
else
  通常が実行されれば、実行
ensure
  絶対の実行
end
“`

参考図書
[Ruby技術者認定試験合格教本(Silver/Gold対応)Ruby公式資格教科書](https://gihyo.jp/book/2017/978-4-7741-9194-2)

元記事を表示

vscode rails環境構築時のエラー brew doctor

# vscodeにrailsの環境構築の中で出たエラー
homebrewをインストールした後“`brew doctor“`を行った時
“`
Homebrew/homebrew-core (git ******** last commit *******)
*****@mbp ~ % brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don’t worry or file an issue; just ignore this. Thanks!

Warning: Your Command Line Tools are too outdated.
Update them from Software Update in System Preferences or ru

元記事を表示

定数だけを切り出したファイルを作り、複数クラスで使えるようにする

### やりたいこと
Rubyで定義した定数を他のクラスでも使いたいとき、クラス名::定数名のように書くと思う。

ほとんどの場合は問題ないけれど、ときどき下記のような違和感や問題を感じるときがある。

– 関連が強いor内容が似てる複数のクラスで同じ定数を使いたいとき、特定のクラスにだけ定数を記載し、他のクラスではクラス名::定数名と書くことへの違和感
– クラス名が長いときなどに読みづらくなる

なのでより読みやすい、使いやすい形にしたかった。

( “`config/initializers/constants.rb“`で共通の定数を設定する方法もあるが、そこまで全体的に使いたい訳でもない場合を想定 )

### どうするか
定数用のmoduleを作って、定数を使いたいクラスにそのmoduleを読み込んで使う

### やりかた

1. moduleを作成し、定数を記載する
2. 使いたいクラスで読み込む

#### ① moduleを作って定数を書く

HogeConstants.rbを作成し、定数を書く

“`
module HogeConstants

NEKO

元記事を表示

AtCoder ABC の自分の参加状況をスクレイピングで調べてみる

# 概要

わたしは AtCoder の過去問をテキトーに解くだけでやっているうち、どの問題をどれだけ解いたのかわからなくなってしまいました。なので、スクレイピングで過去の ABC の解答状況を表示させるコードを書いてみました。

公式 API があればいちばんよいのでしょうが、どうもないようなので、Ruby を使ってスクレイピングしています。問題があればコメント欄で御指摘願います。

# 結果

“`
ABC245
B – Mex (Elixir (1.10.2))
D – Polynomial division (Elixir (1.10.2))
C – Choose Elements (Elixir (1.10.2))
A – Good morning (Elixir (1.10.2))
D – Polynomial division (Ruby (2.7.

元記事を表示

OTHERカテゴリの最新記事