Ruby関連のことを調べてみた2022年05月20日

Ruby関連のことを調べてみた2022年05月20日

AWC EC2にWebシステムのデプロイ(下書き

つらつらと仕事中の備忘録
書きながらやっているので後日清書予定
AWSEC2にDocker+Railsの環境を構築してテストしようという作業

EC2インスタンス
・最低コスト
・とにかく動け
・Ubuntu

流れ

・手始めにEC2にセキュリティグループの設定を修正
 →テラターム接続は失敗したので暫定でGit Bushで接続。上記設定に関係あるか不明

・下記URLを参考にDockerとDockerComposeをaptとcurlを使ってインストール。

・sshの設定、key登録をgithubと”EC2インスタンス”にする(Ec2側にssh-addをかまさないとダメ。また、かますときはevalでプロセス明確する)

・gitcloneをする(解決)
 →sudo chown ユーザー名:ユーザー名 /var/www # 現ユーザーに権限付与 をしてなかった

・dockerをデプロイ(権限がなくて混乱)
 →https://virment.com/how-to-fix-couldnt-connect-to-docker-daemon/ ここを参考に修正中

参考URL

元記事を表示

GemのNokogiriを使おうとしたら`version `GLIBC_2.29′ not found`エラーが出たときのことを調べた

## はじめに

以前、M1 Mac で Rails のセットアップをしているときに、

“`
ERROR: It looks like you’re trying to use Nokogiri as a precompiled native gem on a system with glibc < 2.17: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/local/bundle/gems/nokogiri-1.13.6-aarch64-linux/lib/nokogiri/2.7/nokogiri.so) - /usr/local/bundle/gems/nokogiri-1.13.6-aarch64-linux/lib/nokogiri/2.7/nokogiri.so If that's the case, then please install Nokogiri via the `ruby` platform gem: gem in

元記事を表示

RuboCopの導入方法メモ

RuboCop導入方法の備忘録です。

## 環境
macOS Monterey 12.3.1
ruby 3.1.2
rails 6.1.6

## インストール方法
Gemfileに必要なgemを追記する。
“`ruby:Gemfile
group :development do
gem ‘rubocop’, ‘~> 1.29’, require: false
gem ‘rubocop-performance’, require: false # 拡張機能
gem ‘rubocop-rails’, require: false # 拡張機能
gem ‘rubocop-rspec’, require: false # 拡張機能
end
“`
bundle installする。

“`sh:ターミナル
bundle install
“`

## 初期設定など
“`sh:ターミナル
bundle exec rubocop –auto-gen-config
“`
を実行すると`.rubocop.yml`, `.rubocop_todo.yml`が生成される。

元記事を表示

Railsで使用するコマンド

Railsで使用する基本的なコマンドについてまとめた記事です。

# プロジェクトの作成
“`:#プロジェクトの作成
rails new アプリケーション名 [オプション]
“`
“`:#オプション(一部)
# ファイルが存在する場合に上書き
–fまたは -–force

# データベースの種類(MySQL)
–d=mysql または -–database=mysql

# データベースの種類(PostgreSQL)
–d=postgresql または –database=postgresql

# V(ビュー)を生成しない
–api
“`
# Controllerの作成・削除
“`:#コントローラの作成
rails g controller コントローラー名 メソッド名1 メソッド名2 …
“`

“`:#コントローラの削除
rails d controller コントローラー名
“`
# Modelの作成・削除
“`:#モデルの作成
rails g model モデル名 カラム名1:カラムの型 カラム名2:カラムの型 …
“`
“`:#モデ

元記事を表示

Rails6でシステムスペック(capybara 導入)

## はじめに
先日、Rails6 でシステムスペックのテスト実行の際に Capybara が導入されておらずエラーが発生してしまいました。
Rails6 では Capybara はデフォルトでインストールされているはずなのに何故かエラーとなってしまう…。
その原因としていくつか勘違いしていた事がありましたので、まとめたいと思います。

### 開発環境
– Rails 6.1.4
– ruby 2.7.3
– rspec-rails 5.1.2

## Capybara の設定
spec_hepler.rb に capybara の設定を追加します
“`spec_hepler.rb
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration

require ‘capybara/rspec’

RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end

co

元記事を表示

3カ月の学習を終えて

現職からの転職を考えて、プログラミングの学習を始めてから約3カ月。
企業提出用のポートフォリオがひと段落ついたため、こちらのQiitaのほうに今までの学習の振り返りや発生したエラーの解決方法を備忘録として投稿していこうと思います。
主に使用した言語はHTML、CSS,Ruby,Railsです。

# HTML,CSS
簡単に言えばWEBサイトを構成するための言語です。
HTMLでWEBサイトの大まかな構造を作り、CSSで外観を整えるといったイメージ。
# Ruby
WEBアプリケーションを作るために必要な言語
#### HTMLとの違い
HTMLは「WEBサイト」を作るための言語、対してRubyは「WEBアプリケーション」を作るための言語です。
「WEBサイト」は訪問者が受動的に閲覧するものです。つまり、静的なページのことです。

一方「WEBアプリケーション」は訪問者に能動的な動作を求める者です。閲覧だけでなく、情報を入力してもらい、その内容によって表示が変わります。
具体的には、ユーザー登録機能や検索機能などです。入力した内容によってマイページの表示は変化するし、検索結果も当然変わ

元記事を表示

Railsのマイグレーション関連のコマンド(備忘録)

# はじめに
Rialsのマイグレーション関連のコマンドを備忘録としてまとめました。

# migrationとは?

【Railsガイド参照】

マイグレーションは、データベーススキーマの継続的な変更(英語)を、統一的かつ簡単に行なうための便利な手法です。マイグレーションではRubyのDSLが使われているので、生のSQLを作成する必要がなく、スキーマおよびスキーマ変更がデータベースに依存しなくなります。

個別のマイグレーションは、データベースの新しい「バージョン」とみなせます。スキーマは空の状態から始まり、マイグレーションによる変更が加わるたびにテーブル、カラム、エントリが追加または削除されます。Active Recordはマイグレーションの時系列に沿ってスキーマを更新する方法を知っているので、履歴のどの時点からでも最新バージョンのスキーマに更新できます。Active Recordはdb/schema.rbファイルを更新し、データベースの最新の構造と一致するようにします。

マイグレーション機能があることによ

元記事を表示

Railsアプリケーション非同期通信設定(Ajax)

この記事は学習した内容をアウトプットし、更に理解を深めるための記録用投稿になります。
投稿している内容と同じ箇所で躓いている方に少しでもお力添えできれば幸いです。

非同期通信の実装をするに至った経緯はポートフォリオを制作後にメンターの方にレビューをいただきました。その際に今後のチャレンジという項目でご指摘をいただいたのでチャレンジしてみました!
わかりやすく説明をしていただいてる方にはほんと感謝です、、、

## 非同期通信とは
##### ・WEBブラウザからWEBサーバー間のリクエストしてレスポンスが行われるまでに次の処理をする事が可能。
##### ・リクエスト後画面遷移せずにデータの更新が行われる(いいね数が増えるなど)


## 前提条件
・gem ‘jquery-rails’は導入済

・いいね機能実装済み

・料理の内容を投稿するアプリになるのでユーザー(user)、料理(dish)とします

## 手順

① Ajax処理をするための記述を追加する(remote :true)

② ビューでのいいねボタンを部分テンプレートにするためにファイルを作成(_fa

元記事を表示

Basic認証をRailsアプリに導入する方法

## authenticate_or_request_with_http_basicメソッド
ブロック内部でusernameとpasswordを設定し、任意の値を決めて実装します。
下記の例では、usernameに「test」、passwordに「1111」を指定しています。
“`ruby
authenticate_or_request_with_http_basic do |username, password|
username == ‘test’ && password == ‘1111’
end
“`
## Basic認証をRailsアプリに導入する
メソッドをコントローラーのprivateに定義し、before_actionで呼び出します。
“`ruby
before_action :basic_auth

private
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ‘test’ && password == ’11

元記事を表示

事前に定義されたリストの順番にそって、配列の要素を並べ替える簡単な方法

例えばいくつかの都道府県を、事前に定義された順番に並べ替えたい時、

“`ruby
ISO_PREFECTURE_LIST = [“北海道”, “青森県”,…,”千葉県”,”東京都”,”神奈川県”,…,”鹿児島県”,”沖縄県”]
prefs = [“東京都”, “沖縄県”, “青森県”]

# prefsをISOの都道府県リスト順に並べ替えたい

p ISO_PREFECTURE_LIST & prefs
#=> [“青森県, “東京都”, “沖縄県”]
“`

「&」は両集合の共通要素を返してくれる積演算だが(intersectionのエイリアス)、結果の集合の順番が左辺のものになるので、こういうこともできる。

ただし
「重複する要素は取り除かれます。」
なので用途に注意。

https://docs.ruby-lang.org/ja/latest/method/Array/i/=26.html

元記事を表示

【Rails】redirect_toでリダイレクト先に値を引き継ぐ

# コード
リダイレクト先に値を渡すには`flash`を使うと良いです。
“`ruby:controller
flash[:user_params] = user_params
redirect_to action: :new
“`

# 詳細
今回はJSを使うことなくサーバー側でバリデーションチェックから、
個々のinputへのエラー表示まで行う仕様だったので、
`create`でバリデーションチェックをして、
引っ掛かったら`new`へ入力済みの値とエラーのカラムを渡す必要がありました。
“`ruby:controller
def new
@user = flash.present? ? User.new(flash[:user_params]) : User.new
end

def create
@user = User.new(user_params)
if @user.invalid?
flash[:user_params] = user_params
redirect_to action: :new
end
# 以下バリデーション

元記事を表示

【Rails】バリデーションに引っ掛かったカラムを取得する

# コード
“`ruby
@user.errors.attribute_names
=> [“name”, “email”, “tel”]
“`
`errors.attrbute_names`で引っ掛かったカラムの配列を取得できます。

# 詳細
今回はJSを使わずにバリデーションに引っ掛かった項目のinputの下に、
エラーメッセージを表示しなければいけなかったので、
どこのメッセージを表示するかの判定に引っ掛かったカラム名が欲しくて調べました。
“`ruby:controller
def create
@user = User.new(user_params)
return redirect_to action: :new, errors: @user.errors.attribute_names if @user.valid?
# 以下バリデーションが通った時の処理
end
“`
これだと`errors`の内容がクエリに入ってしまうし、
入力済みの内容も保持したかったので、
実際には`flash`で渡しました。
“`ruby:controller
def n

元記事を表示

【30歳から目指すwebエンジニア学習録】Rails6でjQueryの導入につまずいた話

# エラーの発見
– 「いいね」ボタンをAjaxで作ろうとしていた
– jQueryを仕込んでも変化せず、、、
– ターミナルを見るとjs.erbファイルには到達している。
– ブラウザのコンソールを見ると`$ is not define`のエラーログが。

# 解決策
– `$ is not define` で検索するとrails6ではjQueryの導入方法が変わったとの記事があった。
https://qiita.com/RIN_HM/items/bdbd76f5015b3c15bfe9
– こちらの海外の記事の指示に従って直していく。

Introducing jQuery in Rails 6 Using Webpacker

# 手順1 application.jsファイルを移動する
1. assetsの`application.js`ファイルを
1. app/javascript/packsフォルダに移動する。
![image.png](https://qiita-image-store.s3.a

元記事を表示

RuboCop v1.28 から追加された “Style/FetchEnvVar” について

## これはなに

– RuboCop のバージョンアップを行った際に、新しいルール “Style/FetchEnvVar” が追加されており、仕様について調べ適用を行いました
– 適用した “Style/FetchEnvVar” のルールについて簡単にまとめました

## Style/FetchEnvVar について

簡単に記載すると、 `ENV[‘FOO’]` ではなく `ENV.fetch(‘FOO’)` を利用しましょうというルールです

通常 `ENV[‘FOO’]` とプログラムを記述し、実行した際に環境変数 `FOO` が未定義だった場合 `nil` を返却します

`nil` が返ること自体は明らかなため、 `nil` で返る可能性を考慮しプログラムを組むべきと言われればその通りです
しかし、手法は文化や慣習によって対応方法は複数存在することは容易に想像できます

– 環境変数参照後にエラーを発生させたい人
– デフォルト値を定義し何事もなかったかのように処理を継続させたい人
– あえて `nil` のまま処理を継続する人
– `nil` が渡されることを考慮し忘れて

元記事を表示

Ruby symbol

“`ruby
a = {“a”:1,”c”:2}
p a

unless a[:a]
p “unless a”
end

unless a[:cc]
p “unless cc”
end

if a[:a]
p “a ok”
end
if a[:cc]
p “cc ok”
end
“`

“`
{:a=>1, :c=>2}
“unless cc”
“a ok”
“`

元記事を表示

Rails 命名規則について

# Rails 命名規則について

## コントローラを作成する(小文字で複数形)
“`ruby:controller.rb
$ rails g controller homes
“`

コントローラ名 複数形、先頭は英小文字 homes
コントローラのクラス名 複数形、先頭は英大文字 HomesController
ファイル名 複数形、先頭は英小文字 homes_controller.rb

## モデルを作成する(先頭大文字で単数形)
“`ruby:model.rb
$ rails g model List
“`
モデル名 単数形、先頭は英大文字 List
モデルのファイル名 単数形、先頭は英小文字 list.rb
テーブル名 複数形、先頭は英小文字 lists

https://www.wakuwakubank.com/posts/804-it-naming-convention/

https://designsupply-web.com/media/development/4052/

元記事を表示

railsチュートリアルをなるべく嚙み砕く 2章

#railsチュートリアル第2章ですね
この章はscaffoldを使って簡単なアプリを作り出すようです

### 2.1.1
ユーザーのモデル設計です。ユーザーを必要な要素を簡単に書き出すと
| user | 型 |
| — | — |
|id|integer|
|name|string|
|email|string|

ユーザーを識別するための一意なidと名前、メールアドレスですね。
一意というのは他に無い、唯一ということです。

### 2.1.2
マイクロポストのモデル設計です。 マイクロポストというのはTwitterのツイートのことですね。つまりはユーザーがする投稿です。

| microposts | 型 |
| — | — |
|id|integer|
|content|string|
|user_id|integer|

マイクロポストのid これはユーザーのidと同じで一意であることを表しています。そして文章のcontentと、どの ユーザーが投稿したかを表すuser_idです

### 2.2
UsersリソースとHTTPプロトコルという言葉が出てきま

元記事を表示

crystal の AtCoder における Set の使用(健忘録)

# はじめに
https://qiita.com/u2dayo/items/906f4811aa4470b4ffab

@u2dayo さんのコードを写経していましたところ`Set`を使用されていました。
普段は`Hash`で代用していますが、`Set`の使用方法の健忘録と`Crystallizer2`の更新を行いました。

https://github.com/superrino130/crystal-on-paiza.cloud
# C問題『Poem Online Judge』
https://atcoder.jp/contests/abc251/tasks/abc251_c
# Ruby版
“`rb
require “set”

n = gets.to_i
seen = Set.new
max_t = -1
ans = 0
(1…n+1).each do |i|
s, t = gets.split
next if seen.include?(s)
seen << s t = t.to_i if max_t < t max_t = t an

元記事を表示

【30歳から目指すwebエンジニア学習録】bootstrap5系の導入でちょっとつまづいた話

# 起こったこと
– こちらの記事を参考にbotstrapを導入(とても丁寧でわかりやすい記事です)
https://www.techpit.jp/courses/2/curriculums/3/sections/15/parts/51
– こんなエラーが出た。
– どうやらWebpackerが見つからないということらしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530541/b9e4f285-19e1-7336-164d-4a73ad960ca8.png)

# 解決まで流れ
– こちらの記事を参考にinstallからcompileまでをやってみた
https://qiita.com/ahuiru/items/062bbc1b351819a3eeb8
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530541/c5d645b5-c674-58e9-b91f-2a80940e4a

元記事を表示

【30歳から目指すwebエンジニア学習録】rails generate で余計なファイルを作らない設定をする

# やりたいこと
– rails g コマンドでは、testファイルやhelperファイルなど、一緒に作ってくれる
– が、不要なファイルが作られてしまう。
– そこで、config/application.rbに記述することで、生成されるフォルダを制御する

# 結論
– config/application.rb ファイルに記述。
– ORmapperやらテンプレートエンジンまで設定できる。
– fixtureはFactoryBotを使いたいときとかに設定すると便利そう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530541/d36ba371-9058-f0db-f8c7-8a565eaf9c93.png)

# 参考

##### ジェネレーターのワークフローをカスタマイズする
https://railsguides.jp/generators.html#%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3

元記事を表示

OTHERカテゴリの最新記事