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

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

superってなんだ?

superとは親クラスの同名のメソッドを使えるようになるということです。
以下のコードではHogeクラスを親クラスにしてみる
“`
class Hoge
def hogehoge
p ‘ほげ!’
end
end

class Huga < Hoge def hogehoge p 'ふがふがふが!' end end class Fuga < Hoge def hogehoge super end end ``` ## Hugaにhogehogeメソッドを呼び出してみる ``` huga = Huga.new huga.hogehoge => “ふがふがふが!”
“`
親クラスのhogehogeメソッドはオーバーライド(上書き)されます

## Fugaにhogehogeメソッドを呼び出してみる
“`
fuga = Fuga.new
fuga.hogehoge
=> “ほげ!”
“`
このように親クラスの同名のインスタンスメソッドを子クラスで使えるようになるもの。
それがsuperというものです。

短いですが以上です。何か間違い

元記事を表示

ruby -v でrbenvで指定したバージョンが表示されない時の対処法

## 実行環境
– macOS Monterey 12.2.1
– rbenv 1.2.0

## 事象
rbenvでローカルバージョンを指定したのにruby -vするとシステムのrubyバージョンが表示される。
“`shell:ターミナル
$ rbenv local 2.7.5
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]
“`
2.7.5になってない!なんで!?という状態です。

## 原因
**パスが通っていないことが多い。**

– rubyコマンドがどのディレクトリの実行ファイルを呼んでいるか確認してみましょう
“`shell:ターミナル
which ruby
/usr/bin/ruby #←これ、macのRuby
“`
rbenvのパスは`/Users/`**macのユーザ名**`/.rbenv/shims:`なので、
これのパスを通してやる必要があります。

ちなみにパスを通すというのは**PATHという環境変数にrbenvのプログラムが格納されてい

元記事を表示

コントローラの生成と削除 【Ruby on Rails】

## コントローラの生成
コントローラ名「Static Pages」を作る際に、表記をキャメルケースの`StaticPages`とした場合、以下のコマンドによりコントローラが生成できる。このタイミングでアクションを作成したい場合は、続けて半角スペースを空けて記載する。(今回は、homeとhelpアクションを作る)
“`
$ rails g controller StaticPages home help
“`
## コントローラの削除
このとき、「static_pages_controller.rb」というコントローラファイルが作成されるだけではなく、これに関連するファイルが大量に生成される。また、既存のファイルに対してもコードが変更される。
例えば、`rails generate`を実行するとルーティングの`routes.rb`ファイルも自動的に変更される。

このようなときは、`rails destroy`というコマンドを実行することで、元に戻すことができる。
例えば、`rails g controller StaticPages home help`を実行したあとに、これを取

元記事を表示

初心者がモジュールについてまとめてみた

# module – 複数のクラスで使用する部品

## モジュールを作る
モジュールの定義は下記のようにして行う。
“`ruby
module ModuleName
end
“`
クラスの記述と似ているがインスタンスを作ることはできなず、
主にメソッドを複数クラスで共同利用するための部品として使用する。
モジュール内ではメソッドの他に定数やクラス、モジュールの定義が可能。

## メソッドを定義
例えばUserクラスやAnimalクラスが共通で使える`introduce`メソッドを用意してみる。
“`ruby
module Introduce
def introduce
puts “私は#{@name}です”
end
end
“`

## include – モジュールをクラスで使用する
まずはUserクラスとAnimalクラスを作ります
“`ruby
class User
def initialize(name)
@name = name
end
end

class Animal
def initialize(name)
@n

元記事を表示

OTP認証を有効にした際のgemリリースで、GEM_HOST_OTP_CODE環境変数を見てくれなかった原因

## はじめに

https://qiita.com/ohakutsu/items/14c76b0ab3ec626e842d

↑ の記事で GitHub Actions を使って Gem のリリースをやったが、OTP 認証を有効にした場合の Gem のリリースがうまくいっていなかった。

その原因がわかったので、記事にする。

## 原因

原因は`gem`のバージョンに問題があった。
`gem`のバージョンが`3.2.22`以降でなければ、`GEM_HOST_OTP_CODE`の環境変数を見てくれない。

> https://github.com/rubygems/rubygems/blob/master/CHANGELOG.md#3222–2021-07-06
>
> #### 3.2.22 / 2021-07-06
>
> ##### Enhancements:
>
> – Allow setting `–otp` via `GEM_HOST_OTP_CODE`. Pull request #4697 by
> CGA1123

https://qiita.com/oh

元記事を表示

Rubyの依存関係を管理する

# はじめに
ここではRubyでアプリケーションを開発していくにあたってより柔軟な設計をしたいと言う方向けの記事を書いていきたいと思います。
なお、**オブジェクト指向設計実績ガイド**の第3章に記載されている内容です。

## 概要
開発する上でクラス間の依存が強ければ強いほど要件変更に対して大幅な修正が必要になります。次のコードを見てください。
“`Ruby:main.rb
class A
attr_reader :a_one, :a_second
def initialize(a_one,a_second)
@a_one = a_one
@a_second = a_second
end

def method_a
a_one * B.new(a_one,a_second).method_b
end
end

class B
attr_reader :b_one, :b_second
def initialize(b_one,b_second)
@b_one =

元記事を表示

Ruby で 数独 の4

# はじめに
https://qiita.com/superrino130/items/7cbe33e4c74d9aae65d2

前回の記事で簡単な問題が解けるようになりましたので、もう少し複雑な問題に取り組みたいと思います。

https://en.wikipedia.org/wiki/Sudoku_solving_algorithms

入力例は、上記wikiの中段の問題例を使用します。
“`
0 0 0 0 0 0 0 0 0
0 0 0 0 0 3 0 8 5
0 0 1 0 2 0 0 0 0
0 0 0 5 0 7 0 0 0
0 0 4 0 0 0 1 0 0
0 9 0 0 0 0 0 0 0
5 0 0 0 0 0 0 7 3
0 0 2 0 1 0 0 0 0
0 0 0 0 4 0 0 0 9
“`
# 前回ソースでの解答
“`ruby
p @banmen

# output
Numo::Int32(view)#shape=[9,9]
[[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 3, 0, 8, 5],

元記事を表示

herokuにデプロイした際にerror: failed to push some refs to ‘https://git.heroku.com/output.git’でデプロイできませんでした。

# ローカル環境では正常だけどherokuにデプロイしたときにエラー発生

## エラーメッセージ
ターミナル
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533976/1e61a0ba-99d6-2ceb-74f2-5eb8e649ffa5.png)

上にスクロールすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533976/9f2311aa-d5cf-7b6c-5ecc-7e39d6a77921.png)
Sass::SyntaxError: wrong number of arguments (1 for 4) for `rgba’
cssのrgbaの引数が間違っているとあるのでcssを確認しました。
![スクリーンショット 2022-03-05 10.51.47.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

config gem の has_key? の落とし穴

# はじめに

[config](https://rubygems.org/gems/config) という gem は,プロジェクト全体で用いる設定値のたぐいを管理するもの。

あらかじめ値を YAML 形式で

“`yaml:settings.yaml
before:
morning: 3
evening: 4
after:
morning: 4
evening: 3
“`

のように用意しておけば

“`rb
p Settings.before.evening # => 4
“`

のようにしてメソッドチェーンで値を取り出すことができる。

Rails の定数管理の定番 gem らしいが,べつに Rails 専用というわけではなく,フレームワークを使わないようなプログラムでも便利に使える。

※本記事は confing の(2022-03-05 時点の)最新版であるバージョン 4.0.0 に基づいている。

# ちょっとハマった

昔つくった Rails アプリがいくつもある。定数管理には [settingslogic](https://rubygems.

元記事を表示

Userモデル作成

今週から人生初のオリジナルアプリの作成に取り掛かる。

作りたいアプリはグループ内で共有して使えるカレンダーアプリ。
コメント機能も実装して、グループ内でチャットもできるようにしたい。

昨日までの時点で一通りの企画と設計は完了。

![85678106-57E3-4FAE-85E9-4B6551CD7119.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533566/85cdd6e9-9734-eb44-8856-befad0d1be57.png)

usersテーブルの「所属名」と「部署名」は、同じ意味合いに気づき、所属名は削除することに。

早速“rails newコマンド“でアプリを新規作成。

ここからの手順としては以下の通り。
1: Userモデル作成
2: Groupモデル作成
3: Calendarモデル作成
4: Commentモデル作成

というわけで、本日はUserモデルに取り掛かる。

“rails g devise:install“と“rails g devise

元記事を表示

【Ruby】Hashもいいけど、一歩進んでStructを積極的に使おう

特定の項目について値を保存したりする時にHashはよく使われているかと思います。
しかしながら、Structをあまり使ったことのない方や知らない方も初学者中心にいらっしゃるのではないでしょうか。

Structとはどのようなものなのか、またどのようなケースに有用なのかを是非知っていただきたいと思います。

# Structとは
**Struct**とは日本語では「構造体」と訳されます。
「構造体」というとっつきにくそうな名前をしていますが、臆することはないです。

「Hashのように保存できる**即席クラス**」と捉えてください。

Hashはキーバリューストアと呼ばれていて、「**キー**」と「**値**」が対に保存されています。
Structもほぼは同じです。
ただし「キー」ではなく「メンバ」と呼ばれており、「**メンバ**」と「**値**」が対に保存されています。
あるメンバに値を保存したり、あるメンバの値を取得したりとHashと操作感は似ています。

# どのようなケースで使ったら良い?
HashとStruct両者似たようなことができますが、どのようなケースでStructを使え

元記事を表示

TypeProf for IDEについてまとめてみた

## 前提
ども、Rubyエンジニアです。
最近は静的型付け言語の流行に伴いRubyの人気が下がってきてるようで寂しいばかりです。
静的型付け言語が流行している理由を調べる中でRuby Kaigi 2021で遠藤さんがお話しされていた
TypeProf for IDEのことを思い出したので、動画振り返りながら自分の理解を深める為に所感含めてまとめてみました。
すでに変化している内容もあるかもしれませんがご了承ください。

## なぜ静的型付け言語が流行っているのか?
### まず静的型付け言語とは?
変数や返り値の型を明示的に定義する言語
例:Java, C言語, Go, TypeScript

型を定義しながら実装することで、現代的な開発体験ができるから流行しているらしい

### 現代的な開発体験って?
– エラーレポーティング
– 補完
– 引数のヒント
– 定義元へのジャンプ

が挙げられる(他にももっとある)ので、TypeScriptを例に順番に説明していきます

– エラーレポーティング
実行前、もっと言えばファイルが保存される前にエラーの所在と原因を忠告してくれる
動的型

元記事を表示

パワポの教材をマークダウンに移行した話

## 背景

定期的にプログラミング研修の講師の仕事をしています。その研修で使用する教材はほとんどがパワポで作成されています。受講生に対しては、パワポから出力したPDFを研修のテキストとして配布し、パワポのスライドをプロジェクターに映しながら講義をします。その研修はもう何年も前からこの運用方法で実施していますが、最近はパワポで教材を作ることに色々と不便に感じる部分があり、マークダウンに移行することにしました。この記事はその過程と移行する際に使用したツールや技術に関するまとめ、及び備忘録です。

## パワポで教材を作ることの問題点

パワポでプログラミングの教材を作ることには以下のような問題点がありました。

1. 共同制作が難しい
1. 編集履歴の管理ができない
1. Macユーザーに不利
1. アクセシビリティが悪い
1. ソースコードのコピペが不便

### 共同制作が難しい

講師は私一人ではなく、複数名存在します。そのため、講師間で共同編集できると効率が良いですが、パワポのファイルで教材を管理していると共同制作は難しくなります。OneDriveやSharePointを使うこ

元記事を表示

link_toのソースコード読解

ネットでオープンソースを読解することで良い勉強になるということを見かけたので、Railsでも代表的なメソッドであるlink_toのソースコードを読解してみようとおもいます。そして最後のほうに、具体例をあげてコードを追ってみようとおもいます。
事前に申し上げておきますが、今回の記事はかなり重厚になることが予想されます。また、privateメソッドが多いため読解するメソッドがコロコロ変わりますのであしからず。

それでは実際のソースコードを以下にペーストします。
“`
def link_to(name = nil, options = nil, html_options = nil, &block)
html_options, options, name = options, name, block if block_given?
options ||= {}

html_options = convert_options_to_data_attributes(options, html_options)

url = url_target(name, options)

元記事を表示

背景色をグラデーションする方法

# CSSを使って背景濁をグラデーションにする方法

## background: linear-gradient(-135deg, #FF00FF, #9941D8);プロパティーを使用します。

### 具体的なコードに書き方
“`
form input[type=”submit”] {
background: linear-gradient(-135deg, #FF00FF, #9941D8);
}
“`

### 結論
1.deg値
 角度を表す値で、右回りですと360度、左回りですとー360度と記述します。
上記の-135は時計の7時から8時の方向にグラデーションしていきます。
2.#FF00FF, #9941D8値
 カラーを表す値で、何色から何色にグラデーションしていくか決めることができます。

元記事を表示

【個人開発】「真のナポリピッツァ協会」認定店をサクッと探せるWebサービスをリリースしました。

## はじめに
[おおの](https://twitter.com/ohno_hope3)と申します。
突然ですが、**真のナポリピッツァ**[^1]を食べたことはありますか?
これを使えば**真のナポリピッツァが食べられて感動すること間違い無し**というサービスを開発しました。
![ogp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/804334/fb766782-164b-270b-1fc7-8955e8622296.png)

**URL:** https://www.napolipizza-club.com/
**GitHub:** https://github.com/shota-hope/True_Neapolitan_Pizza_Club

– ナポリピッツァ好きが**真のナポリピッツァ協会認定店**[^2]をサクッと探したい。
– ナポリピッツァを意識して食べたことがなかった人に**真のナポリピッツァ**[^1]の感動を伝えたい。
– ナポリピッツァ界隈の発展を応援する想いを込めて *

元記事を表示

ルーティングの指定方法について

ルーティングにおいて

collectionとmenberの違い。
idを特定することができるのがmember
書き方としては下記のようになる。

collection do
post :confirm
end
member do
patch :confirm
end

もしくは
 
  post:confirm, on:collection
  patch :confirm, on:member

と書くこともできる。

元記事を表示

任意の回数繰り返してから次に行く配列の生成

# 任意の回数繰り返してから次に行く配列
次のような配列をRubyのワンクエリで作ろうとして頭を悩ませた。
“`
# それぞれの数字をn回繰り返してから、1ずつ加算し、mまでの配列
[1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5]
“`

## 先に結論
以下を考えました。(もっと良い解答があるようです)
“`
[*1..n].map{[*1..m]}.transpose.flatten

# 例
irb> [*1..5].map{[*1..10]}.transpose.flatten
=> [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10]
“`

### 解説
“`
# ‘*’をつけて配列展開
> [*1..5]
=> [1, 2, 3, 4, 5]

# .mapで1..5のそれぞ

元記事を表示

ヘッダーを透明にし、body要素の上に配置する

# ackground-color: rgba(0, 0, 0, 0);とposition: fixed;を使用してヘッダーを透明にし、body要素の上に配置する

## 具体的な使い方
“`
header {
position: fixed;
background-color: rgba(0, 0, 0, 0);
}
“`
こんな感じになります。
![スクリーンショット 2022-03-03 22.54.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533976/31485d41-dcd5-484f-ad37-de654db1105f.png)

### 結論
1.position: fixed;はヘッダーを固定するプロパティでbody要素に被せるように配置します。スクロールしてもヘッダーは表示されたままになります。
2.background-color: rgba(0, 0, 0, 0);は4番目の値を0~1で透明度を設定でき、0に近ければより透明になります。1、2、3

元記事を表示

【Ruby】ある与えられた入力を昇順に並び替えて出力する

こんにちは。
早く駆け出したい修行僧です。

今回、paizaラーニング 「背番号順 Ruby編」にて学びがありましたので、
こちらでアウトプットしていきます。
まだ問題を解いていない方は、ここで退出することをお勧めします。

尚、「それは違うよ」など訂正箇所がございましたら、
愛のあるご指摘を頂けたら幸いです。

## :pen_ballpoint: 問題

最初にある数値nが与えられます。
その後、n行の背番号と選手名の文字列が与えられます。
背番号が小さい順に並び替えて出力してください。

## :telescope: コード考察

ここからは一つ一つコードがどのような処理になっていくのか見ていきます。

### 2-1. 最初に数値nを入力できるようにする

“`ruby:main.rb
n = gets.to_i
#=> 5
“`

まずは、`gets`メソッドを使用してサンプルコードを入力できるようにして、変数nに格納します。また、後に繰り返し処理を行うので、この変数nを数値として扱えるように`to_i`を加えます。`gets`メソッドは1行を読み込んで成功したら文字

元記事を表示

OTHERカテゴリの最新記事