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

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

ステージングされていない変更を破棄してブランチを移る

# ブランチを移動したいけど変更したところを戻せなくて移動できない!
となったことはありませんか?

:::note alert
gitでは、衝突する変更を含む場合はブランチを移ることができません
(衝突しないなら可能)
:::

チーム開発の際、余計な変更も含めてcommitしてしまうと、
変更履歴が汚くなってしまいます😭

# 指針としては
:::note info
・変更を保持したまま、ブランチを移る
・変更を破棄してブランチを移る
:::
この二つがあると思います。

# 変更を保持したまま、ブランチを移る
*変更を一時保存する*
“`
git stash
“`
*ブランチを移動する*
“`
git checkout 移りたいブランチ名
“`
*必要に応じてstashした変更を戻す*
“`
git stash pop
“`
# 変更を破棄して、ブランチを移る
*変更を破棄する*
“`
git checkout — .
“`
*ブランチを移る*
“`
git checkout 移りたいブランチ名
“`
(まあGPTに聞けば出てくることではあるんですけどねw)

元記事を表示

【Ruby on Rails】トランザクション内で定義した変数をトランザクション外でも使う方法

# はじめに

仕事でRuby on Railsを用いてバックエンド開発を行っているのですが、その中でトランザクション内で定義した変数をトランザクション外で使いたいケースが出てきたので、その方法について共有します。

# インスタンス変数を使う

その方法とは、「**インスタンス変数を使う**」ことです。インスタンス変数とは、`@hogehoge`といったように、変数の前に`@`を付与した変数になり、ブロックの外でも変数を使用したいときに用いられます。

ブロックの外でインスタンス変数を使う用途として

* クラス内のメソッドで定義された変数に対して、インスタンスを生成することで別のメソッドでも利用できるようにする(詳細記事は[こちら](https://qiita.com/mary_new_programmer/items/4c4353c3d1df7242f515))

* Controllerファイルで定義した変数をViewファイルでも利用できるようにする(詳細記事は[こちら](https://zenn.dev/ganmo3/articles/58c1f44fa50831))

が代

元記事を表示

Rails 使いにおすすめ! Remix と Cloudflare でアプリケーションを作る!

# はじめに
この記事はハンズオン形式で Remix と Cloudflare でアプリケーションを作成します。
**未経験からRails エンジニアになった方をメインのターゲットとしています。**
(私自身がその対象です)

Rails でアプリケーション開発ができるようになってきたけど、ほかの技術についても知ってみたいな、、、と思っている経験1年目から2年目くらいのジュニアエンジニアの方の力になりたいです。

Remix ってなに?、Cloudflare とか難しそう、、、と感じるかもしれません。
この記事では、**先に Remix や Typescript の勉強をする必要はありません。**
(Rails だったらこうですという例を入れます。)
まずはこの記事で動くアプリケーションを作成して、抵抗感をなくすことが肝要です。

興味をもったら下記をやってみれば良いのです。
* Remix と Rails について学ぶ
* Remix Rails とググっていろんな記事を読んでみる

* Remix 公式ドキュメント チュートリアルをやる
* https://remi

元記事を表示

HerokuへのRails + Webpacker + Vue.jsアプリケーションデプロイ奮闘記

## はじめに

RailsアプリケーションにWebpackerとVue.jsを組み合わせて開発し、Herokuにデプロイする際に直面した一連のエラーとその解決策について記録します。開発環境から本番環境への移行は思った以上に複雑で、多くの問題に遭遇しました。この記事では、その過程と解決策を詳しく紹介します。

## エラー1: `Can’t resolve ‘vue’` エラーの解決

### 問題の概要

Herokuにデプロイを試みた際、以下のエラーメッセージが表示されました。
“`ruby:bash
Module not found: Error: Can’t resolve ‘vue’ in ‘/tmp/build_3752d62c/app/javascript/packs’
“`
### 原因

Webpackの設定でVue.jsのエイリアスがVue 3向け (`vue/dist/vue.esm-bundler.js`) に設定されていたため、Vue 2.xとの不整合が発生していました。

### 解決策

`webpack.config.js` の `resolve.a

元記事を表示

【学習メモ】Railsの「””」と「”」の違い

## Rails(Ruby)で使う`””`(ダブルクォート)と`”`(シングルクォート)の違い

ChatGPTに聞いた内容と検索した内容を統合してメモします。

### ダブルクォート `””`

変数や特殊な文字(改行など)を文字列の中に埋め込むことができる

#### 例1: 変数の埋め込み

“`ruby
name = “ねこ”
greeting = “こんにちは、#{name}さん”
puts greeting # => こんにちは、ねこさん
“`

#### 例2: 特殊文字の使用

“`ruby
message = “こんにちは\nさようなら”
puts message
# => こんにちは
# さようなら
“`

### シングルクォート `”`

文字列の中に書かれたものがそのままの形で扱われる
※式展開時に動的な値が入ると困る場合、シングルクウォートを使用すると良い

#### 例1: 変数の埋め込みができない

“`ruby
name = ‘太郎’
greeting = ‘こんにちは、#{name}さん!’
puts greeti

元記事を表示

RailsとPostgreSQL:テーブルのプライマリキーにUUIDを使用する方法

## 読んで欲しい人
– 新しく生成するテーブルのプライマリキーをUUIDにしたい人
– 過去の自分

## やり方
1. モデルを生成するコマンドを打ち込む `rails g model User`
2. 生成されたマイグレーションファイルに下記を記述する
“`202409243365_create_user.rb
class CreateUsers < ActiveRecord::Migration[7.1] def change # pgcryptoを有効化する enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto') # idオプションにuuidを指定する create_table :users, id: :uuid do |t| t.timestamps end end end ``` `db:migrate`をしておしまい 生成したモデルのプライマリキーにはUUIDがディフォルトで指定されている ## 解説 ### これは何? ``

元記事を表示

dockerで一回コンテナから出てから作業して、また入り直す。

# コンテナから出て作業するのってどうすれば?
と思ったので書こうと思いました。結論としては、

*コンテナ内から出る*

まず、現在コンテナ内にいる場合は、exit コマンドを実行してシェルを終了し、ホストマシンに戻ります。
“`
exit
“`
/ここで諸々作業する

*再度コンテナに入る*
その後、以下のコマンドを使って、元の作業していたコンテナに再度入ります。
“`
docker exec -it コンテナ名 /bin/sh
“`
### 流れ
– exit でコンテナ内のシェルから抜ける。
– コンテナが実行中であれば、*docker exec -it コンテナ名 /bin/sh* で再度シェルに接続できる。
これで問題なくコンテナ内に再度入れます!

元記事を表示

RSpecでのテストでカバレッジを確認する方法

# はじめに

こんにちは!
社会人一年目の石川です。
記事をご覧いただきありがとうございます。

本記事では、RSpecでテストカバレッジを出力する方法についてまとめます。

# 目次
1. [カバレッジとは?](#カバレッジとは)
1. [ツールについて](#ツールについて)
1. [導入手順](#導入手順)
4. [最後に](#最後に)

# カバレッジとは

テストカバレッジは、コードのうちどれだけがテストされているかを割合で表したものです。これにより、未テストの箇所を特定できるため、テストがコード全体をどの程度カバーしているかを確認できます。

# ツールについて
カバレッジを測定するための代表的パッケージが`SimpleCov`です。
他にも、以下のようなツールがあります。
##### Coveralls
オンラインでチーム共有をサポートし、継続的インテグレーション(CI)と連携しやすい点が強みです。
##### Codecov
詳細なグラフやレポートを提供し、特にCI/CDパイプラインに強力に統合されます。

# 導入手順
今回は`simplecov`の導入手順に

元記事を表示

【デイトラ】Webアプリ開発コースで作成したRailsアプリをRender.comでデプロイする方法

## はじめに
いま受講しているデイトラのWebアプリ開発コースでは、合計3つのアプリを作成します(ハンズオンで作成するアプリ + 課題として作成するアプリ × 2)

ハンズオン形式でレクチャーされているデプロイ方法はherokuです。
PostgreSQLのアドオンをそれぞれのアプリに使用する必要があるため、
各アプリごとに$5/月かかってしまう計算になります。

気持ち的にそのお金があるなら技術書を買いたいので、Renderを使ったデプロイに挑戦してみました。

### 開発環境
– Ruby 2.7.7 => 3.1.0*
– Rails 6.0.6.1 => 6.1.7.8*
– node.js v14.16.1
– PostgreSQL 14
– Windows11
– WSL2(Ubuntu)

*もともとのバージョンが古く、Renderでのデプロイに対応していなかったため、アップデート作業が必要になりました

### デプロイまでの流れ
1. デプロイ用の設定(S3の設定など)
1. Renderの登録・設定
1. RubyとRailsのバージョンアップ対応
1. R

元記事を表示

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を固有名詞で表示する方法

元記事を表示

ActiveModelSerializerを触ってみた

# はじめに
ActiveModelSerializerを業務で使ったのでざっくりと使い方をまとめようと思います。
誤り等ございましたら、コメントいただけるとありがたいです。

# セットアップ

#### インストール方法
– Gemのインストール手順
“`ruby
gem ‘active_model_serializers’, ‘~> 0.10.0’
“`
出力されるjson構造を変更したい場合(defaultはattributes),
config/initializers/active_model_serializers.ファイルを作成し,
“`ruby
ActiveModelSerializers.config.adapter = :json_api
“`
を記述します。

#### active_model_serializerとは
– ActiveModelSerializerの概要
ActiveModelSerializerはrailsアプリケーションを簡単にjsonシリアライズするためのgemです

シリアライズとは、(W

元記事を表示

Dockerを使用してRailsアプリをRenderへデプロイした

この記事は、Dockerを使用してReilsアプリをRenderへデプロイしたいが、エラーが出てデプロイできていない方向けの記事です。

### 環境
Rails 7.2.1
Ruby 3.2.0
PostgreSQL
Dockerを使用

### フォルダ・ファイル構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426016/9924e9b7-2d70-3eda-1838-659e929025fc.png)
※Dockerfileはrailsapp内にもう一つあります。

### 結論下記の内容でデプロイに成功した。
“`render.yaml
services:
– type: web
name: compassbook
env: ruby
rootDirectory: railsapp
buildCommand: |
echo “Starting build process…”
bundle install

元記事を表示

【Rails】blank?とempty?は空白文字とnilの扱いが異なる

## はじめに

`blank?`と`empty?`の違いがよくわからなくなりました。

そこでこの記事では、空白文字と`nil`を切り口に両者の違いを整理します。

## `blank?`と`empty?`は空白文字とnilの扱いが異なる

空白文字と`nil`を順番に確認します。

### 空白文字について

– `blank?`メソッド: `true`と判定
– `empty?`メソッド: `false`と判定

“`ruby
rails> ” “.blank?
=> true
rails> ” “.empty?
=> false
“`

### `nil`について

– `blank?`メソッド: `true`と判定
– `empty?`メソッド: `NoMethodError`の例外発生

“`ruby
rails> nil.blank?
=> true
rails> nil.empty?
/opt/homebrew/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb.rb:1285:in `full_message’: undefi

元記事を表示

counter_cacheの導入と使い方

この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。

## 記事投稿の背景
この記事ではXのクローンサイトを作成中にBulletで検知したN+1問題を解決するために実装した内容を紹介します。
機能としては投稿に対するいいねとコメントの数を集計して表示させる機能に関する内容です。
実装当初の内容と修正後の内容を掲載したいと思います。

## 実装当初のコード
“`ruby:tweet.rb
class Tweet < ApplicationRecord belongs_to :user validates :content, presence: true, length: { in: 1..140 } has_many_attached :images has_many :favorites, dependent: :destroy has_many :comments, dependent: :destroy has_many :retweets, dependent:

元記事を表示

【初心者向け】Ruby on Rails webサイトへの表示について

現在、デイトラでWeb開発を学んでおり、その学習において、学んだことを共有させていただきます!

現在は、Ruby on RailsでWebサイトを作成中です。

![スクリーンショット 2024-09-25 15.09.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894345/650a3c5b-d9bd-c4a2-af14-ce07b232e71e.png)

どうやってこれらの文字を表示しているのでしょうか?

“`routes.rb
Rails.application.routes.draw do
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
get ‘/’ => ‘home#index’
end
“`
ブラウザから get ‘/’ リクエストがきたら、routes.rbで処理が開始され、home#indexが実行されます

元記事を表示

Rails+docker-compose.ymlで開発環境を作成しようとしたらnode_modulesが行方不明になった件

# 結論
`.dockerignore`で共有外にしていても`docker-compose.yml`でホストをマウントすると、ホスト側の状態が上書きされ`node_modules`が消えていた。
`docker-compose.yml`の`volumes`に以下のようにしてホストとは独立した`匿名ボリューム`を作成し、上書きを回避する。
“`yml:docker-compose.yml
# ※myappの部分のディレクトリ名は読み替えてください
volumes:
– .:/myapp
– /myapp/node_modules # ホストと独立した匿名ボリュームをマウント
“`
`.dockerignore`で指定していれば除外されると勘違いしていた。
# 顛末
## 1. 要件
新しく作成するプロダクトの開発環境の要件は以下。
– Railsのプロダクト
– Playwrightを利用(特定のサイトをスクレイピングするため)
– docker composeコマンドで起動
– ホストにはnode_modulesの内容を反映したくない
## 2. node_module、消

元記事を表示

Raspberry PiにRailsサーバーを立てて運用する

![P_20240924_172516.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72890/ea5e1765-6b95-a2c9-7e62-19679f63e5c9.jpeg)

# 初めに
家庭内で家族が使えるお小遣いアプリをRuby on Railsで作っているのですが、少しでも維持費を抑えるためにRaspberry Piを自宅サーバーにしてその上で動かすことにしました。
ただし、今回はあくまで自宅内でのサービス限定とし外部には公開しません。

# 前提条件
– Raspberry Pi 5を使用
– OSインストール、初期設定、ネットワークの設定は済んでいる
– 消費電力を抑えるために無線LANはOFFにしている
– sshで接続できるようになっている

# 下準備、環境アップデート
“` bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rsi-update
sudo rpi-upda

元記事を表示

Rspec で特定種類のテストだけを対象に before / after を設定する例

# 例

system test の全てのテストケースを対象に `before(:each)` の処理をさせる場合

`rails_helper.rb` に以下を設定

“`rb
RSpec.configure do |config|
config.before(:each, :type => lambda { |spec_type| spec_type == :system}) do

end
end
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# プロフィール・経歴

https://github.com/YumaInaura/YumaInaura

元記事を表示

【Rails7.0】nomethoderror: undefined method ‘raw_filter’

## 概要
Rails6.1から7.0にアップデートした際、発生したタイトルのエラーに関して備忘録です

### エラー内容
“`
NoMethodError: undefined method `raw_filter’
“`

### 解決法
エラーが発生した時のスタックトレースを確認したところ `activerecord-import` が怪しかったのでリポジトリを確認したところ最新にしなくてはいけなかったので最新にしたところ解決した

元記事を表示

heroku run rails db:migrateでdbに接続ができないエラーが出た。

自分用備忘録です。初心者なので、間違っていることや、理解が違っていることがありましたら、教えていただけると幸いです。

## 問題
deviseでメール認証機能をつけたアプリをherokuにデプロイしようとした際、dbが見つからないというエラーが出た。

## 解決方法
database.ymlファイルのproductionに
“`url: <%= ENV['DATABASE_URL'] %>“` を追加する。

#### [解決までの過程(記録用)]
deviseで管理者機能をつけたアプリをherokuにデプロイ。
“`ruby
% git push heroku master
“`

HerokuのダッシュボードのResourcesからadd on設定
postgresqlを選択

データベースの設定が完了したので、
“`ruby
% heroku run rails db:migrate
“`

下記のエラーが発生しました。
“`ruby
Running rails db:migrate on ⬢ hidden-journey-8

元記事を表示

OTHERカテゴリの最新記事