ruby の勉強メモ
基本
puts "Hello World" # 改行あり
print ("Hello", "World") # 改行なし
puts ARGV[0] + ":" + ARGV[1]
require "optparse"
opts = OptionParser.new
opts.on("-a"){|v| puts "indicated a." } # -a オプションがコマンドラインで指定されていた場合の動作。
opts.parse!(ARGV)
# Pattern 1
if city == "Tokyo" then
print("東京です")
elsif city == "Osaka" then
print("大阪です")
elsif city == "Nagoya" then
print("名古屋です")
else
print("その他の都市です")
end
# Pattern 2
print("num = ", num) if debug
# Pattern 3 (not if)
unless old < 20 then
print(Kconv.tosjis("年齢は"), old, Kconv.tosjis("です\n"))
print(Kconv.tosjis("20歳以上ですのでご利用できます\n"))
end
# while statement
num = 0
while num < 4 do
print("num = ", num)
num = num + 1
end
# until statement
num = 0
until num >= 4 do
print("num = ", num)
num = num - 1
end
# for statement
for num in 0..3 do
print("num = ", num)
end
begin
puts "Execute"
rescue => ex
puts ex.class
puts ex.message
puts ex.backtarce
ensure
if ex then
puts "Error occured"
else
puts "No Error"
end
print "Please any chars : "
line = STDIN.gets
puts "input text: #{line}"
# Pattern 1
result = `ls -l`
print result
# this is simplest.
# result has result of command.
# if error occurs, prints error.
# Pattern 2
result = system("ls -lh")
print result
# 'system' prints result of command(even if error).
# result has true or false.
# Pattern 3
begin
result = exec("ls -lh")
print result
rescue
puts "error"
end
# 'exec' prints result of command(even if error).
# if command is unknown, this can catch exception.
# Pattern 4
result = open("|ls -l")
while !result.eof
print result.gets
end
# result has result of command
# this can write.
print ENV["LANG"]
require 'yaml'
config = YAML.load_file("config.yml")
p config["dictype"][0] #=> "dym"
# in config.yml
dictype:
- dym
- rltd
ファイル・ディレクトリ操作
print File.exist?("temp.rb")
require 'fileutils'
FileUtils.cd('/usr/local/var/log')
require 'fileutils'
FileUtils.mkdir_p('/usr/local/lib/ruby')
require 'fileutils'
FileUtils.cp_r("sample.txt", "tmp")
require 'fileutils'
FileUtils.mv(['junk.txt', 'dust.txt'], "#{ENV['HOME']}/.trash")
require 'fileutils'
FileUtils.rm('junk.txt')
- 対象行抽出(grep)
- OSコマンドを使うのが一番。ちなみに、list からgrepで引っ張る方法はある。
p ['aa', 'bb', 'cc', 'dd', 'ee'].grep(/[bc]/) # => ["bb", "cc"]
- 差分
- OSコマンドを使うのが一番。ちなみに、diffがあるかないかぐらいなら引っ張る方法はある。
require 'fileutils'
FileUtils.cmp('somefile', 'somefile')
require 'digest/sha1'
print Digest::SHA1.hexdigest(File.open('temp.rb').read)
require 'fileutils'
FileUtils.ln_s('/usr/bin/ruby', '/usr/local/bin/ruby')
# original is /usr/bin/ruby
その他
day = Time.now
print day.strftime("%Y/%m/%d_maint")
- SVNダウンロード
- OSコマンドを使うのが一番。 SubversionのRuby用bindingを利用することもできるらしいけど、インストール方法がよくわからん。。
- CVSダウンロード
- Httpアクセス
require 'net/http'
Net::HTTP.version_1_2 # おまじない
Net::HTTP.start('www.iana.org', 80) {|http|
response = http.get('/index.html')
puts response.body
}
# use Proxy
require 'net/http'
Net::HTTP.version_1_2 # おまじない
Net::HTTP::Proxy("your.proxy.addr", 8080).start('www.iana.org', 80) {|http|
response = http.get('/index.html')
puts response.body
}
最終更新:2011年03月20日 22:57