所以,我寫了一個簡單的Ruby類,並將其放在我的rails/lib目錄中。這個類有以下方法:Rails文件I/O:Ruby中的哪些功能在Rails中不起作用?
def Image.make_specific_image(paths, newfilename)
puts "making specific image"
@new_image = File.open(newfilename, "w")
puts @new_image.inspect
@@blank.each(">") do |line|
puts line + "~~~~~"
@new_image.puts line
if line =~ /<g/
paths.each do |p|
puts "adding a path"
puts p
@new_image.puts p
end
end
end
end
這將創建一個新的文件,並複製一個硬編碼字符串(@@blank
)這個文件,添加在某個位置自定義內容(A G標記後發現)。
如果我從ruby運行此代碼,一切都只是桃色。但是,如果我從rails運行此代碼,文件將獲得CREATED,但是然後是空的。我檢查了代碼的每一行:我試圖寫入文件的內容都是零,但文件仍然是空的。
我真的很難過。這是一個權限的東西嗎?如果是這樣的話,爲什麼在EARTH上Rails會擁有製作文件所需的權限,但是不會寫入它所創建的文件?
文件I/O以某種方式以不同方式在rails中工作嗎?
具體而言,我有一個調用一個模型的方法:
Image.make_specific_image(paths, creature.id.to_s + ".svg")
這成功地使型「47.svg」,也就是空的一個文件。
你確定當你在Rails下運行時,@@ blank'不是,呃,空白嗎?你確定'@ new_image'在Rails下被刷新並關閉了嗎? – pilcrow 2010-06-25 17:01:41
是的,我正在打印出一行(這是@@空格的一部分,它具有我期望的部分)。其實,我想我想通了,會發佈一個答案.... – Jenny 2010-06-25 17:07:38