- 1. 【Ruby】irbとbinding.irbとは
- 2. Tips: ファイルの作成日時をファイル名のソート順と同じ順序になるように変換するRubyスクリプト
- 3. ffmpegで複数のVOBファイルを一つのmp4ファイルに変換するRubyスクリプトを実装する
- 4. wc代替rubyスクリプト
- 5. ビット演算を利用すると 1 つの整数値で複数の属性を表現できる
- 6. 【個人メモ】Ruby on Rails チュートリアル 第8章
- 7. Facebook 広告アカウントを購入する USA
- 8. 何重にも条件分岐する話
- 9. RUBYのアクセサメソッドについて
- 10. 最新のRubyをインストールする
- 11. 【超初心者ミス】ハッシュを設定してる際に『no implicit conversion of Symbol into Integer』がでてしまった
- 12. Rubyの記述ルール(個人メモ)
- 13. Railsでパンくずリストを作成する方法 – Gretelを使った実装
- 14. Kaigi on Rails 2024 に参加してきた
- 15. Rails ActiveRecordのクエリガイド
- 16. 【個人メモ】Ruby on Rails チュートリアル 第7章
- 17. Rubyの基本(変数/型/条件分岐/メソッド/クラス等)
- 18. MySQL client is not connected がターミナルに表示されたら
- 19. 【Ruby】スコープについて
- 20. Railsで`ckeditor`の`Sprockets::FileNotFound`エラーを解決する方法
【Ruby】irbとbinding.irbとは
# はじめに
こんにちは!現在アメリカの大学で語学を学びながら、ソフトウェアエンジニアを目指して独学しているものです。
本日は、Rubyでデバッグに使われる `irb` と `binding.irb` について詳しく解説していきます。実務で使われる機会が多いかはわかりませんが、`irb`は教材でよく登場する基本的なツールですので、使い方を知っておいて損はありません。# `irb`とは
`irb`(Interactive Ruby)は、Rubyの対話型シェルです。
対話型シェルとは、ターミナル(黒い画面)に入力された内容をすぐに実行し、結果を表示する環境のことです。
`irb`ではRubyコードを1行ずつ実行し、即座に結果を確認できるため、コードの学習や動作確認、デバッグにとても役立ちます。通常のプログラム実行では、コードエディタ(例:`Visual Studio Code`など)でスクリプトを書き、コマンドラインでファイルを指定して実行しますが、`irb`ではターミナル上で直接Rubyコードを入力し、結果をその場で確認できます。
### `irb`の基本的な使い方
ターミナル
Tips: ファイルの作成日時をファイル名のソート順と同じ順序になるように変換するRubyスクリプト
## この記事は何
タイトルの通り、ディレクトリ内のファイルの作成日時をファイル名のソート順と同じ順序になるように変換するRubyスクリプトを作成したので記事として残しておきます。## スクリプト
以下の通りです。“`rb
require ‘fileutils’directory = ‘/path/to/directory’
files = Dir.glob(File.join(directory, ‘*’)).sort
base_time = Time.now
files.each_with_index do |file, index|
new_time = base_time + (index * 600) # 600 seconds = 10 minutes
File.utime(new_time, new_time, file)
endputs “Successfully updated creation dates for files in #{directory}”
“`
ffmpegで複数のVOBファイルを一つのmp4ファイルに変換するRubyスクリプトを実装する
## この記事は何
最近DVDに保存していた動画ファイルをmp4ファイルとして書き出す必要があったため、
スクリプトを作成しました。
この記事では記録のためスクリプトの実装を残しておきます。## 環境
– Ruby: v3.2.2
– ffmpeg: v7.1
– マシン: MacBook Air M1, 2020## 実装したRubyスクリプト
実装したスクリプトは以下の通りです。“`ruby:eport_dvd.rb
require ‘fileutils’# Get the output directory from command-line arguments
if ARGV.length != 1
puts “Usage: ruby export_dvd.rb”
exit 1
end# Define the directory containing the VOB files
input_directory = “/path/to/input/directory”output_directory = “path/to/o
wc代替rubyスクリプト
### サンプルソース
対象ディレクトリのファイルの行数を合計します。
“`wcl.rb
files = Dir.glob(“target/*.csv”)
count = 0
files.each do |file|
File.foreach(file) {}
count += $.
end
puts count
“`### 【背景】`wc -l` は、最終行の改行をみない
ファイルの行数をみるのに`wc -l`を使うことが多いのですが、残念ながら最終行に改行がないと1行扱いしてくれません。
不満はあれどファイルの最後に改行がつくかどうかはケースバイケースです。なんなら標準入力の最後に改行がつくかどうかも怪しいです。
CSVファイルなどは最終行に改行がなくともその後の処理系では問題なく処理されるので、なおさらファイル最後の改行の有無は混在します。
ということで、`wc -l` ではどうにもならないので、別スクリプトを書くしかないということです。
### ソースの解説
“`
files = Dir.glob(“target/*.csv”)
“`
汎用コ
ビット演算を利用すると 1 つの整数値で複数の属性を表現できる
## 内容
ビット演算を利用すると 1 つの整数値で複数の属性を表現できて便利です 😉
“`rb
# 整数を 2 進数の文字列に変換するメソッドを定義する。
using (Module.new do
refine Integer do
def to_binary_string(digits = 4)
to_s(2).then { “%0#{digits}d” % _1 }
end
end
end)高血圧 = 1
高血糖 = 2
高コレステロール = 4
高尿酸 = 8高血圧.to_binary_string
#=> “0001”
高血糖.to_binary_string
#=> “0010”
高コレステロール.to_binary_string
#=> “0100”
高尿酸.to_binary_string
#=> “1000”太郎 = 2
太郎.to_binary_string
#=> “0010”
太郎.anybits?(高血圧)
#=> false
太郎.anybits?(高血糖)
#=> true
太郎.anybi
【個人メモ】Ruby on Rails チュートリアル 第8章
Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです
# 個人メモ
– Sessionを設定することでコンピュータ間(ユーザーのパソコンのWebブラウザとRailsサーバーなど)を半永続的に接続することが可能
– cookies
ユーザーのブラウザに保存される小さなテキストデータのこと
Cookiesを保存場所とすることでセッション機能を実現する
– form_with(url: login_path, scope: :session)
セッションではSessionモデルがなく、そのためsessionインスタンス変数に相当するものがない
したがって、form_withヘルパーにはscopeとurlを指定する必要がある
– Rubyではnilとfalse以外のすべてのオブジェクトは、真偽値ではtrueになる
– flash.nowのメッセージはその後リクエストが発生したときに消滅する
– 全コントローラの親クラスである「Applicationコントローラ」にセッションヘルパーをincludeすることでどのコントローラからでもメソッドを呼び出せる
Facebook 広告アカウントを購入する USA
Facebook 広告アカウントを購入する
一部の企業は、広告にもっとお金をかけるために Facebook 広告アカウントを購入します。Facebook では、1 つのアカウントで使える金額に制限があります。Facebook 広告アカウントを購入すれば、より多くの広告を掲載でき、
おそらく売上も増えるでしょう。Facebook 広告アカウントを購入すると、良い履歴を持つアカウントも手に入るかもしれません。これにより、広告の成果が向上する可能性があります。
Facebook は、長い間存在し、ルールを守っているアカウントを好みます。複数のアカウントを持つことは、1 つのアカウントに問題がある場合にも役立ちます。
Facebook 広告アカウントを購入すれば、1 つのアカウントが機能しなくなっても、すべての広告を失うことはありません。ですから、Facebook 広告アカウントを購入しましょう。当社のサービス品質
• 100% 満足保証
• 超高速配信
• 米国アカウント (必要な場合) (米国 IP 付き)
• すべての国に対応
• Facebook 広告マネージャー アカウント
•
何重にも条件分岐する話
条件は3つ。
1,未ログインユーザーは編集、更新、削除ページに入るとログインページにリダイレクトされて
2,編集、更新、削除ページにいくとトップページに遷移されて
3,ログイン済みであっても商品出品者(@item.user)ではない場合はトップページにリダイレクトされる“`
Class ItemsController < ApplicationController before_action :authenticate_user!, only: [:edit, :update, :destroy] # 未ログインユーザーはログインページにリダイレクト before_action :move_to_index, only: {:edit :update, :destroy] 3アクションはmove_to_index実行 中略 def move_to_index return unless current_user == @item.user # ログイン済みでも出品者でない場合はトップページにリダイレクト redirect_to root_path e
RUBYのアクセサメソッドについて
![スクリーンショット 2024-11-01 231941.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921010/9f5ba6e3-9c20-c475-b868-e60cb35ee14a.png)
RUBYではsetterメソッドとgetterメソッドを上記のように書くことができる。
![スクリーンショット 2024-11-01 232517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921010/ebdd5b2b-11e7-10e9-4146-97ba6b045efb.png)
上記のようにattr_accessorメソッドを使うことによりsetterメソッドとgetterメソッドを使うと長くなってしまうコードを同じ意味で上記のようなスマートなコードで書くことができます。
![スクリーンショット 2024-11-01 233120.png](https://qiita-image-store.s3.ap-
最新の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 #メソッド内なの
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))。
## 解決方法
この問題を解決するには、いくつかのアプローチがありますが、互換性のあ