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

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

【Ruby on Rails】bundle installをもう少し速くしたい時の設定

# はじめに
`bundle install`実行時に`gem`が膨大になってくると、その分実行時間が長くなるのが地味にストレスでした。調べたところ、速くする方法があったのでまとめます。

# 前提条件
– `bundler`がバージョン**1.5**以上である事
“`ruby
bundler -v
Bundler version 2.4.17
“`
# コマンド
“`ruby
bundle install –jobs=4

#or

bundle install -j4
“`
このコマンドで**並列処理**で実行してくれるようになり、処理が速くなるケースが多くなります。

https://qiita.com/4_mio_11/items/7f418ca661d9f5a2a39d

`time`コマンドをつけると、実際の計測時間を測ることができます。

“`ruby
time bundle install -j4
Bundle complete! 16 Gemfile dependencies, 75 gems now installed.
Use `bundle info

元記事を表示

Crystal の小さな本

# Crystal で Hello World!

Crystal という **Ruby ライクな言語**は、C や Go の代わりとして使えます。つまり、Ruby と異なりインタプリタでなく**実行ファイルを生成するコンパイラ言語**です。

インストール方法は [Ubuntu の場合こちらのページ](https://crystal-lang.org/install/on_ubuntu/)になります。

2023/9 段階ではバージョン 1.9.2 になっていますが、**Windows 版はプレビュー段階ですし、Linux 版も ARM 版はありません。**

と言っても内部では C のソースを生成してそれを C コンパイラがビルドして実行ファイルを生成しているようです。

Hello World! のコードは ruby と全く同じで次のようになっています。

“`ruby
puts “Hello World!”
“`

このプログラムをビルドして実行するには次のコマンドを実行します。

“`
$ crystal hello_world.cr
“`

すると、**次のようなエ

元記事を表示

例外処理について調べてみた!

例外処理について、ChatGPTと一緒に勉強してみました!

## ChatGPT
例外処理は、プログラムが実行中に予期せぬ状況が発生した際に、それに対処するための仕組みです。これはプログラムの正常な流れを中断し、エラーや異常状態に対する適切な対応を可能にします。

# 例外処理の基本: プログラムの異常状態への対応方法 ?

プログラムを書く際には、エラーや異常な状態が発生することがあります。そんなときに役立つのが「例外処理」です。

## 1. 例外処理って何?

例外処理は、プログラムが実行中にエラーや異常な状態が発生した際に、それに適切に対応する仕組みです。
例外処理を使用することで、プログラムが終了せずにエラーをハンドリングすることが可能になります。

## 2. 例外ってどんなもの?

プログラムでの例外は、エラーや異常な状態を表す。
例外を投げることで、プログラムがその状況にどう対処するかを示すことができる。
Rubyでは raise を使って例外を投げることができる。そして、rescue ブロックを使ってその例外をキャッチし、適切な処理を行っていく。

## 3. 例外

元記事を表示

【Ruby on Rails】concerns,helpers,decorators の使い方について考えてみた

# **はじめに**

皆様初めまして。プログラミングスクールで現在 Ruby on Rails を勉強しております、うーさんと申します。

2023 年 4 月よりプログラマーへの門を叩いてから早半年の月日が経ちました。

# 概要

`Ruby on Rails` には MVC 機能において、Model や Controller のコードの重複や肥大化(「`Fat Model`」,「`Fat Controller`」)を防ぐために、共通的なロジックを部分ごとにモジュールやオブジェクトとして分離する役割を果たす `concerns`, `helpers`,`decorators` といったファイルや概念が存在します。

とは言っても、結局それって何を書くの?どのファイルにどのようなメソッドを書けばいいのか?と疑問に思いましたので、深掘りも兼ねてこの度初めて技術記事にさせていただきました。

::: note warn
? 誤った知識を記載してしまう場合がございます。
至らぬ点等何かございましたら、お手数ですがご教示いただけますと幸いです。
:::

# concerns

元記事を表示

Python と Java と Go と Node.js と PHP と Ruby のサポート状況について (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

元記事を表示

OTHERカテゴリの最新記事