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

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

React x Ruby on Rails を使用したチーム開発記録

## はじめに
私は、株式会社ユーブルが提供している「APPRENTICE」というエンジニア内定直結のサービスを受講しています。

二回目のチーム開発を行いました。その体験がまたまた非常に貴重なものになりましたので、記憶が鮮明なうちに記録します!

## 二回目のチーム開発
4人1チームとなり、今まで学習したプログラミング言語を使用しテーマに沿ったアプリケーションを実装する。
Rails, Laravel, React, typescript,Next.js などのフレームワークを使用し、アプリケーション開発を行います。(尚、使用する技術は決められておらず、それぞれ考えたアプリにあった技術を使用します。)

そして今回は二回目のチーム開発なので、前回の後悔を絶対残さないぞ!という気持ちで取り組みました。

そして出来た制作物をプレゼンする。プレゼン時間は3分。プレゼンは Zoom の画面共有で、スライドとデモを使用し、デモはローカル上で制作物を実際に動かして見せる。その後メンターからのフィードバックがある。

そして今回も・・・!

受講生からの評価が最も高いチームに Best St

元記事を表示

【Rails】MySQLのパスワードの確認方法

### configディレクトリ内にあるdatabase.ymlファイルにあるpasswordの欄をチェック。
“`
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
host: db
“`

元記事を表示

button_to に思った通りの CSS が効かない問題の対処法

## 事象

`button_to` という `Rails` のヘルパーメソッドを使って送信ボタンを実装するときに下記のように実装すると `button_to` に思った通りの `CSS` が効きませんでした。今回はその原因と対処法を共有いたします。

“`ruby
<%= button_to '送信', 任意の_path, method: :post, params: { key: 'value' }, class: 'custom-class' %>
“`

## 原因

この問題の根本原因は `button_to` ヘルパーが生成する `HTML` 構造にあります。具体的には、指定した `class (custom-class)` が `form` 要素ではなく、内部の `input` 要素に適用されてしまうためです。`Rails` は `button_to` を使用すると、以下のような `HTML` を生成します。

“`ruby:before

元記事を表示

【Rails】uninitialized constant Rack: :MiniProfiler の解決方法

# 概要
この記事は、Railsアプリケーションのrspec実行時や、本番デプロイの際に、時々起こる `uninitialized constant Rack: :MiniProfiler` の解決方法について言及していきます。

# エラー再現
エラーが起きる際の再現をしてみます。

:::note warn
**注意点**
よくあるパターンでやっているだけなので、違うパターンでも似たようなエラーを起きる可能性はあります。
:::

`development` の環境で開発をしている際、左上に出る計測表示を消したくなったとします。
「**rails 左上 数字消す**」みたいな感じで検索したとします。
その中で見つけた解決策を試してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524017/6000f393-b5b9-39ea-4b42-825f93c05012.png)

`config/initializers` 配下に `rack_profile.rb` を作成しま

元記事を表示

RuboCop-airbnbの導入方法

## 環境構築の手順
### ①Gemの追加
“`:Gemfile
group :development, :test do

# 以下追加
gem “rubocop-airbnb”
end
“`

### ②rubocop-airbnb の設定
ルートディレクトリに以下の2ファイルを作成する
“`:.rubocop.yml
inherit_from:
– .rubocop_airbnb.yml

# Rails用に最適化
Rails:
Enabled: true

# 文字数の上限を80文字から変更
LineLength:
Max: 130

# rubocopで検証したくないフォルダを指定
AllCops:
Exclude:
– ‘db/**/*’
– ‘config/**/*’
– ‘bin/*’
– ‘**/Gemfile’
– ‘vendor/**/*’
– ‘.git/**/*’
“`
“`:.rubocop_airbnb.yml
require:
– rubocop-a

元記事を表示

【個人開発】【Next.js + Rails API】アパレル業界で働く人のためのアプリを開発しました

## はじめに
はじめまして。[いず](https://x.com/iz_rntq44)です。
現在webエンジニア転職を目指して日々学習中です。
今回初めての個人開発として、アパレル業界で働く人のためのアプリ『sales buddy』を開発しました!

https://sbuddy-apparel.com

サービスURL:https://sbuddy-apparel.com
GitHub:https://github.com/eriplume/sales_buddy

## サービスについて
アパレル業界で働く人の、自己記録・管理をサポートするアプリです。
個人売上や業務の記録、レポートの作成サポートなどを通して、アパレル販売員の記録係的ポジションを担うバディのようなアプリを目指しています。

## 開発の背景
私自身が前職のアパレル業界で働いていた中で、

– 個人の売上を記録したいけど、アパレルならではの項目を入力するツールがない。計算が面倒くさい。
– 目標達成へのモチベーションを高めるツールが欲しい
– 忙しい中での月末のレポートの作成が面倒!大変!

などと思っていました

元記事を表示

【Rails】 Cloud Natural Language API 活用ハンズオン

# 概要
この記事では、GCPの `Cloud Natural Language API`を用いて、登録したタスクに対して、自動でタグ付けを行うTODOアプリの作成をハンズオン形式で行ってみようと思います。

https://cloud.google.com/natural-language

# 対象者
この章では対象者について説明します。
– Railsを用いたアプリケーションの作成経験がある方

# 動作環境
こちらの章では動作環境について明記していきます。

## ハードウェア
– **PC** : MacBook Air (M1, 2020モデル)
– **RAM** : 8GB

## ソフトウェア
– **OS** : macOS Monterey (バージョン 12.1)

## 開発環境
– **Editor** : Visual Studio Code
– **Language** : Ruby (バージョン 3.1.2)
– **FW** : Rails (バージョン 6.1.7)

# 実装
こちらの章では実装を進めていきます。

:::note warn
**

元記事を表示

自己PCにRedmineを構築

# 背景
個人的なスケジュールとか、勉強とかのタスク管理をしたかった🦝

## 今回構築した環境・バージョン
macos Sonoma 14.2
チップ Apple M1
ruby 3.1.4
Remine 5.1.1
Mysql 5.7

# 手順
## brewインストール

自分の環境ではbrewがインストールされていないようだったので、インストール

“`bash:
コマンド : brew install rbenv

実行結果:bash: brew: command not found
“`

どうやらbrewが入ってないらしい

ということで以下を実行しインストール

“`bash:
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
再度brew -vで確認するも、、、、
それでもbrew -vでnot found になるので

“`bash:
echo export PATH=’/opt/homebrew/bin

元記事を表示

さようなら、Hotwire Stimulus ✕ React

## はじめに

私のとあるRailsプロジェクトは Hotwire Stimulus ✕ React 構成を採用していた。グラフ描画の機能を実装するために流行りの [tremor](https://www.tremor.so/) を使ってみたかったからである。

## 実装

実装は以下の通り。

“`app/javascript/components/RevisionFluctuation.tsx
import React from “react”;
import { createRoot } from “react-dom/client”;
import { Card, Title, LineChart } from “@tremor/react”;

const RevisionFluctuation = ({ data }) => (
<>

Revision fluctuation

元記事を表示

Rails7とPostgresqlをdockerで環境構築

最近、Dockerを使ってrailsの環境構築にチャレンジしたので、まとめておきたいと思います。

はじめに新規作成したフォルダの下に4つのファイルを作ってください(ファイル名は全く一緒でお願いします!)
1. Dockerfile
1. docker-compose
1. Gemfile
1. Gemfile.lock
それぞれのファイルの記述を順を追って紹介します。
# Dockerfile
“`
FROM ruby:3.1.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs vim
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
“`
# docker-compose.yml
“`docker-compose.yml
version: ‘3’
services:

元記事を表示

Rails メモ

【概要】
・GitHub のテンプレートを使ってファイルをCode Spaceで実行。環境開発をスムーズに。
・config/routes.rbでアプリのルートを変更ができることを学ぶ
Rails.application.routes.draw do
root “hello# index”
end 
上記はRails.application.routes.draw doでルートURLにアクセスがあったとき(つまり一番最初のページにアクセスがあったとき)hello# indexでhelloというコントローラー名がついたディレクトリのindexというアクションを実行するように命令している。
・Renderを使ってマスターキーを入力してデプロイ
・ファイル→新しいシークレットウィンドウで他と独立したウィンドウを開ける
・MVCの構造理解

・コントローラーのエラーはアクション、viewのエラーはテンプレートと表記される。
・テストをおこなってルートやコントローラーやVeiwファイルにエラーがないかを確認した。
・コードをERB(HTMLの中でRubyを使用する)で共通化してDRYを意識

元記事を表示

【Rails】セキュリティを強化する

こんばんは!
今日はrailsのアプリケーションでセキュリティを上げるための方法を3つ紹介します。

## 1.before_action :authenticate_user!(会員側セキュリティ)
“`ruby:xxx_controller.rb
class XxxxController < ApplicationController before_action :authenticate_user! # 中略 end ``` 各コントローラーの記述に加えてください。この記述を行うことで、ログインしていないとできない操作やページを作り、他人から情報を編集・削除されたり抜き取られることを防ぎます。userの部分はcustomerなどにも変更可能です。 ## 2.before_action :authenticate_admin!(管理者セキュリティ) ```ruby:xxx_controller.rb class Admin::XxxxController < ApplicationController before_action :authenticate_ad

元記事を表示

Ruby on Railsの勉強環境の作成

# メインで参考にしたサイト
[Ruby 3\.x, Rails 7\.x, PostgreSQL の Docker 環境構築 2023 \#Rails \- Qiita](https://qiita.com/goya-hideaki/items/a0b7eae988b716724fdb)

途中以下のエラーが発生
“`bash:bash
$ docker compose run frontend rails db:create
[+] Creating 1/0
✔ Container free-market-app-backend-1 Running 0.0s
FATAL: could not open file “global/pg_filenode.map”: Permission denied
Couldn’t create ‘myapp_development’ database. Please check y

元記事を表示

ActiveRecordモデル操作チートシート

## 初めに
日々の業務でよく使用するActiveRecordのモデル操作についてまとめていきます。
基本的な操作でも「あれ?書き方どうだっけかな?」となることが多いので、そういった方の早見表的な感じでお役に立てると非常に嬉しいです。

誤り・もっとイケてる書き方があれば、コメントいただけると嬉しいです。

## 取得

### 取得するデータの絞り込み
1つのカラムのみや配列で返されても問題ない場合は、 `pluck`を使用し、それ以外は `select`を使用するようにしています。
“`ruby
# select
User.select(:id, :name).find_by(name: “hoge”)
# pluck
User.where(name: “hoge”).pluck(:id)
“`

### データを1件取得
特定のカラムで取得
“`ruby
User.find_by(name: “hoge”)
“`
idで取得
データがない場合エラーになる
“`ruby
User.find(user_id)
“`
idで取得
データがない場合ni

元記事を表示

RailsのRESTfulルーティングとパスヘルパー

目的

Railsにおけるリソースフルなルーティングとパスヘルパーの確認。

生成されるパスの確認

“`routes.rb
Rails.application.routes.draw do

resources :photos
end
“`

“`shell
> rails routes
photos GET /photos(.:format) photos#index
POST /photos(.:format) photos#create

元記事を表示

テーブル結合したほうが良い理由(Active Record)

## 学習環境
Ruby on Rails 6.0.3
PostgreSQL 16.1

## 課題内容と要件

Ruby on RailsでActiveRecordを使ったテーブル結合の勉強をしている時のこと…
以下のような要件があったと想定した問題がありました。

【要件】注文されていないすべての料理を返すこと
 ※`left_outer_joins`を使うこと

ER図は以下のようなイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190651/d1758d7d-2e19-297e-191d-345282aae7f6.png)

## 答えとして考えたこと
Railsガイドをパラパラと見ながら、
なるほど、”注文されていない”だから、注文されたデータ(order_foodテーブルのorder_id)を見て、`where.not`を使うのかなと思ったのでした。
ただし、要件には`left_outer_joins`を使うこととある。
## 答えとそれぞれの処理
`left_out

元記事を表示

ActiveStorageでBlobをアップロードする

# 前提

1. AWS ECS Fargate等の使用で、コンテナ内にファイル生成ができない環境を使用している
1. `ActionDispatch::Http::UploadedFile` オブジェクトではない方法でファイルを受信している

# 方法

以下はBase64形式でPNG画像を受信した時、一時ファイルを生成せずにActiveStorageでアップロードする方法です。

“`ruby
image = “data:image/png;base64,xxxxx”
mime_type = image[%r/(image\/[a-z]{3,4})|(application\/[a-z]{3,4})/]
extension = mime_type[%r{\b(?!.*/).*}]
contents = image.sub(%r/data:((image|application)\/.{3,}),/, ”)
decoded_data = Base64.decode64(contents)
blob = ActiveStorage::Blob.new(key: ActiveSt

元記事を表示

Elasticsearch Rails 7とnet-http-persistentを同時に使うときにはFaradayアダプターを指定する

## Railsアプリケーションのgemのバージョンを上げたときエラーが起きた

Railsアプリケーションのgemのバージョンを`bundle update`コマンドで上げていました。
`bin/rails s`コマンドでRailsアプリケーションを起動するときに次のようなエラーがでるようになりました。

“`sh
ledsun@MSI:~/pubdictionaries►bin/rails s
=> Booting WEBrick
=> Rails 7.0.8 application starting in development http://localhost:3000
=> Run `bin/rails server –help` for more startup options
Exiting
/home/ledsun/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/faraday-2.9.0/lib/faraday/middleware_registry.rb:57:in `lookup_middleware’: :ne

元記事を表示

Railsの学習を終えて

## 初めに
こんにちは、Railsの学習を終えました。そのRailsの学習で感じたことや思ったことなどを書いていきます。

## Railsの学習で思ったこと
Railsの学習で思ったことは、めっちゃ便利だなということです。クエリを書く必要もなければ、コマンドを打てばファイルが生成されるのはすごく便利でした。先月、フレームワークなしでログイン機能や投稿機能などを開発していたのでなおさら便利に感じます。

## Railsの学習で大変だったこと
Railsの学習で感じたことは、環境構築です。特にbundleに何かを追加しようとすると必ずエラーになり大変でした。

## Railsの学習でやったほうが良いと思ったこと
MVCの理解をしておいたほうがいいなと思いました。これが理解できていないとエラーが起きた時にどこをどう直したらいいのかわからなくなるのでどこがどうつながっているのかを理解しながらRailsを使っていくのがいいと思いました。

## 最後に
Railsを初めて触ったときこんなに便利なんだと感動しました。ぜひRailsを勉強しようと思っていたらまず、フレームワークなしでアプリを

元記事を表示

Railsコンソールでのデータ編集

Railsでコンソールをもっと使って学習していこうと思い、コンソールでの基礎的なデータ編集のやり方をまとめました。

### コンソール(Console)とは

> [Cambridge Dictionary](https://dictionary.cambridge.org/ja/dictionary/english/console)
>

**a [surface](https://dictionary.cambridge.org/ja/dictionary/english/surface) or [device](https://dictionary.cambridge.org/ja/dictionary/english/device) with [controls](https://dictionary.cambridge.org/ja/dictionary/english/controls) for [electronic](https://dictionary.cambridge.org/ja/dictionary/english/electronic) [equipme

元記事を表示

OTHERカテゴリの最新記事