Rails関連のことを調べてみた2022年08月18日

Rails関連のことを調べてみた2022年08月18日

100日後くらいに個人開発するぞ!day070

## 今日は配列の変数を使った一覧ページの表示をやってみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/506e5ce2-15e6-d404-2662-50a4cfff8f6b.png)

## 今日の学び

### viewファイル内で変数を定義して表示する
* erbファイルでは`<% %>`で囲むことでHTMLファイル内にRubyのコードを記述できる
* erbは「Embedded Ruby(埋め込みRuby)」の略
* 埋め込んだRuby Codeをブラウザに表示したい場合は`<%=変数%>`を用いる

### <%%>と<%=%>
* `<%%>`の場合は何も表示されないので変数の定義などに用いる
* `<%=%>`はRubyコードの中身が表示されるので変数の値などを表示したい場合に用いる

### 投稿データを入れる配列
* コンマで要素を区切ることで複数の要素を配列に代入できる
* 例:変数postsに複数のデータを入れる

元記事を表示

coc.nvim + efm-langserver でerbファイルの文法チェックをおこなう

# Vimで.erbファイルを書きたい

Rails7のHotwireを試したくて、(nvimで)何年かぶりにeRubyを書いてみてるのだけど、eRuby向けのLanguage Serverが見当たらなくて泣きそうになった。
せめて文法エラーのチェックくらいはできたら・・・[^1]
[^1]: Ruby自体のLanguage Serverは[solargraph](https://solargraph.org/)というのがあり、だましだましだが[Railsもサポートされている](https://solargraph.org/guides/rails)

そこで、どんなコマンドでもLanguage Serverにしてしまえる `efm-langserver` を使ってみることにした。

https://github.com/mattn/efm-langserver

efm-langserverのREADMEには、

“`yaml
lint-command: ‘erb -x -T – | ruby -c’
“`

と[書いてある](https://github.com/mattn/e

元記事を表示

Fakerが理解不足でエラーが出たので調べてみた

はじめに

タイトルの通り、RspecでダミーデータをFakerを用いて作成しようとしたところ、単純な理解不足でエラーが起きて一瞬詰まったので備忘録として残します。
同じようなミスをしている人がもしかしたらいるかもしれないので!!

行いたかったこと

user_name(ユーザー名)のダミーデータを作成がしたくて、下記のように記述したのですが、”国際化エラー:翻訳に失敗しました”というようなエラーが返ってきてしまいました。

~~~
FactoryBot.define do
factory :user do
user_name { Faker::Name.user_name }
#user_nameのダミーデータを作成したかったがエラーが発生
~省略~
end
end
~~~

~~~
#返ってきたエラー
I18n::MissingTranslationData:
translation missing: en.faker.name.user_name
~~~

ネットでエラーについて調べたところ、翻訳ミスなのでconfig/

元記事を表示

Rails7 x Mysql8 Dockerで環境構築をする

## はじめに
Docker環境構築に1日使ってしまい苦労したのでまとめてみる。
環境構築時の知識は`Dockerfile`や`docker-compose.yml`を読めば何をしているのか理解できる。
基本的なコマンドは知っている
`PHP x Mysql`のDocker環境を過去に作ったことがある。

## 環境と前提
Mac M1
Rial7とMysql8で環境を作成する
Vも含めたフルスタック想定で環境を組むが、途中の注釈通り`–api`をつけるだけでapiモードで開発可能

## 環境構築をしていく
適宜コメントで説明を入れていきます。
*必要ファイル*
大体どんな記事でもこの構成だと思う
“`
Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
entrypoint.sh
“`

*Dockerfile*

“`rb
# Docker-hubのImageをベースとして利用します。
# Docker-hubにログインしていないとダウンロードできないので気をつける
FROM ruby:3.1

# Dockerコンテナ内

元記事を表示

初めての投稿です

# はじめまして
初めての投稿です。
今後よろしくお願いします。

# 自己紹介
定年後も遊べる趣味としてプログラミングの勉強を始めました。
独学で勉強しており、Qiitaの記事を参考にさせていただいてます。
社会人6年目でWEB業界とは無関係の業界で働いています。
勉強の備忘録として、また初心者なりにエラー解決等しましたら
投稿していきたいと考えています。

# 今までやってきたこと
* Rails tutorial
* progate(HTML&CSS・JS・SQL・Git・Command Line・React)

# 学習環境
* WSL
* VScode
* Rails

元記事を表示

Gemfile.lockのexclamation mark (!)

## Gemfile.lockのDEPENDENCIESの!
自前のgemサーバーを立てたプロジェクトでGemfileを修正したところ、Gemfile.lockのDEPENDENCIESに!が差分として入るようになったのでその理由を調べてみた。

一応それらしい情報は見つかったものの、説明にバラツキがあり今一つピンと来ない。
https://stackoverflow.com/questions/7517524/understanding-the-gemfile-lock-file

## Bundlerは一体何をやっているのか?
仕方ないのでbundlerのソースを確認してみると、こんな感じで!を付けてました。
“`ruby:lib/bundler/dependency.rb
def to_lock
out = super
out << "!" if source out << "\n" end ``` sourceの判定 ```ruby:lib/bundler/rubygems_ext.rb def source

元記事を表示

[Rails6・S3]ActiveStorageを使って画像をダイレクトアップロードする

### 前提
記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。

### この記事で実装すること
Rails6系でActiveStorageを使用してS3に画像をダイレクトアップロードする手順を説明します。
Railsアプリで画像を複数枚アップロードする機能を実装すると思っていたよりアップロードに時間がかかってしまいます。
そこでダイレクトアップロードを実装するとアップロードにかかる時間を大幅に削減することができます。

### 使用技術
Ruby 3.1.2
Rails 6.1.6
Heroku

### 実装手順
Active StorageはRailsにデフォルトである画像投稿のための機能なので詳しい情報はRailsガイド等も参考にしてみてください。
[Railsガイド](https://railsguides.jp/active_storage_overview.html

元記事を表示

gem cocoon rails6使い方

## 初めに

今回この記事では、gemのcocoonの簡単なチュートリアルを紹介してきます。
この記事ではあくまで簡単なチュートリアルを動かすことを目的として作成しています。
公式のgithubのreadmeではhtmlファイルがhamlで作成されているのでhamlを学習しておらず詰まってしまっている方に向けて作成しています。

github Readme↓
https://github.com/nathanvda/cocoon

上記のreadmeを日本語訳してくれている記事↓
https://note.com/emetselch1984/n/neb1396b86126

## 実装環境
ruby 3.1.2
rails 6.1.6.1

## 完成図
![Screen_Recording_0004-08-17_at_16_48_12_AdobeExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1717562/77687a3c-d545-ad09-6a4d-ee8d0b721a8c.gi

元記事を表示

スネークケースのモデル名でしくじった話

## 環境
Rails5.2
Ubuntu20.4

## はじめに
モデル名の名前の付け方をしくじって、トラブル解決に時間をかけてしまった話です。始めに、モデル名に次のような、スネークケースの形式で名前を付けました。
“`
rails g model Test_Test_1
“`

何がいけなかったのかといえば、数字の前にアンダーバーをつけてしまったことです。なぜ、テーブル名の末尾に数字を使ったのかといえば、Test_Test_1、Test_Test_2、Test_Test_3と、いった具合に、同じテーブル名にして、連番を付けたかったためです。

このようなモデル名でテーブルを作成した後、コントローラーからそのモデルのクラスを呼び出したとき、つぎのようなエラーが発生しました。
“`
uninitialized constant
“`

つまり、そのような名前のクラスは存在しませんというエラーです。いや、あるんですが・・・と思っていたのですが、原因は、モデルの名前の付け方にありました。

結論を言うと、モデル名をTest_Test_1ではなく、Test_Test1で作り変えると

元記事を表示

僕がハマったRailsのsave(context: hoge)の落とし穴

## 落とし穴
備忘録です。

saveメソッドの引数にcontextを渡す処理があったとします。

“`ruby:user_controller.rb
def update
#
#
user.save(context: :hoge)
#
#
end
“`

なぜなら一部のバリデーションをスキップしたいから。

“`ruby:user.rb
class User < ApplicationRecord # 処理1 before_validation :set_bar, unless: -> { validation_context == :hoge }

# 処理2
validate :validate_foo, on: :update
def validate_foo
# バリデーション処理
end
end
“`

この例では、user.save(context: :hoge)の時にbefore_validationを走らせたくないけど、他のバリデーションはやって欲しいという意図。saveでcontextは指定しているけど

元記事を表示

gemfile.lock がゾンビのように復活する現象への対処

# gemfile.lockが何度消しても復活する。
gemfile.lockが何度消しても、何度stashしても即時で復活して、gitのブランチを切り替えられず困ったので、記事化します。
# 原因
springというライブラリが、バックグラウンドで常にアプリケーションの状態を監視してくれているから。
# 解決方法
 以下のコマンドで自動更新は止まります。
また、動かしたい時のコマンドも記載しておきます。
“`bash
# 止めたい時。
spring stop
# もう一度動かしたい時
spring start
“`

# Springって何よ?
「アプリケーションをバックグラウンドで実行し続けることで開発をスピードアップする Rails アプリケーションプリローダーです。」

https://pleiades.io/help/ruby/spring.html

らしく、裏で常に動いていることによって自動で、gemfile.lockを常に監視してくれるというありがたい(迷惑?)ライブラリなようです。

# 参考記事
https://qiita.com/masashiiwasaki/

元記事を表示

Element Plusのel-uploadにてアップロードするファイルとは別にパラメーターを付属させるやり方

#### 概要
Element Plusのel-uploadを使用していますが、ファイルアップロード時におまけでパラメータを付属させてサブミットする方法でハマったので、備忘録として残しておきます。

#### テンプレート側
“`

.

元記事を表示

【Rails】検索フォームをヘッダーに追加する

# はじめに
検索フォーム(検索窓)を実装する。
**仕様**
・ヘッダーに検索フォームを追加し、テンプレートを崩さない。
・送信ボタンは実装しない。
・form_withを使用する。
・虫眼鏡マークと検索フォームが重ねる。
・検索キーワードが空白の時は、全ての投稿を返す。
・検索キーワードがタイトルと内容に一致するを記事を検索する。
![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/3bd31692-4117-5184-6247-85c94b2d6e58.gif)

# 環境
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
4|sass-rails|5.1.0

# 実装

元記事を表示

コード譜投稿アプリを作る #1(アプリ構築)

[←前回の記事](https://qiita.com/t_sekky/items/de8768b9826d98601164)

今回はひとまずRailsのAPIモードとNext.jsのアプリケーションを作っていきます
環境はM1macです

## Railsアプリ作成
[この記事](https://qiita.com/ydammatsu/items/a2fbae968149bf2c1999)に書いてあることを~~コピペ~~参考にしてdockerを使って構築しました
ruby3系とRails7系は初めてだけど試すのには絶好の機会だしまぁええでしょ

詰まった点としては`db:create`する際に以下のようなエラーが出ました
“`
/lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29′ not found (required by /usr/local/bundle/gems/nokogiri-1.13.0-aarch64-linux/lib/nokogiri/3.1/nokogiri.so) – /usr/local/bund

元記事を表示

【Rails】Javascriptバンドラーの第5の選択肢vite_rails

# 初めに

`Rails7`からアセットパイプラインは`importmap` `esbuild` `webpack` `rollup`の 4 つの選択肢があります。
ですが、新たに`vite_rails`という選択肢をここで紹介させていただきます。

# なぜ vite_rails なのか

– 開発サーバーは非常に高速に起動し、変更が即座に更新される。(ホットリロード)
– 基本的にデフォルトの設定で動作し、構成が簡単である
– デプロイ時は`assets:precompile`でバンドルができる。
– css や sass などもバンドルできる。

# 導入方法

`webpacker`からの移行する方法になります。

`Gemfile`に`vite_rails`を追加します。

“`Gemfile:Gemfile
gem ‘vite_rails’
“`

“`console:ターミナル
$ bundle install

$ bundle exec vite install
設定ファイルを作成する
“`

デフォルトでは`app/frontend`がエントリーポイントに

元記事を表示

【Rails】resourcesとは① 〜基礎〜

# はじめに
この記事は、resourcesに関する基礎知識をまとめた記事である。(備忘録的な意味もあります…)
 ・前提
 ・resourcesとは
 ・書き方
 ・注意事項

## 前提
・Railsのルーティングを理解している

## resourcesとは
resourcesとは、特定のコントローラーに対する**ルーティングをまとめて設定してくれる**もの。

設定するルーティングは、データベース上での**CRUD操作**(Create/Read/Update/Delete)にそれぞれ対応できるようなルーティングを設定してくれる。

:::note info
index、new、create、show、edit、update、destroyアクションに対するルーティングを設定してくれる。
:::

## 書き方

### 基本
・書く場所:`config/routes.rb`
・書き方 :`resources :コントローラー名`

“`rb:config/routes.rb
resources :コントローラー名
“`

 
例:postsコントローラー

元記事を表示

PHPerでLaravel使いの僕がRailsでハマったこと(環境構築編)

# Ruby on Railsやろう!
ある日突然急にRailsがやってみたくなって手を出した男の奮闘記です。
またなんかあったら追記します。

# 環境
OS: Windows11
エディタ: Intellij Idea
ターミナル: Windows Terminal
Rubyインストーラー: Ruby+Devkit 3.1.2-1 (x64)
Rubyバージョン:3.1.2p20
Railsバージョン:7.0.3.1

# 第1の壁:「エラー: データベース ‘msys’ は無効です (無効または破損したデータベース (PGP 鍵))」が乱立
Rubyのパスも通った、railsコマンドも入った、さて「rails new」をしよう!
・・・とやる気のところに立ちはだかる無数のエラー
「エラー: データベース ‘msys’ は無効です (無効または破損したデータベース (PGP 鍵))」しか記録に残して置かなかったのですが、他にも鍵がないとかのエラーが出てたと思います。
## 解決策:
MSYS2 development toolchain と Run ‘ridk install’

元記事を表示

【Rails】Fromオブジェクトパターンを使用したActiveStorageの拡張子バリデーションを設定する方法

大阪でRailsを中心に学習している薬剤師エンジニア(初学者)こと、ヨマ([@yoma_2003](https://twitter.com/yoma_2003))です!
Fromオブジェクトパターンを使用したActiveStorageの拡張子バリデーションを設定する方法をまとめます。

※おことわり※
断定口調でまとめますが、初学者であるため間違い等あればご指摘頂けると嬉しいです。

# はじめに

### やりたいこと

以下の様にPostモデルとCommentモデルに同時にデータを登録するため、PostCommentモデルというFormオブジェクトを作成した時、
**PostCommentモデル(Formオブジェクト)において、Postモデルで保存する画像データに拡張子のバリデーションを設定したい。**

![formobj.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711042/32c4781c-d08f-8436-269a-7b69bb817193.png)

“`ruby:p

元記事を表示

Reactでローディングアニメーションを実装

Reactでローディングアニメーションを実装をしました。

参考記事
https://almonta2021blog.com/%E3%80%90react%E3%80%91%E3%81%8A%E3%81%97%E3%82%83%E3%82%8C%E3%81%AAloading%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3react-spinners/

まずは、_app.tsxに記載します。

アニメーションはreact-spinnersというライブラリを利用しており、ClipLoaderを利用しています。カスタマイズもしやすいため、おすすめのライブラリです。

“`JavaScript
import Head from “next/head”;
import “../styles/globals.css”;
import “tailwindcss/tailwind.css”;
import { useRouter } from “next/router”;
import { useEffect, us

元記事を表示

【Ruby on Rails】link_toの中でhtmlタグを表示させずにタグの内容だけ適用させる方法

## やろうとしていたこと
“`
p= link_to “#{use_tmp(gorira.name)}”, user_path
“`
こんな感じのコードをrailsのslimを使用して書いていた。
ちなみに↑の“`use_tmp“`はapplication_helper.rb内に記述したヘルパーメソッド。
このヘルパーメソッドでは、文字を青く表示する処理を聞いた。

そのため、ユーザーが実際にみる画面では文字が青く表示されれば良い。

が、うえの書き方だと
“`
ごりら
“`
このように、ユーザーが見る画面でもspanタグが表示されてしまう状態だった。

## 解決方法
“`
– gorira_name = “#{use_tmp(gorira.name)}”
p= link_to “#{gorira_name}”.html_safe, user_path
“`
このようにすると、htmlタグは表示されず、ごりらという文字が青で表示されるようになった。

元記事を表示

OTHERカテゴリの最新記事