- 1. オリジナルアプリ制作過程 〜wants〜
- 2. 【Ruby】比較演算子について
- 3. 【学習メモ】Ruby / Ruby on Rails
- 4. rbs-inline の自動ビルドを fswatch を使わずに行う
- 5. 【Rails】ArgumentError: The scope body needs to be callable.
- 6. 【Ruby on Rails】なぜ非同期通信(deliver_later)で、メールの送信状況が不安定になる現象が発生するのか?
- 7. Rails 7.2に標準搭載されたGitHub Actions CIワークフローを見て学ぶ
- 8. Dev Containerを使ったら超効率よく開発環境ができた話【Ruby on Rails】
- 9. 【Rails初心者必見】よくあるエラーとその解決方法:プロが教える10のトラブルシューティング
- 10. Railsの「インスタンス変数」をプログラミングスクール講師が丁寧に解説
- 11. レビューを受ける前に知っておきたい!Railsエンジニアが教えるレビューポイント
- 12. Railsでマイグレーション時に発生するよくあるエラーとその対処法
- 13. Railsでto_paramメソッドが呼び出せない
- 14. find find_by whereメソッドの違いについて
- 15. JavaScriptでiOSのクリップボードにコピー-RilsTIL(1h)
- 16. Ruby Silver勉強の参考に
- 17. VSCodeでRubyの環境構築
- 18. RailsでSass自動コンパイル, assetsの設定 – RailsTIL(4h)
- 19. ActiveRecord::ConnectionNotEstablished connection to server on socket “/tmp/.s.PGSQL.5432” failed: fe_sendauth: no password suppliedの対処例【Rails】
- 20. rubyでeachメソッドで空配列をループで回しても処理は走らない
オリジナルアプリ制作過程 〜wants〜
### 本日の進捗報告: Wantsアプリのリクエスト機能実装
#### 1. ルーティングの設定
まず、`config/routes.rb` を更新しました。リクエストに関連するルートを設定し、`requests#index` をアプリのルートパスに設定しました。
“`ruby
Rails.application.routes.draw do
resources :requests, only: [:index, :new, :create]
devise_for :users
root to: “requests#index”
end
“`#### 2. リクエストコントローラーの実装
次に、リクエスト一覧と新規リクエスト投稿機能を `app/controllers/requests_controller.rb` で実装しました。リクエストの一覧表示、リクエスト作成フォームの表示、リクエストの作成処理を定義しました。
“`ruby
class RequestsController < ApplicationController def inde
【Ruby】比較演算子について
## 比較演算子一覧
| 演算子 | 例 | 意味 |
|——–|————|——————–|
| `==` | `a == b` | aとbが等しい |
| `!=` | `a != b` | aとbが等しくない |
| `>` | `a > b` | aはbより大きい |
| `>=` | `a >= b` | aはb以上 |
| `<` | `a < b` | aはbより小さい | | `<=` | `a <= b` | aはb以下 | | `<=>` | `a <=> b` | aとbの比較結果を返す |## 各演算子の詳細
### `==` (等しい)
`==` 演算子は、2つの値が等しいかどうかを比較します。等しい場合は `true` を返し、そうでない場合は `false` を返します。
“`ruby
a = 5
b = 5
puts a
【学習メモ】Ruby / Ruby on Rails
# Ruby
Rubyについて学んだ知識をまとめます
### 変数展開
文字列の中で、#{変数名}とすることで、変数を代入している値に置き換えて、文字列に含めることができる
変数展開を用いる際は、ダブルクォーテーションで囲む必要がある
### elsifの注意点
elsifは必要な数だけ並べることができますが、複数の条件に合致したとしても、実行されるのは最初に合致した条件の処理のみである。
そのため条件の順番を間違えると、期待した分岐がなされないことがある
### each文 書き方
配列.each do |変数名|
処理
end
変数名は好きな名前をつけられるが、配列の変数名の単数形にすることが多い
### シンボルとは
シンボルとは、文字を「”」や「’」で囲む代わりに、先頭に「:」をつけた書き方のことをいいます
文字列とシンボルは厳密には異なりますが、基本的には同じように使用することができる
### 真偽値を返すメソッドについて
if文で使うような条件式をreturnすると、その条件式の結果として得られる真偽値(trueまたはfalse)を返すことができる
真偽値を返すメソッド
rbs-inline の自動ビルドを fswatch を使わずに行う
[rbs-inline](https://github.com/soutaro/rbs-inline) をチーム内に導入するにあたって、 watch してビルドするための仕組みを整えた。
rbs-inline の README には `fswatch -0 lib | xargs -0 -n1 bundle exec rbs-inline –output` が紹介されている。
ただ、この方法だと [fswatch](https://emcrisostomo.github.io/fswatch/) を各々インストールする必要がある。 (チーム開発では、セットアップを複雑にしたくない、等で外部ツールに依存したくないことがある)代わりに [listen](https://github.com/guard/listen) gem を使って Ruby 内で完結するようにした。実際の watch するコードは ↓ の感じ。
“`ruby:Rakefile
namespace :rbs do
TARGET_DIRS = %w(app lib).freezedesc ‘Buil
【Rails】ArgumentError: The scope body needs to be callable.
## はじめに
Railsのアップデート中にscopeを使用している箇所でエラーが出たので、その対応をまとめます。## 問題
コード
“`ruby
scope :valid, where(:is_valid => true)
“`エラー文
“`ruby
ArgumentError: The scope body needs to be callable.
“`## 解決方法
以下のように修正します。
“`ruby
scope :valid, -> { where(:is_valid => true) }
“`## 参考
https://stackoverflow.com/questions/28951671/argument-error-the-scope-body-needs-to-be-callable
【Ruby on Rails】なぜ非同期通信(deliver_later)で、メールの送信状況が不安定になる現象が発生するのか?
# メモ
### はじめに
Ruby on Railsを用いたアプリケーション開発をしていく中で、「**非同期通信でメール送信を行う場合、たまに送信されない現象が発生する**」という怪奇現象にぶち当たり、原因が判明したので本記事にて共有します。
# 同期通信と非同期通信のメール処理の違い
まず、メール送信処理に関わる同期通信と非同期通信の違いについて、表を用いて解説します。
||同期通信|非同期通信|
|:-:|:–|:–|
|内容|逐次処理でメールを通信する|並行処理でメールを通信する|
|メソッド|`deliver_now`|`deliver_later`|
|処理時間|大きい|小さい|
|特徴(メール受信)|確実にメールが届く|ジョブが中断されるとメールが届かない|
|特徴(トランザクション)|同じトランザクションで処理する|非同期通信用のトランザクションを立てて処理する|
|用途|1つ1つ確実に送る場合|メールを大量に送る場合|同期通信と非同期通信の大きな違いは、処理手順が**逐次処理(順番に行う処理)なのか、もしくは並行処理なのか**ということです。逐次処理の
Rails 7.2に標準搭載されたGitHub Actions CIワークフローを見て学ぶ
Rails7.2から、GitHub Actionsを使ったCIワークフローが標準で用意されるようになりました。
これにより、Railsアプリケーションの開発において、テストやセキュリティチェック、スタイルチェックが自動化され、開発体験が向上します。
このワークフローを見ていく中で、いくつかの学びがあったので、備忘録としてまとめてみました。
「CIで何しているかよくわからない」という方でも、この記事を通して「CIでこういうことをしているんだ」という理解を深めてもらえたら嬉しいです。# 各ジョブを見ていく
## 1. scan_ruby(セキュリティチェックの自動化)
“` ci.yml
name: CIon:
pull_request:
push:
branches: [ main ]jobs:
scan_ruby:
runs-on: ubuntu-lateststeps:
– name: Checkout code
uses: actions/checkout@v4– name:
Dev Containerを使ったら超効率よく開発環境ができた話【Ruby on Rails】
# はじめに
Rails 7.2 では、`–devcontainer` オプションを使ってプロジェクトを作成することで、Dev Containerを簡単に設定できるようになりました。
実際に自分でセットアップしてみたところ、想像以上に簡単に十分な環境を作成できたので、その手順を紹介します。# 構築手順
[Dev Containerでの開発ガイド](https://railsguides.jp/getting_started_with_devcontainer.html)を参考に進めました。
DockerやVSCodeなどは普段から使っているので、これらのインストール手順は省略します。## VS Codeに拡張機能をインストール
VSCodeの拡張機能検索で「Dev Containers」と検索し、拡張機能をインストールします。
![スクリーンショット 2024-09-30 9.59.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268830/1d5cd783-b82d-11ec-5d
【Rails初心者必見】よくあるエラーとその解決方法:プロが教える10のトラブルシューティング
こんにちは!現役のフルスタックWebエンジニアで、プログラミングスクールの講師も務めている「とまだ」です。
Railsを学び始めた方なら、きっと「エラーが出てどうしていいかわからない…」という経験をしたことがあるのではないでしょうか?
この記事では、Railsで頻繁に遭遇するエラーとその解決方法を、実践的なコード例を交えて詳しく解説していきます。
## 1. はじめに:Railsエラーとの付き合い方
Railsでアプリケーションを開発していると、様々なエラーに遭遇します。初めてそのエラーを見たときは「何が起きているんだ?」と焦ってしまうかもしれません。
しかし、落ち着いて以下のステップを踏むことで、多くのエラーは解決できます。
1. エラーメッセージをよく読む
2. エラーが発生している箇所を特定する
3. エラーの原因を推測する
4. 解決策を考え、実行する
5. 解決しない場合は、エラーメッセージをGoogle検索するエラーは決して敵ではありません。むしろ、アプリケーションが正しく動作するためのヒントを与えてくれる「味方」だと考えましょう。
それでは、具
Railsの「インスタンス変数」をプログラミングスクール講師が丁寧に解説
今回は、Railsにおける「インスタンス変数」について詳しく解説していきます。
「インスタンス変数って何?」「どうやって使うの?」と疑問に思っている方も多いのではないでしょうか。
インスタンス変数は、Railsアプリケーションを作る上で非常に重要な概念です。
それでは、早速見ていきましょう!
## 1. Railsにおけるインスタンス変数の基本
### 1.1 インスタンス変数とは何か
まずは、インスタンス変数の基本から押さえていきましょう。
インスタンス変数は、オブジェクト(インスタンス)に属する変数のことです。
Rubyでは、変数名の先頭に「@」をつけることで、インスタンス変数として定義できます。
例えば、こんな感じです。
“`ruby
class User
def initialize(name)
@name = name # これがインスタンス変数
end
end
“`このコードでは、`@name`がインスタンス変数です。
Userクラスのインスタンスが作られるたびに、それぞれのインスタンスが独自の`@name`変数を持つことに
レビューを受ける前に知っておきたい!Railsエンジニアが教えるレビューポイント
現役のフルスタックWebエンジニアで、プログラミングスクールの講師も務めている「とまだ」です。
プログラミングスクールで学んでいる方も、現場に出ている方も、日々コードレビューを受ける機会があると思います。
そして「コードレビューって、何を見られるのかな?」と不安に思うこともあるかもしれません。
今回は、私が現場で日々実践している、Railsプロジェクトにおけるコードレビューのポイントを詳しくお伝えします。
## コードレビューの目的を理解しよう
### コードレビューはバグの予防や品質向上に役立つ
「えっ、こんなバグ見逃してた!?」なんて経験、ありませんか?
コードレビューは、そういったバグを見逃さないための役割があります。
例えば、こんなコードがあったとします。
“`ruby
def calculate_total_price(items)
total = 0
items.each do |item|
total += item.price * item.quantity
end
total
end
“`一見問題なさそうですが、実
Railsでマイグレーション時に発生するよくあるエラーとその対処法
筆者の本職はWebアプリケーションエンジニアですが、プログラミングスクールの講師として、Ruby on Railsのコースを担当しています。
そこで、受講生からよく聞かれる、Railsアプリケーションの開発中に遭遇するマイグレーションエラーについて、具体例を挙げて解説します。
## 1. `ActiveRecord::PendingMigrationError` – マイグレーションが保留状態のときの解決策
**問題のある状況:**
新しいマイグレーションファイルを作成したが、`rails db:migrate`を実行していない場合に発生します。“`bash
$ rails s
ActiveRecord::PendingMigrationError: Migrations are pending. To resolve this issue, run:
bin/rails db:migrate
“`**解決方法:**
マイグレーションが保留中であるため、以下のコマンドを実行してマイグレーションを適用します。“`bash
$ rails db:migrate
Railsでto_paramメソッドが呼び出せない
## 概要
SEO対策の一環として、RailsアプリケーションのURLに含まれる`id`を固有名詞に置き換える実装を行いました。
例えば、以下のようなケースです。“`ruby
# これを
https://spocale.com/fruit/1
# 以下の形式にしたい。
https://spocale.com/fruit/apple
“`
フルーツに関する一覧ページがあり、そこから「りんご」を選択して詳細ページに飛ぶ場合を想定します。このとき、URLの`id`部分を`apple`という固有の文字列に変えたいとします。ただし、既存のURLを突然変更すると、ブックマークなどで保存されている従来のURLが使えなくなる可能性があります。そこで、id付きの従来のURLも維持しつつ、新しい形式のURLも利用できるように実装しました。この記事では、その過程で直面した課題と解決方法についてまとめます。
## 対象読者
– Railsアプリケーションでid付きのURLを固有名詞で表示する方法
find find_by whereメソッドの違いについて
レコードの検索時にfind find_by whereメソッドを使用していますが、
なんとなくフィーリングで使っていたので、それぞれの違いについてまとめてみました。
# findメソッドfindメソッドは、レコードの主キー(ID)を指定して、1件または複数のレコードを返します。重要なのは、findメソッドは与えられたIDに対応するレコードが存在することを前提としており、IDが存在しない場合は例外(ActiveRecord::RecordNotFound)が発生します。つまり、nilを返さずにエラーになります。
“`ruby:sample.rb
#IDが1のユーザーを取得
user = User.find(1)
User Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
`=> #
JavaScriptでiOSのクリップボードにコピー-RilsTIL(1h)
## iOSのクリップボードにコピーする
“`javascript:clipboard_controller.js
import { Controller } from “@hotwired/stimulus”;export default class extends Controller {
copy(event) {
event.preventDefault();
// ここにデータをfetchして加工するプログラムを記述
copyClipBoard(resData); //取得したデータをcopyClipBoardにわたす。const copyClipBoard = (targetValue) => {
if (navigator.clipboard) {
navigator.clipboard
.writeText(targetValue)
.then(() => {
alert(“Successfully copied”);
Ruby Silver勉強の参考に
先日Ruby Silverの試験に合格できたので勉強時に暗記した内容の一部です。
### 破壊的メソッド
“`
concat
pop
shift
unshift
push
delete_if
clear
“`### 別名など
“`
delete_if → reject!
update → merge!
find_all → select
collect → map
member? → include?
select → find_all
find → detect
“`本当に一部ですが覚えておくと試験で4~6点くらい正解できると思います!
頑張ってください!
VSCodeでRubyの環境構築
# はじめに
こんにちは、見習いエンジニアのkaitoです!今回はRubyの環境構築を書いていきたいと思います。私は長期インターンでクラウドのAWSを使ってrubyを書いていましたが、VSCodeでは書いたことがないので、勉強のつもりで記載していきます!
## 1. VSCodeのインストール
以下のサイトからVSCodeをインストールしてください⬇︎https://code.visualstudio.com/Download
## 2. VSCodeの環境構築
左端にある上から5番目のアイコンを押して、検索でrubyと入力する。
するとrubyの拡張機能が出てきますが、推奨されていないため、代わりに`Ruby LSP`をインストールしてください。次に検索に`Code Runner`と入力し、インストールしてください。
![スクリーンショット 2024-09-28 20.03.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3886699/dd5120e7-8209-7c30-44
RailsでSass自動コンパイル, assetsの設定 – RailsTIL(4h)
## tailwindとSass(dartsass)を使う
– tailwindcssをrailsにインストールすると、dartsassの自動ビルドが効かなくなるため
– dartsassの自動コンパイル設定を追記します
“`diff_ada:Procfile.dev
web: bin/rails server -b 0.0.0.0 -p 3200
css: bin/rails tailwindcss:watch
+ css: bin/rails dartsass:watch
“`## 表示が変わらない・おかしいとき
– public/assetsの内容を全て削除
– rails assets:precompile実行時に生成され、表示に優先されます。開発時は要りません。## それでもおかしいとき
– application.scssの内容をメモ帳にコピー、そして以下2つのフォルダ内容をすべて削除
“`
app/assets/stylesheets
app/assets/builds
“`
– 再インストールしてファイルを生成
“`
rails tailwindcss
ActiveRecord::ConnectionNotEstablished connection to server on socket “/tmp/.s.PGSQL.5432” failed: fe_sendauth: no password suppliedの対処例【Rails】
## はじめに
Ruby on Railsにて、以下のエラーが発生しました。
“`ruby
ActiveRecord::ConnectionNotEstablished connection to server on socket “/tmp/.s.PGSQL.5432” failed: fe_sendauth: no password supplied
“`## TL;DR
ローカルでRailsアプリをPostgreSQLを使用して作成していた際に、別のPostgreSQLのプロセスが残っていたために起きました。
該当プロセスを使用していないことを確認して、killしたあとに再実行することで解決しました。
## 手順
以下のコマンドを実行して、稼働しているPostgreSQLのプロセスIDを取得します。
“`jsx
$ sudo lsof -i:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 600 postgres 7u IPv
rubyでeachメソッドで空配列をループで回しても処理は走らない
当たり前の話だけどeachメソッドでループ回す際に、要素がないとループ処理は走らない。
“`rb
def hoge
[].each do |i|
p i
end
endhoge
p “fuga” # fuga
“`なので、eachの中で要素がない場合はどうなる?のテストは不要