Rails関連のことを調べてみた2023年01月10日

Rails関連のことを調べてみた2023年01月10日
目次

(備忘録)Java概要

# Java
* 私の住んでる地域では、Javaによる開発需要(求人)がとても高く、それに合わせてJava学習の必要性を感じた。
* Javaは、求人数でもJavaScriptと並ぶほど多く、今後開発者として学んでおく必要性が高い言語だと思う。(PAIZA基準)
* そのJavaの特徴を、Rubyと比較しながら、覚えていきたい。

# Ruby on Railsの特徴

* 短期間でプロダクトのリリースが可能
* 言語学習のコストが低い
* スタートアップでよく使われる(リリースが早い為)
※Ruby on Railsの開発者であるDHHは、Ruby on Railsに関して、”Javaの典型的なフレームワークより10倍以上の生産性がある”とアピールしてた。

# Javaの特徴

* アプリケーションの仕様変更を行いやすい
* セキュリティが強固である
* 長期間にわたる保守・運用がしやすい
* 実行速度が速い
* 大手企業の基幹システムなど大規模開発に適した言語

# Rubyと比べてJavaが難しいと言われる理由

## ①覚えるルールやコードの記述量が多い
* Railsは、ア

元記事を表示

【Docker】docker-compose upした時にA server is already running. Check /product-register/tmp/pids/server.pid. エラー

## 1. 問題

“`docker-compose up“`し時に“`A server is already running. Check /product-register/tmp/pids/server.pid.
Exiting“` エラーが出て、立ち上がらなかった。

“`:console
/usr/local/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/usr/local/bundle/gems/net-protocol-0.2.1/lib/net/protocol.rb:68: warning: previous definition of ProtocRetryError was here
/usr/local/lib/ruby/2.7.0/net/protocol.rb:206: warning: already initialized constant Net::BufferedIO::BUFSIZE
/usr/

元記事を表示

Ruby on Rails初心者の学習記録 Part1

# はじめに
Ruby on Rails初心者の学習記録です。
Railsを利用して、簡単なWebアプリケーションを開発できるようになることをゴールにしています。
※随時更新予定です。

# 1. Rubyの基礎を学習
Rubyも利用したことがなかったので、まずはRubyを簡単に勉強しました。
[Progate](https://prog-8.com/)というオンラインプログラミング学習サービスを利用しました。初心者がつまりやすい開発環境の構築が不要なので、手っ取り早くRubyの文法を学ぶうえでは、利用しやすかったです。

# 2. Railsインストール
1.である程度Rubyの雰囲気はつかめたので、次はRailsのインストール及び関連作業を行い、Railsを利用したWebアプリケーション開発の準備をします。
※利用OSはWindows11です。

## Rubyインストール
Railsをインストールする前にRubyをする必要があります。[「Rubyのインストールと環境設定」](https://www.javadrive.jp/ruby/install/)を参考にインストールしました

元記事を表示

qiitaテスト

![スクリーンショット 2022-12-19 13.54.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982835/4aaf8ef8-716a-52c6-824e-cec74fc99a82.png)
#はじめに

元記事を表示

Rails7構築 -その3- importmapでfontawesomeを導入

### ↓その2の続き

https://qiita.com/devzooiiooz/items/262f71e737f94738debf

bootstrap5の後にFontAwesomeを導入します。

### 参考
ほぼここのまんまです。

https://qiita.com/gazayas/items/9224b22ce6416a624f33

# yarnでfortawesomeをインストール

“`sh:
$ yarn add @fortawesome/fontawesome-free
“`

### インストールしたfontawesomeをimportmapにpinします。
“`sh:
$ ./bin/importmap pin @fortawesome/fontawesome-free
“`

### config/importmap.rbを変更
fontawesome.js→all.jsに変更

“`rb:importmap.rb
# pin “@fortawesome/fontawesome-free”, to: “https://ga.jspm.io/n

元記事を表示

【Rails,Docker】Zeitwerk::NameError: expected file

ローカルで動いたDocker+Railsアプリを本番環境で動かそうとしたところ、Webコンテナ(nginx)は立ち上がったが、appコンテナ(puma)のステータスがexitedになる状況が起こった。
docker logs で確認したところ、以下のようなエラー分が検出された。
“`:log
Zeitwerk::NameError: expected file /app_name/app/controllers/function.rb to define constant …
“`
ZeitwerkはRails6.01から標準となっている定数の自動読み込み機能で、ファイル名がそこで定義されている定数と一致していない場合にそれを検出してエラーを吐く。
今回の場合、コントローラーに定義する関数が長くなり可読性を損なうため、ファイルを別のファイル(function.rb)で定義して、includeでコントローラに取り込んでいる。そのため、ファイル名と定数の不一致によりこのようなエラーが出ていると考えられる。

# 対処法
config/application.rbに“`conf

元記事を表示

ビューを使ってエラーメッセージを表示させる

# このエラーメッセージを真似してみる。
“`html
<% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>が原因でこの記事を保存できませんでした

    <% @article.errors.each do |error| %>

  • <%= error.full_message %>
  • <% end %>

<% end %>
“`
### 出典
https://railsguides.jp/active_record_validations.html#%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E3%83%93%E3%83%A5%E3%8

元記事を表示

Rails7 -その2- importmapでbootstrap5の導入

### ↓その1の続き

https://qiita.com/devzooiiooz/items/5f12c0601acd2ae9b5d9

## Rails7はimportmap
Rails7はjavascriptアプローチのデフォルトがimportmapになったので、Rails6でのjavascript bundlerであるwebpackerではなくなった。(指定することはできる)

https://zenn.dev/takeyuweb/articles/996adfac0d58fb

デフォルトでapplication.html.erbは以下のようになっている
“`erb:views/layouts/application.html.erb
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
<%= javascript_importmap_tags %>
“`
stylesheet_link_tagはapp/assets/stylesheets/にあるapplicati

元記事を表示

(備忘録) Githubにてうっかりと削除したレポジトリの復元方法

# 概要

* Githubにて、過去に作成、PUSHしたレポジトリを削除してしまった後、復元する方法を整理しておきたい。
* 削除済みのレポジトリの復元方法は他にもあるが、今回は、Githubサイトでの復元方法をメモっておきたい。

# 手順

* ①Githubサイトにログインし、右上にある自分のアイコンをクリック→Settingをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2843483/c461c569-df7b-5eb0-4265-1a64bf789d07.png)

* ②左メニューのレポジトリをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2843483/5b04dbb2-8d65-8c9e-34e7-9b59f168bcb9.png)

* ③Deleted repositoriesをクリックすると、過去に削除したレポジトリのリストが出てくる。

元記事を表示

中間テーブル

# 中間テーブルとは
– テーブルとテーブルの多対多の関係を表す関連テーブル

– 中間テーブルを使うことで多対多の関係を一対多の関係にできる

# 中間テーブルを使う理由
– 空のカラムができてしまいエラーの原因となるのを防ぐため

# 中間テーブル
例えばusersテーブルとcoursesというテーブルがあったとする

|id|user|
|—|—|
|1|a|
|2|b|
|3|c|
|4|d|

|id|course|
|—|—|
|1|国語|
|2|数学|
|3|理科|
|4|社会|
|5|英語|

中間テーブルを使わない場合以下の様になってしまい、冗長になってしまう。
空のカラムもできてしまいエラーの原因となる。

usersテーブル
|id|user|course_id1|course_id2|course_id3|course_id4|course_id5|
|—|—|—|—|—|—|—|
|1|a|国語|数学|理科|社会|英語|
|2|b|国語|理科|社会|
|3|c|国語|数学|理科|社会|
|4|d|英語|

co

元記事を表示

Rails7+Bootstrap環境の構築について

## ■Bootstrap5を使ってみたいと思ったきっかけ

Railsチュートリアルで使っていたBootstrapをポートフォリオのフロントでも使いたい…でもチュートリアルだとBootstrap3だからいかにも…感が否めない。どうやらBootstrap5だと割とモダンなnavbarなどのコンポーネントが提供されていそう、、、と感じたため。先に断っておきますが初学者のため間違っている箇所がありましたら、ご指摘いただけますと幸いです。

## ■導入方法

Rails newコマンドのオプションを指定するだけです。

“`jsx
rails new [アプリ名] -j esbuild –css bootstrap
“`

## ■確認

Bootstrap5のサンプルコード(下記画像ではNavbar)をとりあえずRailsのビューに記載してみて確認する。

![スクリーンショット 2023-01-08 21.06.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092884/07c4b01

元記事を表示

【議事録】Webレスポンシブデザイン実装後、デザインが崩れる問題(要素の重なりがおかしくなる)(z-indexで解決)

# 初投稿
本記事が初めての投稿になります❗️

# はじめに
– 本記事は、議事録としてまとめたものになります。
– 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
– また記載内容はすべて、正しい内容が記載されているとは限りません。
– 誤った内容を見つけた場合は、ご指摘をお願いいたします。

# 背景
– 自分のアプリ(ポートフォリオ)へ、Webレスポンシブデザインを適応しようとした時の話。
– 現在、ユーザーはPCブラウザからの利用ではなく、スマホからの利用頻度が高いだろうと考え、実装することにした。
– 実際に自分のアプリに、Webレスポンシブデザインを実装したところ、以下のように要素が重なって表示されてしまう事象が発生した。

# 環境
OS:MAC
ブラウザ:GoogleChrome
開発言語:Ruby on Rails

### サイドバーを表示していない場合
– 特段、画面上は問題なし。
![スクリーンショット 2022-12-28 20.24.53.png](https://qiita-image-store.s3.ap-northeast-1.a

元記事を表示

一意性のバリデーションをかける

# 属性の値を一意にバリデーションをかける
“`rb
class Holiday < ApplicationRecord validates :name, uniqueness: { scope: :year, message: "発生は年に1度である必要があります" } end ``` ### 出典 https://railsguides.jp/active_record_validations.html#uniqueness:~:text=class%20Holiday%20%3C%20ApplicationRecord%0A%20%20validates%20%3Aname%2C%20uniqueness%3A%20%7B%20scope%3A%20%3Ayear%2C%0A%20%20%20%20message%3A%20%22%E7%99%BA%E7%94%9F%E3%81%AF%E5%B9%B4%E3%81%AB1%E5%BA%A6%E3%81%A7%E3%81%82%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E

元記事を表示

Rails – 子テーブルで最小/最大の値を持つレコード1件ずつだけを親テーブルにJOINする

いちどIDを得ておく必要があるかもしれない
2クエリで実現できそうだ

“`rb
children_ids = Child.group(:parent_id).maximum(:created_at).values # e.g [6,35,68]

Parent.joins(:children).merge(Child.where(id: children_ids)).select(“parents.*, children.*”)
“`

maximum を minimum に変えれば最小のレコードをだけをJOINする

# チャットメンバー募集

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

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

# Twitter

元記事を表示

Rails 制作中アプリのアプリ名を変更する

# 1.はじめに
2作目のポートフォリオを制作中にアプリ名を変更したくなったため、やり方を調べて対応しました!
その記録を残しておきます。

# 2.前提条件
#### 開発環境
Ruby:ruby 3.1.2
Rails:Rails 6.1.6.1
OS:Windows11 Home
統合開発環境:Cloud9
ソースコード管理:GitHub

#### やりたいこと
railsアプリケーション名の変更

# 3.手順
#### ①バックアップ
万が一の事態に備えて、アプリ名を変更する前にバックアップを取っておく。
1)GitHubから対象のアプリを開く。
2)「<>Code▼」を押して、LocalからsshのURLをコピーする。
3)ローカル環境にcloneして、仮置きディレクトリに格納する。
※仮置きディレクトリ名は、後ろに2を付ける等なんでもOK!
“`
git clone 対象アプリのURL
“`

#### ②Railsアプリ名称変更
Railsのファイル名変更はGemfileを入れることで簡単に行える!

1)アプリ名を変更したいアプリのGemfileに下記

元記事を表示

Ruby on Railsを基本からまとめてみた【APIを構築する方法】

## Rubyでできること(API)

Rubyの中でもRuby on Railsを活用することでAPIの実装ができる。APIは簡単に説明すると『サーバーに保存されているソフトウェアを別のシステムやアプリケーションに利用させること』。特定のルールでサーバーへとアクセスさせ、処理した結果をレスポンスすることを指す。

APIはGoogle社など大手企業が提供しているイメージがあるが、Rubyを活用すれば自分で実装でき、この実装したAPIを社内やスマホアプリなどと連携して利用できる。例えば、経費精算のAPIを作成しておけば、従業員がデータを入力するだけで関係システムに情報登録する仕組みが実装できる。

## 参考サイト
[【2022最新】Rubyでできること7選!トレンドは?](https://www.anken-navi.jp/news/programming-language/ruby/ruby-possible-7/)

元記事を表示

Rails6 – rspec + capybara のテストで Webpacker::Manifest::MissingEntryError

# 問題

rspecでページにvisitするだけでエラーが発生する

“`rb
require ‘rails_helper’

feature type: :feature do
scenario do
visit new_user_session_path
end
end
“`

# エラー

“`
Failures:

1) {:type=>:feature}
Failure/Error: <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

ActionView::Template::Error:
Webpacker can’t find application.js in /Users/yumainaura/projects/YumaInaura/rails6-app/public/packs-test/manifest.json. Possible causes:
1. You want to set

元記事を表示

Rails6 – Webpacker::Manifest::MissingEntryError を解決する

ページアクセスすると `Webpacker::Manifest::MissingEntryError ` が発生する

# 解決

Gemfile で webpackerのバージョンを上げる

“`
gem ‘webpacker’, ‘~> 5.0’
“`

“`
bundle install
“`

# Webpackerの実行

nodeバージョンによってはSSL関係のエラー ( `ERR_OSSL_EVP_UNSUPPORTED` ) が出るので、環境変数 `NODE_OPTIONS=–openssl-legacy-provider` を付ける

“`
rails webpacker:install
NODE_OPTIONS=–openssl-legacy-provider rails webpacker:compile
“`

# チャットメンバー募集

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

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

元記事を表示

モデルの属性にバリデーションをかける

# lengthのバリデーションをかけてみる。
“`rb
validates :name, {presence: true, length: { in: 1..10 }}
“`
### 空で送信してみた。
“`Name can’t be blank“`
“`Name is too short (minimum is 1 character)“`
というメッセージが表示された。

### 11以上で送信してみる。
“`Name is too long (maximum is 10 characters)“`
というメッセージが表示された。

### 気づき
これだけでバリデーションが掛けられている。ことがわかった。

# バリデーションにメッセージオプションをつけてみる
“`rb
validates :name, {presence: true, length: { in: 1..10, message: “1文字以上から10文字以下で入力してください。”}}
“`
“`Name 1文字以上から10文字以下で入力してください。“`と表示された。

###

元記事を表示

Rails7 – rails console ( pry-rails ) で何故かActiveModelのデータ(インスタンス情報)が表示されない

# 問題

昔のバージョンではこれで色々データが表示されてたはず

“`rb
User.last
=> #
“`

# 解決

とりあえずattributesで表示できた

“`rb
User.last.attributes
# => {“id”=>3,
# “email”=>”example@example.com”,
# “remember_created_at”=>nil}
“`

# その他

to_json も試したが何故か引数が必須になっている
only 指定は動くが except 指定が動かない

“`rb
User.last.to_json(only: [:id])
# => “{\”id\”:3}”
“`

“`rb
User.last.to_json(except: [:id])

# ArgumentError: wrong number of arguments (given 0, expected 1)
“`

# 環境

Rails 7.0.4

# チャットメンバー募集

何か質問、悩み事、相談などあ

元記事を表示

OTHERカテゴリの最新記事