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

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

transactionの処理の流れについて調べてみた!

# Transactionとは
ChatGPT
>トランザクション(Transaction)は、データベースにおける一連の操作をまとめて、それらがすべて成功することを保証するための仕組みです。トランザクションは、データベースの整合性を保つために非常に重要な役割を果たします。

# railsにおけるTransactionについて調べてみた!

Railsでトランザクションを使用する場合は、トランザクションの範囲を
ActiveRecord::Base.transactionブロックで囲む必要がある。

“`ruby
ActiveRecord::Base.transaction do
# ここに処理を書く
end
“`

transactionブロック内で例外が発生した場合、ブロック内で行われたデータベース更新処理が全てロールバックされる。

# 注意点

transaction内でrescue句を書くとロールバックされない。
理由は、Railsに実装されているtransactionメソッドで、transactionブロックに対して例外が発生した場合に、rescueしてロールバ

元記事を表示

【Rails7】seedファイルへ画像を追加(ActiveStorage使用)

タイトル通り、ActiveStorageを使用してseedファイルへ画像の追加を行っていきます。

記事を書いている私の状況としては

ECサイトをbootstrapのテンプレートを使用して開発中。

データベースへ反映(追加)したデータをrailsのviewで確認が取れるまで行えました。

# 環境

Dockerで作成したコンテナの内部でRailsを動かしていきます。

基本的にコンテナ内部でrails cを使用してデータの中身を確認しつつ進めていきます。

# 細分化して考える

ペアプロしていただいたHCメンバーの方から「何事も細かく切り分けて行う」癖をついてた方がいいとアドバイスをいただきました。

特に初めて触るorあまりよくわかっていないもので「〇〇をする」というのはハードルが高い。

高いハードルはまずは細かく切り分けてアプローチのかけ方を変えた方が実践的かつ良質な経験値と時間を得られることを教えていただきました。

## 画像の表示に係るプロセス

今回は「画像を表示させる」のがゴールです。

そこで、漠然としてしまっている途中のプロセスを明確にして作業を進めます。

元記事を表示

【Ruby on Rails】rails-erdでテーブル構造をER図で見れるようにしたい

# はじめに
どうしてもテーブルが多くなってくると`schema.rb`だと見づらくなり、テーブルの関連性を理解するのに時間がかかってしまいます。
そこで`rails-erd`という`gem`を使うと**ER図**を出力できるそうなので、試してみました!
# 実装環境
– Ruby 3.2.2
– Ruby on Rails 7.0.7
– Homebrew

# 導入手順

“`terminal
brew install svn
“`

“`terminal
brew install graphviz
“`
::: note warn
“`
brew install graphviz
“`
実行時に下記のエラーが出たので、`svn`も同時に読み込んでいます。
“`ruby
You must: brew install svn
Error: graphviz: Failed to download resource “netpbm”
Failure while executing; `/usr/bin/env svn checkout https://svn.cod

元記事を表示

erbファイルでTailwind CSS IntelliSenseのコード補完機能を使えるようにする

初めまして。RUNTEQというスクールで学習をしている、たかぎと申します。

Tailwind CSS IntelliSenseというvscodeの拡張機能をインストールすることで、htmlファイルではTailwindCSSのクラスの自動補完をすぐに使えたのですが、erbファイルだと設定をしないと使えないようです。
これについての記事があまりなかったので、説明しようと思います(私も教えていただいたものですが)。

設定は簡単です。
以下のコードをsetting.jsonに追加するだけです。

“`setting.json
“tailwindCSS.includeLanguages”: {
“erb”: “html”
}
“`

公式に載っていたのですが、私はqiitaの記事ばかり探してしまいました。なっさけない。
https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss

以上です。あざした。

元記事を表示

【WIP】Rails7.1での変更点

こんにちは。プログラミングスクール[Happiness Chain](https://happiness-chain.com/)でメンターをしているryoです。
今回は、最近リリースされたRails7.1の変更点に関して、記載していきます。

※以下公式リリースノートの和訳と、個人的な感想を少し記載しています。

https://rubyonrails.org/2023/10/5/Rails-7-1-0-has-been-released

※ こちら執筆途中になりますので、ご了承ください。

## Railsアプリ新規作成時に、Dockerfileの自動生成

`rails new sample-project`をすると以下のDockerfileが自動生成される。

“`Dockerfile
# syntax = docker/dockerfile:1

# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
ARG RUBY_VERSION=3.2.2
FROM registr

元記事を表示

オブジェクト指向とは(初心者向け)

転職活動中にオブジェクト指向について聞かれ、
うまく答えることができなかったので、理解を深めるための記録です!

オブジェクト指向とは
=
「属性(構成するデータ)」と「メソッド(指示に対する振る舞い)」を1つにまとめた「オブジェクト」の定義ごとに「クラス」を分類し、そのクラス同士を組み合わせてシステムを組み立てる考え方のこと。

、、、???
という感じだと思います笑(何を隠そう私がそうです)

この考え方を車に例えて説明をすると、

属性とは、モノ(オブジェクト)が持っているデータのことで、「色」、「メーカー」、「車種」など
メソッドとは、モノ(オブジェクト)が持っている処理のことで、「前進する」「止まる」「バックする」などのこと

次に「クラス」について説明していきます。

クラスとは
=

データと処理をひとつにまとめたもの。
オブジェクトのもつ性質ごとに分類したものとも言い換えることができます。
モノ(オブジェクト)の設計書のようなモノです。

今回の車で例えると、下記のようになります。
「」に入っているものは全てオブジェクトです。
ーーーーーーーーーーーーーーーーーーーーー

元記事を表示

《No Ransack::Search object was provided to search_form_for!》の対処方法

# はじめに
皆さん、お疲れ様です。
今回、”Ransack” Gem を用いた検索機能の実装を行なっている際にとあるエラーが発生し、数時間溶かしてしまったので、備忘録として技術記事を作成しました。
もし同じエラー内容が発生している方は、是非今回の記事内容を解決の糸口として活用していただければと思います…!

# 概要
今回、《Ruby on Rails》を用いた投稿掲示板アプリにて、検索機能を”Ransack” Gem を用いて実装していました。
検索機能の実装内容としては、 **『ヘッダー部分に投稿に関する検索フォームを実装、検索を行うと投稿一覧画面に検索フォームに入力したワードに関する投稿のみを表示する。』** と言うシンプルな検索機能です。

しかし、この検索機能を実装後に実際に検索を掛けて投稿を絞った後、各投稿の詳細画面にアクセスしようとしたところ…
**《ArgumentError in Posts#index No Ransack::Search object was provided to search_form_for!》**
と言うエラーが発生してしまいまし

元記事を表示

「プロを目指す人のためのRuby入門」を読んでみた

## はじめに
今回Rubyの学習を進める上で「プロを目指す人のためのRuby入門」を読みました。
初学者が読んだ感想を書いていきたいと思います。

https://gihyo.jp/book/2021/978-4-297-12437-3

## 良かったところ
1. 充実した内容
 第1章から第13章までの537ページに渡りRubyの技術を豊富に学ぶことができます。
本書の全体や進め方についてしっかりと説明されています。

1. 例題の豊富さ
 各章で例題が用意されており実際に手を動かして学ぶことができます。

1. 現場で求められる書き方を学ぶことができる
 現場でよく使う書き方だけでなく、使われなくなった書き方などの細かい技術まで記載されています。

1. 最後まで読み切るコツがあること
 本書は初学者に向けて「頭の中にインデックスを作る」ことを目的に学習することを薦めています。初学者にとっては内容が複雑で、わからない事がたくさん増えることで学習から遠ざかってしまうことも想定されます。そのため学習のハードルを下げて進めて良しとしてくれているところがありがたいです。

## 学

元記事を表示

エラー:SyntaxError circular argument referenceの解決方法

## 【開発環境】
Ruby 2.7.5
Rails 6.1.7.6

### どういう時にエラーが発生したか
秀和システムの「Ruby on Rails 6 超入門」で学んでいます。
進めていく中、「2-6 メッセージボードを作ろう」で「circular argument reference」というエラーが発生。

![スクリーンショット 2023-10-08 19.23.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3568360/14982102-8a26-9d83-4214-849a9ee3a8ea.png)

### エラーの原因
以下のサイトによると、ruby2.2.0以降から、メソッドの引数のデフォルト値に同じ名前の変数を使おうとするとcircular argument referenceというエラーが発生するようです。
https://qiita.com/a_ishidaaa/items/47a8459aa5fe5512871a

### エラーの解決方法
こちらは、キーワード引数

元記事を表示

続・Crystal の小さな本

この本は[「Crystal の小さな本」](https://qiita.com/tadnakam/items/b1c2e32e86135db63c30) の続編で、主に HTTP やネットワーク関連について記載しています。

# Crystal: HTTP モジュール

HTTP モジュールは HTTP::Client, HTTP::Server, HTTP::WebSocket を含むモジュールであり、require “http” をソースに追加することにより、これらのクラスも同時に利用できるようになる。

HTTP モジュールにはそれ以外に若干のメソッドが含まれており、引用符のエスケープと逆エスケープに関するもの、時刻の文字列化とその逆変換および内部処理で使用されると思われるメソッドである。

HTTP モジュールに含まれるエスケープ処理に関するメソッドの使用例を示す。
“`ruby
# http module https://crystal-lang.org/api/1.9.2/HTTP.html
require “http”

qs = %q(\”foo\\bar\”)

元記事を表示

【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 の小さな本](https://qiita.com/tadnakam/items/c88c4fedc4dd3479331a) もあります。

# 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!”
“`

元記事を表示

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

例外処理について、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
どちらも画像を送る機能が

元記事を表示

OTHERカテゴリの最新記事