やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Rubyまとめ2(環境構築、コマンド、シバン、マジックコメント)

 私が独断と偏見で要約する。

目次

  1. Rubyとは
  2. 環境構築
  3. コマンド
  4. shebangとmagic-comment
  5. magic-comment
  6. Hello world

1. Rubyとは

 Rubyとはまつもとゆきひろによって開発されたオブジェクト指向スクリプト言語である。彼は「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (enjoy programming)」と述べている。

 以下URLでブラウザから実行できる。p 'A'と入力してRunボタン押下すると"A"と出る。

 なお、似た名前の偉人がいる。私は同一人物かと思っていた。

人物 偉業
まつもとゆきひろ(Matz) Ruby開発者
ひろゆき(西村博之) 2ch開発者。「うそはうそであると見抜ける人でないと(掲示板を使うのは)難しい」の人

私が思うRubyの長所・短所

 楽しく書けるところもあれば、不快なところもある。

長所

  • 1行で書ける構文がたくさんある
  • ヒアドキュメントが多機能
  • シェルや正規表現と連動しやすい
  • ri, irb, erb, rakeなどの便利コマンドがある

短所

  • クロージャが乱雑で残念
  • 特異クラス、特異メソッドがわかりにくい
  • endがウザい
  • ドキュメントがしょぼい

2. 環境構築

git clone https://github.com/anyenv/anyenv ~/.anyenv
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
anyenv install --init -y
anyenv install rbenv
exec $SHELL -l
rbenv install $(rbenv install -l 2>/dev/null | grep '^[0-9]+.[0-9]+.[0-9]+$' | tail -1)

3. コマンド

コマンド 概要
erb テンプレートエンジン。
gem パッケージ管理ツール。
irb 対話インタフェース。REPL。
rake ビルドツール。タスクツール。
rdoc ドキュメント生成ツール。
ri Rubyのドキュメント。
ruby Ruby本体。

gem

gem
gem install ...

 サードパーティ製ライブラリのインストールなどに使う。

irb

irb
irb(main):001:0> quit

 すぐにRubyのコードを動作して試せる。ちょっとしたコードの動作確認をしたいときによく使う。quitのあとENTERキー押下で終了。

erb

 テンプレートエンジン。

a.erb

<ul>
% [1,2,3].each do |i|
  <li><%=i%></li>
% end
</ul>
erb a.erb
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

rake

 タスクランナー。

rakefile

require 'rake/testtask'
require 'rake/clean'
task :default => [:test]
desc 'Run test_unit based test'
Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = Dir["../test/**/test_*.rb"]
  t.verbose = true
end

 rakefileがあるカレントディレクトリでrakeを実行する。

rake

ri

 ヘルプ。

ri -l
ri Array

4. shebangとmagic-comment

#!/usr/bin/env ruby

 正確には以下のほうがよいらしいが、上記コードでほぼ動作するので問題ない。

#!/bin/sh
# -*- ruby -*-
exec ruby -x "$0" "$@"
#!ruby
puts 'Hello world!'

 shebangの下にマジックコメントとして文字コードを書ける。だがデフォルトでUTF-8なので何も書かなくていい。

# coding: utf-8

6. Hello world

a.rb

#!/usr/bin/env ruby
p 'Hello world !!'
ruby a.rb
"Hello world !!"

 requireされても実行されないようにするには以下。

#!/usr/bin/env ruby
if __FILE__ == $0
  p 'Hello world !!'
end

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux