Donc, j'ai écrit une simple classe Ruby, et l'ai mise dans mon répertoire rails/lib. Cette classe a la méthode suivante:Rails Fichier I/O: Qu'est-ce qui fonctionne dans Ruby ne fonctionne pas dans 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
Ce qui crée un nouveau fichier et copie une chaîne hardcoded (@@blank
) à ce fichier, l'ajout de contenu personnalisé à un certain endroit (après une étiquette g se trouve). Si je cours ce code de Ruby, tout est juste Peachy. Cependant, si j'exécute ce code à partir de rails, le fichier est créé, mais il est vide. J'ai inspecté chaque ligne du code: rien que j'essaie d'écrire dans le fichier est nul, mais le fichier est néanmoins vide.
Je suis vraiment perplexe ici. Est-ce une chose d'autorisations? Si oui, pourquoi Rails aurait-il sur EARTH les autorisations nécessaires pour MAKE un fichier, mais pas WRITE dans le fichier qu'il a fait?
Est-ce que les E/S de fichiers fonctionnent différemment dans les rails?
Plus précisément, j'ai une méthode de modèle qui appelle:
Image.make_specific_image(paths, creature.id.to_s + ".svg")
qui fait avec succès un fichier du type « 47.svg » qui est vide.
Êtes-vous sûr que '@@ blank' n'est pas, euh, vide lorsque vous utilisez Rails? Êtes-vous sûr que '@ new_image' est vidé et fermé sous Rails? – pilcrow
Oui, j'imprime ligne (qui est un segment de @@ vide, et il a ce que je l'attends). En fait, je pense que je l'ai compris, va afficher une réponse .... – Jenny