Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

【Rails】Ferrumを使ってHTMLをPDFへ変換してみた(wicked_pdfからの移行)

HTMLからPDFを生成する処理が上手く動かなくなってしまったため、
PDF生成ライブラリを`wicked_pdf`から`Ferrum`へ移行しました。
まだまだRails初心者なので、何か間違い等あればご指摘いただけると幸いです!

## HTMLからPDFの変換処理に定番だった`wicked_pdf`

上記の通り、PDF生成機能の実装によく使われていたかと思います。

今回、私はRailsのバージョンを6から7へ引き上げて動作確認を行なった際に、
既存で実装されているPDF生成機能が動かなくなっていることに気がつきました。
なお、既存の実装内容は、viewテンプレート(hogehoge.html.erb形式のファイル)から
`wicked_pdf`を使用してPDFへ変換処理を行っていました。

`wicked_pdf`自体は現在もサポートされているgemですが、
このgemは`wkhtmltopdf`というHTMLをPDFに変換するCLIツールに依存しています。
そして、この`wkhtmltopdf`は、2023年1月にGitHub上からリポジトリがアーカイブされており、開発終了

元記事を表示

tailwind cssを導入しているプロジェクトにSystemSpecを導入・実行したらエラーが出る

– Rails 7.1.2
– tailwind css
上記を用いて開発しているプロジェクトにおいて、ModelSpecは実行できるが、SystemSpec実行時にエラーが出る。

config/environments/production.rb
に以下を追記したら解決した記載があり、試したが効果なし
“`
config.assets.css_compressor = nil
“`
## 環境
Gemfile

“`
group :development, :test do
gem “debug”, platforms: %i[ mri windows ]
gem ‘rspec-rails’
gem “capybara”
gem “selenium-webdriver”
gem “webdriver”
gem ‘factory_bot_rails’
gem ‘faker’
end
“`

spec/rails_helper.rb
“`
config.before(:each, type: :system) do
driven_b

元記事を表示

macOS で glib2 gem がインストールできなかった

# はじめに

Ruby で pango や poppler といった gem を使っているが,最新版(4.2.2)をインストールしようとしたらエラーが出てインストールできなかった。

エラーをよく見ると,これらが依存している **glib2** gem のインストールでコケているのだった。

**最終的には解決した**のでその記録。

環境は以下のとおり。

* macOS Sonoma 14.3.1
* ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin20]

なお,poppler などの gem と,それが依存している glib2 gem のバージョンは揃っている(例えば poppler 4.2.2 は glib2 4.2.2 を使う)。

# glib2 のインストール失敗

“`terminal
gem install glib2
“`

とやったら以下のように出て,インストールに失敗する。

“`
ERROR: Error installing glib2:
ERROR: Failed to bui

元記事を表示

[マイグレーション]Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON columnの原因と解決策

# エラー文
テーブル作成のため、モデルとともに作成されたマイグレーションファイルに、型とカラム名を書き、`rails db:migrate`を実行した。

するとターミナルが以下のようなエラーを吐き出した。
“`terminal
xxxxxx@yyyyyy testApp % rails db:migrate
== 20240404111608 DeviseCreateUsers: migrating ================================
— create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled: (StandardError)

Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON column ‘profile’ can’t have a default value
/Users/code/Desktop/xxxxx/project_2.0/testApp/db/

元記事を表示

Rubyのバージョンをアップグレードする方法

# はじめに
Rubyのバージョンをアップグレードする方法を記述します。
使用しているOSはMacOSです。
今回はHomebrewのインストールから、rbebvをインストール、それを用いてRubyのバージョンをアップグレードします。

# Homebrewをインストール
“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
わたくしの場合はここで2つのコマンドを実行しろと言われたので実行しました。

“`
$ echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”‘ >> /Users/◯◯◯/.zprofile
$ eval “$(/opt/homebrew/bin/brew shellenv)”
“`

brew -v で確認してみると、
“`
$ brew -v
Homebrew 4.2.16
“`
インストール完了。

お次はrbenvをインストール。

“`
$ b

元記事を表示

【個人開発】自分以外の「死ぬまでにやりたいことリスト」が見れるサービスを作りました

# はじめに

皆さま、こんにちは、すみ([@sumisumi2000](https://twitter.com/sumisumi2000308)) と申します。
2024 年 1 月 20 日より、オンラインプログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。

2024 年 3 月 30 日にリリースしたアプリの紹介と開発の振り返りをまとめました!
アプリについての記事は初めてなので、温かい目で見ていただけると幸いです。

# 目次

1. [作成経緯](#作成経緯)
2. [アプリの紹介](#アプリの紹介)
3. [技術構成](#技術構成)
4. [こだわったポイント](#こだわったポイント)
5. [開発の流れ](#開発の流れ)
6. [改善点](#改善点)
7. [開発を振り返って](#開発を振り返って)

# 作成経緯

通っているオンラインプログラミングスクールで受講生がアプリを出し合おう!というイベントがあります。
そこに向けて、カリキュラムで行っていた Rails の復習と、カリキュラムであまり触れない CSS の学習を兼ねてア

元記事を表示

AtCoder Beginner Contest 347参戦記録(A~C問題)

RubyでAtCoderに参戦した記録です。
AB2完で、C問題はコンテスト終了後に解説を見てからコードを書きました。もっとC問題解けるようになりたい…!

## [ABC347 A Divisible](https://atcoder.jp/contests/abc347/tasks/abc347_a)
長さNの配列Aと正整数Kが渡されます。配列Aの中からKの倍数のみを全て取り出し、それぞれをKで割ったものを昇順で出力する問題です。

“`Ruby
n,k=gets.split(” “).map(&:to_i)
array=gets.split(” “).map(&:to_i).sort
result = array.select{|num| num % k == 0}
puts result.map{|s| s / k}.join(” “)
“`
問題文の通りに実装したという感じですね。

## [ABC347 B Substring](https://atcoder.jp/contests/abc347/tasks/abc347_b)
文字列Sが与えられ、その中に含まれる部

元記事を表示

M2 MacでRubyのバージョンアップ

ruby on rails の環境構築をしようとした際に、
## BUILD FAILED (macOS 14.3 on arm64 using ruby-build )
エラーに当たった。

原因は結局不明のままですが、とりあえず動かしたい人向けに記事を残します。

“`bash

(base) % brew -v
Homebrew 4.2.16
(base) % rbenv
rbenv 1.2.0
Usage: rbenv []

Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version

元記事を表示

【RSpec】単体テストを完全理解する

# この記事を読んでほしい人
– Ruby on railsのテストコードをこれから学ぼうとしている人
– 単体テストコードで躓いた人
– 単体テストコードを勉強したけど、振り返ってより理解したい人

# この記事のゴール
以下を理解することができます。
– Rspecが何をしているのか
– モデルファイルの重要性
– 単体テストコードを書くには何を見れば良いのか

# Rspecとは
Rspecは、Ruby言語用のテストフレームワークです。
プログラムが**期待通りに動作することを確認するため**のテストコードを書くために使用されます。

>Rspecは「ビヘイビア駆動開発」(Behavior-Driven Development, BDD)の原則に基づいており、開発者が人間が読める形式でテストを記述できるように設計されています。これにより、テストコードが仕様書のように機能し、プログラムの振る舞いについての明確なドキュメントを提供します。

# Rspec何をするのか
モデルの単体テストは、モデルに書いたバリデーションが正しく働いているかを確認します。

### バリデーションの復習

元記事を表示

【Rails】GMOあおぞらネット銀行指定形式CSVエクスポートの実装

## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
駆け出しエンジニアとして働き始めて約1ヶ月が経過しました🐣

## 概要
業務内で、GMOあおぞらネット銀行指定形式のCSVファイルをエクスポートする機能を実装する必要がありましたが、
なかなか想定する形式で出力できず苦労したためまとめました✏️

### 環境
– Ruby 3.2.3
– Rails 7.1.3
– Importmap
– Tailwindcss、daisyUI
– PostgreSQL

:::note warn
間違っている箇所や、紹介した方法よりも良い方法があるかもしれませんので、その際は教えて頂けると嬉しいです🙇
:::

## エクスポート・インポートとは?
改めて言葉の定義を確認しておきます。
#### エクスポートとは
> あるソフトウェアで作成・編集したデータを他のソフトが読み込める形式に変換したり、そのような形式でファイルに保存することを指す。[1)](#引用記事)
#### インポートとは
> あるソ

元記事を表示

現場で使えるRuby on Rails5速習実践ガイドを読んで

## はじめに
現場で使えるRuby on Rails5速習実践ガイドを読んだので、感想などをまとめてみました。

## 良かったところ
実際にアプリを作成しながら機能の実装についてしっかり解説してあるので、非常にわかりやすかったです。またチーム開発の流れも書いてあって、未経験の方は実務の流れがイメージしやすいので、とても良いと思いました。

## 学んだこと
#### MVC
Railsでは、アプリケーションの構造や名前付けを、M(モデル)、V(ビュー)、C(コントローラ)の3つの要素に従ってます。

**モデル**とは、データとデータに関わるビジネスロック(アプリケーション特有の処理)をオブジェクトとして実装したもです。データベースの保存や読み込みもモデルが担当する。

**ビュー**とは、ブラウザに表示する画面、HTMLなどのHTTPレスポンスの中身を実際に組み立てる部分です。必要に応じてコントローラからモデルのオブジェクトなどを受け取り、画面表示に利用します。

**コントローラ**は、ユーザーが操作するブラウザなどのクライアントからのリクエストを受け、適切なレスポンスを作成す

元記事を表示

Rails:Sqlite3のタイムゾーン変更について

# 前提
使用フレームワーク: Ruby on Rals

作成したもの: railsを使ったごく単純な掲示版風アプリ(今回詳細は省きます)

使用DBエンジン: SQLite3(新規アプリ立ち上げ時のデフォルトのまま)

やりたいこと: デフォルトではレコードの作成日時と更新日時がUTC表記になっているので、テーブル上の表記をJSTに変更したい。

以下が作成したDBのスキーマ(後述のオチを知る前に作成したもの)
“`
## Table:posts
| Column Name | Data Type | Nullable |
|————-|———–|———-|
| title | string | |
| content | text | |
| created_at | datetime | false |
| updated_at | datetime | false |

“`
画像だと判別できませんが、created_atとupdated_

元記事を表示

Ruby On Railsにおける基本コマンド

# Ruby On Railsにおける基本コマンド

## 背景説明
プログラミングスクールで学んだ**Ruby on Rails**の基本操作方法をまとめる。
メモとして使う予定。
## アプリ作成。
webアプリケーションを作成するコマンド。アプリを作成したいフォルダーで実行。[^1]

[^1]:アプリの名前は**appName**にしています。
### 基本
“`
rails new appName
“`
### よく使うオプション
バージョン7.0.0、データベースにmysqlを指定
“`
rails _7.0.0_ new first_app -d mysql
“`
## コントローラー作成

コントローラーを作成するコマンド。[^2]

[^2]:コントローラーの名前は**mails**にしています。名前を必ず**複数形**にすること
“`
rails g controller mails
“`

## モデル作成
モデル作成するコマンド。[^3]

[^3]:モデルの名前は**mail**にしています。
“`
rails g model mail
“`

元記事を表示

テストコードのコツと注意点

## はじめに

新卒入社、おめでとうございます
テストコードの初歩的なTipsについてまとめてみました

## Tips

※ コード例はRuby(RSpec)を使用しています

以下のようなBooleanを返す処理に対するテストコードを考えます
`is_xxx?`では、判定処理`check_a?`・`check_b?`両方が**true**の場合に**true**が返されます

“`:ruby
class Test
def is_xxx?
check_a? && check_b?
end
end
“`

この場合、テストコードはこんな感じになると思います
“`:ruby
describe Test do
describe ‘#is_xxx?’ do
subject { instance.is_xxx? }

let(:instance) { described_class.new }
let(:a) { true }
let(:b) { true }

before do
allow(instan

元記事を表示

【個人開発】自転車好きのための投稿サービスを開発しました

## サービス概要
### サービス名 : 「ChariLog(チャリログ)

自慢のカスタムや友人とのツーリングなどの思い出を写真・カスタムパーツ(アイテム)と共に発信できる、 **自転車というツールに特化した投稿サービス**です。

![charilog-introduction-image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3745701/3753f69c-60f0-4f44-70d6-6801f83f30ae.jpeg)
【サービスURL】https://charilog.jp
【Githubリポジトリ】https://github.com/kiyosan0517/charilog

## なぜそのサービスを作ろうと思ったのか
– **自転車の楽しさを共有できる友人づくりに多少苦労した経験があったため**
=> アメリカやヨーロッパ圏などではBMXやロードレース等を中心とした自転車競技がメジャースポーツとして発展しているものの、日本においては健康志向の中年層がメインに

元記事を表示

blastengine Ruby SDKでメール種別を気にせず送信できるようになりました

[blastengine](https://blastengine.jp/)はエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。

今回はRuby SDKでメールの種類(即時配信、一括配信など)を気にせずに利用できるMailクラスを作成しましたので、その使い方を解説します。

## コードについて

Ruby SDKはMIT Licenseのオープンソース・ソフトウェアです。リポジトリは以下にあります。

[blastengineMania/blastengine\-ruby](https://github.com/blastengineMania/blastengine-ruby)

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

![https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/

元記事を表示

displayの役割と要素の表示方式について

今回入社した際に、最初はフロントエンドのコーディングをするとのことだったため、よく使う「displayの使い方」を改めて勉強した内容をまとめます。

## displayとは?
displayとは、CSSのプロパティの1つで、要素の表示方式を制御します。主な値にはblock、inline、inline-block、flex、noneがあり、レイアウトの構造と見た目を調整できます。

![スクリーンショット 2024-04-02 9.16.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670873/f4d8d81a-5b90-b7a9-9e14-3eaa8dc0fba2.png)
参照:[【CSS】displayの使い方を総まとめ!inlineやblockの違いは?](https://saruwakakun.com/html-css/basic/display#section1 “displayの使い方についての記事”)

## デフォルトの値
displayはCSSで明示的に指定しなくても、タグ

元記事を表示

ポートフォリオ作成#1

1.技術選定
**バックエンド:Ruby / Rails(APIモード)**
**採用理由:**
RUNTEQでRuby、Railsを学んできたため、学習コストも考えてRails、Rubyを選択しました。
またRailsにはAPIモードがあり、フロントエンドではvue.jsやReactなどを採用した上でバックエンドではRailsと綺麗な役割分担ができる点で選択しました。

**フロントエンド:React、Next.js、TypeScript**
**採用理由:**
理由としてはRails学習中にReactの名前をよく聞くので触ってみたいというものです。調べてみるとフロントエンドではvue.js、React使っている方が多いと感じたのでトレンドでもあるのかなとも思います。
技術的にも個人開発においてはvue.jsとReactはそこまで差がないように感じるので、求人数を見て多いReactを選択しました。
Reactの弱点である初回表示時の読み込みを改善するためにNext.jsを採用します。個人的には初回表示が遅いとめんどくさくなって別のページを見に行くことが結構多いのでユーザー体験をより良

元記事を表示

【Ruby】Symbol(シンボル)

## シンボルとは

簡単に言うと文字列とほぼ同じ見た目のオブジェクト。

## もうちょっと詳しく

Rubyの内部ではクラス名、メソット名、変数名などの名前を整数で管理しています。
シンボルも内部的には整数となります。
文字列で処理するより、整数で処理した方がパフォーマンス的に良いから!

## 不変性(Immutable)

シンボルは変わらないです。
シンボルオブジェクトの変更は不可能です。

## メモリアドレスも変わらない

コードで見てみましょう

“`hello.rb
string_hello = ‘hello’
symbol_hello = :hello

puts string_hello.object_id
puts symbol_hello.object_id
“`

“`bash
ruby hello.rb
# 2840185880
# 1056668

ruby hello.rb
# 2672372840
# 1056668

ruby hello.rb
#

元記事を表示

PG::DatatypeMismatch: ERROR: column “foo” cannot be cast automatically to type precision

:::note warn
**注記**
この記事の投稿者は初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::

ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。

RailsでのWebアプリを作成中、データベースにテーブルを作成した際に、設定するデータ型を間違えてしまいました。
それ自体は「あるある」だと思うのですが、`migration`ファイルを作成してデータ型を変更しようとした際に**ほんのちょびっとだけ**ハマってしまったので備忘録として残します。

## 動作環境
開発環境
– Rails 7.1.3.2
– サーバー:localhost接続
– データベース:PostgreSQL

## エラーの詳細

### エラーメッセージ
“`
== 20240401****** ChangeLatAndLngToFloatInSpots: migrating ============

元記事を表示

OTHERカテゴリの最新記事