###Rubyプログラムの実行について
Rubyプログラムの実行は簡単。 適当にrbファイルを作って
puts "hello, world"
とでも書き込んで保存してやり、
$ ruby aaa.rb
とシェルに打ちこめば実行される。 ( $は端末からの入力を表す。以下同様 )
ただし、Ruby 1.9 からは日本語などのマルチバイト文字を使っている場合エラーが出る。
つまり
puts "はろーわーるど"
などと書かれたスクリプトファイルを実行しようとすると
$ ruby aaa.rb
aaa.rb:1: invalid multibyte char (US-ASCII)
のようにエラーが出て実行できない。 これを解決するためには、そのスクリプトの先頭行にマジックコメントでファイルの文字コードを指定する必要がある。
# coding: utf-8
puts "はろーわーるど"
こんな感じ。
ちなみにこの文字コード指定は、「coding: 文字コード」という文字列さえ入っていればどうでもいいらしく、たとえばemacsの自動保存のように
# -*- coding: utf-8 -*-
puts "はろーわーるど"
のような形式であっても問題なく動く。
Rubyの文字列のエンコードのことについてはこの記事が分かりやすい。
簡単に言うと、ASCII文字以外の文字をプログラム中に使っていると、Rubyがその文字の文字コードを正しく認識できないので、先頭行で文字コードを指定しておかなければならない、ということ。
####余談:もうひとつの実行方法
Rubyも他のスクリプト言語と同じように、ファイルの先頭の#!(シバン)に実行環境のパスを書いておくことでもそのファイルを実行できるようになる。
実行環境のパスは、
$ which ruby
とシェルに入力することで分かる。whichは、引数で指定されたコマンドが置いてある場所を出力するUNIXコマンドである。
出力は次のようになる。
/Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
このパスをrbファイルの先頭にシバンを付けて書いておいてやれば、rubyコマンドを使わずにそのrbファイルを実行できるようになる。
#! /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
# -*- coding: utf-8 -*-
puts "はろーわーるど"
ただし、ファイルに実行権限が与えられていない場合はまだ動かない。
$ ./aaa.rb
zsh: permission denied: ./aaa.rb
chmodコマンドで実行権限を付加する必要がある。
$ chmod +x aaa.rb
これでちゃんと動く。
$ ./aaa.rb
はろーわーるど