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

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

Railsをデプロイする時、した時のトラブルシューティング

# 前提
開発環境はCloud9
デプロイはHerokuにするものとする
勉強時に置きたエラーと解決策を書いていく
デプロイの仕方は今回は割愛

# git pushするとエラーになる
### エラー内容
普通に書いてエラーなく操作できているファイルをアップしたとしてもこんなエラーが

“`言語:タイトル
ArgumentError: wrong number of arguments (given 3, expected 2)
“`
簡単に説明すると
>引数が2個のはずやのに3つ渡してるぞ!!

って怒られる
書籍や動画で学んでて仮にコピペしててもなるときはある
>んなもん無理じゃん

って思ったけど大丈夫
この記事で解決
https://qiita.com/yoppy_yophy/items/af0d9eea05e524e52922
もちろん全体の記事も大切だけどこの記事の「対処」の部分を読んでほしい

### エラー内容
さぁHerokuにデプロイできたぜ!
動作確認だ!
って気合入れたらこれ

![68747470733a2f2f71696974612d696d6167

元記事を表示

Rails 地図を簡単に表示させよう HTML埋め込み編

# 完成スクショ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324819/2a79a2a3-6757-8b10-3cd4-12f71860d943.png)

# 機能の概要
投稿ごとに地図を表示させる
表示させる地図は、HTMLの埋め込みで実装

# カラムの追加

“`
$ rails generate migration AddDetailsToPost map_emb:string
$ rails db:migrate
“`

# 投稿時に、Mapの埋め込みを保存させる

“`erb:new.html.erb

<%= f.label :map_emb %>
<%= f.text_field :map_emb %>

“`

“`ruby:posts_controller.rb
def post_params
params.require(:post).permit(~~~

元記事を表示

Railsプロジェクトに監視ツールSentryを導入する

Railsの監視ツールであるSentryを導入した際に、まとまっていて欲しかった情報をまとめました。

# 環境

“`ruby

$ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]

$ rails -v
Rails 5.2.5

“`

# 事前準備

– sentryの公式ページからアカウントを発行しておくこと

公式:
https://sentry.io/auth/login/o/

# インストール

– 旧式でRavenという名前になっているが、今はSentryに統一されている
– Sentryの公式ドキュメントを参照するとよい
– 以下はマニュアル通り

https://docs.sentry.io/platforms/ruby/guides/rails/

まずはライブラリをインストール

“`Gemfile.rb
gem “sentry-ruby”
gem “sentry-rails”
“`

“`
$ bundle install
“`

設定ファイルに、Sentry公式

元記事を表示

モデル、データベース

### モデルとは
モデルとはアプリケーションのデータや処理を扱う部分です。
データベースにアクセスし、データの取得、更新、削除などの処理を行います。

### データベースとは
モデルとやり取りを行うのがデータベースです。
データベースは名前の通り、データを格納する保存先です。
しかしただ保存されているのではありません。保存されているだけではモデルが該当データの取得等をする際に時間がかかってしまうからです。
データベースではテーブルというもののなかにそれぞれジャンル分けされた状態でデータが保存されています。
ECサイトを例に挙げると、商品名、商品説明、価格、会員情報、購入履歴などのテーブルにそれぞれ該当のデータが格納されていることになります。

###### カラムとレコード
データベースのテーブルはさらに分化することができます。それが「カラム」と「レコード」です。
イメージ的にはカラムはテーブルの題名、レコードはテーブルの内容です。
先述の例をもとにかんがえるといちごのデータが格納されていたとします。
商品名:いちご
商品説明:甘い
価格:100円
「商品名」「商品説明」「価格」が

元記事を表示

ルーティング・コントローラー・ビュー

railsを扱う上で理解しておいたほうが良い基礎知識を自分用にまとめました。
### ルーティングの役割
ユーザーがURLにアクセスした際に初めに要望を受け取るのが「ルーティング」です。
ルーティングはブラウザや、ブラウザ内のフォームからの要望を受け取り、受け取った要望の内容によって、どのコントローラーのどの処理を実行するかを判断し実行します。
“`
get ‘homes/top’ => ‘homes#top’
“`
この記述の場合はhomes/topのURLをgetつまり新しくページを作成するとき、homesコントローラーのtopアクションを使用します。

### コントローラーの役割
ルーティングで判断された内容をもとに、決められた処理を実行した上で、対応する画面を表示させます。
上記の例の場合、homes/topの画面を表示させます。

### ビューの役割
コントローラーから呼び出した対応する画面をどのような見た目で、どこに処理したデータを入れ込むかを書いておくファイルになります。 ブラウザに表示させるHTMLを実際に組み立てます。
ビューで見た目や動きを設定しておかなけれ

元記事を表示

🔰【初学者用】RSpecでテストコードを書こう!⑤【FactoryBot・Faker】

# はじめに
今回でテストコードについては最後の投稿になります。
前回までの投稿はこちら↓

①🔰【初学者用】RSpecでテストコードを書こう!【概念・準備】

https://qiita.com/hondano_gentuki/items/2003971a4f5a97481930

②🔰【初学者用】RSpecでテストコードを書こう!②【簡単な実装例】

https://qiita.com/hondano_gentuki/items/0a91a595df9c0d76f1cc

③🔰【初学者用】RSpecでテストコードを書こう!③【コントローラーの単体テスト簡単な実装例】

https://qiita.com/hondano_gentuki/items/7f5a36c08b9785022d33

🔰【初学者用】RSpecでテストコードを書こう!④【結合テストの簡単な実装例】

https://qiita.com/hondano_gentuki/items/ac52c47570c747f9a6d8

# FactoryBot
テストコードを書く際に、`user = User.new(nic

元記事を表示

Docker Rails + Reactの本番環境構築(ubuntu + Apache + rails + React + MySQL)

# はじめに
バックエンドをrailsで、フロントエンドをreactのアプリケーションを開発した際の、環境構築に苦戦したため、備忘録もかねて投稿します。
とりあえず動くとこまでなので、dockerの利点を生かせていなかったり、セキュリティ関連の設定などは行っていません。
間違いなどあればご指摘いただけると幸いです。

# 前提
railsアプリとreactアプリは開発環境で開発し、完成したものを持ってきて本番環境を構築しました。
そのため、本投稿の構成では開発段階を考慮していません。
継続的に改修していく場合にどうするかが課題です。

# コンテナ構成
##### serverコンテナ
このコンテナにMySQL以外の全てのサービスを詰め込んでしまいます。
dockerは1コンテナにつき1サービスが好ましいので良くない構成かもです…
開発環境ならrailsやreactをそれぞれが持つフレームワーク付随のサーバで良いため、コンテナを分けられますが、webサーバとしてapacheを使用した場合の構築方法が分かりませんでした。
今後の課題です。

##### dbコンテナ
このコンテナには

元記事を表示

Railsにおけるキャッシュストア比較表

# 比較表

主にメリット・デメリットを比較したり、利用シーンをまとめてみました。

|                                 |  FileStore  |  MemoryStore  |  MemCacheStore  |  RedisStore  |
| :— | :— | :— | :— | :— |
| プロセス間共有 | ○ | ✗ | ○ | ○ |
| スレッドセーフ | ○ | ○ | ○ | ○ |
| ホスト間共有 | ✗ | ✗ | ○ | ○ |
| 無料 | ○ | ○ |

元記事を表示

Ruby on Rails7.0.3 × MySQL8.0 のDocker環境構築

おはよう。:relaxed:
色々あってRuby on Railsに入門するので、環境づくりをしたよ。

## Ruby on Railsって何? :thinking:
Webアプリケーション開発フレームワーク。
特徴的だと思ったのは「最善の開発方法は1つ」という信念のもと設計されているところで、手法を学び、手法に則ることで生産性向上につながるとのこと。

哲学2つ
・Don’t Repeat Yourself: DRY
– 同じ意味や機能を持つ情報を複数に重複しておくことは避けましょうの考え方。
・Convention Over Configuration
– 規約>設定:Rails側で既にWebアプリケーションの「最善の方法」を明確にし、各種設定にもデフォルト値を設定している。アプリケーションが迷走することを避けるために、規約の遵守を推奨しているらしい。

## 今回用意する環境

今回はRailsの現時点最新バージョン7を使用したいので、Rubyも公式推奨の3.0で設定するよ。
Ruby: 3.1
*https://hub.docker.com/_/ruby
Rail

元記事を表示

Ruby コーディングテスト 便利メソッド一覧

※自分用メモ
Rubyによるコーディングテストまたは競技プログラミングにうまく使えそうなメソッド一覧

## Array#combination
“`
a = [1, 2, 3, 4]
a.combination(1).to_a #=> [[1],[2],[3],[4]]
a.combination(3).to_a #=> [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
“`

## Array#product
“`
[1,2,3].product([4,5]) # => [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
[1,2].product([1,2]) # => [[1,1],[1,2],[2,1],[2,2]]
[1,2].product([3,4],[5,6]) # => [[1,3,5],[1,3,6],[1,4,5],[1,4,6],[2,3,5],[2,3,6],[2,4,5],[2,4,6]]
“`
## Array#inject or Hash#inject
“`
# 合計を計算する

元記事を表示

EC2 rails 環境構築

“`
$ sudo yum -y update
$ sudo yum -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel libcurl libcurl-devel curl
$ sudo curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash –
$ sudo yum -y install nodejs
$ sudo yum -y install wget
$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
$ sudo yum -y install yarn
$ git clone https://github.com/ss

元記事を表示

[Rails]concernをrake taskの中で使う

結論:これをrake taskに入れればよい
“`
require ‘active_support/concern’
“`

実例

concernの所在
“`app/controllers/concerns/test_concern.rb
module TestConcern
extend ActiveSupport::Concern
def test_method(test)

end
end
end
“`

rake task
“`lib/tasks/test_task.rake
namespace :task do
task test_rake_task: :environment do
require ‘active_support/concern’
include TestConcern

end
end
end
“`

元記事を表示

DockerでRuby on Railsの環境を構築する際のmysql.cnfのコマンド及びコード理解

## なぜ記事を書こうと思ったか
mysql 用の設定ファイルを作成する際にコマンド及びコードの理解を備忘録として残すため。

## entrypoint.shのコマンド説明
mysql.cnf
“`
[mysqld]
default_authentication_plugin = mysql_native_password
skip-host-cache
skip-name-resolve

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = SET NAMES utf8mb4
skip-character-set-client-handshake

[client]
default-character-set = utf8mb4

[mysqldump]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
“`

以下にコマンド及びコードの解説を致します。
– `

元記事を表示

ActionDispatch::Http::Parameters::ParseError: 859の対処方法メモ

## 環境
macOS Monterey 12.3.1
ruby 3.1.2
rails 6.1.6

## エラー内容

[Talend API Tester](https://chrome.google.com/webstore/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm?hl=ja)でRails APIのテストを実施していたところ、以下のエラーが発生した。

“`json:Talend API Tester
{
“status”: 400,
“error”: “Bad Request”,
“exception”: “#“,

}
“`

## 発生時の状況

POST “http://localhost:3000/api/v1/teams” で以下の情報を

元記事を表示

【Rails】既存のテーブルにカラムを追加し、外部キーとして設定する

# テーブルと一緒にreference型のカラムを作成する時
せっかくなのでこちらも書いておきます。

Rails 6.0.4

・前提条件
Genreテーブルがある。

・やりたいこと
**Genreテーブルを紐づけた新しいテーブル(Movie)を用意したい**

①credit_cardモデルを作成
“`
$ rails g model Movie
“`
②作られたmigrationファイルを開き、以下のように編集する。

“`db/migrate/20220404054303_create_movies.rb

class CreateMovies < ActiveRecord::Migration[5.2] def change create_table :movies do |t| t.string :title, null: false t.string :image, null: false t.integer :released_year, null: false t.references :gen

元記事を表示

Ruby on railsで削除前にアラートを出す

## はじめに
自作アプリにて記事やコメントの削除をする際に、削除ボタンを押したらそのまま削除が実行されるのではなくアラートを出してほしいなと思い、調べたらとても簡単に実装可能だったので残しておく。

## 環境
Ruby 2.6.5
Rails 6.0.0

## 手順
手順はとても簡単。ビューの削除ボタンに`dataオプション`で`{confirm: ‘削除しますか?’}`と追記するだけ。(メッセージは任意のもの)
“`ruby:app/views/menus/show.html.erb
<%= link_to menu_path(@menu), method: :delete, class: "delete_btn", data: {confirm: "コメントを削除しますか?"} do %>

<% end %>
“`
## おわりに
削除前のアラートについては以上です。間違えている箇所などありましたら教えていただけると幸いです。

元記事を表示

Railsコンソールで出力したデータを見やすくする

mac OS バージョン11.6
Rails 6.0.4
# pry(REPL環境)へHirbを導入する
railsでは標準の**irb**よりも、高度なpryがコンソールツールとしてよく使われています。

**Hirb**はRailsコンソールでテーブルデータを見やすく表示してくれるGemです。
pryまたはirbでモデル表示「**[モデル名].all**など」をおこなうと表示があまり見やすくありません。そこで、Hirbでは表形式で表示してくれます。

こんな感じに。
![11f4b500a0f6cb379bff792a39ee27e7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1962714/9f90fa5a-f350-72f4-8c72-b588aadaacab.png)
コンソールを見やすくするために、これからpryとHirbを導入していきます。

# 手順
①まず、Gemfileにgemをインストールします。

“`.Gemfile
    gem ‘pry-rails’

gem

元記事を表示

Railsのアプリケーションの新規作成からページを表示するまでの手順を徹底解説

## 概要
こんにちは。shun198です。
今回はRailsアプリケーションの新規作成からページを表示させるまでの手順を解説したいと思います。

## 前提
rubyのバージョンは2.6.6
Railsのバージョンは6.0.5
linuxの基本的なコマンドは知っている
RailsではじめてWebアプリケーションを作成する
MacOSを使っている(zshを使っている)
ローカル(Mac)上でページを表示します

## アプリケーションの作成からWebページの表示方法
### アプリケーションを作成
ターミナルを開いてRailsのアプリケーションを任意のフォルダ内に移動して作成します。
今回私はqiita_appという名前で作成しますが、アプリケーションの名前は自由に決めてください。
ターミナルで
“`
rails new
“`
と打つと大量のファイルが生成されます。ls -lでリスト化して見てみると以下の通りです
“`
❯ ls -l
-rw-r–r– 1 shun staff 1967 6 4 17:08 Gemfile
-rw-r-

元記事を表示

【Ruby on Rails】migrationファイル change・up/downの使い分けについて

## はじめに
カラムの追加や削除をしたり、テーブル内の情報を変更する際にmigrationファイルを追加して対応することがある。

その時に、基本的な記述として、、、
“`ruby
def change

end
“`
“` ruby
def up

end

def down

end
“`
という2つのパターンがある。

厳密には、ファイル名の付け方(クラス名の付け方?)、“rails g migration <クラス名>“で入力されるクラス名によって、上のどちらのパターンのメソッドでファイルが生成されるらしい。
ただ、このメソッド changeとup/downの違いがいまいちわからなかったのでまとめておく。

間違いがありましたら、コメントいただけますと幸いです。喜んで修正します。

## changeとup/downの違い
違いとしては、“メソッドの中で 使用できる処理“に違いがあるらしい。
Rails公式ドキュメントには以下の処理がchangeメソッドでは使用できるらしい。

現時点では、changeでサポートされているマイグレーション定義は以下のものだけで

元記事を表示

プログラミングと出会って

## はじめに
エンジニアとして就職できたので、これを機に勉強を初めてからエンジニアになるまでのことを書いてみようと思う。
この文章は長いですけど、僕の思いを書いたので是非読んで欲しいなと思います。
10分ほどみなさんの時間を僕に時間をください。

### 自己紹介
年齢:20代前半
学歴:高卒(大学中退)
職歴:正社員の経験なし

## プログラミングを始める前に
まずプログラミングを始めたきっかけを話そうと思います。
当時、資格スクールに通っており、担当の先生に言われるがまま安定した収入とかっこよさに惹かれて公務員を目指しました。
今思えばそれがそもそも良くなかったのかなとも思っています笑
ただ、公務員の勉強は思ったよりもつまらなくて、元々勉強が好きではなかったため、友達とばかり遊んでまともに勉強をしていなかったです。
その結果もちろん受かりませんでした。
担当の先生に,「来年またチャレンジしよ」と言われましたけど、自分はまた勉強しないだろうから同じ結果になるのが分かっていた為、もういいですと言いました。
そこで担当の先生が勧めてくれたのがプログラミングです。

## プログ

元記事を表示

OTHERカテゴリの最新記事