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

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

[Rails]すでにあるテーブルのカラムにバリデーションを設定したい

モデル設計時にテーブルのカラムにNotNULL制約を付け加えるのを忘れてしまった。。。
そんな時にテーブルのカラムに後からバリデーションを付与する方法を紹介します!

### 環境
・macOS
・Rails 5.2.6.3
・ruby 2.5.1

## 既にあるテーブルのカラムにバリデーションを追加する手順

1、新規マイグレーションファイルを作成
2、マイグレーションファイルに追加したいバリデーションを記入
3、rails db:migrateを実行

それでは実践に入っていきます。

### 実践
私はusersテーブルのnameカラム・emailカラム・passwordカラムにNOTNULL制約を付け加えるのを忘れたので付け加えていきます。上記の3つの手順に従って、

##### 1、新規マイグレーションファイルを作成する
“`ruby
rails g migration change_user_validation
“`
これでマイグレーションファイルの作成が完了。

##### 2、マイグレーションファイルに追加したいバリデーションを記入する

“`ruby
cla

元記事を表示

Ruby 問題 if,else ポイント付与サービス

# はじめに
1月〜プログラミングスクールで学習しています。
これから平日は~3/25まで毎日何かしらアウトプットのため投稿を続ける予定です。
今回は if,elseを使って簡単なポイント付与サービスを実装します。
※Ruby2.6.5の環境を使用し学習しています。

# 問題
トレーディングカードショップで商品を購入するとポイントが付与されます。
以下条件によってポイント付与率が変わります。
– 購入金額が9999円以下の場合、1%のポイント
– 購入金額が10000円以上の場合、2%のポイント
このように付与されるポイントを出力するメソッドを作ります。

また、購入者が誕生日の場合はポイントが5倍になります。
誕生日の場合はtrue, 誕生日でない場合はfalseで表します。
また、小数点以下をすべてのポイント計算が終わったあとに.floorメソッドを使って切り捨てます。
“`Ruby:例
calculate_points(500, false) → 5ポイント付与されました。
“`

# 実装例
まずは購入金額が9999円以下の場合、1%のポイント、購入金額が10000円以上

元記事を表示

本日のRuby基礎練習問題(22/3/10)

# 本日のRuby基礎練習問題(22/3/10)

**問題**
ECサイトのポイント付与サービスを考えます。
購入金額が999円以下の場合、3%のポイント
購入金額が1000円以上の場合、5%のポイント
このように付与されるポイントを出力するメソッドを作りましょう。

ただし誕生日の場合はポイントが5倍になります。
誕生日の場合はtrue, 誕生日でない場合はfalseで表します。
また、小数点以下をすべてのポイント計算が終わったあとに切り捨てましょう。

呼び出し方:
calculate_points(amount, is_birthday)

出力例:
calculate_points(500, false) → ポイントは15点です
calculate_points(2000, false) → ポイントは100点です
calculate_points(3000, true) → ポイントは750点です

# 私の回答
“`qiita.erb
def calculate_points(amount, is_birthday)
if amount <= 999 p

元記事を表示

psych::badalias: unknown alias: defaultで Railsコマンドが使えないを解決

## はじめに
Rails6の環境を構築している際に発生したエラーに対処していきます。

## 環境
M1 Mac
VS code
Ruby 3.1.0
bundler 2.3.3

## エラーメッセージ
`psych::badalias: unknown alias: default`

## 発生した理由
psychというYAML解釈用のGemの4系と3系で解釈が変わっているのが原因です。
こういったversionの違いで起きるエラーは大変ですね。

## 解決方法
3系を使うように指示を出します。

`gemfileに下記を追加`
“`rb
gem ‘psych’, ‘~> 3.1’
“`

保存して`bundle install`を実行
出来なければ `bundle update`を実行

## おわりに
個人的な話ですが、Ruby on Railsチュートリアルで`mimemagic`問題で4日間エラーと戦ったあたりから
エラーメッセージを見ても怖くなくなりました笑

## 参考

https://teratail.com/questions/343233

元記事を表示

Rails mimemagic問題でRails new . できないを解決

## はじめに
Rails 6系の環境を用意している際に`mimemagic`問題に遭遇した

## 環境
M1 Mac
VS code
Ruby 3.1.0
bundler 2.3.3

## エラーコード
“`rb
Ensure you have either installed the shared-mime-info package for your distribution, or
obtain a version of freedesktop.org.xml and set FREEDESKTOP_MIME_TYPES_PATH to the location
of that file.

This gem might be installed as a dependency of some bigger package, such as rails,
activestorage,
axlsx or cucumber. While most of these packages use the functionality of this gem, some gems
h

元記事を表示

フロントエンドとサーバーサイドをワンコマンドで起動させる方法

どうも**2年目**に突入した**ひよっこエンジニア**のへっぽこです。
もちろんQiitaはもっぱら見る専。アウトプット?なにそれ美味しいの?って感じで生きてきました。

ところが今年から会社の命令で月1本記事を上げないといけなくなりました。
~~ホント迷惑な話だ。~~
ということで、渋々僕の浅はかな知識をアウトプットします。

ちなみに余談ですが、普段は個人でブログ運営してます(プログラミング全く関係なし)。
ポケモンの記事とか**超炎上**してるんで、気になる人は見てってね。

https://heppoko-neet.com/

## フロントエンドとサーバーサイドをワンコマンドで起動させる方法

今回はRailsとReactを例とします。
コマンド部分を変えれば他の言語でも同時で起動できると思いますのでお試しください。

まずhomeディレクトリーへいきます。
“`
cd
“`

次に
“`
touch rails_react_run.sh
“`
でスクリプトファイルを作成します。

viコマンドでスクリプトファイルを編集します。
“`
vi rails_react

元記事を表示

ユーザー情報の編集機能

ユーザーの編集機能を実装する。

編集の時に登録したパスワードは変更しないようにしたいので、今回の編集項目にはパスワードは入れない。

パスワードを不要にするための手順は以下の通り。

ますは“controller/users/registrations_controller.rb“を編集する。

“`ruby:controller/users/registrations_controller.rb
# 以下を追記する
protected
def update_resource(resource, params)
resource.update_without_password(params)
end
“`
※registrations_controller.rbを生成するためには、ターミナルで“rails g devise:controllers users“を実行する必要がある

続いて“routes.rb“を編集。

“`ruby:routes.rb
Rails.application.routes.draw do

#以下を追記する

元記事を表示

【Rspec】Error: raise WrongScopeError の解消法

RSPecでテストを実行すると以下のエラーが発生。

“`
Failure/Error:
raise WrongScopeError,
“`#{name}` is not available from within an example (e.g. an ” \
“`it` block) or from constructs that run in the scope of an ” \
“example (e.g. `before`, `let`, etc). It is only available ” \
“on an example group (e.g. a `describe` or `context` block).”

`name` is not available from within an example (e.g. an `it` block) or from constructs that run in the sco

元記事を表示

Rails コマンドがうんともすんとも言わないときの対処法

# 症状
`rails` コマンドを実行したときに、10 分以上待っても何も反応しないことがある。

“`shell:Shell
bundle exec rails generate scaffold blog title:string body:text
# 10 分以上待っても反応しない
“`

かといって、エラーが出るわけでもない。完全に止まっている状態になる。

# 対処方法
この場合、かなりの確率で Spring に原因がある場合がある。

Spring を一度ストップしてあげると正常に動くようになる。

“`shell:Shell
bundle exec spring stop
“`

“`
Spring stopped.
“`

これで `rails` コマンドが正常に実行できるようになる。

# 参考サイト
* [“rails generate” not working](https://stackoverflow.com/questions/23157426/rails-generate-not-working)

元記事を表示

【Rails】raty.jsを用いた星5レビュー機能の実装

## はじめに
プログラミング学習を始めて2ヶ月目になります。
学習したことを自分なりに解釈理解し、アウトプットできればと思いQiitaを始めてみました。

## 今回実装していく流れ

– 事前準備(jQuery、raty.jsの導入)
– 投稿フォームに星レビュー機能の追加
– 投稿の詳細画面での星レビュー表示
– 投稿の一覧画面での星レビュー表示

## 開発環境
– ruby 2.6.3p62
– Rails 6.1.4

## 前提モデル
![Bookers2のER図before.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2581621/8ee9b573-c28b-8982-34a1-2e1d35adea87.png)

# 〜事前準備〜

## 1. jQueryを導入
rails6では、yarnでjqueryをインストールしてください。
“`:ターミナル
yarn add jquery
“`
次に、webpackerの設定ファイルで、jQueryを管理下に追加す

元記事を表示

Rails7 ライブリロードとSCSS

## はじめに
Rails7を使う上でscss環境とライブリロードが欲しかったので実装した

## 環境
M1 Mac book
VSCode
Ruby 3.1.0
Rails “~> 7.0.2”, “>= 7.0.2.3”
Bundler version 2.3.3

## rails sまで

1. プロジェクトファイルを作成する
`mkdir sample`
2. ファイル内でbundleを初期化
`bundle init`
3. Gemfileを編集する(rubyの#を消してactiveにする)
4. gemのインストール先をローカルに設定
`bundle config set path ‘vendor/bundle’`
5. gemをインストール
`bundle install`
6. 新規Railsアプリケーションの作成
`rails new .`

## sassの導入
`./vendor/bin/bundle add dartsass-rails`
`./vendor/bin/rails dartsass:install`
**上記のコマンド2つでdart-sassを

元記事を表示

GTO Wizardの特定のプリフロップシチュエーションを素早く開きたい

## 概要
– GTO Wizardにおいて、特定のプリフロップスポットを開くまでのボタンクリック回数が多く、復習が困難であるためにLaunchヘルパーを作成した
– 実装容易性を優先し、gemとして[glimmer-dsl-libui](https://github.com/AndyObtiva/glimmer-dsl-libui)を用いた

## 完成物
![スクリーンショット 2022-03-09 12.58.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21406/a0f251cb-da19-6588-a81c-ef0682ada810.png)

## 課題

GTO Wizardにおいて復習をする際
「bb数は20bbを選択して… UTG fold… UTG+1 fold… LJ Raise… HJ fold… BU fold… のレンジは?」
という具合に、ボタン操作をするのが大変億劫であるため、復習機会を逃してしまう

## アプローチ

“`
http

元記事を表示

【Rails】Deviseでログイン機能の実装

# Deviseとは
ログイン機能の実装を簡単にしてくれるRubyのgemの1つ。
今回Railsの学習中に使用したので自分用のメモとしてまとめてみました。

# Devise導入
Gemfileに以下を追記します。

“`ruby:Gemfile
gem ‘devise’
“`

次にbundle installを実行します。

“`
$ bundle install
“`

以下のコマンドでRailsアプリケーションにDeviseを導入します(プロジェクトディレクトリ)。

“`
$ rails g devise:install
“`

# userモデルを作成
Deviseを用いてuserモデルを作成します(プロジェクトディレクトリ)。

“`
$ rails g devise user
“`
マイグレーションファイル(db/migrate/YYYYMMDDhhmmss_devise_create_users.rb)が生成されるので、
他に追加したいカラムがあればここに追記。

追記が完了しましたらマイグレーションを実行します。

“`
$ rake db:mi

元記事を表示

本日のRuby基礎練習問題(22/3/9)

# 本日のRuby基礎練習問題(22/3/9)
**問題**
以下の仕様を満たすメソッドnumを作成しよう。

メソッドの実引数として「1以上の正の整数」を3つ用意し、それぞれを仮引数a,b,c としてnumメソッド内で使用する
第一引数と第二引数は足し算をし、変数abに代入する
第三引数が3以下の場合は変数abを第三引数の値で割り、結果を出力する
第三引数が4以上の場合は変数abを第三引数の値で掛け、結果を出力する
※小数点以下の出力は考慮しなくてよい

“`ruby:qiita.rb
def num(a, b, c)
# ここに条件式を実装する
end

# 呼び出し例
num(1,5,3)
num(1,5,5)
“`

出力例
num(1,5,3) → 2
num(1,5,5) → 30

# 私の回答
“`ruby:qiita.rb
def num(a, b, c)
ab = a + b
if c <= 3 puts ab / c else puts ab * c end end # 呼び出し例 num(1,5,3) num(1,5

元記事を表示

Railsで環境構築

今回Railsの学習中に使用したので自分用のメモとしてまとめてみました。
homebrewやrbenvの設定は終わっている想定です。

# Railsのインストール
以下のコマンドを実行します。
バージョンはプロジェクトに合わせて変更してください。

“`
$ gem install rails -v “5.2.3”
“`

インストールが完了したら以下のコマンドでバージョンを確認してみましょう。

“`
$ rails -v
“`

指定したバージョンが表示されればOKです。

# Railsアプリケーションの作成

Railsアプリケーションを新規作成していきます。
アプリケーションの新規作成には以下のコマンドを使用します。
アプリ名は仮に「sample」とします。

“`
$ rails new sample -d mysql
“`
上記のコマンドは `sample` という名前のRailsアプリケーションを作ります、データベース管理システムは `MySQL` で作ります、ということを意味しています。

# Railsアプリケーションへの移動・立ち上げ

先程作成した

元記事を表示

Rubyで文字列の時間表記を秒数に変換

## やりたいこと
`06:23.19`みたいなものを`383.19`秒のようにする。
2つの地点の通過タイムから区間タイムを計算する。
丸め誤差がでないように浮動小数点はできるだけ使わないようにする。

## 環境

macOS 10.15.7
Ruby 3.1.0

## 使用したメソッド

– String#partition
– 指定した文字を中心に、文字列を3分割して配列に収めるメソッド
– https://docs.ruby-lang.org/ja/latest/method/String/i/partition.html
– String#delete
– 文字列から指定した文字を削除するメソッド
– https://docs.ruby-lang.org/ja/latest/method/String/i/delete.html
– Numeric#modulo
– 除算の余りを返すメソッド
– https://docs.ruby-lang.org/ja/latest/class/Numeric.html#I_–25
– その他
– to_i

元記事を表示

GyazoのURLをマークダウン記法に変換する方法

[![Image from Gyazo](https://i.gyazo.com/6aec15cf2664d810814dfbdd8b44a944.png)](https://gyazo.com/6aec15cf2664d810814dfbdd8b44a944)

元記事を表示

githubで戻る方法

# コミットの取り消し
– 直前のコミットをなかったことにする
“`
git reset –soft HEAD^
“`
– 直前のコミットを取り消し
“`
git reset –hard HEAD^
“`
– コミット後の変更を全部消したい
“`
git reset –hard HEAD
“`
– addを取り消したい
“`
git reset –mixed HEAD
“`
– git resetをなかったことにする
“`
git reset –hard ORIG_HEAD
“`
# reflog
– reflog(参照ログ)とは HEAD やブランチ先端の動きの履歴
各個人のローカルリポジトリに存在
– ブランチの切り替え、新たに加えられた変更のプル、履歴の書き換え、あるいは単なる新規コミットの実行などを記録
git reflog で HEAD の移動履歴を、git reflog <ブランチ名> でそのブランチ先端が指していたコミットの一覧を確認可能
– HEAD@{5}: HEAD の五つ前の状態を示す
“`
$ git reflog
d22bfa

元記事を表示

【初心者向け】Rails開発での注意点

# はじめに
Ruby on Rails チュートリアルでの学習(1ヶ月)を含め、
初めてRailsに触れてから約半年でアプリケーションを開発した結果
色々荒が目立ちすぎだったのでメモとして残しておきます。
指摘は多々ありましたが、クリティカルだと思ったポイントについてピックアップしています。
(なお、自身で気が付くことができずに指摘されたポイントです)

## 自身の来歴(言い訳含む)
工業高校 => 理系大学(情報系)出身。
新卒で就職し、3年程エンジニアとしてJava一辺倒で開発を行う。
過度の残業、過激な追い込みから退職し、病院にお世話になり、
約1年半程、業界無関係のアルバイトでフラフラしてみる。(ブランク)
その後二十代後半で転職し「Ruby on Rails チュートリアル」を1月かけて学習する。
初めてRuby及びRailsに触れてから約半年で社内用に新規アプリケーション開発を実施。

## 開発環境
Windows10 Pro
Hyper-V(Ubuntu 18.04 LTS)
VSCode(Remote–SSHを利用)
Ruby:2.7.3
Rails:6.0.3.

元記事を表示

メソッドを呼び出す時、どんな処理が行われているのか

メソッドを呼び出すとき、どんなことが起きているのか理解するには2つのことを意識しないといけないんです。
➀メソッド探索
➁実際に実行する

それぞれ見ていきましょう
## ➀メソッド探索
メソッド探索とは、その名前の通り、メソッドを探すことです。
それを考える際に、**レシーバ**と**継承チェーン**という言葉が大事です。
例えば“`@books.each“`というコードがあった時、@books がレシーバとなります。呼び出すメソッドが属しているオブジェクトのことをレシーバといいます。
継承チェーンとは親クラスをたどって最終的にBasicObjectクラスまでたどってメソッドがあるかを探すことです。
イメージとしてはこんな感じです
“`
Object
↑superclass
Array
↑superclass
obj → Myclass
“`
objにたいしてメソッドが呼ばれたときにこの矢印の順にメソッドを探していきます。この図にはないですが、最終的にBasicObjectまでメソッドを探していきます。“`Myc

元記事を表示

OTHERカテゴリの最新記事