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

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

Python,Ruby,PHP,Java,JavaScript,Perlのプログラミング言語の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlのプログラミング言語の比較です。

# 2022年版

## 基本文法

https://qiita.com/yuki_kimoto/items/a11a1095fc24be590fce

## 入門

https://qiita.com/yuki_kimoto/items/00aaab90f31194a5de74

## インストール

https://qiita.com/yuki_kimoto/items/7c2f1be70d68065338a4

## 変数

https://qiita.com/yuki_kimoto/items/631537a6e7eb58f251cf

## 文字列処理

https://qiita.com/yuki_kimoto/items/3b8062c42c0c12cb3db7

## 条件分岐

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの多次元データ構造の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlの多次元データ構造の比較

# Python

https://qiita.com/ko0821/items/4c8a557ec88f2a10bd55

# Ruby

https://qiita.com/vzvu3k6k/items/1705c7f4b29c08787ea0

# PHP

https://qiita.com/shuntaro_tamura/items/784cfd61f355516dfff0

# Java

https://qiita.com/panda-chibi/items/e57799c047be69fe5b79

# JavaScript

https://qiita.com/Stack_up_Rising/items/cb71842d7c3510daf9f0

# Perl

https://per

元記事を表示

【Rails】.env に定義した環境変数が反映されないときの解決方法

## はじめに
今回は、`dotenv-rails`を使って環境変数を管理していて、
`.env `に環境変数を定義して、コンソールで試したけど反映されないときに試すことを書きました。

`dotenv-rails`の設定などは以下の記事が参考になるかと思います!

https://pikawaka.com/rails/dotenv-rails

## 結論
・`spring`を再起動する
・`docker-compose`を使用している場合は、`docker-compose.yml` ファイルにも定義しているか確認する

## `spring`を再起動する
[Railsで環境変数の変更が反映されないときはspring stopを試す](https://qiita.com/metafalse/items/7294afa3d1be3315e999)
↑の記事を参考にさせていただき、試してみてください。

## `docker-compose.yml` ファイルにも定義しているか確認する
`docker-compose`を使用している場合は、
`docker-compose.yml` フ

元記事を表示

【Ruby on rails】Dockerを用いてRuby on railsの環境構築をする

![スクリーンショット 2022-08-30 16.34.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737303/221a9676-b273-3166-a843-6001d50e58b5.png)
Dockerを使ったRuby on railsの環境構築をしました。なかなか苦労したので、備忘録的にまとめます。
# ①超基礎
そもそもDockerが何か全く知らなかったので、とりあえずYoutubeで動画を見ました。本当のさわりだけ、という感じですが掴みにはいいと思います。
* [【Docker超入門 #1】Dockerって何?何が良いの?](https://www.youtube.com/watch?v=DNnW4I43wyU)
* [【入門者も理解】Dockerとはなにか?【専門用語少なめ】](https://www.youtube.com/watch?v=dsWCjj8M4es)

ちなみに1本目の動画を出している山浦さんは、Dockerに限らず分かりやすい動画を色々とアップされているので

元記事を表示

【Rubyなど】学習したことまとめ

最近Rubyを使った開発を始めたので、周辺も含め学んだことを色々とまとめていきます。

# ルーティングと.erbファイルの関係性
URLのリクエストをroutes.rbでコントローラのアクションに割り当てて、コントローラで定義されているアクション名を元にしてどのviewを起動し、erbファイルを実行してHTMLを生成するかを決めています。

例えば、
“`php:routes.rb
root ‘users#index’
“`
の場合は
“`php:app/controllers/users_controller.rb
def index
@users = User.all
end
“`
にルーティングされ、
app/views/users/index.html.erbが実行されてHTMLとして表示されるようになリます。
つまり省略されているが、アクション名=view名(erbファイル名)となっています。

# unless文
ruby特有というわけでは無いですが、今まで使ったことがありませんでした。
if文は「条件式が真の場合に実行する

元記事を表示

enumを利用してcheck_boxを作成し絞り込み検索を行う

## やりたいこと
railsでタスク管理アプリを作成。
enumで定義したタスクの状態を検索フォームにcheck_boxとして作成し、
絞り込み検索を行いたい。
※以下のようなイメージ
![enum check_box.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/857784/f96d2779-5701-a6c5-814e-29e8092aa2f6.png)
## 実装したこと

– **controller**
“`rb
class TasksController < ApplicationController def index @tasks = current_user.tasks. status(params[:status]) @status = params[:status] end end ``` 実際には他にも絞り込みたい条件はあると思いますが、 今回はstatusのみに絞ってます。 - **view** ```erb

元記事を表示

【Rails】文字列がintegerだけで構成されているかどうかを判定する方法

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## 判定方法①

“`ruby
phone_number = ‘090-1234-5678’
nil != (phone_number =~ /\A[0-9]+\z/)
# => false

phone_number = ‘09012345678’
nil != (phone_number =~ /\A[0-9]+\z/)
# => true
“`

## 判定方法②

①よりコードをみたとき直感で分かる

“`ruby
phone_number = ‘090-1234-5678’
phone_number.match?(/\A[0-9]+\z/)
# => false

phone_number = ‘09012345678’
phone_number.match?(/\A[0-9]+\z/)
# => true
“`

## 参考

https://qiita.com/niwasawa/items/ba6c432fcc3d04fc18c9

元記事を表示

プライベートメソッドのテストを書くな (プログラミングの作法)

# 書かない理由: パブリックメソッドのテストで必要十分だから

「美味しいカレーを作るメソッド」があるとする。

この場合にテストで保証したいのは「美味しいカレーが出来ること」だけなのだ。
どんな包丁や鍋を使うかは全く関係ない。

どんな包丁の使い方をしたかはお客には関係ないのだ。
包丁の使い方までテストしたら、レトルトカレーを使うことにした場合にどうする?

# 書かない理由: リファクタリングの邪魔になる

テスト対象が内部実装の詳細にまで及んでいると、テストに縛られてリファクタリング出来なくなる。
テストが実装を縛るなどあってはならないことである。

仮にプライベートメソッドの構成が変わるたびにそのテストを変更するとしても大層な手間だ。

僕らはテストをするためにテストをしているわけではない。機能保証のためにテストをしているのだ。

# 書かない理由: 書く理由がないから

書いたほうが良い妥当な理由を思い浮かばないのであればそれは書かなくて良いということだ。

「なんとなく書く」「テストが簡単になるから書く」という理由であれば見直した方が良い。

# 書かない理由: テスト

元記事を表示

オリジナルアプリ Pomodo Schedulerの開発

ソニックガーデンキャンプに参加して作成したアプリを紹介します。
ソニックガーデンキャンプとは株式会社ソニックガーデン様主催のプログラミング合宿です。
キャンプに参加したメンバーと協力してアプリ開発しました。

## アプリ概要

### アプリ名: Pomodo Scheduler
https://pomodo-scheduler.herokuapp.com/

ポモドーロテクニックとタスク記録機能を組み合わせたタスク管理アプリです。
ポモドーロテクニックで時間を有効活用しつつ、実行したタスクをマイページから確認できます。

### アプリを使うことで得られるメリット
* **時間を効率的に使える**
時間を効率的に使うために**ポモドーロテクニック**をアプリに組みました。
ポモドーロテクニックとは、タスクを細かく分解し、短い作業時間(25分)と短い休憩(5分)を繰り返すことで、集中力と生産性を高める時間管理テクニックです。
自分自身、ポモドーロテクニックを使っているおかげで、長く集中力を保つことができているので、アプリに組み込みたいと思いました。

* **時間を節約できる**

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの連想配列の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlの連想配列の比較

# Python

https://qiita.com/hz1_d/items/407dd13f90a8a4533d23

# Ruby

https://qiita.com/ryouya3948/items/5ea2049abfd92eb1ded7

# PHP

https://qiita.com/shizen-shin/items/8383e27c7cf16c0ccb4a

# Java

https://qiita.com/taropon_wwwww/items/95477174ac16287c9744

# JavaScript

https://qiita.com/yrn03m/items/87e223acc6e733b50429

# Perl

https://perlzemi.com/blog/

元記事を表示

【Rails】chartkickを使用してシンプルなグラフを扱う

※rails6を使用しています

# chartkick とは
Railsで簡単にグラフを作成することができるライブラリです。
Railsで使用することが主な目的のようですが、多言語(React, Vue.js, Ruby, Python, Elixir, and Clojure)でもグラフを作成することができます。
github [chartkick](https://github.com/ankane/chartkick)

https://chartkick.com/

![Line_chart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730527/eb4724cf-a04d-695b-b92b-272052504fae.png)
![area_chart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730527/401b2bd8-a834-0bbb-2228-bf9097426d17.png)

他に

元記事を表示

Zaim APIを使うためにRubyでAPIクライアントを作った

## 初めに
この記事は記事投稿キャンペーン

https://qiita.com/official-events/6d31965c499a69377c0b

の参加記事です。

今僕はシェアハウスをしており、共通で使う消耗品などを毎月決算する運用をしています。
費用の計算を毎回手で行うのは手間だなと思ったので、いい感じに計算を行うための仕組みを作りました。

自動で計算をする上で、家計簿アプリの[Zaim](https://zaim.net/)を使い、以下のような仕組みを実現したので記事にします。

1. Zaimに使った費用を記録する
1. 毎日前日に使った費用の一覧をSlackに自動投稿する
1. 毎月の締め日に、先月使った費用の合計数、費用一覧、一人当たりの費用をSlackに自動投稿する

この仕組みを作るにあたり、Zaim APIを簡単に使えるようにするためのRubyクライアントを作成したので紹介します。

## なぜZaimなのか
僕は普段はマネーフォワード MEを使って口座管理をしています。
しかし今回はZaimを採用しました。
なぜZaimを利用したかというと、Zaim

元記事を表示

STAGING環境でデプロイした時のSSHKit::Command::Failed: git ls-remote git@github.com:velljp/circus-vell.git 解決法

# エラー内容
https://gyazo.com/02b8cf241cc1f370a5635ea6fb236e2c
“`
リンクの内容

[cvsys@ip-10-1-0-21 ~]$ sh dist.sh
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
INFO [c61e9b14] Running rsync -az -e ssh /home/cvsys/.rbenv/ 127.0.0.1:/home/cvsys/.rbenv as cvsys@localhost
DEBUG [c61e9b14] Command: rsync -az -e ssh /home/cvsys/.rbenv/ 127.0.0.1:/home/cvsys/.rbenv
INFO [a483de23] Finished in 0.4

元記事を表示

rspecテストで実行コマンドを押しても回らない

# エラー画面

https://gyazo.com/ae90547dac639975630a6f11e989f294
ターミナルがそこで止まって、全く動かない状況。
https://gyazo.com/8d831227cc81304526ad6232a0fad014
パンケーキもずっとloadingしている。

# 解決手順
まずは、データベースを直すところから始める。
### ①mysqlに接続する。

“`
mysql接続コマンド
mysql -u root   
“`
https://gyazo.com/b1c48549fed672bfe0865b13510d2d39

### ②データベースを確認する。
このように、現在のデータベースが確認できる。
https://business.facebook.com/commerce/catalogs/476007677054230/home?business_id=903880390185351

### ③データベースを削除する。

“`
drop database circusvell_test;
“`
https:/

元記事を表示

model作成時に思い出したい 忘却録

## はじめに
学習する上でメモとして残したいものをここに記載します。
今回はmodelの作成時について分からなかったことを記載します

## reference型
今回はdeviseのUserの拡張としてフォロー及びフォロワー関係を作ることが目的でした。
そこでFollowsテーブル(model)を作ることにしました。
参考記事(1)には以下のように記載があった

“`ruby
$ rails g model Relationship follower:references followed:references
“`
この文を見て思ったのがreferencesとは?でしたので参考記事(2)を読んだところこんな感じらしい。

– refernce型は外部キー(FOREIGN KEY)を追加する時に使う
– reference型を使うことによってインデックスを自動に貼ってくれる
– 自動で_idを作成してくれる

外部キーを追加する際に使える型で要件によっては使っていいものくらいに留めておきます。
参考記事(2)にもreference型を使わなくても記載できる方法が出来るらしい。

元記事を表示

RDBのユニーク制約とRailsのユニークバリデーションの違いを理解しよう

Railsアプリケーションで下記のusersテーブルのemailにユニーク制約をつけたい場合、どのように実装しますか?

* users

| Field | Type | Null |
|:———–|:————|:————-|
| id | bigint(20) | NO |
| email | varchar(255)| NO |

だいたいの場合、下記2つのいずれか、または両方を実装するのではないでしょうか?
* RDBのemailカラムにユニークインデックスを付ける
* Userモデルにuniqueness validationを実装する

どちらの実装でもデータがユニークであることとをチェックしてくれるという意味では同じように感じますが、制約の完全性が全然違います。
一言で言うと、RDBのユニーク制約は100%保証されるが、Railsのuniquenessは突破される可能性があります。

# この記事で使うユニーク制約

記事の最初に記載したusersテーブルを使

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの配列の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlの配列の比較

# Python

https://qiita.com/gouwan/items/c83b47ce1b7c77cce7c5

# Ruby

https://qiita.com/may88seiji/items/ce9396a4c267a3d449ae

# PHP

https://qiita.com/tokutoku393/items/ea2a61765eda1dee8f2e

# Java

https://qiita.com/sentral1110728/items/532de46714b7215a2e99

# JavaScript

https://qiita.com/takeshisakuma/items/b23b1a748098f30e2ff2

# Perl

https://perlzemi.co

元記事を表示

【JavaScript】プレビュー機能の実装

# 【JavaScript】プレビュー機能の実装

###### 特徴
・画像を選択するとプレビュー画像が表示される
・画像は何度も選び直すことができプレビュー画像もその度変わる

## 手順
### ■HTML側の編集
#### ❶画像投稿ページのHTMLにプレビュー画像を表示するスペースを作成
“`

“`

### ■JavaScript側の編集
#### ❷preview.jsを作成して読み込むよう設定
app/javascriptの中にpreview.jsを作成
“`ruby:app/javascript/packs/application.js
require(“@rails/ujs”).start()
require(“@rails/activestorage”).start()
require(“channels”)
require(‘../preview’) // 追記する
“`
#### ❸preview.jsの編集
##### ①画像投稿ページのフォームを取得
##### ②今記述したプレビュー画像を表示

元記事を表示

初めてのOSSコントリビュート(Ruby gem)

# はじめに
先日 (超軽微ですが、、)初めてOSSコントリビュートしました :tada:
意外とgemにPRを送るまでの詳細な手順をまとめている記事が見つけられなかったのでまとめたいと思います。

# きっかけ
[gem recapthca](https://github.com/ambethia/recaptcha)の挙動を確認するためにコードを見ていると叩いているAPIのバージョンが古いことに気づきました。
OSSコントリビュートに興味があったのでこれならすぐ修正できる!と思いPRを送ることに。

# PRを送るまでの流れ
## ドキュメントを読んで、コントリビュート時の注意点を確認
Contributingについて記載がないか確認します。
例:Ruby
>See [“Contributing to Ruby”](https://docs.ruby-lang.org/en/master/contributing_md.html), which includes setup and build instructions.

## 既にある issues, PRを確認する
クローズさ

元記事を表示

あなたは知っている?Rubocop に教えてもらった Ruby の小ネタ5つ

## はじめに
Ruby 2.7 以降に追加された新しめの文法を5つ紹介します。
業務で Ruby のアップデート、および rubocop のアップデートをしました。
その際に学んだことですので、rubocop 関連の記事を参考にしています。

## Rails/WhereExists 
**`where` してから `exists?` するのではなく、`exists?` 単体でOK**
~~~ruby
# bad
User.where(name: ‘john’).exists?

# good
User.exists?(name: ‘john’)
~~~

https://www.rubydoc.info/gems/rubocop-rails/2.8.1/RuboCop/Cop/Rails/WhereExists

## Performance/MapCompact
**`map.compact` は`filter_map`で書き換えられる⚠︎**
`compact` は自身から `nil` を取り除いた配列を生成して返します。
`compact!` は自身から破壊的に `nil`

元記事を表示

OTHERカテゴリの最新記事