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

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

Perlの条件分岐 – ワンポイント解説【Python,Ruby,PHP,Java,JavaScriptとの違いは?】

Perlの条件分岐 – ワンポイント解説【Python,Ruby,PHP,Java,JavaScriptとの違いは?】

元記事を表示

【Rails6系、ActionCable、デバック】チャットappでチャットが複数送信されてしまう不具合の解消

# 【 前提 】
ActionCableを使用したチャットapp
チャットルームは複数作成可能
この記事は日本酒をガバガバ飲みながら書いているため後々修正が入る場合がございます

## 開発環境
Rails: 6.0.3
Ruby: 3.0.1
DB: postgresql, redis
PC: Mackbook Air

## デバック前コード
“`ruby:channels/room_channel.js
import consumer from “./consumer”

document.addEventListener(‘turbolinks:load’, () => {
console.log(“addEventListener turbolinks:load”)
window.chatContainer = document.getElementById(‘chats’)

const element = document.getElementById(‘room-id’);
const room_id = element.getAttribute(‘d

元記事を表示

【Ruby on Rails】GUI でのアップロードを介さず CarrierWave にファイルを保存する方法

Rails アプリで画像などのファイルを保存したいと思った際、有力な候補として上がる gem としては [CarrierWave](https://github.com/carrierwaveuploader/carrierwave) などが挙げられるでしょう。

で、多くの記事においては

“`ruby:./app/uploaders/file_uploader.rb
class FileUploader < CarrierWave::Uploader::Base storage :file end ``` ```ruby:./app/models/post.rb class Post < ApplicationRecord mount_uploader :file, FileUploader end ``` ```erb:./app/views/posts/_form.html.erb <%= f.file_field :file %>
“`

“`ruby:./app/controllers/posts_controller.rb
class PostsCont

元記事を表示

Rubyのクラスについて

Rubyのクラスについて自分の備忘録としてまとめます。

# クラスとは
クラスはデータの入れ物(データそのものではない)とその処理をまとめたものです。

# クラスの使用例
例えば、商品の価格と原価のデータがあり、利益を計算したいと思います。

## クラスを使わない場合

クラスを使わない場合、次のように計算することができます。

**例1**
“`ruby:shohin_cal1.rb
ringo_name = “りんご”
ringo_genka = 100
ringo_kakak = 200
puts ringo_kakak – ringo_genka #=>100
#putsは引数(文字列)を出力するメソッド。

ichigo_name = “いちご”
ichigo_genka = 200
ichigo_kakak = 400
puts ichigo_kakak – ichigo_genka #=>200
“`
例1では、商品の数が多くなると記載する量が多くなってしまいます。また、ringoと記載するべき場所にichigoと記載してしまうなどの間違いをする可能性があ

元記事を表示

Rails初級者が一ヶ月研修を受けて得た学びをまとめた

# 前書き
– RubyonRailsで開発している企業にサーバーサイドエンジニアとして転職し、一ヶ月間受けた研修で得た学びを雑に分類してまとめました。
– どの言語でもそうですが独学で初心者向け記事やチュートリアルを読み込むだけでは得られない内容が多くあったのでまとめてみた。これまでこういったまとめを作ったことがなく初めてです。
– 完全に自分のメモ書きですが、 **Railsやコーディングに初めて取り組む人にとっては役立つこともあるかと思いまとめています**

## 自分の経験とスキル
– 前職で一年間toB向けWebサービスのフロント+バックエンド+インフラ(ちょこっと)に携わっていた
– NuxtJs+NodeJs、DBはCloudSQLとかとか。
– NodeJsで開発したAPIをコンテナ化してCloudRunにデプロイしたりなどの基本的なことはできる
– Railsは半年ほど前に初めて触った。ORM自体の経験もほとんどない
## 研修概要
– **事前にRailsで自分が開発した簡単なTodoアプリをレビューしてもらい、改善点・問題点を先輩がリストアップ**
– **各項目

元記事を表示

Rails初級者が一ヶ月研修を受けて得た学びをまとめた~Rails~

この記事は「[Rails初級者が一ヶ月研修を受けて得た学びをまとめた – Qiita](https://qiita.com/Nifu-Uchi/items/f676d9f082e8c02bd88d)」のRailsに関する項目を切り出した分割記事です
概要などについては親記事を参照してください。

# Rubyの文法など基本的なこと
### 配列の種類
– `%i`:シンボル配列。メソッド名、変数名などの配列を作るときに

### Hashは省略記法が使える
– Ruby3.1から対応
– [Hashの値の省略記法 – NaCl非公式ブログ](https://nacl-ltd.github.io/2021/12/20/hash-value-omission.html)
– `{ x: x, y:y }` -> `{ x:, y: }`

## pp pp puts printの使い分け
– [【ruby】p pp puts print 違い。 – Qiita](https://qiita.com/nyaoo/items/f5d84581d3a301a9c22f)

### enumの挙動

元記事を表示

Rails初級者が一ヶ月研修を受けて得た学びをまとめた~GithubActions・RSpec~

この記事は「[Rails初級者が一ヶ月研修を受けて得た学びをまとめた – Qiita](https://qiita.com/Nifu-Uchi/items/f676d9f082e8c02bd88d)」のうち分量が多くなりすぎたコード品質担保(LinterやRSpecなど)に関する項目を分割した記事です。
概要などについては親記事を参照してください。

# code-checkとGithubAction
– PR時にRSpectとともにLinter/Formatterが走るようにした
– 導入したものは以下
– rubocop
– erblint
– brakeman
– rspec

## GithubActions
– [こちらを参照](https://zenn.dev/link/comments/7ece3f5df6eac9)

## rubocop
### action-rubocopを使おう
– 指摘箇所があるとPRにコメントしてくれる
– [reviewdog/action-rubocop: Run rubocop with reviewdog ?](

元記事を表示

【個人開発】少しでも昆虫に興味をもって食べてみたくなるような診断サービスを作った。

# 最初に
初めまして、エンジニアを目指して勉強中の樋口といいます!

いきなりですが、皆さんは昆虫食に対してどんなイメージを持っているでしょうか?
少しでも気になったことはありませんか?

昆虫食といってもどんな虫が食べれるんだろう??
初めて食べてみるけど初心者向けの虫はいないかな~といった
疑問に思うことは多々あると思います。

そこで、昆虫食に対す疑問を解消するサービス **InsectFood** を作りました。

https://insect-food.jp/

# アプリの概要

昆虫を食べてみたい人が診断を行い、おすすめの昆虫をレコメンドするアプリになります。

# アプリの機能

**昆虫食診断**

診断が始まると5問昆虫に関する診断が始まります。
二社一択形式の診断機能で1点もしくは0点の得点計算を行っています。

[![Image from Gyazo](https://i.gyazo.com/8fd79159f2f814968d84272e56d212ea.png)](https://gyazo.com/8fd79159f2f814968d84272e56d2

元記事を表示

RailsのStrongParametersについて 管理者権限を変更されないようにするため

## まずStrongParameterとは

StrongParametersとはMass Assignment機能を利用する際、起こり得る脆弱性へ対抗する手段の一つである。

## ではMass Assignmentとは

Mass Assignmentとはモデルの生成や更新の際に、Rubyのハッシュを使って一括で属性を設定できるとても便利な仕組みである。

以下はMass Assignmentを使用せずに個別に値を設定
“`ruby
irb(main):001:0> book = Book.last
irb(main):002:0> book.name = “キングダム”
irb(main):003:0> book.price = 1980
irb(main):004:0> book.save
“`

以下はMass Assignment機能を使用し、データを更新
“`ruby
irb(main):001:0> num = {name: “キングダム”, price: 2980}
irb(main):002:0> book = Book.last
irb(main):003

元記事を表示

Railsアプリにおけるfaviconの設定方法

## 本記事の対象者
– ファビコンって何?という方
– Railsアプリにファビコンを設定したい方

## favicon(ファビコン)とは?
こちらの画像で青い丸で囲ったところのマークのことをファビコンといいます。
![ファビコン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668589/c7c56360-4037-6fee-15c2-17d322214883.png)
あらゆるWEBサイトにアクセスしてみると、サイトごとにそれぞれのファビコンが設定してあると思います。
ブランディング的観点、信頼性的観点などから設定をしておいた方が良いとされております。

## faviconの設定方法
1. ファビコンとして設定したいロゴを用意して、下記フォルダに格納する。
 app/assets/images
1. app/views/layouts/application.html.erbのタグ内に下記を追記する。
“`
<%= favicon_link_tag('FILE_NAME') %>

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較

# Python

https://qiita.com/FukuharaYohei/items/459f27f0d7bbba551af7

# Ruby

https://qiita.com/shizuma/items/4279104026964f1efca6

# PHP

https://qiita.com/miriwo/items/da463cfcae441400381a

# Java

https://qiita.com/suema0331/items/5dde9f91671100a83905

# JavaScript

https://qiita.com/iLLviA/items/b6bf680cd2408edd050f

# Perl

https://perlzemi.com/blog/2

元記事を表示

returnはつけるの無粋すぎる

こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!

# Rubyは基本的に関数内でreturenを記述する必要がない
そもそも、関数内でreturnが必要ないってのは、僕も知ってたんですよ。

“`Ruby
#これはたとえ
def addition(x)
x + 1
end
“`
でもかたかたコードを書いた結果、なぜか関数からの返値が**nil**になってたんですよ。
もうその時は、**nanu!?** ってなりましたね。

“`Ruby
#これはたとえ
def addition(z)
a = x + 1
return a
end
“`
だからreturnを追加してしっかり値が返るようにしたんですよね。
でもそれがどんなに**非道な行いだと**は思いよりませんでした….

結果からいえば、returnいらないよって言われた際に
**「いやでも、値返ってこんかったし」** と心のマリワナ海溝より深いところで思ったので、証明してみたく再度試してみたら、returnを記述しなくても

元記事を表示

devise_token_authのメール認証済みでないとログインできない機能をRSpecでテストする方法

はじめに

devise_token_authのログイン機能が開発し終わったので現在RSpecでテストを書いているのですが、”メール認証済みでないとログインできない”というテストを書くことができたので、備忘録として残そうと思います。

sessions_spec.rbで何をテストするか

devise_token_authで設定をすればアカウント作成時にメールで本認証を行わないとログインができない機能を実装することができます。
この”sessions_spec.rb”は、ログイン機能を担当しているので”メールが送信できているか?”などのテストではなくシンプルに、
~~~
・認証が済んでいればそのアカウントはログインできる
・認証ができていなければそのアカウントはログインできない
~~~
という2点が問題なく動作していることをテストで確認できればOKという考えになりました。
アカウントを作成する箇所のテストについては、registrations_spec.rbで記述します。
(その他パスワードやメールアドレスが間違っている場合はログインできない等のテストは書いていますが、認証とは

元記事を表示

インデントを合わせないのはインシデント

こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!

## コードを記述する時はインデントを合わせるべし
プログラマーからしたら言わずもがなことかもしれないのですが、あだち充の主人公の違いもわからない粗雑な人間は、ついつい微妙にずれてる場合が多い。
“`Ruby
if kazuya_hadnt_died
puts ‘atsuya would not be playing baseball’
end
“`
段落ごとにスペース2つ分あけたら、こうなるやろ
“`Ruby
if kazuya_hadnt_died
puts ‘atsuya would not be playing baseball’
end
“`

この微妙な違いに気づかなかった人はドンマイとしか言いようがないが(僕もドンマイ側の人間ではあります)、それだけでは済まされないのです。

>インデントの微妙な違いに気づかない男は、女性の微妙な変化にも気づけない不幸な人間だ

と、アラン・チューリングも言ってたらしいけど、たぶん言

元記事を表示

プログラミングスクールを卒業して思うこと

# はじめまして! 

私はDMM WEBCAMP COMMIT(以下DWC)を8月に卒業しました[すずしゅん](https://twitter.com/6heouP1HUKGRAJe)と申します。
前職は地方のホームセンターで販売員をしていました。
これからスクールに通おうと考えている方や在校生の参考になればと思い記事にしました?‍♂️

# 目次
* なぜプログラミングスクールに通おうと思ったか
* 1ヶ月目
* 2ヶ月目
* 3ヶ月目
* 4ヶ月目
* 学習中に取り組んだこと
* 学習中に意識していたこと
* スクールの感想
* プログラミングはスポーツと同じだと思う
* 最後に

# なぜプログラミングスクールに通おうと思ったか
独学でプログラミングを習得できなかった、つまり挫折したことが大きなきっかけです。
学習をしていくなかでエラー解決ができずに1日過ぎてしまうことがあり、
このまま惰性で続けていても、エンジニアになれないと思っていました。

プログラミングスクールは以前から知っていて、興味本位で説明会に出席したのですが、
そこで言われた言葉がとても印象に残っています。

元記事を表示

関数に名前を付ける時の奥義

# パンピープログラマーのメソッド名の命名の仕方とか文言の表記の仕方についての覚書

こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!

## メソッドに名前をつける時の原則
1.誰が読んでも一目で何をしているかわかる名前
たとえばユーザー名をモデルから取得して、他の情報と合体させて表示させる時は..以下がよろし

“`Ruby
def display_user_name_and_emal
user user.name + user.email
end

“`
下の命名だと表示できるように関数内で作ってるかもしれんいなが、正確には表しとらんじすたラジオ
“`ruby
def create__user_name_and_emal
user user.name + user.email
end
“`

## viewに表示する文言の表示原則
基本的に新規で作成する場合は、好きなように(といっても皆がわかるように)つければいいですが、これがもしリファクタリングの場合….

最初

元記事を表示

【初投稿・初個人開発】引越時のタスクを管理するアプリ「引越サポート」を作りました。

# はじめに
ご覧いただきありがとうございます。@yk___3110と申します。

突然ですが、皆さん「引越」の経験はありますか。
私は過去2回の引越をしたのですが、その際に下記のように思いました。

・いつまでに、何をやったらいいか分からない
・何をやるべきか調べることが面倒
・物件選びや荷造り以外にも、やることが多い

引越時に、いつまでに何をやるべきかを、一目で確認できるアプリがあれば便利だと思い、このアプリを作成しました。

オリジナルアプリケーション「引越サポート」
https://enigmatic-springs-57135.herokuapp.com/

# 使用環境
* Ruby 3.0.1
* Rails 6.0.3
* PostgreSQL 14.4

# アプリの主な機能
### 引越予定日の設定機能
アカウント登録後、引越予定日を設定する画面に遷移します。引越予定日を入力してください。
![スクリーンショット 2022-09-02 17.47.17.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

[Rails]冷や汗?本番DBを誤った値で書き換えた話(“_”でのwhere検索)

## 概要
データを更新する処理を行なった際に、
検索条件に”_”が入ることで予期せぬデータを書き換えてしまいました。

## 問題となったコード
Brandテーブルのnameカラムが”_”のものだけ、”ユニクロ”に変更したいというコードです。
“`
Brand.where(“name LIKE?”, “_”).update_all(name: “ユニクロ”)
“`

## どこが間違っているか

`Brand.where(“name LIKE?”, “_”)`で検索すると、
“_”のものだけではなく、
数字1文字のものや、漢字1文字のものなどにもヒットしてしまいます!

## 理由
– [Railsガイド](https://railsguides.jp/active_record_querying.html#:~:text=%E5%BC%95%E6%95%B0%E3%81%AFSQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E9%98%B2%E3%81%90%

元記事を表示

Ruby と比較しながら Bash で AtCoder に登録したら解くべき精選過去問 10 問を解いてみた

# はじめに
シェルスクリプトに関わる可能性が出てきたのでやってみました。
ちなみに、`Atcoder`の`Bash`の現行のバージョンは**5.0.11**で、次のコマンドで実行されます。
“`console
bash ./Main.sh
“`
他にも、`dash(0.5.8)`や`zsh(5.4.2)`で解くことができます。
`Atcoder`凄いぞ。

以下の、諸先輩の記事を参照させていただきました。

https://qiita.com/cympfh/items/b860ecb5f5415b15f3c9

https://qiita.com/yuizumi/items/d55f9dfe56fa2bf12d94#_reference-cfc03c2c7e91abfd7956
# 精選過去問 10 問
https://atcoder.jp/contests/abs/tasks/practice_1
“`rb:ruby
a = gets.to_i
b, c = gets.split.map(&:to_i)
s = gets.chomp
puts “#{a+b+c} #{s}”

元記事を表示

オリジナルアプリ 内山農園

# はじめに

こんにちは。@Taro_Kanameです。卒業制作で初めて製作したオリジナルアプリです。このアプリは、実家の兼業農家で起こりうる、B級品の食品ロス問題を少しでも解決できたらと思い製作しました。

# アプリ開発のきっかけ
私の実家は兼業農家をしています。農協で販売できるものA級品は余ることはありませんが、B級品となったものは毎回コンテナ約1箱〜多い時は5箱分を処分しています。ご近所も農家が多く、畑にまだ食べられる野菜や果物がよく大量に捨てられています。
またB級品の中でも状態がいいものは、捨てるのも勿体無いため両親が知り合いに1件1件電話をして、安価もしくは無料で渡しています。これに伴いもう一つ問題になってくるのが、野菜に欠けた費用に対して収益が少なくなるため、毎年赤字へと繋がっています。
![イメージ写真.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667900/f6ccc2a3-db99-8c6a-3ac6-57330073d812.png)

# 使用環境
・ruby 3

元記事を表示

OTHERカテゴリの最新記事