Giter Club home page Giter Club logo

Comments (3)

ospaarmann avatar ospaarmann commented on July 25, 2024

I uploaded the phoenix app. You can clone it from here: https://github.com/ospaarmann/arc_bugfix This should help to easily reproduce the problem.

from arc_ecto.

ospaarmann avatar ospaarmann commented on July 25, 2024

Additionally when I try to create a record with an avatar the scope (record) in the Avatar.storage_dir/2 function is nil. Not the id, but the scope itself. Which is super strange:

iex(5)> changeset = User.changeset(%User{}, %{name: "Klaus", avatar: remote_path})
** (EXIT from #PID<0.391.0>) an exception was raised:
    ** (UndefinedFunctionError) function nil.name/0 is undefined or private
        nil.name()
        (image) web/uploaders/avatar.ex:52: Image.Avatar.storage_dir/2
        lib/arc/storage/s3.ex:6: Arc.Storage.S3.put/3
        (elixir) lib/task/supervised.ex:85: Task.Supervised.do_apply/2
        (elixir) lib/task/supervised.ex:36: Task.Supervised.reply/5
        (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3

Interactive Elixir (1.4.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> [error] Task #PID<0.404.0> started from #PID<0.391.0> terminating
** (UndefinedFunctionError) function nil.name/0 is undefined (module nil is not available)
    nil.name()
    (image) web/uploaders/avatar.ex:52: Image.Avatar.storage_dir/2
    lib/arc/storage/s3.ex:6: Arc.Storage.S3.put/3
    (elixir) lib/task/supervised.ex:85: Task.Supervised.do_apply/2
    (elixir) lib/task/supervised.ex:36: Task.Supervised.reply/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Function: #Function<0.124346436/0 in Arc.Actions.Store.async_put_version/3>
    Args: []

from arc_ecto.

ospaarmann avatar ospaarmann commented on July 25, 2024

So I seem to have fixed it. It was a bug on my side. But it would be great if arc would produce better error messages. If I have time I'll submit a PR.

In the beginning I forgot the sweet_xml dependency. But arc didn't complain about that. This lead to an error where a src attribute wasn't found in the response by AWS (this is more an arc than an arc_ecto issue though). That means sweet_xml should be in the arc dependencies.

Next the empty changeset. This was stupidity on my side. It only appeared after upgrading and was because I was missing the allow_paths: true option. The correct changeset for using local or remote paths is

cast_attachments(params, ~w(avatar), allow_paths: true)

Then we had the strange Task.await timeout which lead to the process crashing and in turn the model being nil in the storage_dir/2. This was caused by the transform functions. Apparantly the string that I pass into ImageMagick started to produce an error.

The old transform function:

def transform(:medium, _) do
    {:convert, "-strip -thumbnail 600x600^ -gravity center -extent 600x600 -quality 85% -format png", :png}
  end

The new, now working, transform function:

  def transform(:medium, _) do
    {:convert, "-strip -thumbnail 600x600^ -gravity center -extent 600x600 -format png", :png}
  end

Again this was a mistake on my side but it would be nice to get more informative error messages.

from arc_ecto.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.