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

Rails関連のことを調べてみた2022年07月19日
目次

HTMLの基礎知識(詳細ページに星機能実装)

皆さんこんにちわ!!

今日もプログラミングしていますか?:point_up:

今回は詳細ページに星機能をつけていく機能を紹介します!!

注意:大前提としていいね機能を実装していないと実装できません!!:sunny:

![スクリーンショット (55).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2738887/e03d307f-eacf-d115-c661-df4361748feb.png)

Step1:星機能(詳細ページ用)の中間テーブルとアソシエーションを組む!!!

“`ruby:.ターミナル
rails g model Review eve:integer user:references tweet:references

rails db:migrate
“`

Step2:userとtweetのモデルにアソシエーションの情報を打ち込む!!!

“`ruby:app/models/user.rb
has_many :review

元記事を表示

VScode上でSQliteを操作する方法

# 目的
Railsでアプリを作っている際に、VScode上でテーブルのデータを操作したいと思いました。
本記事では

+ VScode上でテーブルを確認する方法
+ VScode上でテーブルのデータを操作(追加、編集、削除)する方法

についてまとめています。

# 今回使用するテーブル
今回はRailsにて簡単な名簿アプリを作成しました。
GitHubにアップロードしていますので、下記から自由にダウンロードしてください。
https://github.com/ysk91/name_list

本アプリ内では`people`というテーブルを用意しました。
まずはアプリ上の「新規作成」か`db>seeds.rb`かでデータを適当に作ります。

# VScode上でテーブルに格納されたデータを確認する
VScode上でSQliteを見るには、「sqlite3」という拡張機能を使用します。
インストール方法はこちらの記事を参考にしてください。
[VSCodeでSQLiteを使うなら拡張機能を使う(sqlite3のバイナリファイルを見る方法)(Qiita)](https://qiita.co

元記事を表示

WARNING in asset size limitの対処法について

# 概要
– __起こった現象__:
EC2でデプロイしたアプリにアクセスできない

– __エラー概要__:
“`:ec2内のターミナルにて
Rails assets:precompile RAILS_ENV=production
“`
このコマンドでアセットをコンパイルしようとすると以下のエラーが出る。
![asset size limit.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661107/e5ef7aba-4ce7-b9d2-d5db-bd8ddf2302cd.jpeg)

## 仮説と検証
このエラーから、「アセットファイルがリミットを超えている」と理解しました。
対処法として、「サイズが超えているファイルを特定して対処する」
もしくは「サイズの上限を上げる」このどちらかになると思い調べました。

### 検証1(サイズが超えているファイルを特定して対処する)
エラー文を見ると、`js/application-0bc4a48eadb9d940687.js.map.gz`
という

元記事を表示

初めてのRailsチュートリアルに挑戦!第6・7章

# 第6章の学習内容
1. データベースの移行
1. modelファイル
1. ユーザーオブジェクトを作成する
1. ユーザーオブジェクトを検索する
1. ユーザーオブジェクトを更新する
1. 有効性を検証する
1. 存在性を検証する
1. 長さを検証する
1. フォーマットを検証する
1. 一意性を検証する
1. ハッシュ化されたパスワード
1. ユーザーがセキュアなパスワードを持っている
1. パスワードの最小文字数
1. ユーザーの作成と認証

# 第7章の学習内容
1. Usersリソース
1. debuggerメソッド
1. Gravatar画像とサイドバー
1. ユーザー登録フォーム
1. ユーザー登録失敗
1. Strong Parameters
1. エラーメッセージ
1. 失敗時のテスト
1. ユーザー登録成功
1. 成功時のテスト
1. プロのデプロイ
1. 本番環境でのSSL
1. 本番環境用のWebサーバー
1. 本番データベースを設定する

# 学習を終えて
第6章では、ユーザモデルの作成する際に、有効性や存在性、一意性を検証しながら進めることの大切さを学ん

元記事を表示

理解するのが難しいシステムをドメインモデリングによって生産性をあげた話

Azit株式会社でバックエンドエンジニアとして機能開発の他にDDDの導入やリファクタリングをしている鈴木です。

私が弊社で仕事をするようになってから半年たちましたので、ミノ駆動さんとQiitaさんのキャンペーンを利用して、私がおこなったことを振り返りたいと思います。

# システムの説明

最初に開発しているシステムについて説明をします。
ラストワンマイルの配送に特化しているシステムを開発しています。
荷物の配送を実施してくださる配達パートナーと、配送の依頼をしてくださるクライアントという2つの種類のユーザーを扱う配送サービスです。

配達パートナーさんは以下の3種類にわかれます

– ギグワーカーとして単発の案件を実施してくださる方々
– 私たちと連携してクライアントさん専属のシフトに入ってくださる方々
– クライアントさんが直接管理しておられ我々のシステムを通して稼動している方々

また、配送については以下のようなフィルタリングがあります。

– クライアントさんが自社で管理されている方々と弊社からの専属の方々両方に送りたいといった場合や、逆に自社で管理されておられる方のみに送り

元記事を表示

herokuでアップしても ローカルと同じ動作をしない。

発生状況

ローカル環境で動作確認済み

“`
heroku run git up master
heroku run rails db:migrate
“`
してもローカルと本番環境で同じ動作をしない。

エラー確認

FATAL周りに
“`
ActiveModel::UnknownAttributeError (unknown attribute ‘item_name’ for Item.

status=500
“`
有りのためどうやらDBまわりでのエラー
DBをUP/DOWNして書き換えたのが理由のよう。

修正内容

現状ローカル環境のマイグレートファイル、その他記述が間違っていないことを確認。

“`
% heroku run DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:drop db:create db:migrate
“`
を(heroku上のDBをdrop,create,localと同じ状態にmigrate,全て行うコマンド)実行する。
で解決。

元記事を表示

RubyのMix-in(ミックスイン)について

### モジュール(module)による共通化(MiXx-in)
**モジュール** は、クラスと同じようにインスタンスメソッドを定義することができる。
ただし、モジュールはクラスとは異なり、オブジェクトを生成することができない。
モジュールは、一連の振る舞い(メソッド群)を表し、それをまとめてクラスに取り込むために存在する。

また、クラスにモジュールを取り込むには、includeメソッドを使用する。

“`
// class Dog
// include Chatting
// end

// *これは、DogクラスにChattingモジュールの一連が取り込まれたということを表す。

// > pochi = Dog.new
// > pochi.chat
// > “ワン”

“`

また、モジュールは「部分的な設計書」を表し、クラスという「設計書」に取り込むことで、複数の似たようなクラスを簡単に作成できる。

さらに、1つのクラスに複数のモジュールを取り込ませることができる。

“`

// module Chatting
// def chat
//

元記事を表示

Rubyの「継承」と「オーバーライド」について

## 継承
既存のクラスの機能を引き継ぎ、一部を変えて利用する仕組みのこと。
例えば、、、

“`
// class Product < PricedObject // attr_accessor :price // end ``` この時、PricedObjectのように、機能を継承する元となるクラスのことを **「親クラス」** または **「スーパークラス」** という。 逆に親クラスから見た時に、自分を継承しているクラスのことを **「子クラス」** または **「サブクラス」** という。 つまり、上記の状況としては、ProductクラスがPricedObjectクラスを継承している。 ## オーバーライド 親クラスが持つメソッドの処理を子クラスに書かれた処理で上書きすること。 ``` // class Book // def title // ‘本のタイトル’ // end // end // class Magazine < Book // def title // ‘雑誌のタイトル’ // end /

元記事を表示

Railsのproduction.rbはどういう事が設定できるの?全ての設定を調べてみた!

## なぜ記事を書こうと思ったか
Railsのproduction.rbでどのような設定をしているか及びどのような設定ができるかを確認する為に調べたので、備忘録として残します。

## production.rbのコマンド説明
– config.cache_classes = true
ソースコードをリロードしない。キャッシュが適用される。

– config.eager_load
Railsのapp以下にあるクラス(ModelやController)を起動時に全て読み込むかどうか設定

– config.consider_all_requests_local
すべてのエラーをブラウザに表示をするかの設定
例:Routing Errorなど詳細なエラー情報が表示される。

– config.action_controller.perform_caching
アプリケーションのキャッシュの有無

– config.require_master_key = true
ENV[“RAILS_MASTER_KEY”]環境変数またはconfig/master.keyファイルでマスターキーを取

元記事を表示

[Ruby] WSL2上のUbuntuに立ち上げたDockerコンテナ内のRuby SDKをIntelliJのWSLプロジェクトでProject SDKとして扱うことは出来ません!

めちゃくちゃ長いタイトルになってしまいました、タイトル通りです。
どうやら以前はタイトルの様な事が出来ていたみたいなのですが、現在はSDKとして登録することは出来ても、Project SDKの利用可能なSDK一覧に出ないようになっているみたいです。

::: note info
しかし現在開発リクエスト
– [Ability to select remote interpreter for new projects](https://youtrack.jetbrains.com/issue/RUBY-18210/Ability-to-select-remote-interpreter-for-new-projects)

として挙がっているので困っている方は是非投票してください。私も困っています。
:::
***
タイトルの問題については上記の内容で全てですが、以下に私がこの問題に直面するまでの詳細な経緯を書いていきます。

# やりたくて出来なかったこと
WSL2上のUbuntuにDockerを利用してRailsの環境を作成、ホストのIntelliJからプロジェクトを開いてSDKとし

元記事を表示

【Rails】メガ級の大量データをseedで入れたいとき

# はじめに
[以前書いた記事](https://qiita.com/koki_73/items/2ebee06bf16c416aefa8)で100万件のレコードを用意したことがあったのですが、せっかくなのでその方法を紹介します。

ついでにちょっとした検証もしたのでそれも紹介します

# 結論はよ
* 大量データの作成は`activerecord_import`を使おう
* 処理の時間を測ってみたらかなりの差が出たよ

中級者以上のかたにとっては当たり前という内容かもなので、「あ、そういう内容ね」とここで想像できた方はこのタイミングでブラウザバックしてもらって構いません笑

# やり方

### Gem

先に使うgemを紹介します
“`ruby:Gemfile
gem ‘activerecord-import’
gem ‘seed-fu’
“`

`activerecord-import`というgemは大量データを作成する際に使われることが多く、簡単に説明すると作成したい大量のレコードを元に1つのSQL文を作成して、それを実行してくれるものです

詳しい使い方などはここでは解

元記事を表示

docker-compose up を Ctrl+c(SIGINT) で停止させた時に ERROR: 2 になってしまう問題の対処法

:::note warn
警告
本記事は仮説を提示しているだけで、根本的なエラー原因を断定しているわけではありません。
:::

# 問題の発生状況

## 環境
Rails, PostgreSQL構成のWebアプリケーションをDockerで包んで開発していました。
それぞれのバージョンは下記の通りです。
“`plaintext
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
$ docker -v
Docker version 20.10.12, build e91ed57

$ ruby -v
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-linux]
$ rails -v
Rails 7.0.3.1
$ postgres –version
postgres (PostgreSQL) 14.4 (Debian 14.4-1.pgdg110+1)
“`

## 遭遇した問題
`docker-compose up`をフォアグラウンドで実

元記事を表示

【要反省】入社してから半年間において先輩からのレビューで指摘されたこと5選

## はじめに

どうも、こんにちは。もきおです。
未経験から自社開発企業に転職し半年が経ちました。あっという間の半年間でしたがその間色々ありがたいことにレビューをいただきました。なので今回は半年前の入社した自分に送る言葉的な感じでレビューで指摘されたことを書き起こしておきたいと思います。

最後に対策的なとこも記載しているので最後までご覧いただけますと幸いです。ちなみに弊社はRuby、Railsメインで使用しているのでちょくちょくRubyのメソッドとか出てきます。他の言語使用されている方は適当にあしらってもらえればと笑

## 指摘1: コードちゃんと読んだ?
これは言われることが最も多かった指摘でしたね。何回かこの指摘を受けた時、コードをちゃんと読むってなん何だろう?と疑問に思ったので具体的なポイントを聞いてみました。

* 分からない箇所を分からないままで読み進めない
* 想像で決めつけて読み進めない
* 一つ一つデバックして確認する

### 分からない箇所を分からないまま読み進めない
企業のコードはポートフォリオと比にならない程のコード量ですよねー。そのためついつい各コードの

元記事を表示

正規表現についてまとめてみた

はじめに

正規表現について学んだが、初学者の自分にとってとっつきにくかったため自分なりにまとめてみた内容になっています。
他の初学者の方で同じように思った方の参考になればと思いまとめていきます。

:::note info
正規表現とは文字列に特定の文字が含まれているか確認したり、特定の文字を取り除いたり、置き換えるときなどに使用する
:::

正規表現

|正規表現の例 |意味 |使用例 |
|:————-:|:—————————–:|:————————–:|
|[] |囲まれた文字のうちいずれかにマッチすること|name.match(/[a-z]/)=>aからzのいずれかに当てはまるか|
|a-z|aからzまでの文字、-で範囲指定できる|上記の例を参照|
|\b|数字が含まれている|age.match(/[\d]/)=>数字が含まれて

元記事を表示

初心者向け devise導入について

# 記事にした経緯
私が作成中のアプリにログイン機能を実装するため、`devise`を実装しようとした時に色々な課題があったため忘備録として記事にしました。

アプリを作成し`devise`をインストールします。

“`:ターミナル
rails new devise_sumple -d postgreSQL (アプリ作成)
      ↓
rails db:create (データベース作成)
“`
“`:Gemfile
gem ‘devise’
# ***** 以上を追加 *****
group :development, :test do
# 略
“`
“`:ターミナル
bundle install    (gemをインストールする)

rails g devise:install (アプリにdeviseをインストール)

rails g devise User (deviseで認証するためのモデルを作成)
“`
以下のファイルやコードが作成される
“`:ターミナル
Running via Spring preloader in process

元記事を表示

ruby returnの返り値が複数の場合

はじめに

メソッド内の処理後、返り値が複数になる場合はどうなるのか気になったので調査し、検証してみました。

returnを使わない場合の返り値

“`test.rb
def return_test(value)
sum_a = 5
sum_b = 10
sum_c = 15
sum_a *= value
sum_b *= value
sum_c *= value
end

value = 10

x = return_test(value)

puts x
“`
結果
“`
=> 150
“`
:::note warn
メソッドの最後の処理結果しか返ってこない
:::

returnで返り値を複数指定した場合

“`test.rb
def return_test(value)
sum_a = 5
sum_b = 10
sum_c = 15
sum_a *= value
sum_b *= value
sum_c *= value
return sum_a,sum_b,su

元記事を表示

rails ヘルパーメソッドを使ってviewファイルを整える

はじめに

ヘルパーメソッドを自分で定義することについて学んだので学習したことをまとめて記述していきます。

ヘルパーメソッドを使うメリット

railsでビューファイルに対して行われる処理に関して繰り返して使用するようなメソッドはヘルパーメソッド(ビューファイルに対して使用するモジュール)を自分で定義して使用するとビューファイルの可読性を良くすることができ、また保守などの面から見ても修正しやすくなるメリットがある。

___
メッセージの投稿機能があるWEBアプリケーションでそのメッセージを一覧でメッセージテキストと投稿者を表示したい時などを想定してビューファイルを下記のように作成した場合

:::note warn
ヘルパーメソッド使用前
:::
“`app/views/messages/index.html.erb

<%= @messages.each do |message| %>
<%= message.text %>
<% end %>

“`

:::note i

元記事を表示

【Rails】初学者向け_基礎のみを活用しチャット機能を作る方法

## 1.バージョンを確認しましょう!

Rails 5.1.6
ruby 2.7.2p112

## 2.完成イメージ

ログイン済みのユーザーで一つのチャットルームを共有し、交流できる機能です。
同じ名前のグループは作成できないようにしてあります。
ぜひclosedな環境でグループを作成し、お話してみてください(^_^)v

## 3.実装の大きな流れ

>1.グループチャット機能に必要なModel、Controller、Viewの実装
>2.グループ系モデルとUserモデルの紐付け
>3.ちょっとしたフロントエンドデザイン

ちなみにUserモデルは既に作られている前提で記事を書いています。
筆者はdeviseというgemを使ってUser周りを整えております。

ちなみに本記事はこのような目次で進んで行きます!
一緒に楽しんでいきましょう ᕙ( ˙꒳​˙ )ᕗ

## 4. 必要ファイルを作成しましょう

“`ターミナル
$ rails g controller groups #groups_controller.rbを作成
$ rails g controller cha

元記事を表示

【Rails】お問合せフォームの実装

こんにちは!
この記事では、railsで **「お問い合せフォーム」** を実装していきます!
これは、お問い合せフォームを送信すると、設定したメールアドレス宛にお問い合せ内容が送信される機能です。

# ゴール
railsで「お問い合せフォーム」を実装し、gmailにお問合せ内容が届くようにすること。

### 完成イメージ1 (お問合せフォーム)
![スクリーンショット 2022-07-17 1.13.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820462/7f56cc29-f213-c206-476d-8734af657f77.png)

### 完成イメージ2 (設定したGmailにお問合せが届く)
![スクリーンショット 2022-07-17 1.19.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820462/189dc51a-1d31-8753-52f8-8de308853cfc.png)

元記事を表示

初めてのRailsチュートリアルに挑戦!第4・5章

# 第4章の学習内容
1. 組み込みヘルパー
1. カスタムヘルパー
1. 文字列
1. オブジェクトとメッセージ受け渡し
1. メソッドの定義
1. titleヘルパー、再び
1. 配列と範囲演算子
1. ブロック
1. ハッシュとシンボル
1. CSS、再び
1. コンストラクタ
1. クラス継承
1. 組み込みクラスの変更
1. コントローラクラス
1. ユーザークラス

# 第5章の学習内容
1. ナビゲーション
1. BootstrapとカスタムCSS
1. パーシャル(partial)
1. アセットパイプライン
1. 素晴らしい構文を備えたスタイルシート
1. Contactページ
1. RailsのルートURL
1. 名前付きルート
1. リンクのテスト
1. Usersコントローラ
1. ユーザー登録用URL

# 学習を終えて
第4章ではRailsでありながら、以前学習したRubyの基礎を学ぶような内容であった。テキストや動画の通りに進めることで、解決できないエラーも発生しなかったので、学習しやすかった。
第5章ではwebページのレイアウトの学習であったため、HTM

元記事を表示

OTHERカテゴリの最新記事