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

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

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行を読み込んで成功したら文字

元記事を表示

Ruby で 数独 の3

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

前回の記事で初期値の設定が終わりましたので、判定処理に移ります。

https://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC

入力例は、wikiの数独の問題例を使用します。
“`
5 3 0 0 7 0 0 0 0
6 0 0 1 9 5 0 0 0
0 9 8 0 0 0 0 6 0
8 0 0 0 6 0 0 0 3
4 0 0 8 0 3 0 0 1
7 0 0 0 2 0 0 0 6
0 6 0 0 0 0 2 8 0
0 0 0 4 1 9 0 0 5
0 0 0 0 8 0 0 7 9
“`
# 初期値設定後の状態
“`ruby
require ‘numo/narray’
include Numo

h = w = 9
@banmen = UInt32.zeros(h, w)
@uramen = NArray.cast(Array.new(h){ Array.new(w){ (1..9).to_a

元記事を表示

【Heroku】herokuでRailsアプリをデプロイする際の基本的な手順のまとめ

## 本記事の前提
**使用環境**
– Rails 5.2.6.2
– ruby 2.6.6
– git 2.18.5
– AWS Cloud9

**省略作業**
– Herokuアカウントの登録
– Gitのインストール
– デプロイするアプリの作成

## デプロイする手順
### 1.Heroku CLIのインストール
Herokuの操作をコマンドラインから行えるようにするために、Heroku CLIをインストールしていきます。
以下の公式サイトからご自身のOSに合ったものをインストールして下さい。

https://devcenter.heroku.com/articles/heroku-cli

**AWS Cloud9の場合**
以下のコマンドを全てコピーし、ターミナルに貼り付けて実行して下さい。
“`terminal:terminar
$ curl -OL https://cli-assets.heroku.com/heroku-linux-x64.tar.gz
tar zxf heroku-linux-x64.tar.gz && rm -f heroku-linu

元記事を表示

【Heroku】Rubyバージョンの差異によるエラーの解決

## 発生したエラー
![スクリーンショット 2022-03-03 10.40.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694767/3ce57220-2142-1b6f-ac9e-bbe3be567ed7.png)
git commitしたの後にgit push heroku masterを実行し、アプリをデプロイしようとしたところ、Rubyバージョンが2.6.3のためにheroku-20にデプロイできないという旨のエラー発生した。。

## 解決方法
解決策としてherokuのstackを20から18に下げる方法もあるが、今回はRubyのバージョンをheroku-20に対応している2.6.6に変更することで解決していく。Rubyのバージョンを2.6.6に変更する際の作業の流れは以下のようになる。

1.Rubyバージョンの確認し、Ruby2.6.6をインストール
“`terminal:terminal
$ rvm -v //rvmのバージョンとインストールされていることを確認
$ rv

元記事を表示

【Rails】ページネーション機能の導入

#gem kaminariによるページネーション機能の実装

## 実装の流れ
1. Gemfileにgem ‘kaminari’を追加する。
1. bundle installを実行してkaminariをインストールする。
1. rails g kaminari:configを実行してkaminariの設定ファイルを作成する。
1. rails g kaminari:views defaultを実行してページャで利用するテンプレートを作成する。
1. 該当するコントローラー,ビューにページャを実装していく。

## 1.Gemfileにgem ‘kaminari’を追加する。
“`rails:Gemfile
gem ‘kaminari’
“`

## 2.bundle installを実行してkaminariをインストールする。
“`rails:terminal
$ bundle install
“`

## 3.rails g kaminari:configを実行してkaminariの設定ファイルを作成する。
“`rails:terminal
$ rails g kami

元記事を表示

Rubyで特定の数字を検知するプログラムを実装する

# はじめに
プログラミングスクールでRubyについて学習しています。
これから平日は毎日何かしらアウトプットのため投稿を続ける予定です。
今回は特定の数字が存在するかどうかを判定するプログラムをinclude?メソッドを使用して実装していきます。

# 問題
以下の要件を満たすarray123メソッドを実装します。

・配列内に1,2,3が全て入っている場合は、「True」と出力する
・配列内に1,2,3の全てが入っていない場合は、「False」と出力する

“`Ruby:雛形
def array123(nums)
# 処理を記述
end

# 呼び出し例
array123([1, 1, 2, 3, 1])
“`
include?メソッドについて
[Ruby 3.1 リファレンスマニュアルinstance method String#include?](https://docs.ruby-lang.org/ja/latest/method/String/i/include=3f.html)
[Ruby 3.1 リファレンスマニュアルinstance method Array#

元記事を表示

テキストエリアの高さを行数に合わせて自動で変更する

# cssでheightプロパティー、 値autoを使ってテキストエリアの高さを中身の行数によって自動で変更

## 具体的な使用例
“`
.css{
height: auto;
}
“`

## 結果
![スクリーンショット 2022-03-03 10.59.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533976/984ee0e1-6299-1f2f-93bd-0d487339d0b0.png)
こんな感じで長い文章でも表示できます。

元記事を表示

rubyにおけるcount,size,lengthメソッドの違い

結論からいうと、配列、ハッシュ、文字列によって異なります。
## 配列のとき
ある条件を満たす要素数を知りたいとき→**count**
単に配列の要素数を知りたいとき→**length, size**countも使える

## ハッシュのとき
ある条件を満たすkeyとvalueの要素数を知りたいとき→**count**
単にKeyとvalueの要素数を知りたいとき→**length, size**countも使える

## 文字列のとき
ある条件を満たす要素数を知りたいとき→**count**
単に文字数をしりたいとき→**length, size**countは使えないです

この結論をもとに話を進めていきます。

## lengthとsize
先ほどの説明からも分かる通り、同じメソッドなんです。やってることが同じです。
実際にコードを打っても同じ結果が返ってきます。

## count
countは文字列以外を除いては、lengthとsizeと同じ働きをします。書き方に多少の差はありますが、同じ動きをしてくれます。
では何が違うのか?length/sizeとcountだと処理速度が

元記事を表示

OTHERカテゴリの最新記事