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

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

Renderからメールが来たため翻訳してみた

# Renderからメールが来た
英文だったため、Googleの翻訳機能を利用してどんな内容だったか書き留めておこうと思います。

“`
Hi there,
Your free plan database, xxxx_production, has been suspended. Your database will be inaccessible unless you upgrade to a paid plan.
If you don’t wish to upgrade to a paid plan, your database and all backups will be deleted in 14 days, please make sure to backup your data prior to this.
You can read more about free plan databases in our docs.
If you have questions, feel free to reply to this email and we’ll get back

元記事を表示

Ruby インスタンスを生成してプログラムを作成

# インスタンスの生成を行ってプログラムをつくる

ターミナルで、以下のように出力されるようプログラムを作っていきます。

“`ruby
採れたて新鮮な果実です
リンゴは120円です
オレンジは200円です
イチゴは60円です
# ターミナル
“`

“`ruby
class Fruit

def self.fresh
puts “採れたて新鮮な果実です”
end

def initialize(name, price)
@name = name
@price = price
end

def introduce
puts “#{@name}は#{@price}円です”
end
end

apple = Fruit.new(“リンゴ”, 120)
orange = Fruit.new(“オレンジ”, 200)
strawberry = Fruit.new(“イチゴ”, 60)

Fruit.fresh
apple.introduce
orange.introduce
strawberry.i

元記事を表示

簡単!WSL2でRails6(Ruby3系)の環境を構築してVSCodeからrails newするまでのTips♪

# はじめに
こんにちは~~
本当は昨年の [DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor) :christmas_tree: の最終日に当日ギリギリで滑り込む予定でしたが、諸事情 ~~怠惰~~ があって2ヶ月経ってしまった @Keichan_15 が執筆する25日目最終日…そんな記事です(笑)今までの記事よりもボリューミーで濃い内容に仕上げました。温かい目で見てね:v:

最近受講生さん対応をしていると、Cloud9の調子が悪いんですよね~~ってお話をよく聞きます。どうやら東京リージョンのリソースが枯渇してるっぽい…?障害情報は過去分を漁っているのですが、ちと見当たらず…。軒並み東京リージョンで環境構築した方は頭を悩ませていることでしょう。

https://health.aws.amazon.com/health/status

そんなこんなの状態で `rails new` してCloud9で開発を始めると「重すぎてCloud9動かせませ

元記事を表示

RSpec::Expectations::ExpectationNotMetError:

# はじめに

rspecでのテスト中に`RSpec::Expectations::ExpectationNotMetError: `のエラーが
発生しました。
めちゃくちゃ凡ミスでした。二度としないように備忘録に残しておきます!!!

※`Rspec`、`FactoryBot`は導入済みの状態で始まります。

# エラー紹介
~~~
bundle exec rspec spec/models/item_spec.rb
~~~
実行時に

~~~ruby
RSpec::Expectations::ExpectationNotMetError: expected # to be valid, but got

元記事を表示

Active Storageを使った画像アップロード

# はじめに

Rails勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。

# Railsガイド

https://railsguides.jp/active_storage_overview.html#active-storage%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

# Railsでの画像アップロード

代表的な方法として下記2つのパターンがあるが、1について記載する。
Rails5.1までは`carrierwave`という`Gem`のインストールが一般的であったが、
Rails5.2以降は`Active storage`という便利機能が追加されたため、新たな`Gem`のインストールは不要となった。

1. `Active Storage`と`image_processing`を使用する
2. `carrierwave`と`mini_magic`を使用する

# Active Storageとは

元記事を表示

Ruby timesメソッドを使った繰り返し処理を行うプログラムを書く

# 繰り返し処理を行うプログラムの作成

– ユーザーに数字を入力してもらい、その数の回数だけHello world!と表示させるコードを記述します。

“`ruby
def output(num)
num.times do
puts “Hello world!”
end
end

puts “何回表示させますか?”
num = gets.to_i
output(num)
“`

## 解説

– メソッド外の部分
“`ruby
puts “何回表示させますか?”
num = gets.to_i
output(num)
“`
上記コードは、ファイルを実行したときにターミナルで出力される内容を書いています。
ユーザーに数字を入力させることで、「Hello world!」が何回表示されるのかを実行するためです。
getsメソッドで入力した値は、全て***文字列***で返します。
そのため、***.to_i***を付けて数値に変換させます。

– output(num)
ユーザーが入力した数値を、メソッド内で呼び出したいため、numという引数を使います。

– out

元記事を表示

Ruby on Rails初心者の学習記録 Part5:復習

# はじめに
Ruby on Rails初心者の学習記録Part5です。
今までRubyの基礎文法から始まり、RailsにおけるMVCやCRUDについて学んできました。
今回は、[“Getting Started with Rails”](https://guides.rubyonrails.org/getting_started.html) の [“8 Adding a Second Model”](https://guides.rubyonrails.org/getting_started.html#adding-a-second-model) を教材にコメント機能の実装を通して、今まで学んできたことを復習します。

# 1. モデルの作成
[Part2](https://qiita.com/Yasushi-Mo/items/5dfe81d39b5a153fe43c#2-%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90)で記事データを扱うために作成した`Article`モデルのようにコメントデータを扱う`Comment`モ

元記事を表示

【初心者の備忘録】rbenvとRuby3.2のインストールについて

備忘録として記載しています。

Rubyは(というかプログラミングはほぼ)初心者で、四苦八苦しながらインストールしています。

聞き慣れない「rbenv」とは何かまとめます。

# rbenvとは

[こちら](https://valed.press/programming-learning/how-to-install-ruby-with-rbenv/#:~:text=rbenv%E3%81%A8%E3%81%AFruby%E3%81%AE,%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)によると、複数のrubyのバージョンを管理するものだそうです。読みは「アールビーエンブ」で良さそうです。
別に複数のバージョンを管理したいわけでないですが、一般的なもののようなので、こちらを使います。

# rbenvにてインストールできるRubyのバージョン確認

恒例クリスマスにリリースされたRuby3.2をr

元記事を表示

Rails7の環境構築 (Docker, Bootstrap)

普段はC言語を触っていますが、
ちょっと別の案件でRailsやらDockerやらを触る必要があったので備忘録的に書いてみます。

### 参考にした記事
* [Docker + Rails7 + bootstrap5](https://qiita.com/mkt1234/items/b852eeeb213e46702236)
* [Ruby on Rails 7 with Bootstrap on Docker Compose 開発環境を簡単に構築する方法](https://qiita.com/normalsalt/items/8bf6c5010c9e9f127582)

## 開発環境構築
### ディレクトリを作成
“`
mkdir rails
cd rails
“`

### 各種設定ファイルを作成
以下のファイルを作成する。
##### Dockerfile
いろいろ試してみたが、上手くいかなかったので[こちら](https://qiita.com/mkt1234/items/b852eeeb213e46702236)のDockerfileを参考にさせていただいた。

元記事を表示

Search Console API と Ruby on Rails

# はじめに

昔つくったプログラムを思い出に残しておきます。
最新の情報ではありません。

Search Consoleからオーガニック流入キーワードを確認できるが、DBに取り込むバッチプログラムを作成し分析できるデータを保存する。Search ConsoleではAPIが用意されているためそれを毎日実行し、必要な情報を取得する。

# Search Console API

## API 有効化

1. [https://console.cloud.google.com/getting-started?hl=ja&pli=1](https://console.cloud.google.com/getting-started?hl=ja&pli=1) ログインする
2. プロジェクト内で左のバーの中にある「IAMと管理」の「サービスアカウント」という項目を選択
3. 「サービスアカウントを作成」を選択し、必要事項を記入します。
4. サービスアカウントの権限を設定します。Google Search Consoleを転送元として用いるために必要な権限は特にありません
5. 「ユーザーにこ

元記事を表示

Dart Sass + cssbundling-rails から dartsass-rails に移行した

## はじめに

以前書いた記事で、 Webpacker から importmap-rails + Propshaft + cssbundling-rails への移行で実施したことを紹介した。

https://qiita.com/mishina2228/items/d4b9af22d0096ee451d7

このときは [Dart Sass](https://github.com/sass/dart-sass) を使っていたため、 Node.js が必要な状態だったが、 dartsass-rails はバイナリファイルをラップしているため、これを使えば `package.json` を使った JavaScript パッケージのバージョン管理や、肥大化する node_module ディレクトリから解放されるかも!と思い移行してみた。

https://github.com/rails/dartsass-rails

https://techracho.bpsinc.jp/hachi8833/2022_03_02/116014

**しかし、結論から言うと相変わらず Node.js は

元記事を表示

開発中のDeviseをインストールしてRails 7.0 (Hotwire/Turbo)のテストに協力する

## はじめに
Rails 7.0が2021年の暮れにリリースされて以降、Deviseは長らくRails 7.0(というか、Hotwire/Turbo)に完全対応していない状態が続いていました。ですが、ようやくDeviseのコミッタさんがRails 7.0対応に向けたプルリクエストを作ってくれました。

https://github.com/heartcombo/devise/pull/5548/

2023年2月4日現在、このプルリクエストの変更内容をテストしてくれるボランティアを募集しているようです。

もし、rails/ujsではなく、Hotwire/Turboを使っているRails 7.0にDeviseを組み込んでいる(もしくはこれから組み込もうとしている)人は、以下の手順に従って開発中のDeviseをテストしてみてください。

### 参考:僕もテストしてみた

ちなみに僕も動作確認用の簡単なRailsアプリを作って動作確認しました。

https://git

元記事を表示

自動販売機をRubyで作成して学んだこと

## むやみにattr_accessorをpublicに定義するのは好ましくない

外部から書き換えられても良いものには `attr_accessor`を利用する。
それ以外は`attr_reader`を使用する

## 同じ処理は共通化する

“`diff_ruby: vending_machine.rb
– # ペプシを購入するリクエスト
– def request_purchase_pepsi(suica)
– if suica.deposit >= @pepsi.price
– @earning += @pepsi.price
– suica.purchased(@pepsi.price)
– @pepsi.stock -= 1
– else
– puts ‘カードの残高が足りません。’
– end
– end
– # モンスターを購入するリクエスト
– def request_purchase_monster(suica)
– if suica.deposit >= @monster.price

元記事を表示

rbenvをシステム全体で利用できるようにする + Ruby 3をruby-buildでビルド on AlmaLinux 9

rbenvをユーザー毎ではなく、システム全体で共有して利用できるようにします。

* この記事は[旧記事](https://qiita.com/h-izumi/items/ca2c417fc09c092eb084)の改版です

# 前提
* 事前にgitを使用可能にしておく
* rbenv関連の書き込み権限を持つグループとして`rbnev`グループを作成、必要なユーザーを所属させる

### 環境
* AlmaLinux 9で確認しています

# rbenvインストール

## rbenvを操作できるグループを追加
“`shell-session
$ sudo groupadd rbenv
“`

### 追加したグループにユーザを追加
“`shell-session
$ sudo gpasswd -a USERNAME rbenv
“`

## rbenv用のディレクトリを作成

“`shell-session
$ sudo mkdir /usr/local/rbenv
“`

### ディレクトリの所有者(グループ)を変更
“`shell-session
$ sudo

元記事を表示

【Ruby】チンチロをリファクタリングと機能追加してみた。

# チンチロプログラムのリファクタリングをしました。
[先日作成したチンチロプログラム](https://qiita.com/mocchi32/items/81176e875b133f7a3c64)のリファクタリングを行いました。

前回作成時点では、
「モノは動くけどクラス定義やメソッドがこれでいいのか、全然わかんない!」状態でした。

現在通っているプログラミングスクール講師の方にコードレビューをしていただき、
特に正しいクラス定義、メソッド定義の仕方について理解した上で実装できるようになりました。

リファクタリング前後のコードを見比べると明らかに分かりやすく、かつ
保守性の高いコードになったかなと思います。

やっぱり他の人に見てもらうって大事ですねえ。感謝。

# 機能追加
機能追加しました。
① プレイヤー人数設定(2~4人)
② ゲーム終了判定
③ 賭け金の入力制限

リファクタリング後に機能追加したのですが、
「嗚呼!これがオブジェクト指向かっ!!」と、その保守性の高さを身をもって経験できました?

## main.rb
“`ruby:
# チンチロ for 2~4p

元記事を表示

Ruby if, else問題

# if文を使った条件分岐
以下の条件を満たすようプログラムを作成する。

– 条件1:第一引数のnumが1以上かつ10以下の範囲であればTrueを出力すること
– 条件2:第二引数のoutside_modeがTrueの場合は、第一引数numが条件範囲外でもTrueを出力すること
– 条件3:それ以外はFalseを出力すること

“`ruby
def in1to10(num, outside_mode)
if (num >= 1 && num <= 10) || outside_mode puts "True" else puts "False" end end # 呼び出し例 in1to10(5,false) in1to10(11,false) in1to10(11,true) ``` ```ruby True False True # ターミナル出力 ``` 複数の条件がある場合は、***論理演算子***を使って記述を行います。 ## 論理演算子とは 「真(true)」と「偽(false)」の確認を行う時に使われる演算子(記号)をのこと。 複数の条

元記事を表示

[Rails] コメント機能実装

# はじめに
コメント機能を実装するための忘備録です。
Userモデル、Articleモデル(Postモデルと同じ)は作成済みで行っています。
# 実行環境
– Rails 7.0.4.1
– Ruby 3.0.4
– Devise 4.8.1

# 実装
### 1. アソシエーション
![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118527/42b97f6f-d233-1379-c1f6-ceeef6e8826c.png)
articlesテーブルとcommentsテーブルを1対多でつなぎ、comment_contentのレコードを追加していくだけでコメントを残すことは出来そうですが、
今回は、***誰がコメントを追加したか***まで実装したいため、articlesテーブルだけでなく、usersテーブルもcommentsテーブルにつなげます。

この場合、usersテーブルとariticlesテーブルは***多対多***の関係になっており、commentsテーブルはそれを実現させ

元記事を表示

Ruby3.2.0-devのインストール時にrequire bison 3.0と出てインストールできない時の対処法

rbenvを利用してruby3.2.0-devのインストールを試みたところ、bisonのversionが低いというコンパイラ関連のエラーで躓いてしまいました。
同じ問題でインストールできない方のお役に少しでも立てたらと思い、解決までのプロセスを共有します。

# 3.2.0-devのインストールの準備
[ruby-buildの公式ページ](https://github.com/rbenv/ruby-build/wiki#suggested-build-environment)にて3.2.0-devのインストールに必要な手順を確認し、下記のとおり実行。
1. openssl@3及び関連ライブラリのインストール
`brew install openssl@3 readline libyaml gmp`
2. opensslコンパイルのための環境変数を.zshrcに設定(`source ~/.zshrc`をお忘れなく)
`export RUBY_CONFIGURE_OPTS=”–with-openssl-dir=$(brew –prefix openssl@3)”`
3. [YJIT](

元記事を表示

Ruby3.1.2のインストール時にNothing to be done for `_build_programs’と出てインストールできない時の対処法

rbenvを利用してruby3.1.2のインストールを試みたところ、opensslのコンパイル関連のエラーで躓いてしまいました。
同じ問題でインストールできない方のお役に少しでも立てたらと思い、解決までのプロセスを共有します。

# エラー内容

ruby3.1.2をinstallしようとしたところ下記のエラーが発生。
“`
$ rbenv install 3.1.2
Downloading openssl-1.1.1n.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a
Installing openssl-1.1.1n…
~/.rbenv/plugins/ruby-build/bin/ruby-build: line 1127: ~/.rbenv/versions/3.1.2/openssl/ssl/cert.pem: No such file or directory

BUILD FAILED (

元記事を表示

配列の正規化でArray()を使うな!

2023年2月某日、Twitterが氷河期になりTLが荒れ狂う最中、私は一つのコードに苛まされていた。
配列の正規化を行うため、以下のコードを実行したところ、

“`rb
fp = File.new(“hoge.mp4”)
Array(fp)

=> [“謎のデータ配列”] # [fp] が帰ってくる予定だった
“`

**は????????**

## 配列の正規化とは

配列またはObject、いずれかの値がやってくる場合に、
配列または[ Object ]、に変換しその後の処理を簡潔にするためのテクニックのこと

たとえば

“`rb
def hoge(file_or_files)
# ↓ ここが配列の正規化
files = file_or_files.is_a?(Array) ? file_or_files : [file_or_files]

files.each do |file|
# 個々のファイルに対して処理をする

end
end
“`

のように書くと、引数の形式をそこまで気にせずに良くなるってヤツ

自分が確認し

元記事を表示

OTHERカテゴリの最新記事