Rails関連のことを調べてみた

Rails関連のことを調べてみた

herokuでデプロイするときにつまづいた話

自分がつまづいた部分は
1 Command “webpack” not found.
2 パッケージのバージョンのエラー
3 herokuでgit push heroku mainすると画像のデータが消える。Active strageにはデータとしては存在する

でした。

### Command “webpack” not found.の話

結論から言うとnode.jsを先にインストールしたら直りました。
バージョンの話が色々とネットには溢れていましたが自分の場合はすごく初歩的な問題でした。
けどこう言う問題も初心者のうちは気付けないから怖いですね。
この順番にインストールしてくれたらOKです。

[![Image from Gyazo](https://i.gyazo.com/655f0a0d5d0a7d87bbe16f8c8293bd6e.png)](https://gyazo.com/655f0a0d5d0a7d87bbe16f8c8293bd6e)

### パッケージのバージョンのエラー

## 環境
ruby:3.2.2
rails:7.0.8
node.js:

元記事を表示

Rails – Docker上の Rspec を Makefile から実行する書き方の例

# 概要

– docker-compose 構成が前提
– Makeの引き数として `RSPEC_TARGET` を利用してファイル名を指定する
– localではRailsのディレクトリがMakefileのあるディレクトリより下層にある場合 ( 例: `some_rails_directory ` ) を想定している

# Makefile

“`rb
rspec:
docker-compose run –rm -e RAILS_ENV=test rspec ${RSPEC_TARGET:some_rails_directory/%=%}
“`

実行例

“`sh
make rspec RSPEC_TARGET=spec/dir/
make rspec RSPEC_TARGET=spec/dir/example_spec.rb
make rspec RSPEC_TARGET=spec/dir/example_spec.rb:11
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャット

元記事を表示

Railsでの予約システムにおける非同期スロット更新とエラーハンドリング

## はじめに
今回は、Railsでの予約システムにおける非同期スロット更新の実装方法と、発生したエラーの解決方法について共有します。

## 問題点

予約システムの開発中に、日付を変更するたびにスロット情報を非同期で更新しようとしましたが、以下のエラーが発生しました。

“`plaintext
ActiveRecord::RecordNotFound – Couldn’t find Company with ‘id’=undefined:
app/controllers/reservations_controller.rb:207:in `update_slots’
“`

## 解決方法

エラーの原因は、JavaScriptで`company_id`が正しく取得されず、リクエストに`undefined`が渡されていたことです。以下の手順で解決しました。

### ビューの修正

`company_id`を含むデータ属性を日付入力フィールドに追加します。

“`erb
<%= form.date_field :date, id: 'for_customer_index_

元記事を表示

## 見出し2

## 見出し2

元記事を表示

会社の技術スタックのPlaygroundを用意する

# 概要
– 僕はフロントエンドの肩書をもらっていますが、元々はバックエンドでPHPやPythonを扱ってました。Rails初心者です
– Railsを最近触ることが多くなってきました。これまでよちよちしながら書いてたのでそろそろ爆速にならないと厳しくなってきました(色々と(ry
– それゆえ、簡単に遊べる環境がほしいなっておもったので、PlaygroundをDockerでポーンと用意してみました。そのメモです

# 前提

– RubyやVueは最新バージョンを使っていますが、弊社プロダクト色々ありますが最新とは限りませんmm
– あとはもっと色んなサービスを叩く構成してるところもあったりするんですが、その辺は簡単にしています

# compose.yamlの用意

“`yaml

services:
db:
image: mysql:8.0
volumes:
– db_data:/var/lib/mysql
environment:
– MYSQL_ROOT_PASSWORD=rootpassword
– MYSQL

元記事を表示

【Rails】updateメソッドとupdateアクションの違い

## update メソッド
**1. 定義と用途**
– モデルのインスタンスを更新する
– データベースに変更を保存する

**2. 動作**
– 属性のセットを引数として受け取り、バリデーションを実行した上で、バリデーションが成功した場合にはデータベースを更新します。更新が成功すると`trueを`、失敗すると`false`を返します。

**3. コード例**
コード例は `name` 属性を `新しい名前` に更新しようと試みています。
“`ruby:Ruby
@user.update(name: “新しい名前”)
“`

## update アクション
**1. 定義と用途**
– フォームのデータを受け取り、それを使って特定のモデルのレコードを更新する処理を行います。 ※MVCのC

**2. 動作**
– HTTPリクエストを受け取り、対応するモデルのインスタンスを特定し、そのデータを更新するためのビジネスロジックを含みます。
– 成功または失敗に基づいて適切なビューをレンダリングするか、別のアクションにリダ

元記事を表示

【備忘録】休業日と営業日の表示を非同期通信で切り替えるRailsアプリの実装

## 内容
休業日と営業日を切り替えて表示するために、以下のコードを実装しました。
備忘録なので説明は省いています(面倒くさいので・・・)

### `app/controllers/reservations_controller.rb`

“`ruby
def update_slots
date = params[:date]
@date = Date.parse(date)
@company = current_company
@time_slots = generate_time_slots(@company)
@non_business_day = ScheduleService.is_non_business_day?(@company, @date)
@services = @company.services
@service_availability = ScheduleService.calculate_availability(@company, @date, @services, @time_slots)
response_data

元記事を表示

Ruby(Rails)で使える省略記法

# Ruby on Railsで使える省略記法

RubyやRailsのコーディングをする際、省略記法を使うとコードが簡潔になり、読みやすさが向上します。特にリファクタリング時やシンプルな処理を記述する際に役立ちます。

### if/unless文を1行で書く方法(後置if)

通常のif文やunless文は複数行にわたることが多いですが、簡単な条件、処理であれば1行で書くことができます。

**通常のif文:**
“`ruby
point = 7
day = 2
if day == 2
point += 10
end
point # => 17
“`
**1行のif文:**
“`ruby
point = 7
day = 2
point += 10 if day == 2
point # => 17
“`
### 三項演算子(条件演算子)

三項演算子を使うと、シンプルな条件分岐を1行で書くことができます。基本的な構文は次の通りです。

“`ruby
result = condition ? true_value : false_value
“`
**例:**
“`

元記事を表示

RubyKaigi2024参加レポート

こんにちわ
楽天ラクマでエンジニアをしているHayashiです

先日、沖縄で開催されたRubyKaigiに初めて参加してきましたのでそのレポートをお届けします

## 那覇市
![1000001435.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798068/ccdfe42a-6fbd-d61a-15bc-4dadc40f569f.jpeg)

2024年のRubyKaigiは沖縄の那覇市で5月15日-17日の日程で開催されました
上の写真の建物は那覇市役所ですが、全体から醸し出す最終兵器感がたまりません
いざというときにはトランスフォームして戦ってくれる様な気が致しました

## 沖縄の会場
![1000001428.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798068/3cb92e55-9320-40d8-8e2b-01515b6c6429.jpeg)

会場は「那覇文化芸術劇場 なはーと」という建物を

元記事を表示

【Rails】newメソッドとcreateメソッドの違い

## new メソッド
– オブジェクトを生成しますが、それをデータベースに保存しません。
– オブジェクトを保存するためには、明示的に save メソッドを呼び出す必要があります。

## create メソッド
– オブジェクトを生成し、すぐにデータベースに保存します。
– 内部で new と save の両方を行います。

### create アクションのnewメソッド
以下のコードは new メソッドを使用しているため、save メソッドを呼び出す必要があります。
“`ruby:Ruby
def create
@question = Question.new(question_params)
if @question.save
redirect_to @question
else
render ‘new’, status: :unprocessable_entity
end
end
“`

### Answer コントローラの create アクション
一方、Answer の登録

元記事を表示

rails cが起動しないトラブルシュート

## 環境

Ubuntu20.4
Ruby2.6
Rails5.2

## はじめに

**rails c**をしたところ次のようなエラーが大量に出ました。この事象のトラブルシュートです。

“`
$rails c
Traceback (most recent call last):
37: from -e:1:in `


36: from /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’
35: from /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’
34: from /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/act

元記事を表示

ExecJSがデフォルトで使用するランタイムを調査

ExecJS gemはjavascriptをrubyから実行するためのgemです。javascriptの実行には、ローカルマシン上にあるjavascript実行環境が使われます。

複数の実行環境が存在したときに、どの実行環境が使われるのか調査したい場合は、以下のコマンドで確認できます。

“`ruby
ExecJS::Runtimes.autodetect
“`

ExecJSのjavascript実行環境の選択について、詳しくは[ExecJSが自動で選択するランタイムはどのように決まるのか](https://qiita.com/kyntk/items/07a8ea95f32b761c2f3c)が参考になります。

元記事を表示

Rails:外部キーのnilを許可する

今回は外部キーのnilを許可する設定にする際、「モデルファイルも設定つけて」というレビューをもらったので、調べたことを深堀りしてみました。

**作成したマイグレーションファイルはこちら**

“`ruby
class CreatePortfolios < ActiveRecord::Migration[7.1] def change create_table :portfolios do |t| t.references :user, null: false, foreign_key: true t.references :organization, foreign_key: true t.string :name, limit: 50, null: false t.string :url, limit: 255, null: false t.text :introduction t.integer :unhealthy_cnt, default: 0, limit: 1 t.date

元記事を表示

外部キーreferencesを使ったRailsモデルの関連付け

# references型とは

Ruby on Rails のマイグレーションで使われるデータ型の一つで、
他のモデルへの関連付け(リレーションシップ)を表すために使用されます。

# 使用例
例えば、コメント(Comment)が投稿(Post)に属しているという関係を設定したい場合、以下のようなマイグレーションを生成します。
“`ruby:
rails generate migration Comment Post:references
“`

これにより生成されるマイグレーションファイルには、`post_id`カラムを `posts` テーブルに追加するコードが含まれます。さらに、`post_id` カラムには外部キー制約とインデックスが設定されます。

# 生成後(models) belongs_to
コマンド入力後、models配下のcomment.rbに以下のコードが生成されます。
単数形であることに注意
`belongs_to :モデル名(単数形)`

“`ruby
class Comment < ApplicationRecord belongs_to

元記事を表示

pumaがソケット通信で起動してくれなかった原因

railsのプロジェクトをnginx経由で接続できるようにするにあたって、ソケット通信で起動しようとしてもなぜかbindの設定がうまく機能してくれなかった

gemのソースを辿って原因が見つかったのと、調べている中で同じような問題に直面して質問している人が少しいたのでメモとして残しておく

# 結論
`ENV[‘HOST’]`に値が設定されていると、`rails server`コマンドで起動した際に、`config/puma.rb`で設定したソケットのbind設定は上書きされてしまい機能しなくなる
そのため、`ENV[‘HOST’]`の設定を削除するか、`bundle exec puma`で起動するとソケットのbind設定が機能する

# 概要

“`ruby:puma.rb
socket = Rails.root.join(‘tmp/sockets/puma.sock’)
bind “unix://#{socket}”
“`
nginxとのソケット通信のために、上記の設定を入れていたが、railsのサーバーを起動すると
“`
* Listening on unix:///wor

元記事を表示

RailsとJavaScriptを使った非同期テーブル更新の実装

この記事では、Railsアプリケーションで非同期的にテーブルを更新する方法について説明します。特に、スケジュール管理アプリケーションの例を用いて、特定の日付のスケジュールとその時間枠を動的に表示する方法を解説します。

## 1. 背景

スケジュール管理アプリケーションでは、ユーザーが日付を選択するたびに、該当日のスケジュールと時間枠を動的に表示する必要があります。この実装のためには、RailsサーバーからJSON形式でデータを取得し、フロントエンドでそのデータを使用してテーブルを更新する必要があります。

## 2. 実装の概要

### 2.1 サーバーサイド(Rails)

Railsのコントローラーで、選択された日付のスケジュールと時間枠を計算し、JSON形式で返すアクションを作成します。

### 2.2 クライアントサイド(JavaScript)

JavaScriptで、取得したJSONデータを使用してテーブルを動的に更新します。これには、テーブルのヘッダーとボディの両方を更新する処理が含まれます。

## 3. コードの詳細

### 3.1 Railsコントローラー

元記事を表示

Railsでファイルをアップロードする

## 前提
自分の理解を深めるためのメモです。

## やりたいこと
Railsでファイルをアップロードしたい。

## 実装
### コントローラで受け取る
![スクリーンショット 2024-05-21 午後0.17.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/5c59f271-6b99-4a22-18b3-fbf9f5c4323d.png)

POSTリクエストで送られるので、subject_dataコントローラのcreateアクションに送られる。
![スクリーンショット 2024-05-21 午後0.18.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/a3abca32-26f1-b70b-8d78-035312a97759.png)

“`ruby:subject_data_controller.rb
class SubjectDataController < Appli

元記事を表示

エンジニア1年目、初の個人開発のサービスをデプロイ成功!

# 初めに

他業種からてエンジニアの転職をして、約1年たったものです。(その前にバイトもしたので、原則的には2年目ですね。)
主にRuby on RailsとPythonを触っています。
今回はついに! 私が個人開発をしたWeb番号札のデプロイをすることができたので、そのお話をしてみたいと思います。

うる覚えですが、ウクライナの戦争で学生エンジニアが避難民のための避難場の情報がわかるサービスを提供したようなニュースを見て、自分のものづくりで人を助けることができるようにしたいと思って、仕事以外でも練習や学習のために色々作ってみようと頑張っています。

でも、最後まで作り切るのができず、1年経った今、やっとデプロイできましたので本当に感激です!

下記が、デプロイしたWEB番号ふだになります。

https://webbangohuda-b2af4450c6c7.herokuapp.com/

Githubコードも公開しています。

https://github.com/worldwidepark/web_bango_huda

## 最初のうまくいかなかったサービス
最初の最初はポー

元記事を表示

【Rails6.1】検索機能をコントローラごとに分岐させたり、検索結果の表示方法を考えた話

# はじめに
Rails6.1の環境で検索画面を作成しました。
検索はなるべく1つのフォームを使いまわしたいけど、ページによって表示を変える必要があったので、その際の設定や初心者ならではの学びについて記録します。

# この記事の結論
* コントローラごとに記述を分けるときは「controller_name」を使った
* モデルのデータと配列のデータは別物
* メソッドにはRailsだけでなくRubyのメソッドもある

## コントローラごとに表示を分ける
今回作成するのは商品予約サイトにおけるショップ側の検索機能です。
予約検索では「予約履歴の検索」
商品検索では「商品情報の検索」
が必要になり、検索の方法が変わってくるので、部分テンプレートを使ってセレクトボタンを分けることにしました。

“`html:app/views/shop/searches/_form.html.erb
<%= form_with url: shop_search_path, method: :get do |f| %>
<% if controller_name == 'items' %>

元記事を表示

Railsのメソッド間で情報を受け渡ししたい

## やりたいこと
メソッド間で認証情報を受け渡ししたい。

`pass_authentication`メソッドで作った認証情報を`convert`メソッドに渡したい。

![スクリーンショット 2024-05-20 午後7.42.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/8391dc37-5226-5828-676a-6fd64ed972fe.png)

## 問題
![スクリーンショット 2024-05-20 午後7.41.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/3bcc6e92-da75-b726-2548-e193710425a3.png)
受け渡しができておらず中身がない(nil)と言われる。

![スクリーンショット 2024-05-20 午後8.21.22.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

OTHERカテゴリの最新記事