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

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

NoMethodError: undefined method `chrome’ for Selenium::WebDriver::Remote::Capabilities:Class ってなエラーが出た場合

6.1のサポートがぁぁぁあということで、7.0へ引っ越し作業中に

“`
NoMethodError: undefined method `chrome’ for Selenium::WebDriver::Remote::Capabilities:Class
“`

ってエラーが発生

“`
Capybara.register_driver :chrome_as_pc do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
loggingPrefs: { browser: “ALL” },
chromeOptions: {
w3c: false,
args: [
“no-sandbox”,
“headless”,
“disable-gpu”,
“window-size=1200,800”,
“user-agent=Mozilla/5.0 (Windows NT 5.1) Apple

元記事を表示

Ruby Gold模擬試験アプリを作成しました!

# Ruby Gold模擬試験アプリを作成しました!

## はじめに

こんにちは!Rubyが大好きで、将来は日本でRubyエンジニアとして働くことを夢見ている者です。現在、就職活動を進めていますが、自分のRubyへの情熱を言葉だけでなく行動で示したいと考えました。

## Ruby Gold試験への挑戦

そこで、Ruby技術者認定試験(Gold)の受験を考えました。しかし、調べてみると、この試験は日本国内での対面試験のみだということがわかりました。現在中国に住んでいる私にとって、これは大きな壁でした。

## オープンソースの模擬試験リソース

幸いなことに、GitHubで素晴らしいリソースを見つけました。Ruby Associationが公開している[模擬試験問題](https://github.com/ruby-association/prep-test/blob/version3/gold_ja.md)です。これは本当に助かりました!

## Webアプリケーションへの発展

模擬試験問題を解いていくうちに、ふと思いつきました。「これをWebアプリケーションにしたら、世界中

元記事を表示

本番環境でRailsコンソールを開くコマンド

いつも忘れて30分ほど時間を浪費するので備忘録
しかもちょっと違うと全然開けないのが結構きつい。

# 本番環境でRailsコンソールを開く
“`
RAILS_ENV=production bundle exec rails c
“`

## RAILS_ENVは前
`RAILS_ENV=production`はどちらにせよ末尾につけるのではなく、前につける

## rails ではなくて bundle exec
`rails c`で開こうとしても開けない。
`bundle exec rails c`を使い開く。

元記事を表示

No route matches [POST] “/posts/new”エラーについて

復習のため、投稿機能を作成しようとしたところ、上記のエラーが出たので、解決方法をまとめます。

・ログイン後のユーザーが、投稿を行えるようにしたい
・sorceryを導入し、ユーザー登録機能は実装済み
・userとpostのデータの関係は、1対多である。

コードの内容
“`routes.rb
Rails.application.routes.draw do
root ‘top#index’
get ‘login’, to: ‘user_sessions#new’
post ‘login’, to: ‘user_sessions#create’
delete ‘logout’, to: ‘user_sessions#destroy’
resources :posts
resources :users
end
“`
“`models/post.rb
class Post < ApplicationRecord belongs_to :user, dependent: :destroy validates :user_id, presence: tru

元記事を表示

docker + carrierwave + amazon S3環境の画像アップロードで発生したエラーと対策

## 発生事象

前提として、開発環境では問題なくAWSに画像アップロードされている事が確認取れていた状態で以下の事象が発生していました。

### 1: デプロイ出来ない問題
・環境変数がデプロイ時に定義されていないと言われ、デプロイ失敗する状況が発生。

### 2: 本番環境でAWSに画像アップロード出来ない問題

・本番環境にて画像アップロード時にエラーが発生し、アップロード出来ない状況が発生。

## 結論
1,2の事象の原因は、dockerfileの設定でした。

## 実行環境
本番環境:`dockerfile`
開発環境:`dockerfile.dev`

初めてのdocker環境構築であったため、所属スクールの環境設定資料を参考に`dockerfile.dev`を作成して使用。

しかし、初期の環境構築のタイミングで、`dockerfile.dev`とは別に`dockerfile`というファイルも作成した(らしい)。
正直な話、`dockerfile`作成した記憶が無く、いつの間にか`dockerfile`をメインで使用していると錯覚していた。

最初のこの時点で

元記事を表示

パーフェクトRubyonRails備忘録6

# ActiveStorageによるファイルアップロード

– 実装
– ActiveStorageの有効化
– 以下を実行
– `rails active_storage:install`
– ActiveStorage用属性をモデル作成時に宣言する
– `rails g scaffold user name portrait:attachment`
– `portrait:attachment`部分がActiveStorage用属性の宣言
– 生成されたモデルには以下の記述が追加されている

“`ruby
class User < ApplicationRecord has_one_attached :portrait # 追加部分 end ``` - 注意として、Usersテーブルにportraitはカラムとしては無く、他のテーブルとして管理されている。

元記事を表示

[個人開発・本リリース] 完全未経験が冷蔵庫の中身を簡単管理できるサービスをリリースした件

## はじめに

こんにちは。ryosuke([@ryousuke_mogurA](https://x.com/ryousuke_mogurA))と申します。現在プログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。

前回MVPリリースしたアプリを本リリースしたので新たな記事を書くことにしました。
技術的な部分での誤りやサービスについての感想などありましたら、コメント等で教えていただけると助かります。
## 目次
[1.作成したサービスの紹介](#サービスの紹介)
[2.作成した経緯](#作成した経緯)
[3.技術スタック](#技術スタック)
[4.こだわったポイント](#こだわったポイント)
[5.画面紹介](#画面紹介)
[6.ER図](#ER図)
[7.実装機能](#実装機能)
[8.今後の展開](#今後の展開)
[9.反省点](#反省点)
[10.感想](#感想)

## サービスの紹介
[![Image from Gyazo](https://i.gyazo.com/385a7078b695448cfef79567d7cd142b.jpg

元記事を表示

link_toメソッドで生成されるアイコンや文字にスタイルを適用する

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## 書き方
“`
<%= link_to "sample", xxx_path, id: id番号 %>
“`
このようにID属性を作成することでCSSやjavascriptのスタイルを適用できる。

## どうしてidの番号を指定するのか
番号を指定しない場合、一覧など複数のボードがある時、複数のボードに同じIDが適用されることになるため。
原則、HTMLではIDはユニークであるべき。

元記事を表示

パーフェクトRubyonRails備忘録5

# ActiveJobによる非同期実行

– どういう時に使う?
– リクエストからレスポンスまで時間がかかりそうな時などに、レスポンスだけ返して処理は非同期で実行する
– ジョブの実装
– ジョブクラスの生成

“`bash
rails g job async_log
“`

– `app/jobs/async_log_job.rb` ファイルとテストファイルが作られる
– ジョブクラスの実装

“`ruby
class AsyncLogJob < ApplicationJob queue_as :default def perform(message: "hello") AsyncLog.create!(message: message) # 実行したい処理を書く end end ``` - ジョブをキューに入れる - ジョブの実行はバックエンドが担当する(ややこしや

元記事を表示

【Rails】button_to_functionが使用できない

## はじめに
Railsのアップデート中にbutton_to_functionを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
以下のように、button_to_functionを使用するとエラーがでます。
“`ruby
<%= button_to_function "ボタン", "clickButton()", {:class=> “button”} %>
“`

## 解決方法
button_to_functionはRails4.1で削除されました。
javascriptなどでボタンをクリックしたときのコードを実装します。
“`ruby
ボタン

$(document).ready(function() {
$(“#button”).click(function() {
clickButton();
});
})
“`

## 参考
https://www.techscore.com/tech/Ruby/rails-4.0/view/

元記事を表示

Shift_JISに変換する際に『 〜 』が化けちゃう【波ダッシュ・全角チルダ問題】

## 解決策
文字列をShift_JISに変換する際 “~”が消える事例に遭遇した人へ
下記のコードを付けよう

~~~ ruby
# 全角チルダを波ダッシュに変換
.gsub(‘~’, ‘〜’)
~~~

## 原因
上のインライン部分に書いてあるとおり、実は”**~**”と”**〜**”は違う文字

全角チルダ ” **~** “はShift_JISにエンコードする際バグってしまうみたい

https://www.tohoho-web.com/ex/dash-tilde.html

元記事を表示

binding.pryを使ったデバックの方法(Docker内で)

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## 手順
1.gem ‘pry-byebug’をインストール
2.
“`
docker ps(コンテナIDを調べる)
“`
3.
“`
docker attach (CONTAINER ID)
“`
4.メソッド内に binding.pryを書く
5.ブラウザで確認したい画面を開く
6.ターミナルで値を確認する

## 終わらせ方
1.検証が終わったらexit
2.ctrl + (Pの後Q)
3.binding.pryをけす

元記事を表示

【Rails】テーブルを作り直すときのMigrationがややこしかった

## はじめに
本記事では、業務でテーブルを作り直したいときにややこしかったことについて紹介していきます。

## 背景
開発を行なっていた際に、過去作成されていたテーブル名が機能改修後の機能と意味合いがずれており、今後開発で触れる時にわかりづらいということでテーブル名を変更したいと考えました。

1. 既存のテーブルのテーブル名を変更したい
2. 既存のテーブルにはリレーション関係がある
a. 子テーブルのテーブル名も親テーブルと合わせて変更したい
b. primary_keyやforeign_keyも変更する必要がある

→ テーブルを作り直した方がわかりやすいということで、作り直すことになりました。

## ややこしかったところ
ややこしかったところは、下記で述べる「OldTableクラスとChildOfTableクラスをMigrationFileで定義しなくていけない理由はわかったけど、NewTableクラスとChildOfNewTableクラスは定義しなくていい」という点です。順を追って説明していきます。

以下のコードはレビューをいただく前のコードです。
`

元記事を表示

令和時代のRails アプリに database_cleaner は必要なのか

## はじめに

Rails アプリ開発でテスト環境の設定を行う際によく出てくるのものの一つに[database_cleaner]が挙げられます。

過去の Rails のテスト関連の本やネット記事を見ると[database_cleaner]を使うのが作法かのように説明するものが多いです。

しかしながら、中には「[database_cleaner]って要る?」と疑問を投げかけている人も少なからずいます。

https://anti-pattern.com/transactional-fixtures-in-rails

ん、どっち? 現代の Rails アプリに[database_cleaner] は必要なのでしょうか?
氣になったので調査してみました。

[database_cleaner]: https://github.com/DatabaseCleaner/database_cleaner

## 結論

Railsの標準機能`use_transactional_tests`(初期設定: `true`)を使えば、通常は[database_cleaner]が不要であることのよ

元記事を表示

ActiveAdminで、全てのチェックボックスを選択するチェックボックスを追加する

## 動機
[前回の記事](https://qiita.com/Erga-mion/items/5ba48dbeb10573dd70c2)では、ActiveAdminで、複数のレコードを関連づけるために、フォームにチェックボックスを追加していました。 その続きになります。

そこに、選択できるレコードの数が膨大になることが考えられるので、それらを全て選択できるチェックボックスを追加して欲しい、という要望がありました。

ActiveAdminのドキュメント等を確認しましたが、そういった機能は用意されていないようですので、JavaScriptで実装することにしました。(もしありましたらご指摘お願いします:bow:)
## 動作環境
– ruby 3.2.2
– rails 7.0.8
– activeadmin 2.14.0

## 実装
前回の記事のものと同じものになります。

`User` の作成・更新ページに、複数の`Book` を選択できるチェックボックスを追加しています。

“`mermaid
erDiagram
User ||–o{ BookReservation : u

元記事を表示

【Rails】Rails始めて2週間でよく使ったコマンド

こんにちは!
今回はRailsを始めて2週間でよく使ったコマンドを紹介したいと思います。
最後まで読んでいただけると嬉しいです!

# コマンド紹介
“` php
rails server
“`
説明: Railsアプリケーションをローカルで実行するためのコマンドです。http://localhost:3000でアプリケーションを確認できます。
“` php
rails generate scaffold [モデル名] [カラム名:型, …]
“`
説明: モデル、ビュー、コントローラなどの基本的なCRUD機能を一括で生成するコマンドです。開発初期によく使用します。
“` php
rails db:migrate
“`
説明: データベースのスキーマを最新の状態に更新するためのコマンドです。新しいマイグレーションファイルを適用します。
“` php
rails console
“`
説明: RailsアプリケーションのコンテキストでインタラクティブにRubyコードを実行できるコンソールです。モデルの操作やデバッグに便利です。
“` ph

元記事を表示

ActiveAdminで、多対多の関連付け(中間テーブル)レコードを追加する

ActiveAdminで1対多や多対多の関係のあるモデルでは、`has_many` メソッドを使うことで、多のモデルをもう一方のモデルのフォームで追加・更新できるようにできます。(https://activeadmin.info/5-forms.html)

本記事では、その`has_many`を使う方法と、もう一つ別のアプローチで、多対多のモデルを関連づける中間テーブルのレコードを作成・更新できるようにします。

ここでは、以下のようなモデル構成での実装を示します。
`User`のページで、`Book`との中間テーブルである、複数の`BookReservation`を作成・更新・削除できるようにします。
“`mermaid
erDiagram
User ||–o{ BookReservation : user_id
BookReservation o{–|| Book : book_id
“`

## 動作環境
– ruby 3.2.2
– rails 7.0.8
– activeadmin 2.14.0

## has_manyを使用する場合
### 画面
– 「Add N

元記事を表示

??と、?が二回並んでる場合

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## 疑問に思ったメソッド
“`
def page_title(title = ”)
base_object = ‘aaaa’
title.present? ? “#{title} | #{base_object}” : base_object
end
“`

## 疑問に思ったこと
present?は存在するかどうかというメソッドだが、この二つ目の?は何か。
?を二つ並べることで別の意味を持つのか?

## 調べた結果
present?と?は別の意味を持つ。二つ?が並んでるので2つで意味を持つのかと思ったが、そういうわけではない。
二つ目の?は三項演算子。

**三項演算子とは**
if文の簡略化。簡単なif文ならこちらで省略した方がよい。
条件式? 真の場合 : 偽の場合

## 結論
“`
title.present? ? “#{title} | #{ba

元記事を表示

RailsのModelに定数を用意する

# 概要
* RailsのModelで定数を用意したかった
* そのメモ

# 結論

こうすればよい

“`ruby
class MyModel < ApplicationRecord MY_CONSTANT = '定数の値'.freeze end ``` # freezeについて 調べてる感じ、やった方が良さそう。下記ができちゃうので ```ruby class MyModel < ApplicationRecord MY_CONSTANT = '定数の値' end MyModel::MY_CONSTANT << '追加の値' # これができてしまう puts MyModel::MY_CONSTANT # => ‘定数の値追加の値’
“`

元記事を表示

rswagでAPI仕様書自動生成するときにindexアクションの扱いに困った

# 前提

[rswagの公式Doc](https://github.com/rswag/rswag?tab=readme-ov-file#getting-started)を見ながらAPI仕様書の自動作成に取り組んでいた時の話。
自動作成までの手順として、RSpecでAPIのテストを書いた後、ターミナルで`RAILS_ENV=test rake rswag:specs:swaggerize`を実行する。
すると、`swagger/v1/swagger.yaml` が自動で作成されて、`api-docs/index.html` にアクセスするとswaggerのAPIDocが確認できる。

# うまく行ったこと

createアクションはドキュメント通りに以下のようなテストを作った。(ユーザーに関するAPI)

“`ruby: users_spec.rb
require ‘swagger_helper’

RSpec.describe ‘api/v1/users’, type: :request do
path ‘/api/v1/users’ do
post(‘create

元記事を表示

OTHERカテゴリの最新記事