Итак, я написал простой класс Ruby и поместил его в мой каталог rails / lib. Этот класс имеет следующий метод:
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
) в этот файл, добавляя пользовательский контент в определенном месте (после обнаружения тега g).
Если я запускаю этот код из ruby, все просто замечательно.
ОДНАКО, если я запускаю этот код с рельсов, файл создается, но затем становится пустым. Я проверил каждую строку кода: все, что я пытаюсь записать в файл, равно nil, но, тем не менее, файл пуст.
Я действительно в тупике. Это проблема с разрешениями? Если это так, то почему в EARTH у Rails будут права, необходимые для создания файла, но не для записи в файл, который он создал?
Файловый ввод-вывод работает как-то иначе в рельсах?
В частности, у меня есть метод модели, который вызывает:
Image.make_specific_image(paths, creature.id.to_s + ".svg")
, который успешно создает пустой файл типа "47.svg".