From 89acf88de2561571aeda7f730c919ae2a281e405 Mon Sep 17 00:00:00 2001 From: Jeff Browning Date: Wed, 27 Apr 2016 14:52:02 -0400 Subject: [PATCH 1/2] Allow local_dir to be specified for Arc.Storage.Local --- lib/arc/storage/local.ex | 7 ++++++- test/storage/local_test.exs | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/arc/storage/local.ex b/lib/arc/storage/local.ex index 49c38a1..038365a 100644 --- a/lib/arc/storage/local.ex +++ b/lib/arc/storage/local.ex @@ -1,7 +1,7 @@ defmodule Arc.Storage.Local do def put(definition, version, {file, scope}) do destination_dir = definition.storage_dir(version, {file, scope}) - path = Path.join(destination_dir, file.file_name) + path = Path.join([local_dir, destination_dir, file.file_name]) path |> Path.dirname() |> File.mkdir_p() File.copy!(file.path, path) {:ok, file.file_name} @@ -18,8 +18,13 @@ defmodule Arc.Storage.Local do defp build_local_path(definition, version, file_and_scope) do Path.join([ + local_dir, definition.storage_dir(version, file_and_scope), Arc.Definition.Versioning.resolve_file_name(definition, version, file_and_scope) ]) end + + defp local_dir do + Application.get_env(:arc, :local_dir) || "" + end end diff --git a/test/storage/local_test.exs b/test/storage/local_test.exs index d6676df..1c133a0 100644 --- a/test/storage/local_test.exs +++ b/test/storage/local_test.exs @@ -38,4 +38,22 @@ defmodule ArcTest.Storage.Local do refute File.exists?("arctest/uploads/original-image.png") refute File.exists?("arctest/uploads/1/thumb-image.png") end + + test "local_dir option" do + local_dir = "arctest/uploads/local_dir" + Application.put_env :arc, :local_dir, local_dir + + assert {:ok, "original-image.png"} == Arc.Storage.Local.put(DummyDefinition, :original, {Arc.File.new(%{filename: "original-image.png", path: @img}), nil}) + assert {:ok, "1/thumb-image.png"} == Arc.Storage.Local.put(DummyDefinition, :thumb, {Arc.File.new(%{filename: "1/thumb-image.png", path: @img}), nil}) + + assert File.exists?("#{local_dir}/arctest/uploads/original-image.png") + assert File.exists?("#{local_dir}/arctest/uploads/1/thumb-image.png") + assert "#{local_dir}/arctest/uploads/original-image.png" == DummyDefinition.url("image.png", :original) + assert "#{local_dir}/arctest/uploads/1/thumb-image.png" == DummyDefinition.url("1/image.png", :thumb) + + Arc.Storage.Local.delete(DummyDefinition, :original, {%{file_name: "image.png"}, nil}) + Arc.Storage.Local.delete(DummyDefinition, :thumb, {%{file_name: "image.png"}, nil}) + refute File.exists?("#{local_dir}/arctest/uploads/original-image.png") + refute File.exists?("#{local_dir}/arctest/uploads/1/thumb-image.png") + end end From 20632b9f11169ae6d5064f63f1966bb97c37479f Mon Sep 17 00:00:00 2001 From: Sean Stavropoulos Date: Tue, 21 Jun 2016 12:12:39 -0700 Subject: [PATCH 2/2] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a3e231..96c2a29 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Add the latest stable release to your `mix.exs` file: ```elixir defp deps do [ - arc: "~> 0.5.2", + arc: "~> 0.5.3", ex_aws: "~> 0.4.10", # Required if using Amazon S3 httpoison: "~> 0.7" # Required if using Amazon S3 poison: "~> 1.2" # Required if using Amazon S3