メインコンテンツへスキップ
Python 使いのための Ruby 入門

Python 使いのための Ruby 入門

·
技術 Python Ruby
近藤 憲児
著者
近藤 憲児
目次

Python と比較しながら Ruby に入門する。

ツールをざっくりと比較
#

ざっくりと、という言葉を入れたのは、完全に 1:1 対応とも言い難いため。以下の表は雰囲気を掴む程度に理解する。

PythonRuby説明
PipRubyGems (gem)パッケージ(gem)の管理とインストールを行うツール
pyenvrbenvRuby のバージョンを管理。バージョンを切り替えるためのツール。
PoetryBundlerプロジェクトの依存関係を管理し、gem の依存関係を解決するためのツール。
pyproject.tomlGemfileプロジェクトの依存関係を記述するファイル。
poetry.lockGemfile.lockインストールされた gem のバージョンを固定するためのファイル。

指定したバージョンを使う
#

Python:

pyenv install 3.11.8
pyenv local 3.11.8

Ruby:

rbenv install 3.0.3
rbenv local 3.0.3

プロジェクト別に仮想環境を作る
#

Python:

python3.11 -m venv .venv
. .venv/bin/activate
pip install pytest

Ruby:

bundle config set --global path './vendor/bundle'  # これは一度やれば OK
bundle add rspec

ここは厳密に対応関係があるわけではない。

python の venv の場合は runtime 丸ごと .venv 以下にコピーされるが、 一方 ruby の場合は runtime はシステムに (rbenv で) install されたものを使う。ここは異なる。

同じだと言えるのは、インスールしたライブラリを保存する場所を、システムのそれとは独立させられること。上のコマンドを実行すると、 python では .venv 以下に 保存されるし、 ruby では ./vendor/bundle 以下に保存される。ちなみに ./vendor/bundle という directory 名が 慣例としてよく利用されているようだ。これは Bundler の docs にも記述されている。

ちなみに、 bundle config set --global path './vendor/bundle' をすると、その config は ~/.bundle/config に保存される。 同様のコマンドで bundle config set --local path './vendor/bundle' があり、そのとき config は .bundle/config に保存される。 global と local 両方に config がセットされている場合 local のほうが勝つ。

コマンド例
#

Poetry コマンドBundler コマンド説明
poetry add <package>bundle add <gem>依存関係としてパッケージ/gem を追加する
poetry add --group dev <package>bundle add --group dev <gem>dev group に依存関係としてパッケージ/gem を追加する
poetry installbundle installプロジェクトの依存関係をインストールする

スクリプトをシンプルに実行する
#

Python:

# 仮想環境を activate した状態で
python a.py

Ruby:

bundle exec ruby a.rb

ポイントは bundle exec にある。これでプロジェクト毎に install したライブラリを利用しながら実行することができる。

テストを実行する
#

Python:

# 仮想環境を activate した状態で
pytest

Ruby:

bundle exec rspec

または

bundle install --binstubs  # 一度やれば OK
bin/rspec

bundle exec rspecrspec コマンドを bundle 配下で実行するという意味で、上の ruby のコマンド実行と同じ意味。

ruby の実行とちょっと違うのは、この bundle exec を省略することができること。一度 bundle install --binstubs を実行すると、 ./bin directory ができて その下に rspec という実行ファイルができる。これを指定して実行することで bundle exec を省略することができる。

この話は bundle exec rails でも同様。

VSCode での debug
#

どうも vscode-rdbg が良いみたいなので入れてみたけど、よかった。 VSCode の Python extension だと Testing というのがあったけど、 Ruby の場合は Debug しかないのかな? F5 で debug を実行できる。 break point を 設定したりできて良かった。

Ruby のある version 未満の場合は gem install debug をしておく必要があるみたい。 また上の設定をしている場合は .vscode/launch.json はデフォルトからちょっといじる必要がある。 "rdbgPath": "bin/rdbg", を追加しておく必要がある。

文法を学ぶ
#

以下のようなドキュメントが参考になる:

参考
#

Related

プロンプトエンジニアリングでがんばらない - Agentic Workflow へ -
Python 技術 AI LLM
Git の commit メッセージを自動的に生成するスクリプト
技術 Python Git AI
Python 開発環境セッティング 2024: VSCode, venv, poetry, ruff pytest そして rye
技術 Python