[24h free video] - Customizing Earmark
Working on the Firestorm Forum: Extending the Earmark markdown renderer to add auto-linking URLs and emoji replacement.
https://www.dailydrip.com/topics/elixir/drips/customizing-earmark
[24h free video] - Feature Tests with Wallaby, Part 2
Testing user interaction with wallaby - fill out forms, click links.
https://www.dailydrip.com/topics/elixir/drips/feature-tests-with-wallaby-part-2
Neuron: A GraphQL client for Elixir
Hi there!
I just published v0.1.0 of neuron, a tiny GraphQL client for Elixir.
Contributions are always welcome, I’ll keep adding features in the future :)
https://github.com/uesteibar/neuron https://hex.pm/packages/neuron
New book - Phoenix Inside Out
I am happy to announce that I am completing final rounds of my Phoenix book and am opening up pre-order for my book with 15% off.
You can read more about the book at https://shankardevy.com/phoenix-book/
Topics covered in the book are:
- Learn just enough Elixir to dive into Phoenix
- Create a mini-Phoenix framework using Elixir and Cowboy
- Plug magic in Phoenix Endpoint, Router and Controller
- Develop an ecommerce site in Phoenix using Test Driven Development
- Practical Ecto Cookbook
- Blueprints to help you better design your project
- Access to lots of handy reference cheatsheets!
- Full access to all code repos used in this book.
Phoenix Inside Out is approx 350 pages and is organised in three parts as follows:
-
Part I. (Introduce) Readers might come to Phoenix without knowing Elixir. So teach them just enough basic to understand Phoenix code. Knowing the language fully well is indeed necessary for mastery but it’s very easy to get lost in learning Elixir.
-
Part II. (Demystify) The book explains the internals of Phoenix by showing user how to create something like Phoenix. I believe the best way to learn how a framework works is to create it yourselves. And the best way to use it in your project is to learn how it works.
-
Part III. (Empower) The book demonstrates building an commerce site using TDD. Hound is used for acceptance testing. This part also introduces Ecto and Contexts as in Phoenix 1.3. I also explain various deployment options that you can put to use in your project.
Practical Ecto cookbook is approx 120 pages with about 60+ recipes under the following headings
- Schema
- Embedded Schema
- Migration
- Changeset
- Association
- Query
How to use Elixir's Enum.filter_map
https://niallburkley.com/blog/elixir-filter-map/
I wrote a short post to (hopefully) make it a little easier to understand how to use Elixir’s Enum.filter_map/3 to filter and map a collection.
Refactoring for Tests in Elixir
http://www.devonestes.com/refactoring-for-tests-in-elixir/
Need to test that tricky function? Here’s a story of a refactoring that allowed us to add some good new tests for a new feature in Benchee.
Writing a Custom Action in #ExAdmin
https://davejlong.com/2017/05/24/writing-a-custom-action-in-exadmin/
How to customize actions of ExAdmin resources.
Talk: Monoliths to Services with Elixir and Phoenix
https://bit.ly/elixir-microservices
Transitioning monolithic apps into a micro-service architecture isn’t straightforward – in fact, it is often quite difficult. In this intermediate talk, we’ll learn how Elixir umbrella apps and Phoenix utilize the Erlang VM (BEAM) to make building services less painful and more productive.
Pattern Matching And State Machines
How to build a template engine (using simple string interpolation), leveraging pattern matching and state machines while measuring overall performance.
https://nerds.stoiximan.gr/2017/05/24/pattern-matching-and-state-machines/
Blog: Using ASDF-vm
In our latest embedded-elixir blog post, Connor Rigby describes how to manage multiple versions of Elixir and Erlang/OTP using ASDF-vm. http://embedded-elixir.com/post/2017-05-23-using-asdf-vm/
Modules & Functions | Zero to Hero #4
Let’s learn how to build a module in Elixir
Modules & Functions | Zero to Hero #4 https://youtu.be/Ipddkt5DR2w
Sending Email with Bamboo - Part 2
Part 2 of our series on sending email with Bamboo. Watch how easy Bamboo makes it to use layouts and templates to compose emails: https://elixircasts.io/sending-email-with-bamboo-part-2
Elixir for Java Developers, Episode I
I’m starting a series of posts to people from Java learn Elixir faster. I hope you guys like it.
https://medium.com/@dojusa/elixir-for-java-developers-episode-i-66b65c862652
Sobelow, the Phoenix vulnerability scanner - v0.2.5
Changes include:
- Flag for an additional SQL injection vector
- Small addition to XSS checks
- Minor bug fixes and refactoring
You can now install with mix archive.install hex sobelow, and if you want (or need) to install an older version, you can do so with mix archive.install hex sobelow 0.2.4.
retort 2.1.0
Install: https://hex.pm/packages/retort/2.1.0<br/> Docs: https://hexdocs.pm/retort/2.1.0<br/> Changes: https://github.com/C-S-D/retort/compare/v2.0.0…v2.1.0
Changelog
Enhancements
-
Extract
Retort.Resources.timeout/2toRetort.Resources.Timeout.get_or_default(module, function).Retort.Resources.Timeoutalso has functions for deleting and putting module-wide and function name specific timeouts, to make testing easier and less boiler plate needed in override examples.-
Retort.Resources.Timeout.delete(module)will deletetimeouts set byRetort.Resources.Timeout.put(module, timeout)ORRetort.Resources.Timeout.put(module, function_name, timeout). -
Retort.Resources.Timeout.delete(module, timeout)will deletetimeoutset byRetort.Resources.Timeout.put(module, function_name, timeout)OR remove thetimeoutforfunction_nameand leave it for the other function names whenRetort.Resources.Timeout.put(module, timeout)is called. -
Retort.Resources.Timeout.put(module, timeout)will set thetimeoutfor allRetort.Client.Genericcalls bymodulethat calleduse Retort.Resources. -
Retort.Resources.Timeout.put(module, function_name, timeout)will set thetimeoutfor allRetort.Client.Genericfunction_namecalls bymodulethat calleduse Retort.Resources. -
Retort.Resources.Timeout.put(module, function_name, timeout, func)will only temporarilyRetort.Resources.Timeout.put/3, but for the duration passed function only. This can be used to test timeout handling.
-
-
Update to
credo0.7.4.
Bug Fixes
- Fix formatting of timeout override example code.
Deprecations
-
Retort.Resources.timeout(module, function_name)is deprecated; useRetort.Resources.Timeout.get_or_default(module, function_name)instead.
When to use processes in Elixir - Part 2: Running concurrent tasks
In the second instalment of “When to use processes in Elixir” I wrote about using processes to run concurrent tasks.
In case you missed it, you could already send emails with attachments using Swoosh 0.8, all adapters supported
Checkout docs at https://github.com/swoosh/swoosh#attachments
The adapters list:
-
SMTP
Swoosh.Adapters.SMTP -
Sendgrid
Swoosh.Adapters.Sendgrid -
Mandrill
Swoosh.Adapters.Mandrill -
Mailgun
Swoosh.Adapters.Mailgun -
Postmark
Swoosh.Adapters.Postmark -
SparkPost
Swoosh.Adapters.SparkPost
