Belt - A Flexible File-Storage Library

No, I discovered Belt just today, it’s the first time I use it and it’s 0.2.0 - but I will investigate more tomorrow :slight_smile:

New test_connection function in Belt 0.3.0

Version 0.3.0 is now available on Hex! It brings one new feature: Belt.test_connection/2 (Docs) which is quite useful if you want a quick way to determine if a set of provider credentials is working.

1 Like

@jaimeiniesta @NobbZ I’ve submitted a pull request to support uploading in-memory data. Feel free to comment.

@wmnnd Looking forward to your feedback!

3 Likes

Upload in-memory data with Belt 0.4.0!

Thanks to @jayjun’s fantastic work, a brand-new feature is now available in Belt: Uploading iodata directly to all Providers without the need to go through a file first.
Belt.store_data/3 works just like Belt.store/3, except that it takes iodata instead of a file path as the second argument and the :key option is mandatory.
Of course, it’s also accompanied by Belt.store_data_async/3 :slight_smile:

I’ve also updated the ex_aws dependency to the 2.x branch.
I originally wasn’t sure if this is the right thing to do, since it’s a major version update for this (optional) dependency and just a minor version update for Belt.
But since there is a bug in ExAws 1.x which breaks it on Elixir 16/OTP 21 and @benwilson512 pointed out that ExAws 2.x is “plug and play compatible” with 1.x, I decided this was the way to go :crystal_ball:

As always, Feedback is very welcome.

7 Likes

Tiny update: Fixed typespecs in Belt 0.4.1

As @maennchen pointed out, there were some inconsistencies in the typespecs of Belt.await/2 when used with Belt.delete/3, Belt.delete_scope/3 and Belt.delete_all/2.
Now the typespecs and docs correctly reflect that all deletion functions return :ok instead of {:ok, term} upon success. This doesn’t change the actual behavior of any code using these functions. If your code worked before, it’s still going to work now :slight_smile:

4 Likes

@wmnnd I found another small issue:

Many Files depend on :crypto.hash_algorithms. This type does not exist.

See: https://github.com/erlang/otp/blob/master/lib/crypto/src/crypto.erl

@wmnnd It would also be nice if you could losen the dependency requirement of gen_stage to ~> 0.12 so that the newest version is also compatible.

@maennchen Could you open issues for that in the Belt bug tracker?

@wmnnd Sure:

2 Likes

Thanks again to @maennchen, there is now a new tiny update (0.4.2) which loosens the Ecto dependency so you can keep using Belt with Ecto 3.0!

1 Like

New version 0.5.0

I have just released a new version of Belt, version 0.5.0

Changelog

  • Requires at least Elixir 1.7 now
  • Better support for current Elixir versions with no pesky compile-time warnings

I’d be happy to hear feature suggestions or experiences from people out there using Belt. It’s been working really well in production for me for quite a while which is why there has not been a lot of development activity :slight_smile:

4 Likes

Thanks for the new release and update.
One example repo with Ecto Integration would go a great deal for adoption.
How to add a cover image for a post with - a. Regular View. b. LiveView - that will help newbies like me.

My confusions are -
a. Where to add transformations - producing thumbnails etc.
b. Ecto Changeset Integration.

Thanks in advance.
PS: I am from the Ruby world and Shrine has been the goto solution. So, still a bit lost on the path here.

3 Likes