Rubyは、日本人 まつもとゆきひろ氏の開発で
作られた、オブジェクト指向スクリプト言語
ワンライナーでもインタラクティブモードでも
ソースファイル起動でも可能である。
インタプリタ言語であり、記述後のコンパイルが不要
perl の後継として活用されている他多数の可能性がある。
ワンライナー
> ruby -e 'puts "Hello, World."'
Hello, World.
インターラクティブモード
$ irb
irb(main):001:0> 1+2
1+2
=> 3
irb(main):002:0> p "Hello"
p "Hello"
"Hello"
=> "Hello"
irb(mainw):003:0> quit
ソースファイル起動
Rubyで書かれたソースファイルを、ruby.rb とする。
$ ruby ruby.rb ソースファイル起動
$ ruby -c ruby.rb ソースファイルをチェック
$ ruby -d ruby.rb ソースファイルをデバッグ
プログラムファイル
以下の行(1行目)を最初に記入すれば、プログラムとして
直接実行できる。
prog.rb とし、その内容は
#!/bin/ruby <==必要な行
## コメント行
p "Hello,World!" <=ここからプログラムを書く
emacs なら Esc ! ruby -c prog.rbで
文法チェック
Syntax OK
で文法上問題なし
bash-3.2$ ./prog.rb 実行してみる
./prog.rb
bash: ./prog.rb: Permission denie エラー permisson に実行権限がない
bash-3.2$ chmod 755 prog.rb permisson 755に変更
chmod 755 prog.rb
bash-3.2$ ./prog.rb 実行してみる。
./prog.rb
bash: ./prog.rb: /bin/ruby: bad interpreter: No such file or directory
エラーが出た。これは、prog.rb 一行目のruby のディレクトリが違うからだ
bash-3.2$ which ruby whichでrubyがどこのディレクトリに保存されているか確認
which ruby
/usr/bin/ruby ここに保存されているので
一行目 #!/bin/ruby を #!/usr/bin/ruby に変更する。
変更後、再びチェックをする。
bash-3.2$ ruby -c prog.rb
ruby -c prog.rb
Syntax OK
いよいよ実行してみる(3回目)
bash-3.2$ ./prog.rb
./prog.rb
"Hello,World!"
やっとできた。
完成したプログラムは
cat -n prog.rb
1 #!/usr/bin/ruby
2 # coding: utf-8
3 ## コメント行
4 p "Hello,World!"
5
2行目は、rubyが勝手に追記した。
print << E O F
<< と E O F の間はスペースを入れない
printcomment
変数展開は#{hen}
EOF ##ここまで
コメント
行の途中からのコメントは作れない
# 行の頭に#をつけるとその行はコメント行となる
複数のコメントには
=begin
コメントの複数行
は
=beginと=endで囲む
何行でもok
データの変更履歴なども書き込む
=end
require
取り込むファイルが、同じフォルダにある
hello.rb を取り込む場合
require_relative './hello.rb'
のように、使う
標準ライブラリ 例えば cgi などは
require "cgi-lib"
input = CGI.new
require "date"
day = Date.today
など記す
$ ruby -h
Usage: ruby [switches] [--] [programfile] [arguments]
-0[octal] specify record separator (\0, if no argument)
-a autosplit mode with -n or -p (splits $_ into $F)
-c check syntax only
-Cdirectory cd to directory before executing your script
-d set debugging flags (set $DEBUG to true)
-e 'command' one line of script. Several -es allowed. Omit [programfile]
-Eex[:in] specify the default external and internal character encodings
-i[extension] edit ARGV files in place (make backup if extension supplied)
-Idirectory specify $LOAD_PATH directory (may be used more than once)
-l enable line ending processing
-n assume 'while gets(); ... end' loop around your script
-p assume loop like -n but print line also like sed
-rlibrary require the library before executing your script
-s enable some switch parsing for switches after script name
-S look for the script using PATH environment variable
-T[level=1] turn on tainting checks
-v print version number, then turn on verbose mode
-w turn warnings on for your script
-W[level=2] set warning level; 0=silence, 1=medium, 2=verbose
-x[directory] strip off text before #!ruby line and perhaps cd to directory
-h show this message, --help for more info
ruby -v
$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
$