2017-02-21 2 views
0

Ich hätte gerne ein Feedback und/oder Hilfe bitte.Carrierwave-Test - Aufräumen oder separate Datei-Uploads?

Ich habe diesen Test

scenario 'can create a new post' do 

    attach_file('Image', 'spec/files/hello-world.png') 
    fill_in 'Caption', with: 'Hello World! This is the first post!' 
    click_button 'Create Post' 

    expect(page).to have_css("img[src*='hello-world.png']") 
    expect(page).to have_content('Post was successfully created') 
end 

Dieser Test lädt das Bild zu uploads/post/image/1/hello-world.png durch Carrierwave, die auf Entwicklungsumgebung usw. wahrscheinlich der gleiche Weg ist, so frage ich mich, ob dies irgendwelche Probleme verursachen, wird auf zwischen Dateien und Posts.

Meine Frage ist, muss ich die Dateiuploads auf jeder Umgebung getrennt halten, oder ist es etwas, das Rails intern verwalten kann?

Antwort

0

Der Speicherort der Dateien lautet defined in a Carrierwave Uploader by the method store_dir. Wenn Sie die Dateien in unterschiedlichen Umgebungen geschaffen trennen müssen, ist die einfachste Lösung Rails.env auf den Pfad hinzuzufügen:

def store_dir 
    @store_dir ||= File.join(
    'public', 
    'uploads', 
    Rails.env, 
    model.class.table_name.to_s, 
    mounted_as.to_s, 
    model.id.to_s 
) 
end 

Dies einen Weg schaffen wie: public/uploads/production/posts/image/1/image.png

+0

Muss ich auch ändern und die ' cache_dir' auch? Wie kann ich auch 'uploads/test /' von allen Dateien säubern, wenn Tests abgeschlossen werden? etwas Ähnliches, was 'database_cleaner' in den Datenbankeinträgen tut – Lykos

+0

Die letzte Frage ist optional, da ich den Ordner' uploads' im gitignore hinzugefügt habe – Lykos

+0

Für die Datei aufräumen, werfen Sie einen Blick auf http://stackoverflow.com/ Fragen/12352062/Rails-Carrierwave-Test-How-to-Remove-Datei-nach-Test Es ist rspec spezifisch, aber sollte nicht so schwierig sein, ähnliche Techniken mit Minitest zu verwenden. – ReggieB