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

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

ユーザー管理機能(Devise)について

# deviseとは
webアプリケーションにおいて認証機能を実装するためのgemです。

# 導入方法
1\. ターミナルにてcdコマンドを使い、作成しているAppのディレクトリ内に移動する

2\. Gemfile内で追記する
“` .Gemfile
gem ‘devise’
“`

3\.ターミナル内にてGemをインストール
“` .terminal
bundle install
“`
:::note info
gemをインストールした後はローカルサーバーを再起動する
:::

4\.deviseの設定ファイルを作成
“`.terminal
rails g devise:install
“`

# deviseのモデルを作成
1\.モデルの作成
“`.terminal
rails g devise [モデル名]
“`

2\.テーブルに必要なカラムを追加
モデルを作成するとdb/migrateのディレクト内に先程生成したdeviseのモデルテーブルが生成されている。そのファイル内で追加を行う

:::note info
ex)nicknameを文字列型、空なしにす

元記事を表示

git mergeしたらnot something we can mergeが出たので解決してみた

今回はgit mergeを実行しようとした以下のエラーが発生した

“`
merge: sigh-up – not something we can merge
“`

解決策

ブランチ名をコピペしたらいけた。

ブランチを確認して、マージしたいブランチ名をここでコピーします。
“`git
git branch
filling-in-layout
* main
modeling-users
rails-flavored-ruby
sign-up
static-pages
“`

コピーしたマージ名をペーストしてあげると解決できました。
“`
git merge <マージ名> #マージ名を入力するときだけペーストする。
“`

考えられる原因

おそらくタイプミスなのですが、ぱっと見はよくわかりませんでした。なので、この手のエラーが出たらとりあえずブランチ名をコピペしてみるといいかもしれないです。

元記事を表示

redirect_to @userは redirect_to user_url(@user)と同値

以下の二つのコードは同値です。
“`Ruby
redirect_to @user
“`

“`Ruby
redirect_to user_url(@user)
“`

元記事を表示

投稿のコメントにYoutubeのURLを入れ込む方法

今回はユーザーが投稿した投稿にコメントをする際にYoutubeのURLを埋め込む方法を紹介します。

投稿のコントローラー:favorite(普段自分が使っているコントローラー)
コメントのコントローラー:comment

①commentsテーブルにyoutube_urlカラムを追加します。

“`ruby:コマンドプロンプト
rails generate migration AddYoutube_urlToComments youtube_url:string
“`
“`ruby:コマンドプロンプト
rails db:migrate
“`

②commentコントローラーに、コメント内でYoutubeのURLを埋め込むためのコードを書きます。

“`ruby:app/controller/comments_controller.rb
def create
favorite = Favorite.find(params[:favorite_id])
comment = favorite.comments.build(comment_params)

元記事を表示

ruby 練習問題48 (アウトプット用)

以下の仕様にしたがってコードを記述する問題。

・Personクラスはプロパティ name, ageを持っている。
・StudentクラスはPersonクラスを継承している。
・Studentクラスにはintroduceメソッドが定義されている。実行すると
 「私の名前は◯◯です。◯歳です」と表示がされる。
・Studentクラスのインスタンスを作成し、introduceメソッドを実行する。

以下、模範解答
“`ruby
class Person
def initialize(name, age)
@name = name
@age = age
end
end

class Student < Person def introduce puts "私の名前は#{@name}です。#{@age}歳です" end end yamada = Student.new("山田", 20) yamada.introduce ``` 以下、解説 まずクラスの継承について クラスの継承とは、利用したいすべてのクラスを最初から作成することなく、共通する部分を

元記事を表示

2022年の振り返り(KPT)と今年の目標

明けましておめでとうございます。Esper0328です。
昨年は1月から無職で6月半ばにIOTベンチャーに就職して働くという一年でした。
昨年の振り返り(KPT)と今年の目標を書きます。

# 振り返り

## Keep

一言で言うと振返りを継続的にしつつ勉強を1年続けられたのが良かったです。

* KPTを毎週実施したおかげで生活のリズムがとても良くなった
* 前職までは月80H近く残業しており新しいことをやろうという気力が湧かず
* 時間に余裕ができ、少し先のことをやっておこうと思えた
* 意思決定も早くなり、何かトラブルがあっても悪化する前に手を打てていた
* 昨年は計画的に大量に勉強した
* **読んだ専門書の数 7冊**
* [プログラミング言語Go](https://www.maruzen-publishing.co.jp/item/?book_no=295039)
* 練習問題135 問をテスト書いてプログラミングした
* 仕事でテストを書くのが苦にならなかった
* [Distributed Services Wi

元記事を表示

【Rails で論理削除】paranoid | paranoia を使わないで discard gem を使う理由

# 【Rails で論理削除】paranoid | paranoia を使わないで discard gem を使う理由

## 三行まとめ
“`
User.destroy # 物理削除
Comment.destroy # 論理削除
“`
☝️いやみわけつかん?

## 【悪い点】 paranoid | paranoia は rails の関数をオーバーライドする。

モデル側で`acts_as_paranoid`という指定をすると、destroy が論理削除になる。

“`
class Comment < ApplicationRecord acts_as_paranoid end ``` ## paranoid | paranoia のメリデメ ### メリット 物理削除の時と名前が同じなので覚えやすい ### デメリット 論理削除と物理削除のモデルが混在するとバグ埋め込む可能性が上がる たとえば - User.destroy = 物理削除 - Comment.destroy = 論理削除 という風に物理削除と論理削除を使うモデルが混在している場合が問題

元記事を表示

ruby 練習問題47 (アウトプット用)

ある映画のハッシュを定義し、格納されている「title」(タイトル)・「genre」(ジャンル)・「year」(公開年)の三つの要素の中から一つを取り出すプログラムを作成する問題。
**定義する変数**
①movie = {“title” => “ハリーポッター”, “genre” => “ファンタジー”, “year” => “2001年”}

②ユーザーが入力するキーを、getsメソッドを利用し定義しましょう

以下、模範解答
“`ruby
def movie_info(movie, data)
puts movie[data]
end

movie = {“title” => “ハリーポッター”, “genre” => “ファンタジー”, “year” => “2001年”}

puts “以下から一つを選んで入力してください。
・title
・genre
・year”

info = gets.chomp
movie_info(movie, info)
“`
以下、解説
今回はハッシュを引数としてメソッドに渡す練習をしました。
前提として、ハッシュ名[キー名

元記事を表示

【Rails】nil? empty? blank? present?の挙動と使い分けを確認

## 1. TL; DR
下記の基準で使い分ける
– nilかどうかの観点のみで判定したい:nil?
– nil + 空のオブジェクトの存在を判定したい:blank?
– 値の有無によって結果を判定したい:empty?
※例外が発生する可能性があるため取り扱い注意
– 空でないオブジェクトの存在を判定したい:present?

#### 早見表
| |nil? |empty?|blank?|present?|
|— |— |— |— |— |
|nil |true |“NoMethodError“|true |false|
|true |false|“NoMethodError“|false|true |
|false |false|“NoMethodError“|true |false|
|”” |false|true |true |false|
|” ” |false|false |true |false|
|[] |false|tru

元記事を表示

【Rails】present?とexists?の挙動を確認し、使い分けの基準を整理する

## 1. present?
– Railsのメソッド
– オブジェクトがある場合はtrueを返す
– present?の反対は、blank?
– 実行するとキャッシュされる

発行されるクエリを見てみると、1回全部の該当レコードをごそっと取ってきていることが分かる
“SELECT “articles”.* FROM “articles” WHERE “articles”.”title” = ? [[“title”, “Test”]]“

“`
irb(main):001:0> Article.where(title: ‘Test’).present?
(1.6ms) SELECT sqlite_version(*)
Article Load (0.2ms) SELECT “articles”.* FROM “articles” WHERE “articles”.”title” = ? [[“title”, “Test”]]
=> true
“`

## 2. exists?
– Railsのメソッド
– SQLのexists式を使う
– 該当レコー

元記事を表示

RSpec MocksのREADMEを翻訳

# 翻訳する目的

[Everyday Rails – RSpecによるRailsテスト入門](https://leanpub.com/everydayrailsrspec-jp)を読み、モック関連と、FactoryBotについて更に知識をつけたいと思った。どちらも技術本で学ぶのは難しいので、リポジトリのREADMEを通じて学ぶのが良いと思った。
Google翻訳やDeepLを用いて全文翻訳を行うと、日本語が不自然で読みにくかったので、今後何度も参照することを考えて、自分で翻訳してしまおうと思った。
FactoryBotのREADMEの翻訳は既に存在していたので、[RSpec MocksのREADME](https://github.com/rspec/rspec-mocks/blob/main/README.md)を翻訳することにした。

# 翻訳時のルール

– Google翻訳やDeepLは利用しない。
– わからない単語を辞書で調べるのはOK。

ここから下が翻訳した内容です。

# RSpec Mocks

rspec-mocksはRSpec向けのテストダブルのフレームワーク

元記事を表示

Rubyのインストール方法

# はじめに
#### ※以下の内容には誤りが含まれる可能性があります

Rubyを学習したいと思い、じゃあ何からしたらいいんだ?とワタクシは最初思いました。

### 「Rubyが無いじゃんYo!」

いや正確にはあるんですが、それは後述します。

# まずRubyをインストールしなきゃ始まらない

インストール方法はさまざまです。OSによっても違いますし、そのOSの中でも複数の方法があるのです。

macOS/linux
* OS標準のRubyを使う。

* ソースからビルドする。
* パッケージ管理ツール(Homebrewなど)を使ってインストールする。
* Ruby専用のパッケージ管理ツール(rbenv、RVMなど)を使ってインストールする。

Windows
* Rubyinstallerを使う。
* WSLまたはWSL2のLinux環境にRubyをインストールする。

その他

* コンテナ環境(Dockerなど)を使う。
* クラウド上の開発環境(AWS Cloud9などを使う)

### ざっ

元記事を表示

Rails API 論理削除の実装

# はじめに
業務のタスクの中で論理削除を実装するタスクが有りましたので、備忘録として書き起こすことにしました。至らぬ点はご容赦ください。。。

# そもそも論理削除とは?
https://www.tutitatu.com/%E3%80%8C%E8%AB%96%E7%90%86%E5%89%8A%E9%99%A4%E3%80%8D%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%82%84%E6%84%8F%E5%91%B3%E3%80%81%E4%BE%8B%E6%96%87%E3%82%84%E9%A1%9E%E7%BE%A9%E8%AA%9E%E3%82%92%E5%BE%B9/#i-2

↑こちらによると
> データベースのレコードを削除する際にフィールド値を変更する事で削除した扱いにする方式で実際のデータは削除しない事。

とあります。PCの「ゴミ箱」機能がこれにあたるとも書かれていました。
論理削除を実装するメリットとしては、「あたかも削除をしたかのように振る舞う」のでいざ復旧しようとなるとすぐにできることがメリットとして挙げられます。

#

元記事を表示

wasi-vfsでパックしたバイナリ(CRuby)を眺めてみた

# wasi-vfsでパックしたバイナリ(CRuby)を眺めてみた
Ruby 3.2.0でWASIベースのWasmへのコンパイルがサポートされた。
https://www.ruby-lang.org/ja/news/2022/12/25/ruby-3-2-0-released/

その中でも個人的に気になったのはこの記載。
> さらに、WASIの上にVFSを実装しました。これにより、Rubyアプリを単一の.wasmファイルに容易にパッケージ化できます。Rubyアプリの配布が少し簡単になります。

どういうバイナリになっているのかなど、気になったので調べてみたいと思う。

# WASIの上にVFSとは?
`VFS`というと真っ先に思い浮かんだのが、Unix系のシステムで聞く[仮想ファイルシステム(Virtual File System)](https://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)。
おそら

元記事を表示

test

testですので

元記事を表示

えっ、Rubyってオワコン言語なの、初心者は何を勉強すればいいの?

## 2022年Qiitaのアドベントカレンダーに見るオワコン言語、人気の言語

世の中にはたくさんのコンピュータ言語があります。一世を風靡し、そしていつしか忘れられていく言語もたくさんあります。皆さんは、いま流行りの言語は何で、これから伸びる言語は何だろう、オワコン言語は何だろうと思ったことはないでしょうか?また、YouTubeでインフルエンサーが「Rubyはオワコンだから」と言ったりしますが、「それってあなたの感想ですよね」、「なんかそういうデータあるんですか」と思ったりしていました。
そんな中 @Dosaidon は、Qiitaにアドベントカレンダーと言うコンピュータ言語別に記事を投稿するイベントがあるのを知りました。12月1日から12月25日までの25日間のカレンダーに投稿していくものです。(あれれっ、アドベントカレンダーって24日終わりじゃないの…)それはさておき@Dosaidonも[2022年アドベントカレンダー、Rubyカレンダー2、3](https://qiita.com/advent-calendar/2022/ruby)に参加しました(PR:Ruby初心者の方読んで

元記事を表示

Mac で binutils をインストールしている状態で rbenv 経由で Ruby をインストールする際のエラー回避

# 概要

https://qiita.com/Hiragi-GKUTH/items/bbd37608b7a517c6ed6d

を見た後に行った回避方法について記載しています。

# 環境

– macOS Monterey 12.5 / Intel プロセッサ
– rbenv 1.2.0
– zsh 5.8.1 (x86_64-apple-darwin21.3.0)
– binutils 2.37
– インストールしようとした Ruby のバージョン : 2.6.9

# 個人の経緯

rbenv で Ruby のインストールに失敗して、失敗ログを確認したら以下の記事と同様のエラーログということがわかりました。

https://qiita.com/Hiragi-GKUTH/items/bbd37608b7a517c6ed6d

rbenv がビルドの際に使う Mac のコマンドを PATH 的に binutils のものを優先してしまうことでエラーが発生するようです。

binutils 自体は使うためアンインストールしたり、PATH から外したりはしたくないです。
次のように

元記事を表示

【個人開発】日用品を自動で購入してくれるアプリを作りました。

## はじめに
こんにちは@prg_mtと申します。
DIVE INTO CODEでエンジニア転職を目指し、4ヶ月間学習をして参りました。
今回はその集大成となるオリジナルアプリについての記事を書いてみます。

## 開発したアプリについて
今回開発したアプリ名は「Stock Roller」です。
アプリ名の由来は「日用品のストックを継続的に回していく」という部分からです。
![スクリーンショット 2022-12-30 17.25.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2881858/1c1def99-9ef7-0890-93ac-9bd890573728.png)

【アプリURL】
https://stock-roller.work/
【Git Hub URL】
https://github.com/TomokiMatsubuchi/Stock-Rolling-App.git

### アプリ制作のきっかけ
![スクリーンショット 2022-12-3

元記事を表示

Capistranoを使った自動デプロイで詰まった話 (Your bundle only supports…)

こんにちは、しほです。

Qiita初投稿。Railsで作ったポートフォリオをCapistranoで自動デプロイしようとして詰まった話でございます。

# 環境

Rails 6.1.6

# 背景

こちらの記事を参考に、AWS EC2への自動デプロイ を実装しようとしていました。
https://pikawaka.com/rails/capistrano

Capistranoとかのインストールをしたり、NginxやUnicornの設定をした後、最後に以下の自動デプロイ コマンドを打ってみると
“`
bundle exec cap production deploy
“`
**「Your bundle only supports platforms [“x86_64-darwin-19”]・・・」**
とエラーが発生して進めない。困った。

# 解決にいたるまで

1. とりあえずぐぐる。このあたりの記事を見て、なんかBundlerがうまくいかないんだなーということを考えた。
https://autovice.jp/articles/150

2\. エラーログに指示のあった以

元記事を表示

(備忘録)MacにゼロからRubyの環境構築をする方法

# 環境構築とは?
* プログラミングを書いたり、実行したりするような環境を自分のパソコンに整うこと

# 環境構築の手順

## ①テキストエディタの準備
* テキストエディタは文章を作成、編集するためのソフトウェア
* Microsoftが無料提供しているVisual Studio Codeが有名
* 今回はVisual Studio Codeを中心に進む
* Download URL : https://code.visualstudio.com/

## ②VSCodeに拡張機能導入(推奨)
#### 拡張機能とは?
* VSCode単体ではサポートしてない機能を後から付け加えるためのもの

#### Japanese Language Pack for Visual Studio Code
* 日本語表記にする

#### HTML Snippets
* HTMLタグ、CSSタグの入力を補完

#### Ruby
* Rubyの構文をチェック、間違った箇所を指摘

#### zenkaku
* 全角スペースを知らせる
* zenkakuに関してはインストールしただけでは使用

元記事を表示

OTHERカテゴリの最新記事