Ruby関連のことを調べてみた2023年01月26日

Ruby関連のことを調べてみた2023年01月26日

【初学者向け】DockerでRails7の環境構築(2023年版)

[Dockerの公式ドキュメント](https://docs.docker.jp/compose/rails.html)でRails7系の環境構築をしたら途中で詰まったので、スムーズに構築していく方法を記します✏️

## 前提条件
開発環境
– M1Mac: Ventura13.0
– [Docker Desktop](https://docs.docker.com/desktop/install/mac-install/)インストール済み

## この記事でわかること

✅[Dockerの公式ドキュメント](https://docs.docker.jp/compose/rails.html)に沿ったRails7系の環境構築方法✅
(公式ドキュメント通りに行うとエラーが発生するので、本記事ではその解決方法も記します!)
※ 本記事では、DockerでRails7を最速で環境構築する方法を記します。DockerやRailsの詳しい説明については別記事をご参照ください?

## 環境構築手順

### 1. 任意のディレクトリを作成
Macの任意

元記事を表示

うまく使えばレスポンスが爆速に Rails 7から導入されたload_asyncについて解説

今回はRails 7から導入された新機能 load_asyncについて解説します!

[私のブログ](https://ftb3nip05e.microcms.io/apis/blogs/dnjqj82-63)にも同じ内容を記載しておりますので、こちらも是非ご参照ください

## load_asyncとは
Rails 7から追加された、「非同期的にクエリ実行するためのメソッド」です。

並列にクエリが実行されるため、うまく使うと **これまで時間がかかっていた処理をかなり短縮できる「可能性」** があります。

## load_asyncの使い方
以下のような場面を想像してみましょう。

mypageを取得するメソッドの中で、「お客様のプロフィール」「お客様の購入履歴」「お客様の獲得ポイント」の3つを取得しています。

“` ruby
def mypage
@profile = Profile.find_by(user_id: params[:user_id])
@orders = Order.where(user_id: params[:user_id])
@poin

元記事を表示

Stripe Connectの連携アカウントのSubscriptionの更新方法(Ruby)

連携したアカウントのサブスクリプションの内容を変更する方法が分からずに少し苦労したので、変更方法についてメモを残します。

“`code .rb
Stripe::Subscription.update(
“subscription_id”, # sub_××××××××××××
{
# 変更したい内容を記述
application_fee_percent: “20”, # サブスクリプションの手数料を20%に変更
},
{ stripe_account: ‘連携アカウントのID’ } # acct_××××××××××××
)
“`

元記事を表示

単価に見合ったRubyエンジニアを雇うために面談で使える技術的な質問

### 解決したいこと
単価に合わないRubyエンジニアを雇いたくはない。

### 解決方法
面談で技術的な質問で単価に合わないエンジニアか判断できるようにする

### 技術的な質問集
railsエンジニアの面談時の技術的な質問をまとめました↓

Q: Userモデルが複数のpostを持つ時、userモデルにどのような記述をしますか?
A: has_many :posts

Q: Userモデルが複数のPostを持つ時、Postモデルにどのような記述をしますか?
A: belongs_to: user

Q: Userモデルが複数のPostを持つ時、userのレコードが削除された時にpostsも削除されるようにするためにどのような記述が必要ですか?
A: has_many :posts, dependent: destroy
has_manyの記述の後にdependent: destroyをつける

Q: railsで、データベースの構成を変更するために何をしますか?
A: マイグレーションファイルを作成する

Q: マイグレーションファイルを作成するコマンドは?
A: ra

元記事を表示

変更した差分だけ、rubocopでコードチェックする方法

gitとrubocopをプロジェクトに入れている時のみ使えます。

コード整形はしない場合
“`shell
git diff –diff-filter=ACMR –name-only | xargs bundle exec rubocop
“`

コード整形までさせる場合
“`shell
git diff –diff-filter=ACMR –name-only | xargs bundle exec rubocop -a
“`

# rubocop

https://github.com/rubocop/rubocop

元記事を表示

Rails ajax 処理の場合 ApplicationController に書いてある 共通処理 を スキップ したい

# 何がしたい?
全ページ共通で行いたい処理って、ApplicationControllerのbefore_actionに書いたりするじゃないですか?
例えば、今みんなの右上にあるQiitaの通知なんかもおそらくApplicationControllerのbefore_actionで件数やコンテンツをセットしているのではないかな。(これは妄想なので真相は知らんけどね)

ApplicationControllerのbefore_actionって何も特別な記述をしていない場合、
Controllerに入る前に確実に通ってしまうのですが、そうなるとajaxなどの処理時にも通ることになるやん?
そうなると割と重い処理をbefore_actionに書いている場合ちょっとしたajax処理でも激オモになってしまうんですわ:poop:

元記事を表示

Ruby2

問題

配列の内部に、複数のユーザーの情報をハッシュとして持つ変数user_dataがあります。

“`Ruby
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`

user_dataを利用して、全てのユーザーの名前だけが出力されるようにRubyでコーディングしてください。
ただし、出力結果は次のようになるものとします。

“`Ruby:ターミナルの表示
George
Alice
Taro
“`

“`:模範解答1
user_data.each do |u|
puts u[:user][:profile][:name]
end
“`

あるいは

“`Ruby:模範解答2
user_data.each{ |u| puts u.dig(:user, :profile, :name) }
“`

【解説】
ハッシュから特定の値を取得する場合は

元記事を表示

テックキャンプ卒業から現在まで

## テックキャンプに関して

未経験からエンジニアを目指す上で、プログラミングスクールに通うというプロセスを選択する事は、世論として賛否両論あるかと思うが、結論として私個人としては選択して良かったと思える環境であった。
今からお話しする内容は、他人からすると間違っていると感じる事や納得して貰えない事はあると思うが、プロセスなど人其々違って当たり前だと感じる。それが間違っていたか正解かは本人が決める事だとも感じる。

具体的に、私がテックキャンプに通って良かった点を下記にてざっくばらんに述べさせて頂く。

# 1点目: クラス単位での取り組み(アウトプットの習慣化)

実際は、クラスと言えど、勿論カリキュラムをこなすのは己自身ではあるが1日に数回、クラスの仲間とZOOMでコミュニケーションを取る。コミュニケーションの内容としては、カリキュラムの進捗具合などもあるが、メインとしては学んだ事をアウトプットし合う、そして不明点をクラスで共有し、皆で教え合うという習慣が構築されていた事は、自分自身非常に有意義であった。
今までの人生を振り返ると、学ぶ事に対する推進力や探究心などはある方ではない

元記事を表示

【rails】日付でのDB検索を行いたい

例)
start_atカラムで開始時間を管理している。
指定した日付に該当するデータを確認したい。

~~~:railsコンソール
search_date = ‘2021-06-15’
ExamSchedule.where(start_at: search_date.in_time_zone.all_day)
~~~

参考記事
https://tech.pla-cole.co/rails-db-action/

元記事を表示

二重ハッシュ

– ハッシュから特定の値を取得するときは、その値に対応するキーを指定する必要があります。

“`
ハッシュ[取得したい値のキー]
“`

– 二重ハッシュから特定の値を取得するときは、取得したい値のキーまで連続して指定する必要があります。

“`
ハッシュ[取得したい値のキー][取得したい値のキー]
“`


“`ruby
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`
上記、複数のユーザーの情報をハッシュとして持つ変数があります。
全てのユーザーの名前だけが出力されるようにコーディングする場合どうしたら良いか?

模範解答
“`ruby
user_data.each do |u|
puts u[:user][:profile][:name]
end
“`
あるいは
“`ruby
user_data.each{ |u| puts u.dig(:user,

元記事を表示

ruby on railsでapi作る覚書

## プロジェクト作成
-apiオプションで、apiモードと呼ばれるファイル群で構成してくれる(不要なものは削いでくれる)

“`
rails new sample-api –api
“`

## モデル作成
データスキーマのこと
ここで定義したものがDBに反映することになる

“`
rails g model Movie name:string category:string description:string year:integer
“`

スキーマ作成
db/migrate/の中にできているスクリプトが実行される

“`
rails db:migrate
“`

## 初期データ登録

“`db/seeds.rb
movies = [
[“cube”, “cube”, “in the cube”, 2000],
[“saw”, “bathroom”, “jigsaw”, 2004],
]

movies.each do |movie|
Movie.create(name: name, category: category, descriptio

元記事を表示

Ruby on Rails初心者の学習記録 Part4:CRUD(後編)

# はじめに
Ruby on Rails初心者の学習記録Part4です。
[Part1](https://qiita.com/Yasushi-Mo/items/d24fd4abab2c1333c522)では、Rubyの基本文法やRailsを利用したWebアプリケーションの開発環境構築手順及びルーティングについて学びました。
[Part2](https://qiita.com/Yasushi-Mo/items/5dfe81d39b5a153fe43c)では、MVCアーキテクチャのモデルについて学びました。
[Part3](https://qiita.com/Yasushi-Mo/items/931cfcef990647f1da18)とPart4では、 [“Getting Started with Rails”](https://guides.rubyonrails.org/getting_started.html) の [“7 CRUDit Where CRUDit Is Due”](https://guides.rubyonrails.org/getting_started.html#

元記事を表示

Rubyのversion変更ができない時

## はじめに
– 今日から転職活動をしながら毎日(できれば)学習している記事の備忘録や、情報発信として投稿していきたいと思います。
よかったら見ていってくださいね!!

## Rubyのversionが変更できなかった!

### Rubyのインストール可能なversionを調べる
“`
rbenv install -l
“`
– まずインストールの-l オプションを使用してインストール可能なRubyのバージョンを調べます。

### Rubyをインストールする
今回はRubyの2.7.0をインストールします。

“`
rbenv install 2.7.0
“`
数分待っているとここでエラーが!

“`
BUILD FAILED (macOS 12.6 using ruby-build 20220630)
Inspect or clean up the working tree at
/var/folders/h5/8fx53bl54993kvjncc96zwsm0000gn/T/ruby-build.20230125010939.78815.SWRN63
Resul

元記事を表示

rails 学習備忘録その2 ~道場レッスンIIまで~

# はじめに
マジでただのメモ 読んでもらうために書いてないので悪しからず…
第一回↓
https://qiita.com/menma_at_here/items/fe207f4a4241c11d504e

# 内容
progate の rails入門を進めていく
4章~5章まで

## rails IV

### 編集
– updateとかcreateするときは、ルーティングを `get` ではなく `post` にする必要がある
– `post “posts/:id/update” => “@posts#update”` みたいな感じでupdateアクションに飛ばして、その中で `redirect_to(“~~”)` をする、みたいな流れ
– form を使うときは、以下みたいな感じで `form_tag` を使う
“`erb
<%= form_tag("/posts/#{@post.id}/update") do %>

OTHERカテゴリの最新記事