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

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

日本語化 i18n

# 1.はじめに
– 日本語化対応の手順をメモ

# 2.日本語化実装
### 2−1.i18nのプラグインを確認
“`
$ bundle list
“`
– 一覧を確認して`i18n (1.12.0)`などの記載があればOK
– ない場合は、`Gemfile`に下記を記載
“`:Gemfile
gem ‘rails-i18n’
“`
その後
“`
$ bundle install
“`

### 2−2.config/application.rbに下記を追記
“`:config/application.rb
config.i18n.default_locale = :ja
“`

### 2−3.翻訳用ファイルをgitHubからダウンロード
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml

ダウンロード後`./config/locale/`の配下に入れる。

### 2−4.日本語訳をja.ymlに追加する
“`:./config/locale/ja.yml
ja:

元記事を表示

Ruby timesメソッドで繰り返し処理を行う

# timesメソッド
指定した数値の回数だけ、繰り返し処理を行います。

“`ruby
数値.times do
# 繰り返す処理
end
“`

5回繰り返し処理を行う場合は、5times. do~endとなります。

“`ruby
10.times do |i|
puts i + 1
end
“`

“`
# ターミナル出力
1
2
3
4
5
6
7
8
9
10
“`

|i| これはブロック変数と言います。iは任意の変数です。
##ブロック変数とは、do~endで囲まれた処理のまとまりの言います。

“`ruby
数値.times do |ブロック変数|
# 繰り返す処理
# 繰り返しの回数を使う場合、ブロック変数を使用する
end
“`

# timesメソッドを使って繰り返し処理を行う

timesメソッドを使って、1~100の数字を足し合わせていくための、コードを考えてみる。

“`ruby
sum = 0
100.times do |i|
sum += i + 1
end
puts sum
“`

“`
5050
# ターミナ

元記事を表示

【Rails】Rakeタスク「task xxx: :environment do」の意味

# 結論

`environmentタスク` → `xxxタスク(実行する処理)`の順に処理が実行される。

“`rb
task xxx: :environment do
実行する処理
end
“`

# 仕組み

– taskの引数にはハッシュが渡っており、key-value相当(`{ xxx: environment }`)の関係にある。
– rakeが提供する`Prerequisites`機能によって、valueのタスクを事前に実行できる。
– Hashリテラルのため、以下のように書いても動作する。

“`rb
task :xxx => :environment do
実行する処理
end

task xxx: [:environment] do
実行する処理
end
“`

# environmentタスク呼び出しの流れ

“`
railties/lib/rails/application.rb
run_tasks_blocks 呼び出し

task :environment を実行

require_environm

元記事を表示

Rubyのoptparseを使ってCLIアプリを作成した

## 作成したもの

“`bash:引数ありでcalendar.rbを実行する
ruby calendar -m 6
“`

指定した月のカレンダーを表示します。

![スクリーンショット 2023-01-31 午前6.45.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569408/d603b086-e6fc-2a17-eaf1-af492d48ed55.png)

## optparseの使用方法の例

“`ruby:calendar.rb
require ‘optparse’

opt = OptionParser.new
opt.on(‘-m [VAL]’) do |month|
current_month = month
end
opt.parse!(ARGV)
“`

1. OptionParser オブジェクト opt を生成する。
2. オプションを取り扱うブロックを opt に登録する。
3. opt.parse(ARGV) でコマンドラインを実際に parse する

元記事を表示

Rails 7 (api モード)+MySQL 8.0.16のDocker環境構築手順

# はじめに
Ruby on Rails の開発に触れてもう5年近く経ちます。
そこで今の私ならRails の新規構築はこうするというので記事をまとめました。
試しにRuby on Rails の環境構築をしてみたいという方がいたら参考になれば幸いです。

# 余談
本記事で作成した環境を使って、
– rootless コンテナ設定
– 初期構築で使うライブラリ(Gem)の追加
– GraphQL の導入
– GraphQLを使ったAPI の作成
– フロント側の環境構築 (React.js)
– フロントと、APIの疎通確認

の記事を書いていこうと思います。(記事を書いたらリンクとして編集していく予定です:bow:)
気になる方がいたらLGTM or ストックお願いしますー。そこで通知が来ると思いますmm

# 環境
– Ruby
– 3.1.2
– Ruby on Rails
– 7.0.4
– MySQL
– 8.0.16
– MacOS(Monterey)
– 12.5.1

# How-to

## 1. 必要なファイルを作成

“`bash
$ t

元記事を表示

Ruby on Rails7の開発環境構築(PostgreSQL版)

# 概要

※当記事は所属している[株式会社コンピュータテクノブレイン](https://computer-tb.co.jp/2022/05/20/%e3%80%90%e6%8a%80%e8%a1%93%e3%83%96%e3%83%ad%e3%82%b0%e3%80%91ruby-on-rails7%e3%81%ae%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%ef%bc%88postgresql%e7%89%88%ef%bc%89/)にて投稿した内容を転載したものです。

`Ruby on Rails 7`の`Docker`を使用した開発環境の構築についての手順を紹介します。

あまり`PostgreSQL`を使用した例がなかったため`PostgreSQL`を使用した環境を構築してみようと思います。

# 構成

2022年5月18日時点での環境を示します。

– macOS Monterey 12.3.1
– Docker 20.10.14
– Docker Compose v2.5.1
– Ruby 3.1.2

元記事を表示

【Rails】【Ajax】コメント投稿・削除を非同期通信化する。

# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

# 前提
Railsにて投稿アプリケーションを作成のち、投稿に対して、コメントできる機能実装済み。
今回は離乳食を投稿するアプリケーションで実装しています。

# 目標
### コメント機能が非同期で行えるようにする
[![Image from Gyazo](https://i.gyazo.com/77a19537f3913ba1aae0c363e79f5193.gif)](https://gyazo.com/77a19537f3913ba1aae0c363e79f5193)

# 手順
①jQueryの導入
②コメント表示部分を部分テンプレート化
③投稿機能の非同期化
④削除機能の非同期化

# ①jQueryの導入
“`text.Gemfile
———略———
gem

元記事を表示

Railsバージョンアップにおける変更PRの特定の仕方

## 本記事について
Railsに特化して書いているが汎用的ではある。
CHANGELOG.mdなファイルに全部載ってたら楽だが、全てのライブラリがそうではない。
じゃあどうやって調べるのかという話。

## 環境
ruby 2.7.5
Rails 6.1.7.1

## 本記事の題材

“`.rb
Rails 6.1の場合
[1] pry(main)> Time.current
=> Tue, 31 Jan 2023 10:12:36.749685920 JST +09:00

Rails 6.0の場合
[1] pry(main)> Time.current
=> Tue, 31 Jan 2023 10:06:14 JST +09:00
“`

Time.current.class
=> ActiveSupport::TimeWithZone

なため、ここに変更があったのかなと予想できる

ナノ秒出力されるようになってる!

## 調べ方1 変更が加わったバージョンを特定し、Releasesで確認

https://github.com/rails/rails/releases

元記事を表示

“Hello World”

初めまして、774(ななし)です。
Qiitaへ初めての投稿になります。

自己紹介をしますと、
・ねこ好き。?‍⬛
・ゲームもめちゃくちゃ好き。
・パートで接客業(手取り13万円)
・3月末でパートを辞めて、IT企業へ転職予定

目標
・プログラミングで1,000万稼ぐ
・AR/VR等の開発をする

プログラミングは最初かなり大変らしいですが、技術が積み上がって行くほど楽になるので、最初を頑張って乗り換えていきたいです。

目標の1,000万円稼ぐというのは、プログラミングなら手が届く範囲だと聞いたので、夢は大きくという事で設定しました。

XR事業に携わりたいのは、ゲーム好きからですね。
あと単純に最新技術はワクワクする!
なので先ずはrubyから独学しようと思います。

既にプログラマーとしてる方
つまづいた時、知恵を貸していただけるとありがたいです。

初心者の方でもお互い切磋琢磨できればと思います。

少しでも興味を持って下さった方がいましたら、Twitterで絡みませんか?
色々話すのを楽しみにしてます!

最後まで読んで下さりありがとうございます。

元記事を表示

Railsのタスクを定義する

Ruby on Railsアプリケーションを開発で定型の操作を繰り返すときは、タスクを定義すると便利です。

## 前提条件

あるRailsアプリケーションでは、ファイルアップロードジョブの途中で例外がおきたとき、処理途中のファイルやレコードが残ります。このため、開発の途中でしばしば次のコマンドを実行して、ゴミ掃除をしています。

“`sh
bin/rails runner ‘Job.destroy_all’
rm -rf tmp/upload-*
“`

## テンプレートの作成

今回はこのコマンドをRailsのタスクにしてみたいと思います。
Railsのタスクの実体はlibディレクトリ配下にあるRakeタスクです。
テンプレートをRailsのジェネレートコマンドで作ることが出来ます。

まず、最初にどのようなコマンドで、実行できると良いか考えてみましょう。
ジョブのゴミ掃除なので、`job:clean`が良いと思います。
完成したら次のように実行するイメージです。

“`sh
bin/rails job:clean
“`

タスク名がきまったらジェネレートコマンドでテン

元記事を表示

【Rails】(デプロイ初心者)Capistranoを使ってEC2に自動デプロイしたときに発生したエラーと対処法

AWS環境に自動デプロイというのを自分で1からやってみたくなったので、`Capistrano`を使ってEC2にRailsアプリをデプロイしました。
「ググって出てきた簡単な使い方通りに進め、1通り手順とかイメージ掴めればいいかな〜」くらいの気持ちでやったのですが、エラーがかなり出て勉強になったので対応と合わせてまとめておきます。

## 基本的に参考にしたサイト
https://github.com/capistrano/capistrano
https://github.com/capistrano/rails
[【Rails】 AWSのEC2にデプロイする方法~画像で丁寧に解説!](https://pikawaka.com/rails/ec2_deploy)
[【Rails】 Capistranoを使ってデプロイを自動化しよう](https://pikawaka.com/rails/capistrano)
## あらかじめお伝え

– エラーメッセージの深掘りができていない点が多々あります
※今回の私の目標は「Capistranoを使って自動デプロイの手順を1通り経験すること」であ

元記事を表示

decimal と int の違いってなんや?

# 目次

1. [はじめに](#はじめに)
2. [結論](#結論)
3. [データ型種類一覧](#データ型種類一覧)
4. [integer と bigint の違い](#integer-と-bigint-の違い)
5. [decimal と numeric の違い](#decimal-と-numeric-の違い)
6. [参考URL](#参考url)

## はじめに

Rails の開発でテーブル作成時に decimal と int を使い分けている PR を見かけたので、dicimal と int の違いについて調べてみました。
間違いあったらご指摘ください ?

## 結論

decimal は固定長整数型, integer は整数型(4 バイト)
decimal は、全体の桁数-精度(precision)と小数点以下の桁数(scale)を指定された浮動小数点データに対し、
integer は、整数だ!!!!

## データ型種類一覧

| データ型 | 種類

元記事を表示

Ruby8

問題
次のif文をunlessというメソッドを用いて書き換えてください。

“`Ruby
if a + b > 0
puts “計算結果は0より大きいです”
end
“`

?ヒント?
unless
unlessとはifとは逆で、条件式がfalseの場合に処理が実行されます。

“`Ruby:ifの場合
if 条件式
条件式がtrueの時に実行する処理
else
条件式がfalseの時に実行する処理
end
“`

“`Ruby:unlessの場合
unless 条件式
条件式がfalseの時に実行する処理
else
条件式がtrueの時に実行する処理
end
“`

“`Ruby:模範解答
unless a + b <= 0 puts "計算結果は0より大きいです" end ``` 【解説】 a + b > 0という式は、「a + b が0より大きいとき」にtrueとなります。
その結果endまでの処理が実行され文字列が表示されます。

“`Ruby
if a + b > 0
puts “計算

元記事を表示

[Ruby] ifとunlessの考え方の違い

ifとunlessの違いがわかっていませんでしたので、自分なりに纏めてみました。

“`ruby
#if ~ end
if A == B
puts C
end
#unless ~ end
unless A == B
puts C
end
“`
どちらもtrueで処理が実行されていくのは一緒です。
ですが、trueになる条件が違います。

①ifの場合、真がtrueとなり、処理が実行される。
“`ruby
#if ~ end
if A == B
puts C
end
“`
②unlessの場合、偽がtrueとなり、処理が実行される。
“`ruby
#unless ~ end
unless A == B
puts C
end
“`
勘違いしやすいですが、処理される条件を理解してメソッドを使用しましょう。

 

元記事を表示

【Rails】制限時間機能を実装してみた。(解説付き)

## 1.バージョンを確認しましょう!

Rails 5.1.6
ruby 2.7.2p112

## 2.完成イメージ

投稿に制限時間を設定し、何かしらの処理をつける機能です。
今回は **「投稿(タスク)を設定し、制限時間を超えると通知が来る機能」** を実装する準備段階です。

## 3.実装の大きな流れ

>1.投稿モデル(Tweet)に、制限時間を保存するカラムを追加する。
>2.投稿を保存するときに、制限時間と現在時刻を比較して、制限時間が過ぎていないかをチェックするアルゴリズムを記入する。
>3.制限時間が過ぎている場合はエラーを返し、投稿を保存しない設定を仕込む。

ちなみに本記事はこのような目次で進んで行きます!
一緒に楽しんでいきましょう ᕙ( ˙꒳​˙ )ᕗ

## 4. モデルに、制限時間を保存するカラムを追加しよう。

“`ターミナル
$ rails generate migration AddLimitTimeToTweets limit_time:datetime
$ rails db:migrate
“`

tweetsテーブルに、**limit_

元記事を表示

macOS に rvm をインストールする

macOS に `rvm` (Ruby Version Manager) のインストール方法を記述します。
※ `rvm` とは、`ruby` バージョンの切り替えソフトウェアです。

## 環境

– macOS Ventura バージョン 13.1

## Install GPG keys

– `GPG` (GNU Privacy Guard) パッケージのインストールします。

“`sh
brew install gpg
“`

– `rvm` インストールパッケージの検証に使用する `GPG` キーをインストールします。

“`sh
gpg –keyserver keyserver.ubuntu.com –recv-key 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
“`

※ [公式ページ](https://rvm.io/rvm/install) に書いてあるコマンドを使うとエラーになります。
`gpg: 鍵サーバからの受信に失敗しました: S

元記事を表示

Ruby if文, unless文についてまとめました2

こちらの続きとして書きます。

https://qiita.com/ta–i/items/a16aa2780e3849b21338

# 条件分岐処理
ifからunlessに書き換える例を3つ挙げてみました。

## ifからunlessに書き換える例1

“`ruby
if 100 == 10
puts “同じ数字です”
else
puts “違う数字です”
end
“`

上記if文をunless文で書き換えると次のようになります。

“`ruby
unless 100 == 10
puts “違う数字です”
else
puts “同じ数字です”
end
“`

## ifからunlessに書き換える例2

“`ruby
if 100 + 10 > 0
puts “0より大きい数字です”
else
puts “0より小さい数字です”
end
“`

上記if文をunless文で書き換えると次のようになります。

“`ruby
unless 100 + 10 <= 0 puts "0より大きい数字です" else puts "0より

元記事を表示

Ruby if文, unless文についてまとめました1

# 条件分岐処理

## if文
「もし〇〇だったら□□をする」という処理をします。

“`ruby
if 条件式
処理1(条件式がtrueのときに実行)
else
処理2(条件式がfalseのときに実行)
end
“`
if文は、条件式が「正しい」か「正しくないか」で実行する処理を分岐させています。
***「正しい」 = true***
***「正しくないか」 = false***
条件式が正しい(true)なら、処理1を実行。
条件式が正しくない(false)なら、処理2を実行。

## unless文
「もし〇〇だったら□□をする」という処理をします。
unless文はif文と反対で、条件式が「偽(false)」の時に処理が実行されます。
unless文にelsif を指定することはできないです。

公式リファレンスを参考にしました。
https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#unless

“`ruby
unless 条件式
処理1(条件式がfal

元記事を表示

M1 Macでrbenv install 3.2.0を実行するとBUILD FAILEDがでる問題と解消方法

## 忙しい人向け

rbenvでruby 3.2.0のビルドエラーに詰まった場合は以下を実行する。

“`sh
brew install libyaml
rbenv install 3.2.0
“`

## 動作確認環境

* M1 Max MacBook Pro 2021
* macOS Ventura 13.1

“`sh
$ sw_vers
ProductName: macOS
ProductVersion: 13.1
BuildVersion: 22C65
“`

## 事象

M1 Macにて、 `rbenv install 3.2.0` を実行するとビルドエラーが発生した。

“`sh
$ rbenv install 3.2.0
To follow progress, use ‘tail -f /var/folders/tm/b75vw5997ld_vk72x2lm2qcd_jcwqg/T/ruby-build.20230130113635.15578.log’ or pass –verbose
Do

元記事を表示

いいね機能の非同期化

# 1.非同期機能とは
– 画面全体を更新せずに、一部だけ更新すること
– Ajaxという手法が使用されます。

# 2.実装
### 2−1.リンクに`remote: true`を追記する
– これにより、リクエストがhtml形式からjs形式になる
“`:app/views/posts/show.html.erb
<% if current_user && @post.favorited_by?(current_user) %>
<%= link_to post_favorites_path(@post), method: :delete, remote: true, class: "favorite_btn" do %>
♥<%= @post.favorites.count %> いいね
<% end %>
<% else %>
<%= link_to post_favorites_path(@post), method: :post, remote: true, class: "favorite_btn" do %> #ここ
♡<%= @post.favor

元記事を表示

OTHERカテゴリの最新記事