- 1. 最新のRubyをインストールする
- 2. 【超初心者ミス】ハッシュを設定してる際に『no implicit conversion of Symbol into Integer』がでてしまった
- 3. Rubyの記述ルール(個人メモ)
- 4. Railsでパンくずリストを作成する方法 – Gretelを使った実装
- 5. Kaigi on Rails 2024 に参加してきた
- 6. Rails ActiveRecordのクエリガイド
- 7. 【個人メモ】Ruby on Rails チュートリアル 第7章
- 8. Rubyの基本(変数/型/条件分岐/メソッド/クラス等)
- 9. MySQL client is not connected がターミナルに表示されたら
- 10. 【Ruby】スコープについて
- 11. Railsで`ckeditor`の`Sprockets::FileNotFound`エラーを解決する方法
- 12. [Tips]pdf-readerでパスワード付きファイルからデータを抽出する
- 13. 【個人メモ】Ruby on Rails チュートリアル 第6章
- 14. 【2023年版】Rubyリポジトリのコミット動向、主要言語との比較
- 15. 【個人メモ】Ruby on Rails チュートリアル 第5章
- 16. 【Ruby】インスタンスメソッドとクラスメソッドの使いわけ
- 17. Railsでの joins と includes の違いと使い分け
- 18. Form_withとは!
- 19. ActiveRecord::PendingMigrationError【Ruby on Rails】
- 20. 【Rails】RAILS_DEFAULT_LOGGERを使用できない
最新のRubyをインストールする
## はじめに
長年、Ruby2.6を使っていたが、最新版のRubyをインストールする必要性がでてきました。ついでにrbenvも最新版にしました。
## 環境
Ubuntu20.4
## rbenvのバージョンアップ
現状のrbenvのバージョンを確認します。
“`
$rbenv -v
rbenv 1.2.0-87-ge8b7a27
“`rbenvが入っているディレクトリ(ルート)を調べます。
“`
$rbenv root
“`rbenvのルートが分かったら、そこに移動してGitから最新版を取得します。
“`
$cd “$(rbenv root)”
$git pull
“`rbenvのバージョンが最新になったことを確認します。
“`
$rbenv -v
rbenv 1.2.0-91-gc3ba994
“`ついでに、ruby-buildのルートに移動して、ruby-buildも最新版を取得します。
“`
$cd “$(rbenv root)”/plugins/ruby-build
$git pull
“`ruby-buildが最
【超初心者ミス】ハッシュを設定してる際に『no implicit conversion of Symbol into Integer』がでてしまった
## 状況
hashを設定している際に上記のエラーが出てしまった。
`no implicit conversion of Symbol into Integer` を調べても原因がでてくるが解決法がピンとこない(試したが上手く行かない)## 解決策
`return`で返り値設定しているか確認
下記の場合はhash値を指定しているメソッドの最後に **`hash`** をつけたら解決した
~~~ruby
def edit_hash
hash = {}#メソッド内容
hash # ここの宣言が必要 ”return hash”を省略した記述
end
~~~## 何故だったのか
Rubyの返り値には`最後に評価された値が返る`という暗黙のルールがある。
そのため返り値を”return”で指定しているのだが、上のコードのように省略して書かれているので初学者は忘れやすい。(忘れた)~~~ ruby
# retrunを設定していない
def edit_hash
hash = {}
hash[:name] = ‘鈴木’
hash[:age] = 24
h
Rubyの記述ルール(個人メモ)
## はじめに
これまでの個人アプリ開発ではJavaScript、TypeScript、Pythonなどを使ってきました。今回初めてRubyを使うため学習を始めました。
Ruby開発者としての一歩として、Ruby独自の記述ルールやクラスの定義の仕方を理解しようと思い、個人メモを作成することにしました。もし誤り等がありましたら、ご指摘いただけると幸いです。## null値
Rubyではnull値の場合、「nil」(ニル)と表示されます。## ハッシュ
JavaScriptでいうところのオブジェクトと同じで、キーとバリューのペアで格納し、キーを指定してバリューを取得するデータ構造です。
また、キーは文字列で指定する方法とシンボルで指定する方法があります。### 構文
“`ruby
ハッシュ名 = {“key” => value, … }
# または
ハッシュ名 = {:key => value, … }
“`【**キーの指定方法**】
– **文字列** “key名”(ダブルクオーテーション)
– **シンボル** :key名(コロン)### 具体例
“
Railsでパンくずリストを作成する方法 – Gretelを使った実装
# はじめに
こんにちは!
記事をご覧いただきありがとうございます。本記事では、Railsでパンくずリストを作成する方法についてまとめます。
# 目次
1. [パンくずリストについて](#パンくずリストについて)
1. [手順](#手順)
1. [書き方](#書き方)
4. [最後に](#最後に)# パンくずリストについて
パンくずリストとは、Webサイトの現在のページの位置を示すナビゲーションリンクのことです。ユーザーがどのページにいるかを視覚的に把握できるため、サイトのユーザビリティが向上します。今回は、Rails用のGretelというGemを使って、パンくずリストを簡単に実装する方法を以下にまとめています。# 手順
#### Gretelをインストールするまず、GretelをGemfileに追加し、インストールします。
“`ruby
# Gemfile
gem ‘gretel’
“`
インストールコマンドを実行します。
“`
bash
$ bundle install
“`
#### 設定ファイルを作成する
次に、以下のコマンドを実行して、conf
Kaigi on Rails 2024 に参加してきた
[Kaigi on Rails 2024](https://kaigionrails.org/2024/) 参加してきました!
Qiita からは自分を含め3人が現地参加してきました。https://x.com/nemunemu3desu/status/1849979399145390397
## 聞いたセッション (の一部) の紹介
めちゃくちゃ面白いものが多かったので、全部は書ききれないですが、たくさん書いてます。
2日目ガス欠気味だったので、1日目が多めです。### 基調講演: Rails Way, or the highway
https://evilmartians.com/events/keynote-rails-way-or-the-highway-kaigi-on-rails-2024
Rails は 「Rails scales from HELLO WORLD to IPO」と呼ばれるが、その長い期間
Rails ActiveRecordのクエリガイド
## テーブル構造
まず、以下のようなテーブル構造を例に説明します:
### usersテーブル
“`sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255),
age INTEGER,
premium BOOLEAN,
created_at TIMESTAMP
);
“`### postsテーブル
“`sql
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
title VARCHAR(255),
content TEXT,
likes_count INTEGER DEFAULT 0,
created_at TIMESTAMP
);
“`### commentsテーブル
“`sql
CREATE TABLE comments (
id SERIAL PRIMARY KEY,
post
【個人メモ】Ruby on Rails チュートリアル 第7章
Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです
# 個人メモ
– debugメソッドとparams変数を用いてページにデバッグ情報を表示できる
– Railsの3つの環境
test環境、debelopment環境、production環境がある
– resources :users
REST機能を実装するために必要な一文
名前付きルーティングとUsersリソースで必要になる全てのアクションを有効にすることができる
– params[:id]でidに対応したデータを取得することができる
– debuggerメソッド
ターミナルにrdbg(Ruby debugger)プロンプトが表示される
バグが発生した際、怪しい箇所に差し込めばシステムの状態を調査できる
– Gravatarでユーザー画像とメールアドレスを関連づけることができる
– form_withメソッドを用いることでユーザー登録フォームが作成できる
– Srtong Parameters
必須パラメータと許可済みパラメータを指定すること
これにより許可していない属性をparamsハ
Rubyの基本(変数/型/条件分岐/メソッド/クラス等)
# Ruby
サイトではなく、Webアプリケーションを作るための言語として、日本人によって作られた「楽しさ」を重視した言語
– `puts` など、命令を出すものを **メソッド(関数)** といい、複数の処理を1つにまとめたもの
– メソッドに渡す値を **引数** という## 変数と定数
### 変数
– 変数:値を変えることが可能(代入できるもの)
– 変数名の1文字目は、小文字のアルファベットか `_`(アンダースコア)のみが使用可能
– 数字で始まる変数名はNG### 定数
– 定数:値を変えることができないもの
– 定数の始まりは大文字で、 `_` で区切る(スネークケース)—
## 型変換
文字列や数値をそれぞれの方に変換し、組み合わせることができる
| 型変換方法 | 説明 |
| — | — |
| `.to_s` | 整数→文字列 |
| `.to_i` | 文字列→整数 |上記の方法を使うと煩わしい場合があるため、**変数展開**や**文字列展開**(”#{word}”)が便利
**ダブルクォーテーションで囲った場
MySQL client is not connected がターミナルに表示されたら
`MySQL client is not connected`がターミナルに表示されたら速度系の問題!
私は単体テストコードをしていた時、異常系テストでうまくいったりいかなかったりの現象が起きていました。
例えば以下のコード
“`spec/models/xxx_spec.rb
item = FactoryBot.create(:item, user: user)
“`
このコードの中には画像が含まれている為処理に時間が掛かり、その処理の前に下のコードを読んでしまいエラーが出ていました。これを解決するコード
“`config/environments/test.rb
config.active_job.queue_adapter = :inline #最終行endの上に追記
“`
この**active_job**は途中で重い処理があったら、それが終わってから次のコードを読んでね、という命令を出してくれる。このせいで丸2日止まっていました。
やっと次に進める!!!!
ありがとうございます!!
【Ruby】スコープについて
# はじめに
こんにちは、現在アメリカの大学で語学を学びながらソフトウェアエンジニアになるために独学で勉強しているものです。
今回は、Rubyのスコープについて整理した内容を共有します。
スコープは少し苦手意識があって避けていたのですが、しっかり向き合い、記事にまとめてみました。
もし内容に誤りがあればご指摘いただけると幸いです。# スコープとは?
プログラム内の変数やメソッドには、それぞれアクセス可能な範囲が決まっています。
この範囲のことをスコープと呼び、変数の種類によって異なるスコープが適用されます。
この記事では、Rubyの代表的な変数のスコープについて、それぞれの用途やアクセス範囲を解説します。## ローカル変数
ローカル変数は、メソッドやブロック内で定義され、その内部でのみ使用できます。
他の部分からアクセスや変更ができないため、安全に使えるのが特徴です。
“`ruby:local1.rb
def greet
message = “Hello, World!”
puts message
endgreet # => “Hello, World!”
pu
Railsで`ckeditor`の`Sprockets::FileNotFound`エラーを解決する方法
## 問題の背景
Railsアプリケーションにおいて、`ckeditor`を利用する際に`Sprockets::FileNotFound`エラーが発生する場合があります。具体的には、次のようなエラーメッセージが表示されます。
Sprockets::FileNotFound at /admin/users/sign_in
couldn’t find file ‘ckeditor/init’ with type ‘application/javascript’
Checked in these paths: …このエラーは、アセットパイプラインで`ckeditor/init`ファイルが見つからないために発生します。`ckeditor`のバージョンとSprocketsの互換性の問題が原因であることが多く、公式リポジトリでも議論されています([Issue #881](https://github.com/galetahub/ckeditor/issues/881))。
## 解決方法
この問題を解決するには、いくつかのアプローチがありますが、互換性のあ
[Tips]pdf-readerでパスワード付きファイルからデータを抽出する
pdfの中身を抽出する方法は各言語様々な方法があると思いますが、rubyでやる方法の一つとして[pdf-reader](https://github.com/yob/pdf-reader)を利用する方法があります。
gemのインストール後、以下のようなコードで簡単にページのテキストやメタデータを見ることができます。“`ruby
require ‘pdf-reader’reader = PDF::Reader.new(“sample.pdf”)
puts reader.pdf_version
puts reader.info
puts reader.metadata
puts reader.page_count
reader.pages.each do |page|
puts page.text
puts page.fonts
end
“`ただ今回扱うファイルがパスワード付きだったので、どうするのかReadmeを見たところ特に言及はありませんでした。
どうしたものかと思っていましたが、gemのテストを見たところ答えがありました。https://github.
【個人メモ】Ruby on Rails チュートリアル 第6章
Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです
# 個人メモ
– Model
データモデルとして扱うデフォルトのデータ構造のこと
– Active Record
データベースとやり取りするRailsのライブラリ
Active Recordは、データオブジェクトの作成/保存/検索のためのメソッドをもつ
– マイグレーションコマンド
rails generate model モデル名 属性
マイグレーションファイルを変更すると後からデータベースの構造を変更することが可能
– マイグレーションの適用
rails db:migrate
– モデルに関するテスト
rails test:models
– 有効性(Validity)の検証
valid?メソッドでオブジェクトが有効かどうか確認できる
– 存在性の検証
validatesメソッドでpresence: trueを追加することで存在性を検証した
– フォーマットの検証
formatオプションを用いて、有効なメールアドレスにのみマッチする正規表現を組み立てることで検証した
– 一意性の検証
【2023年版】Rubyリポジトリのコミット動向、主要言語との比較
2023年のRubyリポジトリのコミット数を Author ごとの時系列グラフにしてみました。
## Rubyリポジトリのコミット動向
2023年のRubyリポジトリの総コミット数は6767回でした。この数は、主要なプログラミング言語の中だと Java より大きくて Kotlin より小さいです。
Author の合計人数は307名です。上位5名で合計3254コミット、全体の48%を占めています。
![ruby-commits-2023.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33011/f52550af-72db-5cc2-dfbf-54e35c5eb273.gif)
– 集計したリポジトリは [ruby/ruby – GitHub](https://github.com/ruby/ruby) の master ブランチです
– グラフデータには `git log -n 10000000 –date short –pretty=format:”%ad%x09%h%x09%an”`
【個人メモ】Ruby on Rails チュートリアル 第5章
Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです
# 個人メモ
– モックアップ(ワイヤーフレーム)
ユーザーインターフェイスの概要を示したもの
– Bootstrap
– Bootstrapは bootstrap-sass gemを使ってRailsアプリケーションに導入できる
– Bootstrapにてnavberやnav、navbar-nav、navbar-rightクラスには特別な意味がある
– パーシャル(partial)
Webサイトのレイアウトにページごとの内容を挿入する
ex) <%= render 'layouts/header' %>
– renderと呼ばれるRailsヘルパーを用いてヘッダーの情報を置き換えている
– _header.html.erbというファイルを探してその内容を評価し、結果をviewに挿入している
– アセットパイプライン
SassとAsset Pipelineは、開発効率のために切り分けられたCSSの冗長な部分を圧縮し、本番環境に最適化した結果を出力する
– 名前付きルーティング
【Ruby】インスタンスメソッドとクラスメソッドの使いわけ
# はじめに
こんにちは、絶賛Ruby勉強中のものです。
本日はRubyのインスタンスメソッドとクラスメソッドの使い分けについて説明していきたいと思います
Rubyの経験がまだ浅い私は、クラスメソッドの使い時をあまり理解しておらずインスタンスメソッドで代用できるのでは?と考えておりました。
そこで本日はインスタンスメソッドとクラスメソッドの使い分けについて記事を書いていこうと思います。
なお、インスタンスメソッドとクラスメソッドの説明については、記事を書いたので詳しく見たい方は確認していただければ幸いです。https://qiita.com/Taira0222/items/aca062a0cfb879fded31
# インスタンスメソッド
まずは、フルネームと年齢を取得する`User`クラスと`user1`,`user2`インスタンスについてみていきましょう。
“`ruby:instance.rb
class User
attr_accessor :first_name, :last_name, :agedef initialize(first_name, la
Railsでの joins と includes の違いと使い分け
## 目次
– [joinsとは?](#1-joinsとは)
– [includesとは](#2-includesとは)
– [joinsとincludesの使い分け](#3-joinsとincludesの使い分け)
– [N+1問題とは?](#4-n1問題とは)
– [ベストプラクティス](#5-ベストプラクティス)
– [組み合わせて使用する例](#6-組み合わせて使用する例)## はじめに
Railsのアプリケーション開発では、モデル間の関連性を活用してデータを取得することが多く、その際に利用するのが `joins` と `includes` です。この記事では、データベースから必要な情報を取得する際に使用する`joins`と`includes`について、具体的な使い分けとその効果を解説します。
## 1. `joins`とは?
`joins`は、内部結合 (INNER JOIN) を使用して、関連するテーブルからデータを取得するためのメソッドです。RailsのActiveRecordで`joins`を使用すると、関連付けされた複数のテーブルを結合してクエリを発行できま
Form_withとは!
form_withメソッドは、Railsで使うフォームの作成方法。これを使うとデータを入力する画面(フォーム)を簡単に作成できます。
たとえば、「商品を購入する」や「新しいユーザーを登録する」などの機能がある場合、それぞれのデータを入力するフォームが必要です。form_withメソッドは、このようなフォームを作成するのに便利です。
基本の使い方
“`ruby
<%= form_with model: @user do |form| %>
<%= form.text_field :nickname %>
<%= form.submit "登録" %>
<% end %>
“`
model: @user の部分で、どのデータ(この場合はユーザー)を扱うフォームか指定します。
form.text_field :nickname は「ニックネーム」を入力するための箱を作ります。
form.submit “登録” は送信ボタンを作ります。
このように、form_withを使うと、HTMLを直接書かなくてもRailsが自動で適切なフォームを生成してくれます。form_withで
ActiveRecord::PendingMigrationError【Ruby on Rails】
ruby on railsでアプリケーション作成中に出遭ったエラーについての解決方法です。
今回、ターミナルからrails g migration Addカラム名Toテーブル名でカラムを追加したところ、テーブル名を間違えてしまったようでエラーになりました。
## エラーメッセージ
“`
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=development
You have 1 pending migration:
20241025004905_add_user_id_to_tweers.rb
“`
マイグレーションは保留中、bin/rails db:migrate RAILS_ENV=developmentを実行してとのことなのでターミナルに入力。続いて下記エラーが発生。
“`
StandardError: An error has occurred, all later migrations canceled: (StandardError)~中略
【Rails】RAILS_DEFAULT_LOGGERを使用できない
## はじめに
Railsのアップデート中にRAILS_DEFAULT_LOGGERを使用している箇所でエラーが出たので、その対応をまとめます。## 問題
コード
“`ruby
RAILS_DEFAULT_LOGGER.info “xxx”
“`エラー文
“`ruby
uninitialized constant RAILS_DEFAULT_LOGGER
“`## 解決方法
以下のように修正します。
“`ruby
Rails.logger.info “xxx”
“`## 参考
https://stackoverflow.com/questions/11585296/uninitialized-constant-rails-default-logger