Comments (3)
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.
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.
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)
- 2 pictures in one schema HOT 1
- Ecto 3.0 emits warnings when using arc_ecto HOT 3
- arc_ecto not working with ecto 3 HOT 15
- Examples for saving arc photo from websocket? HOT 1
- Dialyzer error HOT 1
- Problem with Tests
- Support for signed Cloudfront web distributions.
- Specify Field Name In Scope
- Truncating updated_at broke my tests
- Cant get upload from frontend to work with Ecto 3 and arc_ecto in Phoenix API. HOT 1
- Uploading to S3 from a remote URL returns a SignatureDoesNotMatch error
- Fix Ecto 3.2 warnings HOT 3
- Adding or changing versions HOT 3
- Timout when transforming image HOT 1
- Upload via remote URL doesn't seem to work. HOT 1
- allow_urls feature to allow upload for valid URLs only HOT 1
- arc_ecto requires arc 0.8.0 HOT 1
- Error uploading to S3 with 0.10.0 HOT 2
- Microseconds in updated_at timestamp HOT 4
- Todo: Support Ecto 3 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arc_ecto.