- 1. Ruby でかけっこのパズルを解く
- 2. 新人エンジニアに向けてのエール
- 3. Railsを使ってアプリを作る(基礎中の基礎)
- 4. rescueとrescue_fromの使い方
- 5. 【Ruby】ハッシュを使って条件分岐をスッキリさせよう
- 6. 20240406 日記 pipenvについて、githubのlockについて
- 7. 【Ruby】じゃんけんプログラム
- 8. Rails 6.0.3でRuby 2.6.6の環境構築
- 9. Railsでの命名の単数複数形使い分け
- 10. 【Rails】Ferrumを使ってHTMLをPDFへ変換してみた(wicked_pdfからの移行)
- 11. tailwind cssを導入しているプロジェクトにSystemSpecを導入・実行したらエラーが出る
- 12. macOS で glib2 gem がインストールできなかった
- 13. [マイグレーション]Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON columnの原因と解決策
- 14. Rubyのバージョンをアップグレードする方法
- 15. 【個人開発】自分以外の「死ぬまでにやりたいことリスト」が見れるサービスを作りました
- 16. AtCoder Beginner Contest 347参戦記録(A~C問題)
- 17. M2 MacでRubyのバージョンアップ
- 18. 【RSpec】単体テストを完全理解する
- 19. 【Rails】GMOあおぞらネット銀行指定形式CSVエクスポートの実装
- 20. 現場で使えるRuby on Rails5速習実践ガイドを読んで
Ruby でかけっこのパズルを解く
https://qiita.com/jpwgad/items/5431e452b4a65cba3862
# 問題
>一郎、二郎、三郎の三人で駆けっこをして、その結果を次のように言っています。
>
>一郎:「僕は一番じゃない」
>二郎:「僕は一番だ」
>三郎:「僕は二番だ」三人のなかで一人だけウソをついています。それは誰でしょう?
# Ruby で解いてみる
総当りで解いています。
0, 1, 2 でそれぞれ一郎、二郎、三郎を表しています。“`ruby
names = %W(一郎 二郎 三郎)
(0..2).each do |usotsuki| #嘘つきを選びます
table = [-1, 1, 2] #与えられた条件(否定は負にします)
#嘘をつかせます
table[usotsuki] = -table[usotsuki]
#可能性のある順位を配列にします
tmp = table.map { _1 < 0 ? [1, 2, 3] - [-_1] : [_1] } #順位を総当りでまわして判定します [1, 2, 3].permuta
新人エンジニアに向けてのエール
# 初投稿です。
4月も1週間過ぎたので、駆け出しエンジニアに向けてエールを送る意味で記事を執筆することにしました。
まず初めに軽い自己紹介から。
### About me
“`java:AboutMe.java
// 私は都内のIT企業で働く4年目のエンジニアです。
// 得意科目はフロントエンドの実装で、これまでにReact.jsやVue.jsなど
// のプロジェクトで要件定義~テストまで幅広く開発してまいりました。
// フロント以外にも、JavaやPHP、Pythonなども経験があります。
// 4年目といってもまだまだ勉強することだらけの毎日ですが、培ってきた知見や、
// つらかった経験、楽しかった経験などつらつらと発進できたらと思います。
// ということで。。。String greeting = “よろしくお願いします。”;
System.out.println(greeting);
“`### プログラミング学習について
未熟な私ですが、最近では後輩なども何人かできて、よく質問されるのが、「どうやって覚えてますか?」といった質問です。
その問いに対
Railsを使ってアプリを作る(基礎中の基礎)
# はじめに
今回は、railsをつかってアプリをつくり、デプロイまでの基本的な流れをまとめました。
基礎中の基礎という通り、画面にHello,worldを表示するだけのアプリになります。
エディタはVSCodeを用いて、バージョン管理をGitで行い、Renderへデプロイします。
使用ハードはmacbook m2です。
Rubyはデフォルトで入ってるので、Railsのインストールから始めます。# Railsをインストール
“`
$ gem install rails
“`-vを行うことでバージョンの指定もできます。
“`
$ gem install rails -v 7.0.4.3
“`次にbundlerをインストールします。
“`
$ gem install bundler
“`# アプリを作る
Railsプロジェクト用のenvironmentディレクトリを作ります。
“`
$ cd
$ mkdir environment
$ cd environment/
“`rails newを実行する。
このとき、PCにインストー
rescueとrescue_fromの使い方
# はじめに
先日、業務でrescueを使用したエラー処理を実装したので、備忘録として記事にしたいと思います。
この記事では、rescue と rescue_from の基本的な使い方をまとめてみました。
私自身、まだまだ未熟な経験の浅いエンジニアですので、誤った解釈をしている可能性もあります。もしそういった場合がありましたら、ぜひコメントでご指摘いただければ幸いです。
# rescue
`rescue` は、プログラム内で発生する特定のエラーを効果的に捕捉し、対処するための機能です。
これにより、エラー発生時の適切な対応やプログラムの安定稼働が可能になります。### 基本構文
`rescue` を使うことで、特定のエラーが発生した時に特定のコードを実行するよう設定できます。
基本的な形式は以下のようになります。“`ruby
begin# 例外が発生する可能性のあるコード
rescue [例外クラス]
# 例外が発生した時に実行するコード
end
“`### 使用例
例えば、ユーザーがデータベースに存在しない ID でアクセスしたときにエラ
【Ruby】ハッシュを使って条件分岐をスッキリさせよう
## これは何?
目の前にいる海外からやってきた人にあいさつしたいとき、ありますよね?
どうせあいさつするならその方の国の言語であいさつしたいものです。相手の国に合わせたあいさつをするときに便利なのが、条件分岐です。
この条件分岐をスッキリ書く方法を学んだので、アウトプットします。## やってみよう
レベル別に段階を踏んでやっていきます。
### if文
“`ruby
if country == ‘Japan’
hello = ‘こんにちは’
elsif country == ‘USA’
hello = ‘Hello’
elsif country == ‘France’
hello = ‘Bonjour’
elsif country == ‘Spain’
hello = ‘Hola’
elsif country == ‘China’
hello = ‘你好’
else
hello = ‘Hello’ # デフォルトの挨拶
end
“`もっとも地道に書く方法として、if文があります。
でも、いちいち`elsif country ==`、`
20240406 日記 pipenvについて、githubのlockについて
### pipenvについて
Pipfileというのがあって、そこに環境ごとに使うpipモジュールを書いていく
そして、`pipenv install` (`–dev`とかつけるとその環境用の)とすると、Pipfileに書かれたモジュールが閉じられた仮想環境向けにインストールされる、という仕組みらしいこれだけ聞くとrubyのbundlerに似てる、と思った。けどbundlerはグローバルにgemをインストールしてくる(`–path vender/bundle`とかでグローバルに入れない方法もあるのは知ってるけど)
Rubyではグローバルに入れる使い方だけど、それで問題になったことはない
一方pythonはなんとなく仮想環境つかってグローバルを汚染しないようにする、という感覚だったけど、何が違うのだろう?と不思議におもったのでまずBundlerで調べると、まさに自分が思った通りのことをまとめてくれている方がいた
参考:[bundle install時に–path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう #Ruby – Qiita
【Ruby】じゃんけんプログラム
# 仕様
– ユーザーにじゃんけんの手を選んでもらう。(0:グー、1:チョキ、2:パー)
– プログラム側では、ユーザーと勝負するじゃんけんの手をランダムに選ぶ。
– 「ユーザーが選んだじゃんけんの手」と「プログラムがランダムに選んだじゃんけんの手」を表示する。
– ユーザーが勝った場合は「あなたの勝ちです。」と表示する。
– ユーザーが負けた場合は「あなたの負けです。」と表示する。
– あいこの場合は 「あいこで」と表示させたあともう一度じゃんけんをさせる。
– あいこが3回続いた場合は、「3回あいこが続きました。また挑戦してください。」と表示させたあとにプログラムを終了させる。# 自分のコードとChatGPTのコードの比較
### 自分のコード
“`ruby:janken
# 配列とあいこカウント用変数の定義
janken_hands = [“グー”, “チョキ”, “パー”]
aiko_count = 0puts “最初はグー、じゃんけん…”
# 3回ループさせる
while aiko_count < 3 if aiko_count > 0
puts
Rails 6.0.3でRuby 2.6.6の環境構築
Ruby on Railsなるものを勉強してみようと『パーフェクトRuby on Rails【増補改訂版】』に手を出しました。
数年前の書籍だから完全に同じ環境を構築する必要も無さそうだけど、出来るだけ同じ環境で勉強してみることにしました。意外と手間が掛かったので記録しておきます。
書籍の「Appendix Railsの開発環境構築」に関しては特に問題は無かったので省略して、Railsのversion 6.0.3をインストールする部分を説明していきます。
まず普通に`gem install rails -v 6.0.3`をすると下記のようにnokogiriライブラリに関するエラーが出ます。
“` console
$ gem install rails -v 6.0.3
(中略)
Successfully installed activesupport-6.0.3
Building native extensions. This could take a while…
/home/user/.rbenv/versions/2.6.6/lib/ruby/2.6.0/ru
Railsでの命名の単数複数形使い分け
### モデル名
– **形式**: 単数形
– **例**: User, Product, Order
– **理由**: モデルは1つのオブジェクトを表すため
– **参考コマンド**: “`rails generate model Post content:text“`
(postsテーブルにtext型のcontentカラムを作成)### コントローラー名
– **形式**: 複数形
– **例**: UsersController, ProductsController, OrdersController
– **理由**: コントローラーは複数のリソース(モデルのインスタンス)を扱うため
– **参考コマンド**: “`rails generate controller Posts home about“`
(home,aboutアクションを持つPostsコントローラーを作成)### テーブル名
– **形式**: 複数形
– **例**: users, products, orders
– **理由**: 1つのテーブルには複数のレコー
【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レスポンスの中身を実際に組み立てる部分です。必要に応じてコントローラからモデルのオブジェクトなどを受け取り、画面表示に利用します。
**コントローラ**は、ユーザーが操作するブラウザなどのクライアントからのリクエストを受け、適切なレスポンスを作成す