Rails関連のことを調べてみた2021年09月20日

Rails関連のことを調べてみた2021年09月20日
目次

redmineのアップデート3.1から4.2

ダメ元でやってみようと思ってやってみたらできた。笑

# 環境(移行元、移行先)

| # | 移行元 | 移行先 |
|:-|:-|:-|
| Redmine | 3.1.0 | 4.2.2 |
| Ruby | 2.0.0 | 2.7.4 |
| Rails | 4.2.3 | 5.2.6 |
| Webサーバ | Apache2.4 | Apache2.4 |
| Appサーバ | passenger 5.0.30 | Unicorn 6.0.0 |
| OS | Amazon Linux2(x86_64) | Amazon Linux2(ARM64) |
| DB | RDS/MySQL8.0 | RDS/MySQL8.0 |

※プラグインは、[view_customize](https://github.com/onozaty/redmine-view-customize)のみ
※Themeは、[bleuclair](https://github.com/farend/redmine_theme_farend_bleuclair/blob/ma

元記事を表示

IntelliJ+docker-compose+railsでブレイクポイントでのデバッグ環境を構築する

# Gemfileにruby-debug-ideとdebaseを追加
Gemfileにruby-debug-ideとdebaseを追加してインストールしておきます。
**もし追加しなかった場合は、SDK構成からやり直す必要があります。**

# SDK構成

1. File → Project StructureからProject Structure 構成画面を開きます

2. Ruby SDKを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659469/3fa4118e-8dc9-48d5-763b-61ee87d4c688.png)

3. New remoteを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659469/3088b1c1-4c3d-7bc6-8ddd-f626525eac1c.png)

4. docker-compose.ymlからサービスを選択します

元記事を表示

Rails form_select が急にsyntax error になった時のデバッグ

こんにちは。
今まで普通に動いていたform_selectが急にシンタックスエラーを吐いたのでデバッグしました。

![エラー画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1430116/171ace52-d203-01b0-449b-c51f80eff0a4.jpeg)

原因は直前までdeviseの日本語化のため、i18Nの設定をいじっていたことらしいです。
ということで config/locals/ja.yml に日付も対応させてあげようということで…

“`yml:config/locals/ja.yml
ja:
date:
formats:
default: “%Y/%m/%d”
short: “%m/%d”
long: “%Y年%m月%d日(%a)”

day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日]
abbr_day_names: [日, 月, 火, 水, 木, 金, 土]

元記事を表示

railsチュートリアル第五章 スタイルシート

####素晴らしい構文を備えたスタイルシート
この節では、Sassが提供する2つの重要な機能
“`ネスト“`と“`変数“`について説明
SCSSはCSSに新しい機能を追加しただけ
Railsのアセットパイプラインは、.scssという拡張子を持つファイルをSassを使って自動的に処理してくれます
custom.scssファイルはSassプリプロセッサによって前処理され、その後ブラウザへの配信に備えてパッケージ化される

#####ネスト
タイルシート内に共通のパターンがある場合は、要素をネストさせることができます

“`css
.center {
text-align: center;
}

.center h1 {
margin-bottom: 10px;
}
“`
Sassを使って次のように書き換える

“`scss
.center {
text-align: center;
h1 {
margin-bottom: 10px;
}
}
“`
ネストの内側にあるh1というルールは、“`.centerのルールを継承“`

少し異なるルールに

元記事を表示

9.19振返) 要確認#テストのエラーの読み方、探し方(デバッグしてログを見る)

教えてもらったこと

“`
– テスト(今回の場合controller_spec)に問題があるのではないか?
– Factoryに問題がないか?
– pathに問題がないか?
– paramsに問題がないか?

– 実装(今回の場合controller.rb)に問題があるのではないか?
– ストロングパラメータに問題がないか?
– インスタンスは作成されるか?
– インスタンスは保存されるか?(=バリデーションに引っかからないか?)
→ binding.irbをぶちこんで見る

共通:
ログは読む。
– デバッグしながらログの流れを「ちゃんと」見る「ちゃんと!」
“`

同じテストコードの記述を2回かましてエラーになった

“`
今回の流れ:
今回の場合、両方(テスト&実装)を確認して特に問題がない

リクエストが2回発生しているのを発見

テストで2回リクエストしている
(テストの書き方の修正が必要)
“`

ActiveSupport::MessageVerifier::InvalidSignature: また頭

元記事を表示

ec2簡単にログインできるようにしよう(メモ)

##簡単なメモです

毎回EC2にログインの際`-i ssh 秘密鍵名.pem ec2-user@IPアドレス`を打ち込むのは面倒なのでショートカットできるようにします。
`config`に`Vim`で書き込みします。
下記をターミナルで入力。

“`
% cd ~/.ssh
% vi config
“`
INSERTモードにして書き込んでいきます。
接続先名は簡単なものが楽でいいと思います。

“`
Host 接続先名
HostName Elastic IPアドレス
User ec2-user
IdentityFile ~/.ssh/プライベートキーの名前.pem
“`

もう一度yesと答えたらOKです。

“`
% ssh 接続先名
“`
これで簡単にログインできるようになります。

元記事を表示

ユーザー登録(devise)と同時に別モデルにデータを同時保存したい場合の話。

# はじめに
オンラインスクールにてRuby on Railsの学習をはじめ5ヶ月が経ちました。
リリースを前提に現在開発予定のアプリに実装した機能のアウトプットになります。
「Deviseのユーザー登録と同時に別モデルにデータを保存する方法」です。

具体的なユースケースの例は、下記のような場合です。
・ユーザー登録と同時に銀行口座が開設される。
・ユーザーは1つの銀行口座しか持つことができない。
・銀行口座IDとユーザーIDは紐付く。
・登録時の口座残高の初期値はnullではなく0円。

ユーザー登録と同時に何か一つ、自動で生成されるモノ。を実装する際はお役に立てるかと思います。

:::note warn
※今回は、バリデーションについては触れません。
※今回は、アプリ作成・Devise導入・基本的なユーザー管理機能の説明は省きます。
:::

# 導入
ユーザー管理機能の実装が終わっている前提。
最低限、ユーザー新規登録とログインはできる状態でこちらをお読み下さい。

まず前提として、deviseは基本的にGemで動くものなので、通常のMVCの流れとは違います。
”ユーザー登録

元記事を表示

RSpecで普段は隠れている要素(プルダウンの中身など)の存在をテストする

# やりたいこと
「ログアウトボタン」があるかどうかをテストする
 

# 結論
検証したい要素のテストの後ろに`visible: false` を追加
※これで非表示の要素にも対応可能になります

~~~spec/systems/users_spec.rb
expect(page).to have_link ‘ログアウト’, href: logout_path, visible: false
~~~

# できるまでにやったこと
以下のテストコード追加

~~~spec/systems/users_spec.rb
e

元記事を表示

【Rails】concernsを使ってリファクタリング!太ったコントローラーをスリムにする!

railsのコントローラーなどの記述が肥大化したときにconcernsディレクトリにファイルをつくって処理を切り出す方法を紹介します。

**読みやすいコードになっているかは、ポートフォリオにおいて差をつけるポイント**でもあるので参考にしてください。

##結論

controllers/concernsにファイルをつくって以下のように記述します。
(モデルの処理を切り出す場合は、models/concerns)

“`rb:app/controllers/concerns/hoge.rb
module Hoge
extend ActiveSupport::Concern

def fuga
#切り出したい処理
end

end
“`

上記のようにコントローラーの処理をモジュールに切り出します。
そして、以下のようにコントローラーのファイルで呼び出せばOKです。

“`rb:controllers/messages_controller.rb
class MessagesController < ApplicationController incl

元記事を表示

(WSL2の)debianでRails6.1のsystem testを動かす

# 実行するコマンド

“`shell
# headless chrome のインストール
curl https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb # エラーが出るけどそのまま進む
sudo apt install -fy
“`

# テストコードの変更

“`test/application_system_test_case.rb
require “test_helper”

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase # driven_by :selenium, using: :chrome, screen_size: [1400, 1400] driven_by :selenium, using: :headless_chrome end ``` # 解説 ## 前提: sy

元記事を表示

パスワードの表示/非表示の切り替えボタンを作成

# パスワードの表示/非表示の切り替えボタンを作成する

## やりたいこと
簡易的なパスワードの表示ボタンを作成したい
HTMLのみに記述

## 概要
調べまくった結果、JavaScriptを使用しないと厳しい…
が、記述としてはあまり良くないかもしれないがHTMLに記述しても作成できる。
deviseのパスワードに追加して記述していく。

## 具体例
“`
<%= f.password_field :password, ... , id: "pass" ←追加(好きな名前で)
パスワードを表示する
“`
パスワードはtype=”password”からtype=”text”に変換させれば表示することができるので、onChangeを使用して変換させる。
その際、ById(‘この部分’)をパスワードのidと同じにしておく。

## 結果
![](http

元記事を表示

vueファイルが表示されない問題

既存RailsアプリにVue.jsを使用しフォロー機能を追加しました。
開発環境では無事にフォローボタンが表示されていましたが、
本番環境では表示されないという事案が発生。表示させるまでの経緯を振り返りたいと思います。

開発環境
windows10 home
Ruby 2.6.3
Ruby on Rails 5.2.6
vue.js 2.6.14

#実現したいこと
開発環境では表示される
![開発環境.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061608/6240c457-f2b3-adb4-11b8-bafeecd4dc52.png)

# 問題点
本番環境では表示されない、、
vueを呼び出しているidの要素がElementsになく、下記のコードが表示される。

“`

“`

![本番環境.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

【Rails】いいね機能の作り方

プログラミングスクールの最終課題でオリジナルアプリを作成するにあたり、
いいね機能を実装したので、アウトプットしていきます。
Qiitaへの投稿に不慣れなため、稚拙な部分もありますがご容赦ください。

**前提条件**
・Rubyバージョン2.6.5
・Railsバージョン6.0.0
・「gem ‘devise’によるUserモデル」と「投稿に関するPostモデル」は作成済みとします。

# いいね機能作成の流れ

下記の6ステップに分けていいね機能を実装していきます。

①いいね機能を管理する**「Favoriteモデル」**を作成する。
②各モデルに**アソシエーション**を記述する。
③URIパターンに**「:post_id」を含めたルーティング**を設定する。
(どの投稿に紐付くいいねか分かるようにするため、postsコントローラーのルーティングに
 ネストさせる)
④favoritesコントローラーでアクションを定義する。
⑤Postモデルに**「ログイン中のユーザーがその投稿に対していいねをしているか」**
 を判断するメソッドを定義する。
⑥投稿詳細のビューファイルに**

元記事を表示

プログラミングスクールでの学習と今後の展望

1、私の色々
2、プログラミングを学ぼうとしたきっかけ
3、テックキャンプでの学習
4、転職活動と今後の展望

1、私の色々
・秋田県出身(1992年生まれ)
・大学では野球部に所属。法学部に在籍するも野球漬けの毎日で学業は置き去りに
・大学卒業後、ガス会社に入社する(2014年4月)
・プロ野球選手になる!という夢をもう一度追うべく、四国にあるプロ野球球団のトライアウトを受験(2014年10月)
・トライアウトに合格したので、会社を退職。もう一度プレーヤーとして奮起することに(2015年1月)
・2年間(2015,2016年)プレーしたものの、自身の実力に限界を感じ引退。
・2017年3月に球団からの紹介で都内の企業に入社。
・4年間、営業や販売業務に従事。2021年3月に退職。
・2021年7月~テックキャンプ105期生としてプログラミング学習をすることに←ここ急だねって思った:thinking:

2、プログラミングを学ぼうとしたきっかけ
端的に説明すると以下の3点です。
・今までやった事のない仕事をしたい!
・世の中に自分が出した結果、成果を残したい。より多くの人々の目に届

元記事を表示

【Rails】Google Mapの表示

#はじめに
Ruby on Rails で ユーザーが入力した住所から、経度と緯度を取得して、Google Map を表示する方法。

#開発環境
・Ruby: 2.6.6
・Rails: 5.2.6
・Windows10

#APIキーの取得
Google Map Platformにアクセスし、Google Mapを表示させるためのAPIキーを取得。
取得方法はこちら↓の記事を参考に。
https://qiita.com/tiara/items/4a1c98418917a0e74cbb

#アプリの作成
Ⅰ.Google Mapを表示させるための簡単なアプリを作成します。

“`
$rails new Map_application
“`
Ⅱ.Gemgfileにgeocoderを追加
今回、住所・緯度・経度のカラムを持つmodelを作成するが、ユーザーが住所を入力すれば緯度・経度が自動的に取得され、Google Mapが表示されるようにする。

“`ruby:Gemfile
gem ‘geocoder’
“`
“`
$bundle
“`
Ⅲ.modelの作成
名前

元記事を表示

UnknownAttributeErrorが出た時の対処方法

UnknownAttributeErrorはカラムが追加されていない時のエラー

テーブル確認

schema確認

そもそものところ確認して問題なし

“`
rails db:migrate:status
“`

“`
rails db:migrate:reset
“`

“`
rails db:migrate
“`

エラーが解消された

元記事を表示

Fctory_bot アソシエーション:belongs_toの記述

comment(コメント)がstaff(ユーザー)、ostomy(投稿)にbelongs_to

“`models/comment.rb
class Comment < ApplicationRecord belongs_to :ostomy #投稿 belongs_to :staff #ユーザー validates :comment, {presence: true} end ``` ```models/staff.rb #ユーザーモデル class Staff < ApplicationRecord has_many :comments end ``` ```models/ostomy.rb #投稿モデル class Ostomy < ApplicationRecord has_many :comments ```

associationを用いて記述

has_manyはassociationの記述不要

“`factorys/cooments.rb
FactoryBot.define do
#医療staffが

元記事を表示

【Ruby on Rails】頻出しそうなFormHelperをまとめる

#対象者

* form_with, form_forを使っている方へ

#目的

* FormHelperにどんな種類があるか把握して、引き出しを増やすこと

#実際の手順と実例
###1. 前提

form_withの基本構文は下記の通りです。

https://qiita.com/nao0725/items/e5685d4851d8329d9e73

###2. よく使用するFromHelper一覧

| 1 | 2 |
|:-:|:-:|
| check_box | チェックボックスタグを生成 |
| file_field | ファイルアップロード用のタグ生成 |
| hidden_field | 特定の属性にアクセスするための、隠されたinputタグを返す |
| label | フォームに属した名前(ラベル)を返す|
| password_field | パスワードのためのタグ生成 |
| radio_button | ラジオボタンをタグを生成|
| text_area|長文用テキストを生成|
| text_field | 短文用のテキ

元記事を表示

railsチュートリアル第五章 アセットパイプライン

##Sassとアセットパイプライン
最近のRailsに追加された機能の中で最も特筆すべき機能の1つは、CSS、JavaScript、画像などの静的コンテンツの生産性と管理を大幅に強化する「“`アセットパイプライン“`(Asset Pipeline)」
アセットパイプラインは、Webpackや、Yarn(のどちらともうまく動きます。

このセクションでは、“`アセットパイプラインの概要“`と、素晴らしいCSS生成ツールである“`「Sass」の使い方“`について説明します。

###アセットパイプライン
Rails開発者の視点からは、“`アセットディレクトリ“`、“`マニフェストファイル“`、“`プリプロセッサエンジン“`という、3つの主要な機能が理解の対象となります。

#####アセットディレクトリ
“`app/assets“`: 現在のアプリケーション固有のアセット
“`lib/assets“`: あなたの開発チームによって作成されたライブラリ用のアセット
“`vendor/assets“`: サードパーティのアセット(デフォルトでは存在しません)

元記事を表示

railsチュートリアル第五章 パーシャル

####パーシャル
レイアウトのコードはその目的を果たしていますが、まだ“`少々散らかっている“`。
例えば、IE特有の風変わりな文法のHTML shimだけで3行も占有しています
これを“`隠せたら良い“`。
HTMLヘッダーは論理的な単位として分けられるため、“`一箇所にまとめた方が便利“`です。
Railsでは“`パーシャル(partial)という機能でこのような課題を解決“`

#####レイアウトにshimとheaderのパーシャルを追加する

“`html



<%= full_title(yield(:title)) %>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'rel

元記事を表示

OTHERカテゴリの最新記事