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

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

if分を極力シンプルに記述する

指定された複数の引数をそれぞれの条件で四則計算するプログラムを記述した時に省力できる記述が多かったので可読性を上げることの意識を忘れない為にメモします。

## プログラム内容
・メソッドの実引数として「1以上の正の整数」を3つ用意し、それぞれを仮引数a,b,c としてnumメソッド内で使用する
・第一引数と第二引数は足し算をし、変数abに代入する
・第三引数が3以下の場合は変数abを第三引数の値で割り、結果を出力する
・第三引数が4以上の場合は変数abを第三引数の値で掛け、結果を出力する

## 記述内容
“`
def num(a, b, c)
ab = a + b
if c <= 3 answer = ab / c puts answer else c >= 4
answer = ab * c
puts answer
end
end

num(1,5,3)
num(1,5,5)

# 出力結果
#=> 2
#=> 30
“`

## 見やすい書き方
“`
def num(a, b, c)
ab = a + b
if c

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの日付・時刻の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの日付・時刻の比較

# Python

https://qiita.com/papi_tokei/items/43b1d15a6694f576486c

# Ruby

https://qiita.com/prgseek/items/c0fc2ffc8e1736348486

# PHP

https://qiita.com/aminevsky/items/a222845ddbdd2536da56

# Java

https://qiita.com/suema0331/items/35da67426ffea0fb4435

# JavaScript

https://qiita.com/mzmz__02/items/e316d3962e7d3ecfebf8

# Perl

https://perlzemi.com/blog/

元記事を表示

【Ruby】用語学習

# はじめに
Ruby学習中に重要だと感じた用語や躓いた用語、忘れやすい用語をまとめていきます。

#### 目次
– GUI
– CLI/CUI
– touchコマンド
– Rubyの変数定義
– データ型(Array, Hash)

# GUI
グラフィカル ユーザ インターフェースの略
(Graphical User Interface)
– ユーザが視覚的にとらえて操作できるもの
→ マウスやタッチスクリーンなどで操作できる画面

# CLI/CUI
コマンド ライン インターフェースの略(Command Line Interface)
キャラクタ ユーザ インターフェースの略(Character User Interface)

– CLIとCUIはどちらも同じ意味で使われる
– すべてのやり取りを文字で行う(Windowsのコマンドプロンプトなど)
→ キーボードで操作する画面

# touch コマンド
`$ touch ファイル名`
– Linuxコマンド
– ファイルのタイムスタンプを変更するコマンド
– 存在しないファイル名を指定すると、ファイルの新規作成ができる

元記事を表示

【Ruby】用語学習

# はじめに
Rubyの学習中に重要だと感じた用語をまとめるため本記事を書きます。

### 目次
– オブジェクト指向
– Ruby
– Ruby on Rails
– クラスとインスタンス

## オブジェクト指向
– プログラミングをモノとしてとらえて、モノを組み立てていくことで成り立たせる考え方のこと
– このモノを組み立てる際の設計図を「クラス」という
– また、「設計図から作成された実態物」を「インスタンス」という

#### 補足
– 開発効率を効率化するという考え
– すべてを一から作ると時間がかかるため、あらかじめ型を作り効率よく開発するというもの
– オブジェクト指向の言語のひとつに**Ruby**がある

## Ruby
– 日本発祥のプログラミング言語
– 日本発祥のため日本語の情報も多く初心者も学習しやすい言語
– 自由度の高い言語(後付けでクラスの定義を変更できる)
– Javaなど他の言語に比べ「書きやすい」「読みやすい」といった特徴がある

#### 補足
– Webアプリの開発に向いており、スマホアプリの開発には向かない
(スマホアプリの開発はJava

元記事を表示

[Ruby]ハッシュ_値の再代入

# ハッシュの値の変更について
作成したハッシュにキーを指定することによって、値を再代入することができます

# 使い方
“`ruby
ハッシュオブジェクト[キー] = オブジェクト
“`
## 例えば・・・
“`
hash = {“Mike” => 26, “John” => 50}
hash[“Mike”] = 27
“`
上記によって、特定のキー”Mike”の値を26から27に再代入することができました。

# 特定のキーの値を取得するには・・・
“`ruby
hash.values[0]
# 27
“`
添字を指定することによって取得できます

元記事を表示

RailsエンジニアがRustでWebアプリを作るまで(1日目)

## 概要と注意
– 本記事は、完全未学習の状態からRustでAPIを書くまでの学習過程です。
– 筆者が普段主務で使っているのがRuby(Rails)のため、Railsに例えた比喩が度々出ます。
– Rustに関しての正確な説明はしていません。それどころか、間違った説明が度々出ます。あくまで学習の記録として読んでください。(訂正のコメントは大歓迎であります。)
– 習得したら、全ての過程を1つの記事にまとめます

## 1日目 (学習時間: 1h)

### Rustをinstallするよ!
兎にも角にもまずは環境を作らねばということで、Rustのinstall方法を検索
ありがたいことに[公式の日本語ドキュメント](https://www.rust-lang.org/ja/tools/install)があったので、書いている通りにinstall

“` sh
curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
# 使っているshellでPATHを通す
“`
ふむ、はいったようだ
“`
> rustup

元記事を表示

【ActiveModelSerializer】undefined method `read_attribute_for_serialization’

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## 状況

serializerを指定するところで下記のエラーが発生。

“`
NoMethodError:
undefined method `read_attribute_for_serialization’ for #
“`

“`ruby
def show
posts = …
render json: posts,
serializer: HogePostSerializer
end
“`

## 解決法
“`serializer“`ではなく“`each_serializer“`に変更する。
大体の場合“`each_serializer“`は“`index“`アクションで使うイメージがあったし、ドキュメントにもそう書いてあった
>To specify which serializer to use on ind

元記事を表示

【Ruby】ひらがな/カタカナ変換や全角/半角変換や漢字にマッチする正規表現などなど

# 目次
1. [概要](#概要)
2. [参考文献](#参考文献)
3. [使用した正規表現](#使用した正規表現)
4. [作ったメソッド達](#作ったメソッド達)
– [全角半角変換](#全角半角変換)
– [ひらがなカタカナ変換](#ひらがなカタカナ変換)
– [記号の削除](#記号の削除)
5. [破壊的メソッドにしたい時!](#破壊的メソッドにしたい時)
6. [Railsにおける便利な文字列操作のおすすめ記事](#Railsにおける便利な文字列操作のおすすめ記事)

# 概要
日本語の表記揺れなどに対応する必要があり、Stringクラスに定義する形で色々作ったのでメモしておきます。

# 参考文献
– https://easyramble.com/japanese-regex-with-ruby-oniguruma.html
– https://docs.ruby-lang.org/ja/latest/class/String.html#I_TR
– https://docs.ruby-lang.org/ja/latest/class/NKF.ht

元記事を表示

【Ruby】ダックタイピングとは

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## ダックタイピングとは
特定のクラスと結びつかない、クラスを跨ぐパブリックインターフェースを取り決め実装する作法。
下記の例は“`bark“`メソッドがダックタイプされていると言える。
もっと複雑な実装になってくると“`bark“`メソッドをmoduleにまとめて共通化する方が良さそう。

“`ruby
class Cat
def bark
puts ‘ニャーニャー’
end
end

class Dog
def bark
puts ‘ワンワン’
end
end

mike = Cat.new
poti = Dog.new

mike.bark
#=> ‘ニャーニャー’
poti.bark
#=> ‘ワンワン’
“`

### 継承よりもダックタイピングを積極的に使うこと
ダックタイピングを知ったとき継承とどう使い分けるのか気になった。
継承が設計上必要でなければ、ダックタイピングで楽しようとのこと。

“`ruby
class Animal

元記事を表示

sliceメソッドを使ったプログラムの備忘録

今日も学んだことを忘れないためにメモします。

## sliceメソッドとは
配列や文字列から指定した要素を取り出すことができるメソッド。
“`
array = [0,1,2,3,4,5,6]
puts array
#=> [0,1,2,3,4,5,6]

# 配列から引数で指定した要素を取得
ele1 = array.slice(1)
puts ele1
#=> 1

# 配列番号-4から4つ分の要素を取得
ele2 = array.slice(-4,4)
puts ele2
#=> 3, 4, 5, 6
“`

文字列だけでなく、配列、ハッシュからも取り出せる(ハッシュの場合はActiveSupportという外部ライブラリーを使う)

“`
# 配列からslice
array = [“Ruby”,”Python”,”Java”]
puts array.slice(0)

# 出力結果
#=> Ruby

# ハッシュからslice
require ‘active_support’
hash = {“Ruby”:”Rails”,”Python”:”Django”,”PHP”

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較

# Python

https://qiita.com/ny7760/items/d9c247781a790210936d

# Ruby

https://qiita.com/ima1zumi/items/28ef13f5af3d9afdeaf3

# PHP

https://qiita.com/suin/items/3edfb9cb15e26bffba11

# Java

https://qiita.com/motoki1990/items/cee6a4a75c0320b79ec4

# JavaScript

https://qiita.com/weal/items/3b3ddfb8157047119554

# Perl

https://perlzemi.com/blog/201610061475

元記事を表示

本番環境でFailed to upgrade to WebSocketエラー

### 状況
ローカルでは投稿に対してのコメントができる(ajax)のに、本番環境ではできていなかった。

### 原因
本番環境でactioncableが使えない状況だった

### 解決方法
“`ruby:EC2内
$ sudo vim /etc/nginx/conf.d/rails.conf
“`
以下を貼り付ける。
“`ruby:/etc/nginx/conf.d/rails.conf
upstream app_server {
server unix:/var/www/アプリケーション名/shared/tmp/sockets/unicorn.sock;
}

server {
#省略
# ——————-ここから——————-
# /cableのパスに対してwebsocketの仕組みを用いるための設定
location /cable {
proxy_pass http://app_server/cable;
proxy_http_version 1.1;
proxy_set_header

元記事を表示

【Rails基本編】美少女と学んだ気になれる講座

この講座は、Web業界未経験の**吉野 桜**と、その先輩である**堀切 あやめ**のかわいさをお楽しみいただくため、邪魔にならない程度の差し障りのないWeb技術の話を、お楽しみいただく番組です

## キャラクター

![20220920_resize.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/de425bd4-b556-4140-4e9f-52c22fdcd657.png)
吉野 桜: Web業界未経験

![20200920_resize.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/8e061b61-cc55-072c-118d-f5f86c2b61ed.png)
堀切 あやめ: Web業界三年目

## 本編

桜「うちのバックエンドってRuby on Railsですよね?」
あやめ「うん、そうだね」
桜「桜、実はRuby on Railsからっきしで……」
あやめ「そうな

元記事を表示

【入門】Ruby eachメソッドの様々な使い方を具体的に紹介

# はじめに
今回は、Rubyに標準で組み込まれている`eachメソッド`について、備忘録としてまとめます。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
Rubyに標準で組み込まれている`eachメソッド`についてアウトプット

# この記事の内容
1. each_with_index
2. each.with_index
3. eachの入れ子
4. each_slice
5. each_key
6. each_value

# 1. each_with_index
eachメソッドと同様に、要素の繰り返し処理を行いつつ、その要素が何番目に処理されたものなのか表示するメソッドです。
eachでループを回しつつ、それぞれのデータ(要素)に番号を振りたい時などに使います。

– 書き方
“`ruby
配列名.each_with_index do |item, index|

end
“`
– 基本的な書き方
“`ruby
#書き方①
foods = [“あんぱん”, “メロンパン

元記事を表示

getsメソッドを利用したプログラムの備忘録

今日も学んだことを忘れないてためにメモします。

## getsメソッドの種類
getsメソッドが実行されるとターミナルがコマンド入力待ちの状態に変わりユーザーがエンターキーを押すまで文字を入力できる。
送られてきた文字列オブジェクトの後には改行が入る。
gets.chompとすることで改行が入らない。
getsとgets.chompは「数字」を入力しても「文字列」の扱いにしてしまう。
gets.to_iとすることで「数字」として扱える

## プログラム内容
getsメソッドを利用しての位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムになります。
“`
> 二桁の整数を入力してください
> 15

# 1 + 5 と 1 × 5 をそれぞれ計算

> 足し算結果と掛け算結果の合計値は11です
“`

10の位は整数を10で割ったものを更に10で割った計算結果、
1の位は整数を10で割った計算結果の余りで求められる。

Rubyの性質上、整数同士(integer型)の計算だと返り値は整数になるので、小数点以下

元記事を表示

【Rails】【JavaScript】Ajaxを用いてメモ帳の様なアプリをフォームで作る方法

大阪でRailsを中心に学習している薬剤師エンジニア(初学者)こと、ヨマ(@yoma_2003)です!
**Ajaxを用いてメモ帳の様なアプリをフォームで作る方法**をまとめます。

※おことわり※
断定口調でまとめますが、初学者であるため間違い等あればご指摘頂けると嬉しいです。

# はじめに
### やりたいこと
以下の様な**自動更新機能のあるメモ帳(追加・削除できる)アプリ**を作りたい。

![fyj9o-w9rr8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711042/42ed6ece-62d4-4ab8-5d90-3d0b5e097e24.gif)

### アプリの要件
具体的には以下の様な要件を満たすアプリを作成します。
– ページ遷移がない(index.htmlのみ)
– フォームに入力すると、自動で更新される
– 新規ボタンを押すと、フォームが追加される
– 削除ボタンを押すと、フォームが削除される
– 操作後に更新日時が更新される

# 本記事のポイント

**・データ更

元記事を表示

プログラミング教材の模範解答が模範的でない件

Qiita の新着記事を眺めていると,ときどき同じお題に取り組んだ結果を書いたものをいくつも目にすることがあります。
「模範解答」があったりするので,おそらく何らかの教材に取り組まれたのだろうと思います。
その「模範解答」のコードを見て首を傾げることがしばしばあったので,本記事で具体的に指摘してみたいと思います。
取り上げるのはすべて Ruby のものです。

たいがい出典が書かれていないので,原典を参照することができないのですが。

※本記事は,そういった記事および著者を批判する意図を微塵も持っていません。むしろ応援したい気持ちで書いています。
※また,取り上げた教材およびその提供者を侮辱したり非難したりするつもりもありません。不遜かもしれませんが改善に役立てば幸いです。

なお,教材によってはお題そのものがおかしかったりしますが,今回は取り上げません。

今回,三つのお題を取り上げました。引用したのは,それぞれのお題について,見つけることのできた最も新しい記事です。

# 例:Ruby の each の入れ子

お題は

“`rb
fruits_price = [[“apple”

元記事を表示

git-secretsでコミットができなくなった場合の対処法

### 環境
ソースツリー

### 概要
git-secretsによって、コミットできなくなった場合の対処法の記事はたくさんあるが、
それでは対処できなかったので、備忘録として残しておく。今回は、一旦git-secretsを完全に取り除いてコミットさせるようにする。

### エラー内容
“`
git: ‘secrets’ is not a git command. See ‘git –help’.
“`

## 解決手順
### ①git-secretsをアンインストールする。
“`
$ brew uninstall git-secrets
“`
これでコミットできるようになったかと思いきや、またしても以下のエラーが出る。
“`
git: ‘secrets’ is not a git command. See ‘git –help’.
“`
調べていくうちに、各リポジトリの「.git/hooks」にある「commit-msg, pre-commit, prepare-commit-msg」の3つを消さなければいけないらしい。

## ② 削除する
該当のリポジトリに

元記事を表示

【Rails】render :json に modelメソッドの返り値を追加する方法

# きっかけ
`controller`の返り値を`json`形式で返却する時、モデルで定義されている`attributes`しか返すことができません。そんな時、他の`attributes`を追加する方法が分からず困ることがあったので、備忘録として残します。

# attributeを追加する
`render json:` に、`methodsオプション`をつけ、`model`で定義したメソッドを呼び出す。

# 使い方
例えば・・・
以下のようなモデルがあったとする。
“`ruby
create_table “users”, force: :cascade do |t|
t.string “first_name”, null: false
t.string “last_name”, null: false
t.datetime “created_at”, precision: 6, null: false
t.datetime “updated_at”, precision: 6, null: false
end
“`

で、以下のようにで`ActiveRecor

元記事を表示

真偽値による条件の組み合わせ

本日アウトプット練習2回目。

以下の条件を満たすメソッドを実装。

・第一引数のnumが1以上かつ10以下の範囲であればTrueを出力すること
・第二引数のoutside_modeがTrueの場合は、第一引数numが条件範囲外でもTrueを出力すること
・それ以外はFalseを出力すること

“`rb
def in1to10(num, outside_mode)
# ここに条件式を記述する
end

# 呼び出し例
in1to10(5,false)
in1to10(11,false)
in1to10(11,true)

# 出力例
#in1to10(5,false) →True
#in1to10(11,false) →False
#in1to10(11,true) →True
“`

#### 最初自分で書いたダメな例
“`rb
def in1to10(num, outside_mode)
if num >= 1 && num <= 10 puts "True" else puts "False" end end in1to10(5,fal

元記事を表示

OTHERカテゴリの最新記事