バグ #659 » 0001-Windows.patch
core/service_keeper.rb | ||
---|---|---|
22 | 22 |
def accounts |
23 | 23 |
@account_data ||= @@service_lock.synchronize do |
24 | 24 |
if FileTest.exist? ACCOUNT_FILE |
25 |
File.open(ACCOUNT_FILE) do |file| |
|
25 |
File.open(ACCOUNT_FILE, 'rb') do |file|
|
|
26 | 26 |
YAML.load(decrypt(file.read)) end |
27 | 27 |
else |
28 | 28 |
# 旧データの引き継ぎ |
... | ... | |
106 | 106 |
# アカウント情報をファイルに保存する |
107 | 107 |
def account_write(account_data = @account_data) |
108 | 108 |
FileUtils.mkdir_p File.dirname(ACCOUNT_FILE) |
109 |
File.open(ACCOUNT_TMP, 'w'.freeze) do |file| |
|
109 |
File.open(ACCOUNT_TMP, 'wb'.freeze) do |file|
|
|
110 | 110 |
file << encrypt(YAML.dump(account_data)) end |
111 | 111 |
FileUtils.mv(ACCOUNT_TMP, ACCOUNT_FILE) |
112 | 112 |
account_data end |
core/utils.rb | ||
---|---|---|
64 | 64 | |
65 | 65 |
# ファイルの内容を文字列に読み込む |
66 | 66 |
def file_get_contents(fn) |
67 |
open(fn, 'r:utf-8'){ |input| |
|
67 |
open(fn, 'rb:utf-8'){ |input|
|
|
68 | 68 |
input.read |
69 | 69 |
} |
70 | 70 |
end |
71 | 71 | |
72 | 72 |
# 文字列をファイルに書き込む |
73 | 73 |
def file_put_contents(fn, body) |
74 |
File.open(fn, 'w'){ |put| |
|
74 |
File.open(fn, 'wb'){ |put|
|
|
75 | 75 |
put.write body |
76 | 76 |
body |
77 | 77 |
} |
... | ... | |
80 | 80 |
# ファイル _fn_ の内容からオブジェクトを読み込む。 |
81 | 81 |
# _fn_ は、object_put_contents() で保存されたファイルでなければならない。 |
82 | 82 |
def object_get_contents(fn) |
83 |
File.open(fn, 'r'){ |input| |
|
83 |
File.open(fn, 'rb'){ |input|
|
|
84 | 84 |
Marshal.load input |
85 | 85 |
} |
86 | 86 |
end |