- 1. 100日後くらいに個人開発するぞ!day042
- 2. 【Rails】rescue_fromによる例外処理
- 3. 【自分用】Rubyの基礎を振り返る。①
- 4. TECH CAMP 3日目 ~Ruby~
- 5. 【aws-sdk-dynamodb】Aws::DynamoDB::Errors::ValidationException The provided key element does not match the schema
- 6. Rubyのハッシュを要素にもつ配列とclassの違いついて初心者ながら整理する
- 7. Rubyバージョンが切り替わらない? rbenvがバージョンを決める順番について
- 8. Ruby の引数の種類をまとめてみた
- 9. 「完全に理解した」状態の僕が「チョットワカル…」になるまでのとある企業の新人研修 part.2
- 10. 100日後くらいに個人開発するぞ!day041
- 11. 技術面接 質疑応答まとめ[未経験転職]
- 12. 「Rails パフォーマンスチューニング」viewファイルで起こるN + 1問題の修正方法
- 13. FakerBotがActiveHashのバリデーションにかかってしまう問題の解決法
- 14. 【Rails】ActionCableの実装〜mapメソッドについて〜
- 15. Railsのヘヴィな重い一覧ページを改修したお話。
- 16. 100日後くらいに個人開発するぞ!day040
- 17. Railsでmigrationかけた後にブランチをチェックアウトしてしまった時の復旧方法
- 18. 【Rails】DBから最新データが取得されていない時の対処法
- 19. begin rescue 文
- 20. LocalJumpError: unexpected return
100日後くらいに個人開発するぞ!day042
## 今日は配列と繰り返し処理をやってみた!

## 今日の学び
### 配列
* 配列は複数の値をまとめて管理することができる
* 配列は[値1,値2,値3]のように作る
* 配列に入っているそれぞれの値を要素と呼ぶ
* 配列は値の一種なので変数に代入することができる
* 配列を代入する変数名は複数形にすることが多い
* 配列の要素の値も変数展開を用いて文字列の中に含められる
* 例:”私の名前はYamadaです”と出力したい場合
* `names=[“Yamada”,”Suzuki”,”Tanaka”]`
* `puts “私の名前は#{names[0]}です`### インデックス番号
* 配列の要素には前から順に「0,1,2,…」と数字が割り振られており、その番号をインデックス番号と
【Rails】rescue_fromによる例外処理
## はじめに
rescue_fromについて軽く調査したので記録する。この記事がだれかの役に立てば幸いです。
## 結論
raiseで発生させた例外を`rescue_from`で検知し、指定したメソッドの実行に繋げることができる。
### 詳細
大まかな使い方は以下の通りになります。
“`app/controllers/application_controller.rb
# Forbiddenの例外を捕捉した場合に、rescue_403メソッドを実行する
rescue_from Forbidden, with: :rescue_403private
def rescue403(e)
render status: :forbidden, json: { message: “アクセス権限がありません” }
end
“`Forbiddenの例外を発生さえる流れとしては、
“`app/controllers/application_controller.rb
# 管理者のみに実行権限を与える
def allowed_to_admin_user!
【自分用】Rubyの基礎を振り返る。①
# はじめに
今回はRubyに関して簡単にまとめていきます。
自分の復習用。自分で見て分かるようにまとめてあります。# Ruby
プログラミング言語の1つ。記述がシンプルで分かりやすい。
## Rubyの特徴
① Webアプリケーションの開発に特化している。
② データベースとの連携が容易。
③ 世界で幅広く使用されている。
④ 文法が覚えやすい。# Rubyのあれこれ
### rubyコマンド
Rubyに関するさまざまな操作が実行できる。
“`
ruby sample.rb
“`### irb
ターミナルから直接rubyを実行できる。### 文字列
プログラミングの中で文字を扱うための値。
`”ダブルクォーテーション”`か`’シングルクォーテーション’`で囲む。
文字列を連結する場合は”Hello” + “World”### 数値
“`
# 整数
10# 負の値
-10# 小数
3.14
“`
クォーテーションで囲まない。### メソッド
プログラミングにおける何らかの処理をまとめたもの。### lengthレングスメソッド
文字列をカウン
TECH CAMP 3日目 ~Ruby~
# 学習内容
– HTML
- `object-fit:cover;`,`object-fit:contain;`
- `opacity`
– Ruby
- getsメソッド、chompメソッド
- バックスラッシュ`\`
- .timesメソッド、.eachメソッド
- スコープ
- 引数、仮引数、実引数
- 戻り値
- メソッド
# 苦労したこと、改善
– 指定された文字色が#A0A0A0だったが数字の0を英語のOと入力したため、文字色が変わらなかった。
改善:数字の0やカンマピリオドなど似ている数字や文字に気をつけて入力する。できればコピペする。### メモ
本日初めてチーム内でもくもく会を開催しました。一人で作業しているよりも作業が捗りました。
少ないチームの中で開催すると、参加するのに勇気がいると思うので、同じ127期のメンバーにも声をかけて大人数で実施したいと思います。
【aws-sdk-dynamodb】Aws::DynamoDB::Errors::ValidationException The provided key element does not match the schema
環境
–“`yml
– OS: macOS Big Sur 11.5.2
– ruby: 2.7.1
“`問題
–“`ruby
# clientオブジェクトを用意
client = Aws::DynamoDB::Client.new(
access_key_id: ENV[‘AWS_ACCESS_KEY_ID’],
secret_access_key: ENV[‘AWS_SECRET_ACCESS_KEY’],
region: ENV[‘AWS_REGION’]
)# 特定のカラムの値を更新
client.update_item({
table_name: “test_table”,
key: {Id: 1},
update_expression: “SET #{column} = :val”,
expression_attribute_values: {‘:val’ => value }
})
“`上記を実行すると、以下のエラーが発生
“`
Aws::DynamoDB::Errors::ValidationExcepti
Rubyのハッシュを要素にもつ配列とclassの違いついて初心者ながら整理する
# 何に困った?
ハッシュを要素にもつ配列と複数の引数をもつclassの扱い方がごっちゃになってしまったので、今一度整理します。
整理ポイントは
+ データ群のイメージ
+ データ出力の方法
+ each文で各要素データの出力記事最後に、僕が勘違いしたポイントも紹介します。
# ハッシュを要素にもつ配列
本記事ではハッシュを要素にもつ配列として以下のものを準備しました。“`ruby:hash_array.rb
hoges = [
{fuga1: “aa”, fuga2: “ab”, fuga3: 0},
{fuga1: “ba”, fuga2: “bb”, fuga3: 1},
{fuga1: “ca”, fuga2: “cb”, fuga3: 2}
]
“`## イメージを図で理解
ハッシュを要素にもつ配列は表で考えると分かりやすいです。
によると、
rbenvが利用するrubyバージョンを確定する順番は、
1. RBENV_VERSION環境変数を確認する。もし指定があれば、そのバージョンにする。RBENV_VERSION環境変数は`export RBENV_VERSION= x.x.x`コマンドラインで切り替えられる。(`set by`部分は`RBENV_
Ruby の引数の種類をまとめてみた
[ブログ記事](https://secret-garden.hatenablog.com/entry/2022/03/11/210246)からの転載です。
普段何気なく書いている Ruby なんですが実はメソッドの引数の種類って思ったよりも多くてまとめてみました。
実際自分も Ruby の AST をいじっている時に引数の種類が多すぎて混乱したのでまとめておくと色々と役に立つかなーと。
と、軽い気持ちで書いてみたんですが結構なボリュームになってしまいました。
引数の名称とかは調べつつ独断と偏見で書いてあるのでそこら辺はご注意ください。## 諸注意
* この記事は基本的に Ruby 3.1 を元にして動作確認しています
* 下にも書いてあるんですが `仮引数(parameter)` についての解説で `実引数(argument)` の話はあんまりでてきません
* 引数の名称は日本語に寄せていますが Ruby 界隈だと英語で書いてある事が多いかも
* 調べる時は英語の方で調べてもらったほうが情報はでてくると思う## 引数という言葉の意味とは
『引数』という言葉には厳
「完全に理解した」状態の僕が「チョットワカル…」になるまでのとある企業の新人研修 part.2
▼前半こちらから▼
https://qiita.com/kobayashimakoto/items/4fe942815c7fc941821f
今回は前回に引き続いて、どのような流れでアプリを作ったのかをご紹介します。
# はじめに
会社員の皆さん**他部署の人の「名前」や「趣味」をいくつ言えますか?**
「みんなの趣味くらい余裕で知ってるわ」と言えるように
**お手伝い**をするアプリを作ったのでご紹介します。## アプリ概要 〜TeaTime〜

**TeaTime(茶会)とは**
**広く、お茶などを飲みながら話を交わすのを楽しむ集まり。**
※ 精選版 日本国語大辞典「茶会」の解説## 簡単な使い方説明
・TeaTimeに登録するだけ。以上!

## Ruby学習レッスンIコースを終了!

## 今日の備忘録
* ◯の倍数は割ったときの余りが0かどうかで判別する
* 例:もし変数numberが3の倍数であれば”3の倍数です”と表記したい場合
* `if number % 3 == 0`
* ` puts “3の倍数です”`
* `end`
* 条件式で等号を用いる際は「==」にする
* ダメな例
* `if
技術面接 質疑応答まとめ[未経験転職]
技術面接があったため,振り返りとして質疑応答をまとめました.
解答について間違いがあればご指摘お願いします.## この記事を読んで分かること
オブジェクト指向やHTTPなどのwebの基礎知識に関する知識
## 前提
筆者は未経験でバックエンドエンジニアを志望しています.そのため質問内容はそれに関連したものになります.
# 質疑応答
## 質問1:RESTについて教えてください
webのアーキテクチャスタイルの一つ
クライアントがHTTPでリクエストすると,URIに対して定義したレスポンスが返される
RESTfulなWebサービスの性質として,以下の4つがあげられるアドレス可能性:URIによりリソースを一意に指し示す性質
接続性:リソースをリンクで接続することでアプリケーションを形成する性質
統一インターフェース:命令体系が(HTTPメソッドで)統一されている
ステートレス性:サーバーがクライアントのアプリケーションの状態を保存しない性質## 質問2:HTTPについて教えてください
クライアントがHTML文書などのリソースをサーバーから取り出すこ
「Rails パフォーマンスチューニング」viewファイルで起こるN + 1問題の修正方法
controller側ではなく、viewのeachでN + 1が発生していたので修正しました。
Ruby:3.1
Rails:7.0.2.3
MySQL:8.0## 仕様
– userはcompanyをお気に入り(favorite)登録することができる
– favoriteは中間テーブル
– companyに紐づくfavoriteの中に、ログイン中のuser.idと同じものがあればCSSのclassを追加上記の仕様を、この様に書いていた。
“`ruby:companies_controller.rb
class CompaniesController < ApplicationController def index @companies = Company.all.includes(:addresses).page params[:page] end end ``` ```erb:index.html.erb <% @companies.each do |company| %>
<% if company.favor
FakerBotがActiveHashのバリデーションにかかってしまう問題の解決法
FakerBotを使ってActiveHashを含んだテストコードを作成しようとした際、問題が発生してしまったので、その問題と解決法を書いていきます。
## 問題点:FactoryBotがバリデーションにかかるidを選択してしまい、テストに失敗する
“`ruby
class Prefecture < ActiveHash::Base self.data = [ { id: 1, name: '---' }, { id: 2, name: '北海道' }, { id: 3, name: '青森県' }, ``` ```ruby class Item < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions validates :prefecture_id, numericality: { other_than: 1 } ``` 選択肢の'---'に該当するprefecture_id: 1を選択すると、バリデーションにかかるように設定してあります。 ```ru
【Rails】ActionCableの実装〜mapメソッドについて〜
## はじめに
実装の流れは長くなるので省略させていただきます。
自分が疑問に思ってノートに記録した物を記事にしていきます。## 前提条件
Ruby 2.6.3
Rails 6.1.5## 外部キー制約
references型の特徴
**・外部キー制約がつかない。そのため、foreign_key: trueをつける。
・_idが省略される**中間テーブルに使用です。
“`php:migrate
# 外部キー制約:外部にその値を主キーとして持つ他のテーブルがあること
t.references :chat_room, null: false, foreign_key: true
“`## mapメソッド
中間テーブルのChatRoomUserから、条件を書いて配列を作ることで、
createする際の条件分岐に使用。ログインユーザーが存在しているチャットルームデータを取得
“`php:chat_rooms_controller.rb
ChatRoomUser.where(user_id: current_user.id).map(&:chat_room)
`
Railsのヘヴィな重い一覧ページを改修したお話。
# 問題
User一覧画面、表示までに**20秒**ほどかかっていた。
メモリ食い過ぎで*サーバーが落ちる*こともあった# 結論
一覧画面に**不必要なモーダル**の切り分け
ハイパー**N+1**問題
を解決することで表示時間が1秒ほどになった。## 詳細
一部抜粋したコード(説明に不必要な箇所は省いています)
“`ruby:customers_controller.rb
CustomersController
def index
@customers = Customer.all
end
“`“`erb:index.html.erb
<% @customers.each do |customer| %><%= customer.mail %> <%= customer.foobar %> <%= customer.hoge %>