У меня есть 2 сценария с огурцом, которые имитируют загрузку изображения скрепки. Я хочу снова удалить эти папки после завершения сценариев.
У меня следующая структура папок вложений:: url => "/ system /: attachment / :isting_id /: id /: style_: filename"
Скрепка автоматически удаляет папку : id /: style_: filename, но не родительскую папку.
В моем контроллере списков есть следующее (в 1 листинге много изображений), который отлично работает для удаления папки изображений с идентификатором листинга при удалении листинга. Мне нужно смоделировать то же самое в Cucumber после выполнения шага.
def destroy
@listing = Listing.find(params[:id])
# if destroy was a success, remove the listing image folder
if @listing.destroy
end
require 'fileutils'
dir = Rails.root + '/system/photos/' + @listing.id.to_s()
FileUtils.rm_rf(dir)
respond_to do |format|
format.html { redirect_to(listings_url) }
format.xml { head :ok }
end
end
Я мог бы а) сказать огурцу удалить имя папки: листинг_ид после прохождения сценария или б) сказать огурцу, чтобы он удалил листинг в качестве последнего шага?
Я пробовал добавить это в свой файл огурца env.rb:
AfterStep('@paperclip') do
# This will only run before steps within scenarios tagged
# with @cucumis AND @sativus.
# delete folders that were created with paperclip during the test
require 'fileutils'
#@listing.id = 55
#dir = Rails.root + '/system/photos/' + @listing.id.to_s()
dir = Rails.root + '/system/photos/55' # NOT WORKING
FileUtils.rm_rf(dir)
end
Но это вызывает проблемы, потому что 1) я не знаю, как получить @isting.id из этого сценария, и 2) даже когда я жестко кодирую его (как указано выше), он не удаляет его.
Есть предположения?