ruby for better bash7. ぢ䛛䛡䛜bash䛻ఝ䛶䜛
bash
a=1
if [[ a -gt 0 ]] ; then
echo "こんにちは"
fi
ruby
a = 1
if a > 0 then
puts "こんにちは"
end
䞉䝤䝺䞊䝇{}䛷䛿䛺䛟ண⣙ㄒ䛻䜘䜛ไᚚᵓᩥ䚹
䞉ᩥᮎ䛾䝉䝭䝁䝻䞁䛜↓䛔䚹
䞉ᣓᘼ䛾↓䛔㛵ᩘ䜃ฟ䛧䚹
8. rbenv䛻䜘䜛rubyษ䜚᭰䛘
䞉ୗグ䛿䚸䝁䝬䞁䝗䝷䜲䞁䛷ruby䛾䝞䞊䝆䝵䞁䜢ษ䜚᭰䛘䜛ᵝᏊ䚹
$ rbenv versions
system
2.0.0-p195
2.0.0-p451
2.1.0
2.1.1
* 2.1.2 (set by /usr/local/var/rbenv/version)
$ rbenv global 2.0.0-p195
$ ruby --version
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.4.1]
$ rbenv global 2.1.2
$ ruby --version
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
䞉䝕䜱䝺䜽䝖䝸䛻ᑐ䛧䛶䝞䞊䝆䝵䞁䜢タᐃ䛧䛶䚸⮬ື䛷ษ䜚᭰䛘䜛
䜒䛷䛝䜛䚹
9. እ㒊䝁䝬䞁䝗䛾䜃ฟ䛧
下記コマンドを実行するrubyプログラムの例です。
$ ls -1 | grep -E '.rb$'
呼び出した後、パイプで繋がれた各コマンド(lsとgrep)のステータスコードをチェックしている。実際
に利用ではこれを関数で包むのが良いでしょう。
require "open3"
status_list = Open3.pipeline(["ls", "-1"], ["grep", "-E", ".rb$"])
status_list.each.with_index do |status, index|
if status.exitstatus != 0
raise Exception.new("pipeline[#{index}] " +
"exit status is #{status.exitstatus}")
end
end
䞉䝁䝬䞁䝗䛾ᘬᩘ䜢㓄ิ䛾せ⣲䛸䛧䛶ᣦᐃ䛩䜛䛯䜑䚸༙ゅ䝇䝨䞊䝇ᩥᏐ䛻㛵䛩䜛䝞䜾
䛜㜵䛢䜎䛩䚹䜎䛯䚸䝁䝬䞁䝗䜢⤌䜏❧䛶䜛䝁䞊䝗䛜᭩䛝䜔䛩䛔䛷䛩䚹
12. ཧ⪃: ඛ➃䛾⤂
䞉rbenv䛷䛿䚸ruby䛤䛸䛻gem⎔ቃ䛜䛒䛳䛯䛜䚸bundler䛸䛔䛖䝷䜲䝤䝷䝸䜢䛖䛸䚸᭦䛻
⣽䛛䛟䚸䝕䜱䝺䜽䝖䝸(䍦䜰䝥䝸)䛻ᑐ䛧䛶gem⎔ቃ䜢ᵓ⠏䛷䛝䜛䚹
䞉rbenv䛿䚸䝕䜱䝺䜽䝖䝸䛤䛸䛻ruby䛾䝞䞊䝆䝵䞁䜢タᐃ䛷䛝䜛䛾䛷䚸䛣䜜䜙䜢⤌䜏ྜ䜟
䛫䛶䚸ruby(ゝㄒ)䜒gem(䝷䜲䝤䝷䝸⩌)䜒䝕䜱䝺䜽䝖䝸䛷⊂❧䚸⤖䛧䛯≧ែ䛻䛷䛝䜛䚹
䞉rails䜰䝥䝸䜢㉳ື䛩䜛䝃䞊䝞(unicorn䛺䛹)⮬య䜒䚸gem䛷䜲䞁䝇䝖䞊䝹䛩䜛䚹䛭䛾䛯
䜑䚸1䛴䛾䝩䝇䝖䝬䝅䞁䛾୰䛷䚸䜰䝥䝸䝃䞊䝞䜢䜰䝥䝸䛤䛸䛻⊂❧䛧䛶ᣢ䛴䛜䛷䛝䜛䚹
䞉1䛴䛾䝩䝇䝖䝬䝅䞁䛻」ᩘ䛾䜴䜵䝤䜰䝥䝸䜢䝕䝥䝻䜲䛩䜛ሙྜ䛺䛹䛻䛚䛔䛶䚸⎔ቃ䛾
⊂❧ᛶ䚸ศ㞳ᛶ䛜㧗䛟䚸┦䛾ᖸ΅䜢㜵䛠䛣䛸䛜䛷䛝䜛䚹
䞉᫇䛿䚸1䛴䛾䝃䞊䝞䛾୰䛻1䛴䛾䝞䞊䝆䝵䞁䛾apache䚸1䛴䛾䝞䞊䝆䝵䞁䛾php䚸1䛴
䛾pecl, pear⎔ቃ䛜䛒䛳䛶䚸䜰䝑䝥䜾䝺䞊䝗䛩䜛䛸䚸᪤Ꮡ䛾䜰䝥䝸䛜ቯ䜜䜛ᜍ䜜䛜䛒
䜚䚸᪂つ㛤Ⓨ䛷᭱᪂䝞䞊䝆䝵䞁䛾ゝㄒ䜔䝷䜲䝤䝷䝸䛜䛘䛺䛔䛜䜘䛟䛒䛳䛯䚹
15. rbenv䛾ᑟධ
ୗグ䝁䝬䞁䝗䛻䛶䜲䞁䝇䝖䞊䝹䛧䜎䛩䚹
$ brew install rbenv
↓䛻䜲䞁䝇䝖䞊䝹䛷䛝䛯䜙䚸.bash_profile䛻ୗグ䜢㏣グ䛧䜎䛩䚹
export RBENV_ROOT=/usr/local/var/rbenv
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
ḟ䛻䚸ୗグ䛾rbenv䝥䝷䜾䜲䞁䜢ධ䜜䜎䛩䚹䛣䛾䝥䝷䜾䜲䞁䛻䛴䛔䛶䛾ㄝ᫂䛿┬␎䛧
䜎䛩䚹
$ brew install rbenv-gem-rehash
᭱ᚋ䛻䚸ୗグ䛾rbenv䝥䝷䜾䜲䞁䜢ධ䜜䜎䛩䚹䛣䛾䝥䝷䜾䜲䞁䛜䚸ruby䛾䝞䞊䝆䝵䞁㑅
ᢥ䛧䛶䝡䝹䝗䛩䜛ᶵ⬟䜢ᥦ౪䛧䜎䛩䚹(⣲䛾rbenv䛿䚸ษ䜚᭰䛘ᶵ⬟䛾䜏䜢ᥦ౪䛧䛶䛔
䜎䛩)
$ brew install ruby-build
16. ruby䛾䜲䞁䝇䝖䞊䝹
ୗグ䝁䝬䞁䝗䛷䚸䜲䞁䝇䝖䞊䝹ྍ⬟䛺ruby䛾䝞䞊䝆䝵䞁䝸䝇䝖䛜⾲♧䛥䜜䜎䛩䚹
$ rbenv install --list
rubyබᘧ䝃䜲䝖(https://www.ruby-lang.org/ja/downloads/)䛸⾲♧䛥䜜䛯䝸䝇䝖䜢ぢ
ẚ䜉䛶䚸䜲䞁䝇䝖䞊䝹䛩䜛䝞䞊䝆䝵䞁䜢Ỵ䜑䛯䜙䚸ୗグ䛾䜘䛖䛻ᣦᐃ䛧䛶ᐇ⾜䛧䜎䛩䚹
$ rbenv install -v 2.1.2
䝸䝇䝖䛾୰䛻䚸┠ⓗ䛾᪂䛧䛔䝞䞊䝆䝵䞁䛜ྵ䜎䜜䛶䛔䛺䛔䛿䚸ୗグ䝁䝬䞁䝗䛻䛶䝥䝷
䜾䜲䞁䜢䜰䝑䝥䝕䞊䝖䛧䜎䛩䚹
$ brew upgrade ruby-build
䈜2.0.0䛷䛿䚸䜸䝥䝅䝵䞁䜢ᣦᐃ䛧䛺䛔䛸 ruby䛾䝡䝹䝗䛻ኻᩋ䛩䜛䛜䛒䜚䜎䛧䛯䛜䚸 2.1.2䛿䛭䛾䜎䜎䛷⾜䛡
䜎䛧䛯䚹䛖䜎䛟䛔䛛䛺䛔ሙྜ䛿䜾䜾䛳䛶䜏䜛䛸Ⰻ䛔䛷䛩䚹
24. 䜘䛟䛒䜛ฎ⌮䛾⤂
䝕䝞䝑䜾┠ⓗ䛷ኚᩘ䛾್䜢☜ㄆ䛩䜛
p hoge_var
1⾜ฟຊ䛸䚸ᘧ䛾ᩥᏐิ䜈䛾ᇙ䜑㎸䜏䚹
puts "こんにちは、#{name}さん。現在時刻は#{Time.now}ですよ。"
䝇䜽䝸䝥䝖䝣䜯䜲䝹䛾䛒䜛䝕䜱䝺䜽䝖䝸䛾䝣䝹䝟䝇䜢ᚓ䜛
script_dir = File.expand_path(File.dirname(__FILE__))
䜶䝷䞊䛻⤊䛩䜛
raise Exception.new("引数が不足しています。")
䛭䛾䚸䜾䜾䜛䛸䛔䛳䜁䛔ฟ䜎䛩䚹
25. ᵓᩥ䛾ὀព
㛵ᩘ䜃ฟ䛧䛿ᣓᘼ↓䛧䛷䜒᭷䜚䛷䜒䜉䜎䛩䛜䚸
ᣓᘼ↓䛧䜢ධ䜜Ꮚ䛷䛖䛸ᛮ䜟䛼ㄗືస䜢䛩䜛䛾䛷䚸ධ䜜Ꮚ䛻䛩䜛䛺䜙ᣓᘼ䜢
䛡䜎䛧䜗䛖䚹
# 以下4つはOK
Math.sin(30.0 * Math::PI / 180.0)
Math.sin 30.0 * Math::PI / 180.0
printf("sin(30) = %f", Math.sin(30.0 * Math::PI / 180.0) )
printf "sin(30) = %f", Math.sin(30.0 * Math::PI / 180.0)
# 下記はエラーになる
printf "sin(30) = %f", Math.sin 30.0 * Math::PI / 180.0