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

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

Python と Java と Go と Node.js と PHP と Rupy のサポート状況について (2023.10)

オープンソース系のプログラム言語のセキュリティサポートの期限をまとめました。他の方の参考になれば幸いです。

# Python のサポート状況

サポートが有効な Python のバージョンは **Python 3.8, 3.9, 3.10, 3.11, 3.12** です。
3.8 は1年以内にサポート終了の予定です。

|バージョン系列|最新バージョン|リリース日|バグ修正の対応期間|セキュリティ修正の対応期間|
|—|—|—|—|—|
|**Python 3.12**|3.12.0|[2023年10月2日](https://peps.python.org/pep-0693/)|[**サポート内**](https://peps.python.org/pep-0693/#bugfix-releases)|[**2028年10月**](https://peps.python.org/pep-0693/#lifespan)|
|**Python 3.11**|3.11.6|[2022年10月24日](https://peps.python.org/pep-0664/#

元記事を表示

【Rails】PDFを登録できるようにする

# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。
※@tohonozo(とほ のぞ)さんの記事を参考に作成しました。
 とても分かりやすく参考になりました。
 ありがとうございます。

# PDFを保存したい
今回、私が作成しているアプリケーションでPDFを保存できるようにしたかったのでやってみました。
Active Sorageなどで画像の保存はやったことはありましたが、PDF保存は初めてでした。
いろんなところで躓いたので、この記事にまとめておこうと思います。

# Let’s start!!!
## 最初にCloudinaryに登録
このリンクから登録をはじめましょう。

https://cloudinary.com/

右上のsign up for freeを押すと、登録画面に飛びます。

## PDFファイルを投稿するために簡単なアプリを作成
今回はItemモデルを使用します。

### モデルとコントローラーを作成
`$ rails g model item`
`$ rails g controll

元記事を表示

GooglePlacesAPIで取得したデータをデータベースへ保存する

# 初めに
初めまして。チータ(@cheetag_02)と申します。
個人開発をするにあたって、GooglePlacesAPIから取得したデータをデータベースに保存することがあったので、同じような状況の方のために、記録として残します。

# テーブルの作成
まず、取得したデータを保存するテーブルを作成します。
GooglePlacesAPIから取得できるデータは、一部ですが記事にまとめたのでこちらをご覧ください。
[Google Places APIを使用して情報を取得(Rails)](https://qiita.com/cheetah_02/items/d7c62be909ac4edca5d2)

テーブルの作成(マイグレーションファイル)
“` ruby:2023083120000_create_shops.rb
class CreateShops < ActiveRecord::Migration[7.0] def change create_table :shops do |t| t.string :name, null: false #店名

元記事を表示

Windows11でRubyをインストール

Windows11(64ビット版)にRuby3.1系をインストールする手順を記録します(2023年10月)。

## RubyInstaller のダウンロード
RubyInstallerの公式サイト[「RubyInstaller for Windows」](https://rubyinstaller.org/)にアクセスし、「Download」をクリックする。

スクリーンショット (22).jpg

ページ内の「WITH DEVKIT」の下にある「Ruby+Devkit3.1.4-1(64x)」のリンクをクリックしてインストーラーをダウンロードする(「Devkit d.d.d-d」のd.d.d-dの部分はセマンティックバージョニングの形式でRubyのバージョン番号を表す)。

Ruby 「?」と「:」を使った条件演算子

スクールのテキストの中の問題で
“`
score = 50
battle = score < 70 ? "勝ち" : "負け" p battle ``` の結果を考えましょう、というのがあった。 何これ、「?」とか「:」とか、知らん知らん知らん。。。 調べてみると、伊藤淳一さんの本にバッチリ同じようなものが載っていた! ### [ 式 ? 真だった場合の処理 : 偽だった場合の処理 ] とのこと。 なので、上記コードでbattle部分への代入箇所を除くと、下記コードのようにも書き換えられる、とのこと。 ``` score = 50 if score < 70 "勝ち" else  "負け" end ``` おぉーそうなんだ、なるほど! なので、今回は、50<70、は正しく、true、で真だった場合の処理にあたるので、 ``` score < 70 ? "勝ち" : "負け" ``` は、「勝ち」となり、 変数battleには、「勝ち」が代入される!! ちなみに、ifを用いた書き方とどちらを使用した方が良いかの判断は、コードの可読性を考慮してその時々によって使い分けると

元記事を表示

「ChatGPT(有料) vs Bing Chat(無料)」今話題のAIを検証してみた!

# 概要
皆さんは“ChatGPT“についてはご存知だと思いますが、最近話題のAIベースの検索エンジン“「Bing Chat」“についてご存知でしょうか??
どちらもすごく高性能なAIで、“ChatGPT“は“チャット bot“、“Bing Chat“は“検索エンジン“と名称や性能が若干違います。
今回は“ChatGPT“と“Bing Chat“のメリット、デメリット、得意、不得意を検証してみました!

:::note warn
私は初学者のため、間違った情報があればコメントなどで教えていただけると幸いです。
GPT-3.5に関しては~~個人的に嫌い~~なので検証しません。
:::

## Bing Chatとは?
BingはMicrosoftが作った検索エンジンです。
BingAIはChatGPT同様、対話型AIとして、雑談や質問に答えたり、創作物の執筆やプログラミングを手伝ったりなどができます。

また、画像生成AIとして、ユーザーのリクエストに応じて画像を作成したり、既存の画像を加工したりなども可能です。

## 検証1
どちらも画像を送る機能が

元記事を表示

[Rails]あなたのコードを半分にできるかもしれない?? 知って得するnil制御 ~presence編~

## 伝えたいこと
:::note info
ボッチ演算子はすごい
presenceはすごい
:::

## ~第1章~ はじまりのコード

**子供** 「ねぇねぇ父ちゃん!僕の書いたコードを見てよ!」
**父親** 「おぉ、どれどれ。見せてみろ。」

“`rb
name = nil
if @account.present? && @account.name.present?
name = @account.name
else
name = ‘未設定’
end
“`

**父親** 「アカウントがあったら名前を取得し、名前がなかったら[未設定]の文字を取得したいんやな」
**子供** 「さすが父ちゃん!見ただけで一瞬でわかっちゃうだ!」
**父親** 「まぁな。`present?`を活用しているのはグッドだ?nilや空文字など柔軟に判定してくれるからな」
**子供** 「でしょ!(実はネットに載ってたのコピペしただけだけど…)」
**父親** 「ただ、もう少し簡単にかけるな。**ぼっち演算子**って知ってるか?」
**子供** 「ぼっち演算子..?」
**父親** 「

元記事を表示

【Ruby on rails】グループ作成 その3 グループの編集と削除

# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。
※@ki_87(kei i)さんの記事を参考に作成しました。
 とても分かりやすく参考になりました。
 ありがとうございます。

# グループの編集と削除
今回は作成したグループの編集と削除を実装していきます。
グループの作成については下記の記事で行っています。

https://qiita.com/kenty1116/items/2807833bc375ead197af

グループへの参加と退出は下記の記事で行っています。

https://qiita.com/kenty1116/items/f356eb9802aef9bbbb0c

それでは作成していきましょう!!!

# Let’s start!!!
## ルーティングの設定
“`routes.rb
Rails.application.routes.draw do
devise_for :users
root to: “groups#index”
resources :groups do

元記事を表示

AWS Lambda × Ruby 「ランタイムに合わせたbundle install面倒くさい…」「デプロイパッケージが大きすぎて…」という困り事

# AWS Lambdaでライブラリを利用するのって地味に面倒くさい
AWS lambdaでライブラリを利用するときに面倒だと思った以下2点についての対処法
– zipフォルダを用意するまで
– 「デプロイパッケージが大きすぎて、インラインコード編集を有効にできません。…」の回避

## zipフォルダを用意するまで
### Dockerfileを準備
“`Dockerfile:Dockerfile
# AWS Lambdaで利用するランタイムのバージョンを指定する
FROM ruby:2.7

RUN mkdir /var/www

# /var/wwwの部分は/appなどなんでも良い
COPY /app/* /var/www

RUN bundle config –local set path ‘vendor/bundle’

RUN bundle install
“`
### docker container を起動
`$ docker image build -t XXX:YYY`
`XXX`のところは`sample_app`
`YYY`のところは`latest`

元記事を表示

【Ruby on rails】グループ作成 その2 グループ参加と退出

# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。
※@ki_87(kei i)さんの記事を参考に作成しました。
 とても分かりやすく参考になりました。
 ありがとうございます。

# グループの参加と退出
今回は作成したグループへの参加と退出を実装していきます。
グループの作成については下記の記事で行っています。

https://qiita.com/kenty1116/items/2807833bc375ead197af

それでは作成していきましょう!!!

# Let’s start!!!
## ルーティングの設定
“`routes.rb
Rails.application.routes.draw do
devise_for :users
root to: “groups#index”
resources :groups do
get “join” => “groups#join”
delete “exit” => “groups#exit”
end
end
“`
##

元記事を表示

EinhornでSidekiqをマルチプロセス化する

この記事は
===

* Sidekiqはとてもよくできているワーカサーバなのですが、シングルプロセスでしか動作しません
* さらにRubyは1プロセス1CPUコアしか使えないので、結果“`Sidekiqは1コアしか使えない“`という弱点が発生します
* [einhorn](https://github.com/contribsys/einhorn)というなんでもかんでもマルチプロセス化してしまう神ライブラリを使うと、簡単にSidekiqの弱点を補えます

einhorn?
===

* 簡単にいうとUnicornやPumaみたいな、master/worker形式のマルチプロセス化をしてくれるライブラリです
* 今回はSidekiqに使いますが、Rubyに限らず、どんなプログラムでも対応可能です
* サンプルだと“`sleep“`コマンドをマルチプロセス化していて動きが面白いです

インストール
===

* Rubyでできています

“`ruby:Gemfile
gem ‘einhorn’
“`

起動
===

* “`einhorn“`コマンドを頭につけるだけなの

元記事を表示

【Rails】ActiveModel::Errorオブジェクトについて

# ActiveModel::Errorsについて

`ActiveModel::Errors`は、Ruby on Railsの`ActiveModel`モジュール内のクラスで、モデルオブジェクト上のエラーメッセージを保持および管理するためのもの。主にActiveRecordモデルのバリデーションエラーを取り扱う際に使用されるが、ActiveRecordに依存しないモデルでも使用することができる。

## 主な特徴と使用方法

### 1. エラーの追加

`add`メソッドを使用して、特定の属性にエラーメッセージを追加できる。

“`ruby
errors.add(:name, “can’t be blank”)
“`

### 2. エラーの存在チェック
* any?メソッドでモデルにエラーが存在するかを確認できます。
* include?(attribute)で特定の属性にエラーが存在するかを確認できます。

### 3. エラーメッセージの取得

* full_messagesで全てのエラーメッセージの配列を取得できる。
* []メソッドで指定した属性のエラーメッセージの配

元記事を表示

主キーについて

# 主キーの設定はどのように行うのか

SQLアンチパターンにID Requiredというものがあるが、その回避のためには複合主キーを用いることが一つ挙げられる。なので複合主キーで対応できるものについてはそれを使おうと考えていたが、どうやら複合主キーを扱うにも厄介な点があるらしい。Railsでもprimary keyを複数設定しようとすると警告が出る。調べてみると
Railsにおいて複合主キーが対応していないわけではないようだ。

https://edgeguides.rubyonrails.org/active_record_composite_primary_keys.html

がしかし、Railsで複合主キーを用いることは非推奨とするような意見も存在するし、他にもデータベース設計において使うのはやめましょうといった言説が複数見られた。

https://discuss.rubyonrails.org/t/rfc-finally-support-composite-primary-keys/81368

それらを確認してみると、そもそもSQLにおいて複合主キーを使うと操作が複雑に

元記事を表示

Railsでバッチ処理が動いていなかった問題を解決したのでメモメモ

どうもこんにちは。

今回は以下の記事で紹介した`delayed_job`で実装したバッチ処理が動かなかった問題を解決したので、備忘録としてまとめたいと思います。

バッチ処理の基本的な手順は以下の記事をご覧ください。

https://qiita.com/PDC-Kurashinak/items/dd852f001914def58e83

# バッチ処理って?

そもそものバッチ処理についておさらいします。

バッチ処理とは、決まった時刻や時間間隔で行う処理のことです。

例えば、「10分間隔でメール送信ジョブを動かす」「決まった時間に過去のデータを削除する」などですかね。

# 今回のエラーについて

今回のエラーは、「決まった時間に実行したいジョブが実行されなかった」というものです。

## 概要

`config/schegule.rb`に以下のように記述したコードが動きませんでした。

“`ruby
every 10.minute do
runner “Batch::WatchDelayedJob.job_destroy”
runner “Batch::WatchD

元記事を表示

【Ruby on rails】グループ作成 その1

# はじめに
プログラミングを学習してから1ヶ月半ほどが経ちました。
スクールでのカリキュラムも終了し、オリジナルアプリを作成しました。
私が作成したアプリの中で、グループ機能を実装したかったので今回まとめてみました。
少しづつ投稿していこうと思うので時間がかかると思いますが、お願いします。
※初めての投稿なのでMarkdown形式の記述方法にも慣れておらず、見づらいところが多いかもしれません。

# グループ作成
今回は、在庫管理(探し物を見つけ出す)アプリを作成しました。
この記事ではグループを作成するところまで紹介したいと思います。
初心者のため、間違っているところがあると思いますが、ご指摘いただけると幸いです。
※@ki_87(kei i)さんの記事を参考に作成しました。
 とても分かりやすく参考になりました。
 ありがとうございます。

# 前提条件
ユーザー管理機能については実装済みで話を進めていきます。
ユーザー管理機能実装してから作成をお願いします。
また、viewについてはオリジナリティが求められるため、省略しています。
※Rails7で作成しています。

元記事を表示

Bitnami Redmine にjson2.6.3を入れるまで

Bitnami Redmine 5.0.5のVMイメージを使って以下のプラグインを入れようとしたところ、json2.6.3が入れられなくて躓いていろいろ調べたのでメモ。

# 入れたプラグイン

“`
redmine_absolute_dates
redmine_full_text_search
redmine_issue_templates
redmine_jstoolbar_ext
redmine_jstoolbar_ext_buttons
redmine_mattermost
redmine_theme_changer
redmine-view-customize
redmine_wiki_lists
redmine_wiki_unc
redmine_work_time
redmine_xlsx_format_issue_exporter
“`

# 発生したエラー

`bundle install`したら以下のエラーが出ました。
※実行ディレクトリは大事。`/home/bitnami/redmine`でやらないと別のエラー(`No Rakefile found (looki

元記事を表示

Time.atとTime.zone.atの違いについて

## Time.at
* Rubyの組み込みメソッド。
* 指定した時刻のTimeオブジェクトを返す。
* キーワード引数inでタイムゾーンを指定できる。
* タイムゾーンの指定がなく引数が数値の場合、生成されたTimeオブジェクトは地方時になる。

“`ruby
# Timeオブジェクト、もしくは起算時からの経過秒数を表す数値を指定する
Time.at(0) #=> 1970-01-01 00:00:00 +0000

# “+HH:MM” や “-HH:MM” のような形式の文字列か,”UTC”などでタイムゾーンを指定する
Time.at(1582721899, in: “UTC”)  #=> 2020-02-26 12:58:19 UTC
“`

## Time.zone.at
* Ruby on Railsのフレームワークにおいてタイムゾーンを取り扱うためのクラス。
* TZInfoというRubyのタイムゾーン情報を扱うためのライブラリを利用していて、`TZInfo::Timezone` インスタンスをラップして、Railsでの使用に適したインターフェースを提供する。
*

元記事を表示

【Ruby・Rails】mergeメソッドの2つの働き

## はじめに
プログラミング学習をする中で、mergeメソッドの挙動の違いに遭遇したのでまとめてみました。

## 先に結論
Rubyにおける場合と、RailsのActiveRecordにおける場合でmergeメソッドの処理が変わる。

:::note
どのレシーバーに対して使っているかがポイント
:::

## Rubyのハッシュの **merge** メソッド

**2つのハッシュを結合して新しいハッシュを作成します。**
このメソッドは、ハッシュのキーと値を結合し、重複するキーがある場合は後からマージされたハッシュの値が優先されます。
以下は、**merge** メソッドを使用して2つのハッシュを結合する例です。

“`ruby
hash1 = { a: 1, b: 2 }
hash2 = { b: 3, c: 4 }
merged_hash = hash1.merge(hash2)

puts merged_hash
=> **{ a: 1, b: 3, c: 4 }**

“`
[Ruby リファレンスマニュアルの説明はこちら](https://docs.ruby-l

元記事を表示

mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘arm64e’)

## エラー内容
`rails new`しようとしたところ次のエラーが発生。
“`
$ rails new .
:148:in `require’: dlopen(/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle, 0x0009): tried: ‘/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle’ (mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘arm64e’)), ‘/usr/local/lib/stringio.bundle’

元記事を表示

既存のrailsアプリをdockerを用いてコンテナ化する

# ゴール

既存のrailsアプリを
docker,docker-composeがインストールされているPCであれば、
**個人PCの環境に左右されることなく**[ローカル](http://localhost:3000)にて再現できるようにする。

# 事前準備
* 以下の環境にてローカルで動作確認済みのrailsアプリ
“`ver.
ruby 3.2.2
Rails 7.0.6
postgresql 12
“`

* docker,docker-composeのインストール

https://docs.docker.com/engine/install/

https://docs.docker.jp/v1.12/compose/install.html

# 手順

**1.Dockerfile、doccker-compose.ymlの作成と記述**
**2.database.ymlファイルの編集**
**3.コンテナ生成と実行**
**4.動作確認**

順番に解説していきます。

### 1.Dockerfile、docker-compose.ymlの作成と記述

元記事を表示

OTHERカテゴリの最新記事