個人的なRubyチートシート。
思いついたら随時更新する予定です。
追記:備忘録とかも兼ねているので「こんなん簡単ジャン」みたいなのも混じります。
一つ上のディレクトリ名を取得
# 一つ上のディレクトリ名を取得
puts File.split(File.dirname(__FILE__))[1]
外部ファイルを一行ずつ読み込む
日本語(ShiftJIS)対応。
File.open("./sample.txt","rt:sjis:utf-8") do |file|
file.each_line{|line|
puts line
}
end
ソースコードの変数の値を変更する
例えばこんなソースコードを…
string sample="sample" #「sample」を「test」へ変換する
こんなソースコードへ変換してみる
string sample="test" #「sample」を「test」へ変換する
write_file=""
change_value="test"
File.open("./sample.txt","rt:sjis:utf-8") do |file|
file.each_line{|line|
if line.start_with?("string sample")
target_value=line.split("\"")[1]
write_file << line.gsub(/\"#{target_value}\"/,"\""+change_value+"\"")
else
write_file << line
end
}
end
File.open("./sample.txt","w") do |file|
file.puts(write_file.encode("shift_JIS"))
end
カレントディレクトリの取得
require 'fileutils'
puts FileUtils.pwd
puts Dir::pwd
ファイルを置き換える
require 'fileutils'
# 置き換え元
base_file="sample_org.py"
# 置き換え対象
replace_file="sample.py"
# カレントディレクトリを取得
current=FileUtils.pwd
# 置き換え元が無いのに実行して置き換え対象だけ削除される事故防止
if File.exist?(current+"/"+base_file) then
FileUtils.rm(current+"/"+replace_file)
FileUtils.cp(current+"/"+base_file,current+"/"+replace_file)
end
JSONファイルの読み書き
下記のようなjsonファイルを想定
test.json
[
{
"test": 0
}
]
require "json"
# test.jsonを読み込んでhashに変換
hash = File.open('./test.json') do |file|
JSON.load(file)
end
# 下記の形で値にアクセスできる
p hash[0]["test"]
# JSONを整形せずに出力 ⇒ [{test:0}]
open('./write.json', 'w') do |file|
JSON.dump(hash, file)
end
# JSONを整形して出力
pg = JSON.pretty_generate(hash)
open('./write.json', 'w') do |file|
file.puts(pg)
end