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

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

AWS Fargateからherokuに移行した話

## はじめに
※ 自分用メモ
awsの無料期間がそろそろ切れそうなので、バックエンドをherokuに移行したお話

## 移行前
#### バックエンド
言語・フレームワーク: Ruby、 Ruby on Rails
インフラ: AWS ECS(Fargate)、ECR、Route53(ドメイン取得はお名前.com)、RDS(Mysql)無料枠があるから、Auroraではない、ALB、ACM、S3、EFS

#### フロントエンド
言語・フレームワーク: React、NextJs
インフラ: バックエンドと同じ

#### ミドルウェア
webサーバー: Nginx
DB: mysql

## 移行後
#### バックエンド
言語・フレームワーク: Ruby、 Ruby on Rails
ミドルウェア: Nginx、mysql
インフラ: heroku、jawsdb、S3

#### フロントエンド
言語・フレームワーク: React、NextJs
インフラ: vercel、Route53(ドメイン取得はお名前.com)、ACM

### バックエンド移行(aws ⇨ hero

元記事を表示

【完全自分用】Rubyの問題を解いて知識を深める②

# はじめに
前回に引き続き、完全に自分用アウトプットです。
Rubyの問題を解いて、プログラムの知識や考え方を深堀りするために記述します。

# Q6 繰り返し処理
– 1〜10の数字を順番に足し合わせる。
– 足し算の合計値がターミナルに出力される
– 繰り返し処理で記述しなければならない。
“`
sum = 0 #sum = 0で常に結果を保存する変数を準備

10.times do |i|
sum += i + 1 #1〜10の数値を順番に足していく
end

puts sum #値を出力
“`
# Q7 配列を利用したrubyプログラムの作成
以下の配列から任意の数字を探して何番目に含まれているかという結果を返すsearchメソッドを、each_with_indexを用いて作成する
“`
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
“`
“`
def search(target_num, input)
input.each_with_index do |num

元記事を表示

Rails チャット機能

## はじめに
[前回、Railsアプリケーションにマッチング機能を実装しました。](https://qiita.com/gobtktk/items/5caf074209faf31cae4a)今回は、マッチング成立後のユーザー同士のチャット機能を実装していきたいと思います。

### 実装環境
Rails7.0.2
Ruby3.1.0

## メッセージ機能の仕様
ユーザー同士が、「お気に入り!」評価をしている場合(マッチング成立時)に限り、チャットができるようにします。
ユーザーは複数のチャットに参加することができます。またチャットは、2人でするものとします。

## 実装の流れ
1. マッチング成立ユーザーページの実装(viewとcontroller)
1. チャットルーム用のテーブル(chat_rooms)を作成。
1. 中間テーブル(chat_room_users)を作成
1. ルーティングの作成
1. コントローラーの作成

## マッチング成立後、ユーザーページの実装(viewとcontroller)
### 1.ルーティングの設定
~~~ruby:routes.rb
R

元記事を表示

Rails マッチング機能の実装

## はじめに
Rails でアプリケーションを作成した際に、学んだことの復習と、知識の整理のために投稿します。
### 開発環境
rails: 7.0.2
ruby: 3.0.1

## マッチング機能の仕様
ユーザーは、自分以外のユーザーであれば、何人でもlikeとdislikeすることができますし、逆もまた然りです。

## ER図
テーブルと関係性をわかりやすくするため、ER図を作成します。

スクリーンショット 2022-04-18 16.39.28.png

### likesテーブルのカラムについて
– from_user : 誰からの評価なのかを判別するためのカラム
– to_user : 誰に対しての評価なのかを判別するためのカラム
– status : 評価結果(like or dislike

元記事を表示

100日後くらいに個人開発するぞ!day047

## 今日は引数を学んでみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/6b8687ef-9abb-d0fd-5542-b26af57437f0.png)

## 今日の学び

### メソッドの使い方

* メソッドは何度も同じような処理を書く必要があるときに有効
* 例
* `def introduce(name)`
* `puts “こんにちは”`
* `puts “私の名前は#{name}です” `
* `end`
* `introduce(“山田太郎”)`
* `introduce(“鈴木花子”)`
* `introduce(“田中二郎”)`

* 引数は文字列だけでなく数値も渡せる
* 例
* `def introduce(age)`
* `puts “こんにちは”`
*

元記事を表示

インストール不要!ブラウザだけではじめるRubyゲームプログラミング環境「rbCanvas」の紹介(DXRubyスタイル)

rbCanvas
[https://rbcanvas.net](https://rbcanvas.net)

rbCanvas_公式HP.gif

([rbCanvas公式ページ](https://rbcanvas.net) より)

# 1. はじめに

[Ruby](https://www.ruby-lang.org/ja/)でゲームプログラミングによく使われるライブラリに、[DXRuby](https://dxruby.osdn.jp)があります。また、DXRubyと互換性のある統合開発環境として、[Nyle-canvas](https://spoolkitamura.github.io/nyle-canvas/dev2/site/index.html)や [DXOpal](https://yhara.gi

元記事を表示

【完全自分用】Rubyの問題を解いて知識をアウトプットする。

# はじめに
今回は完全に自分用アウトプットです。
Rubyの問題を解いて、プログラムの知識や考え方を深堀りするために記述します。

# Q1 ハッシュの基礎
まずはハッシュの基礎
“`
puts hash.keys
puts hash.values
“`
のメソッドを実行した際に英語と数字で123が表示されるように記述。
“`
hash = {one: 1, two: 2. three: 3}
“`
これは簡単。
“`
hash = { キー: 値}
“`
基礎中の基礎。
# Q2 二重ハッシュ
続いて二重ハッシュ
“`
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`
ユーザーの名前だけが出力されるようコーディングする

“`
user_data.each do |u|
puts u[:user][:profile][:name]
end
“`
抑える

元記事を表示

対象の文字列から指定した文字を取り出すscanメソッド

対象となる文字列や、文字列を代入した変数から指定した文字を取り出し、その数を出力する方法を記述していきます。

“`
comment = “great good bad good good”
“`
例として上記のような形でcomment変数に入ったgoodの数を知りたい時は次のようにscanメソッドが使用できます。
“`
comment.scan(“good”).length

=>3
“`

scanメソッドは文字列を配列の形で取り出します。
“`
comment.scan(“good”)

=> [“good”, “good”, “good]
“`
なのでlengthを用いて要素の数を取り出しています。

元記事を表示

【paiza】論理演算を用いた計算のまとめ Ruby

表題のものについてRubyの回答がなかったため、まとめてみました。
不備等あればご連絡ください。

■ド・モルガンの法則とビット演算子を使用した回答
“`
a,b,c,d = gets.split.map(&:to_i)

puts (((a | b) & c) ^ d)
“`
■if文を使用した回答
“`
a,b,c,d = gets.split.map(&:to_i)

if a == 0 && b == 0
e = 1
else
e = 0
end

if e == 0 && c == 1
f = 1
else
f = 0
end

if f + d == 1
puts 1
else
puts 0
end
“`

【参考】
https://www.javadrive.jp/ruby/num/index6.html

元記事を表示

rails コントローラ別 アクション別に別々のlayoutを読み込む方法(自分用)

https://www.javadrive.jp/rails/template/index3.html#section3

元記事を表示

「まだRailsでstrftime使ってるやついる?」「いねえよなぁ!!?」【日時のフォーマットをja.ymlで管理する】

※ 結論だけ知りたいという人は[解決法](#解決法)から見てください

「まだRailsでstrftime使ってるやついる?」

「いねえよなぁ!!?」


はい、使ってます。

`strftime`を使用して、日時をフォーマットする際
“` erb:View

<%= @model.time.strftime('%Y年%m月%d日 %H時%M分') %>

“`
のように毎回記述する必要があり
「いちいち指定しなくても同じ形式でフォーマットしてほしい」
「フォーマットをまとめて管理したい」
といった悩みに苦しめられてきました。

「仕方ない」と諦めていたこの悩み…解決する方法を実は見つけてしまったのです。

私みたいに諦めてstrftimeを使っているそこの貴方、今まさにstrftimeを使おうとしているそこの貴方。
「もっと早く気づいていれば、もっといい感じにプロダクトを作れた」
と思うその前に、是非参考にしてみてください。

# strftimeとは?
strftimeは、日時のデータを指定したフォーマット文字列に変換で

元記事を表示

URLパラメータ(クエリ文字列)は文字列で取得されますよ。

先日会社でサービスの開発をしている時、URLパラメータを取得しているのに読み込まれていない事案が発生しました。
案外ミスしがちなポイントだったので記事に残します。(タイトルが結論ですが。)

# やりたかったこと
URLパラメータをインスタンス変数に入れてviewで表示内容を変えるというものです。

“`controler.rb
@user_type = params[:id] # URLパラメータの値を取得
“`

“`view.rb
<% if @user_type == "1" %>
<%= link_to %>
<% end %>
“`

# はまりポイント
はまりポイントというほどでもないですが、ちょいはまりくらいです。
URLパラメータは文字列型で取得されることです。
ですので「よし、id=1のパラメータを取得したぞぉ」といって“`if @user_type == 1“`と書いても認識されないわけです。

# まとめ
「URLパラメータは全て文字列で取得される。IntegerやArrayで使用したい場合は都度、変更する必要があ
る。」
URLパラメー

元記事を表示

100日後くらいに個人開発するぞ!day046

## 今日はメソッドを学んでみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/cd7e40ec-c3b8-cb20-8128-0245c59fcab5.png)

## 今日の学び
### メソッドの作り方(定義の仕方)と呼び出し方
* メソッドとは複数の処理を1つにまとめたもの
* 「def メソッド名」と「end」の間にまとめたい処理を書くことでメソッドをつくることができる
* `def メソッド名`
* `処理1`
* `処理1`
* `end`
* 定義したメソッドを「メソッド名」で呼び出すことができる
* `メソッド名`

### 引数
* 引数(ひきすう)とはメソッドに与える追加情報
* メソッドを呼び出すときに一緒に引数を渡すことでメソッドの中でその値を利用することができる

### 引数を受け取るメソッドの定義
* 「def メソッド名(引数名)」とすることで引数を指定することができる

元記事を表示

テックキャンプ現役受講生のアプリ開発1日目

みなさんこんにちは!今日は要件定義とDB設計をやっていました(+読書)。学んだことのアウトプットします。本日は2つです。

# 起業家の思考法(平尾著)を読んで学んだこと
起業アイデアの出し方について書かれた本です。アプリ開発のアイデア出しに応用できるかなと思って読んでいました。主に応用できるアイデアは2つ。

1、目的を見つけ、現状を分析して、それらの差分が解決すべき課題である。
上記の文脈に合わせて、一つアイデアを出してみます。
例えば、フードロスは0の方がいいよね(目的)。⇨日本ではフードロスが年間○千万トンある(現状)。⇨賞味期限ギリギリの食材を廉価で流通させる市場を作ればいい(課題&解決アイデア)。というような感じです。今回は何らかの問題の解決を、アプリでしようと思います。

2、自分らしさ、優秀な手法、逆説(意外性)の3つを掛け合わせたものが、素晴らしい解である。
上の3要素が合わさらないと、素晴らしい解決策にはならないということです。
・自分らしさとはそのまま個性のこと。
・優秀な手法とは、世に認められている素晴らしいやり方やこと。
・逆説はそのまま
自分らしさだけを全面

元記事を表示

ActiveRecord オブジェクトを dup メソッドでコピーする場合は、インスタンス変数もコピーすることに注意する

# バージョン情報

“`shell
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

$ bin/rails -v
Rails 7.0.3
“`

# 内容

ActiveRecord オブジェクトの属性 (attributes) を引き継いだ別のオブジェクトを作成し、データベースに保存したい場合に [ActiveRecord::Core#dup](https://api.rubyonrails.org/classes/ActiveRecord/Core.html#method-i-dup) を使用することがある。この場合、たしかに属性は引き継がれるが、同時に [Object#dup](https://docs.ruby-lang.org/en/3.1/Object.html#method-i-dup) の振る舞いにより**インスタンス変数の値も引き継ぐ**。

https://docs.ruby-lang.org/en/3.1/Object.html#method-i-dup よ

元記事を表示

MySQLの “The server quit without updating PID file” エラーの対処法

以前rails sをしようとしたときに、The server quit without updating PID file のエラーにハマったので対処法を紹介します。
自分の場合は、mysqlを再インストールし、パスワードを設定したら無事に解消できました。
## 1.mysqlを再インストール
再インストールについては、下記の記事を参考にしました。
https://gonzaemon.site/posts/2019/10/04/_2.html

基本的には、
“`
brew uninstall mysql
brew install mysql
which mysql
“`
すれば、再インストールできます。
そして、再インストールしたらいけるかと思いきや
“`
‘Access denied for user ‘root’@’localhost’
“`
と言うエラーが出てしまいました。
この対処法としては、パスワードを設定すれば解消できると思います。

## 2.パスワードを設定

自分の場合は、この記事を参考にしました。
https://webkaru.net/mysql/mys

元記事を表示

インストール不要!Rubyでゲーム、ビジュアルアート開発ができる新環境「rbCanvas/p5」の紹介

rbCanvas/p5
[https://rbcanvas.net/p5/](https://rbcanvas.net/p5/)

rbCanvas_p5_公式HP.gif

([rbCanvas/p5公式ページ](https://rbcanvas.net/p5/) より)

# 1. はじめに

[Ruby](https://www.ruby-lang.org/ja/)でゲームプログラミングというと、[DXRuby](https://dxruby.osdn.jp)ライブラリが多く使われてきました。また、DXRubyと互換性のある統合開発環境として、[rbCanvas](https://rbcanvas.net/index.html)や [DXOpal](https://yhara.github.io/dxopa

元記事を表示

【Selenium】Dockerコンテナ内でSeleniumを実行すると起きるエラーの解決: Selenium::WebDriver::Error::UnknownError【ruby】

ソースコード

だいぶはしょってますが、クロールするための、Crawlerクラスです。

“`ruby
require ‘selenium-webdriver’

class Crawler
def execute
driver.navigate.to start_url
driver.find_elements(:xpath, ‘//*[@id=”tabular-buybox”]/div[1]/div[4]/div/span/a’)
# 以下略
end

private

def driver
@driver ||= begin
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument(‘–headless’)
Selenium::WebDriver.for(:chrome , options: options).tap do |driver|
driver.manage.timeou

元記事を表示

Ruby で開発する時に、少し助けになる(かも知れない)小ネタ

はじめまして。
Qiita は読み専だったのですが、アウトプットも行いたいと思い、投稿をすることにしました。
よろしくお願いいたします。

# 概要
Ruby でより良いコードを書くための話題**では無いです。**(すみません)

開発時、特に動作確認(不具合修正を含む)を行う時に実施すると
**少しだけ作業に掛かるコストが低減される**
というお話しです。

### 1. デバッグ目的の出力処理などは行頭に書くと良い(理由:あとで探しやすいから)
(これは Ruby に限った話しではありませんが)
簡単な動作確認のために、中身を見たいオブジェクトの内容を
出力させて目視する、という手段は一般的かと思います。
そのような(最終製品には含まれない)目的で使うコードは行頭から書くと良いです。
このような感じです:
“`rb
def hoge(arg)
if arg.class != Hash
print “arg の class は? : “; pp arg.class
end

end
“`
このように書いておくと、後で(必要なくなってから)削除する時に
`^p(p

元記事を表示

Railsのテストコードの書き方について

## 概要
こんにちは。shunです。前職ではテストコードを書いたことがなかったため、今回は自分用のメモもかねてRailsでのテストの書き方について説明していきたいと思います

## 前提
– テストを書いたことがない
– Ruby 2.6.6
– Rails 6.0.5
– Rails標準のテスティングフレームワークであるMinitest(後述)を使います
– テストを書いたことない人向けなので今回はRspecは使いません
(今後Rspecについての記事も書いてみたいです)

## そもそもテストって何?なんでテストが必要なの?
テストはプログラムが想定通りの動きをするか確認するためのものでここでは3種類のテストを取り上げます
– Unit test(単体テスト)=モデルのテスト
– Controller test(機能テスト)=コントローラのテスト
– Integration test(結合テスト)=全体の動作の流れのテスト

また、テストコードを書く理由としては主に

– リファクタリングを実施しやすくするため
– コードの品質を高めるため
– テストを自動化するため
– バグを

元記事を表示

OTHERカテゴリの最新記事