AlloyCI v0.4.0 has been released!
AlloyCI v0.4.0 includes initial support for build artifacts, full support for build dependencies, and the option to use Sentry for error catching. Read more about it here: https://github.com/AlloyCI/alloy_ci/releases/tag/v0.4.0
Expat v1.0 - Reusable, composable pattern matching in Elixir.
The v1.0 version now supports guards!
Happy pattern-expanding everyone!
Gravatars
Gravatar is a quick and simple way to use avatars in your application. In this episode we see how easy it is to use them with a Phoenix application.
IntelliJ Elixir 7.4.0
Enhancements
-
Allow files to skip interpreting in the debugger to be configured in Preferences > Build, Execution, Deployment > Debugger > Stepping. It is recommended to customize these settings instead of using
INTELLIJ_ELIXIR_DEBUG_BLACKLIST
environment variable.INTELLIJ_ELIXIR_DEBUG_BLACKLIST
should be reserved to additional modules that need to not be interpreted only for specific runs.-
Ship a set of patterns that excludes Elixir standard library by default and most
mix phx.new
dependencies, so that debugger boots faster for most users.
-
Ship a set of patterns that excludes Elixir standard library by default and most
-
Support debugging
.eex
templates-
Detect MFAs that refer to template functions in Phoenix view modules derived from
.eex
template files, to allow stepping through Elixir tags in those templates. -
Allow setting breakpoints in
.eex
files when a.beam
file using the template’s relative can be found. This means that the Phoenix view module.beam
file must exist in_build
prior to setting a breakpoint. Run the Run Configuration once, before debugging to complete the build if setting a breakpoint does not work.-
.beam
files are now indexed by theirLine
chunkfilenames
subsection to power this feature.
-
-
Detect MFAs that refer to template functions in Phoenix view modules derived from
-
Cache
.beam
Beam
Cache
onVirtualFile
. Cache is invalidated and refreshed on modification of theVirtualFile
. Cache is used for both BEAM Chunks read-only editors andLine
chunk file name index. - Each package manager uses a different root path and which directory to pick above the ebins varies by package manager, so document package manager install paths.
-
Show warnings-as-errors checkbox as original blocker has been fixed for awhile and
ProcessAdapter
turns warning text into errors that IDE understands. -
When importing Mix projects, don’t exclude compiler output from indexing because it is needed to resolve Elixir Line Breakpoints in EEx files.
- For pre-existing Elixir modules, they will be converted to not exclude compiler output.
-
Exclude known uninterpretable modules
-
Bcrypt.Base
-
:erocksdb
-
:lz4
-
:re2
-
Bug Fixes
-
Turn off
debug
flag when startingIntelliJElixir.DebugServer
, which removes the*DBG*
statements that kept printing in the ExUnit output when using the debugger. -
Fix conversion of Elixir module names to Erlang module names for
INTELLIJ_ELIXIR_DEBUG_BLACKLIST
environment variable. -
Cache
null
SDKRelease
, so that when Elixir is configured, but the Erlang path is broken (such as after abrew unlink erlang
, theRelease
calculating usingelixir
-
Implement
Macro.atomToString
-
Properly render improper lists
-
Show improper list with explicit
|
for presenation -
Children of improper lists show
head
andtail
instead of index.
-
Show improper list with explicit
-
Show Elixir indices (
0
-based) instead of Erlang indices (1
-based) for lists and tuples. * Loosen check on the path suffix by looking for only
liband not
lib/erlang/lib, so that it works for both Homebrew’s
ebinpaths and ASDF’s
ebinpaths. * Harmonize JPS compile server’s invoking of
mixto pattern used in Run Configuration runners. * Use
mixpath from SDK * No longer say the build succeeded when there are obvious
mixerrors * Parse
mix compile` output for compilation errors and warnings When “warnings-as-errors” is enabled in “Elixir compiler” settings, IDE also shows warnings as errors. IDE will know build failed if there are errors (or warnings treated as errors) and properly allow rebuild. * Some modules, like NIF modules, can’t be loaded into the debugger. Individual modules not being debuggable shouldn’t kill the debugger task, so rescue the known error and record it for later debugging of the debugger.
Simple Setup of PostGIS Columns with Phoenix Generators
Short blog post on how to use Phoenix generators with PostGIS column types. Demonstrates tweaks to get tests, changesets, and schema all working with minimal changes to the generated code.
Mining for Mnemonic Haiku with Elixir
Let’s use the Bitcoin BIP-39 mnemonic generator we built a few weeks ago to create a “mnemonic haiku miner”. The idea is to generate BIP-39 mnemonics until we find one that meets the structural requirements of a haiku.
Put on your lab coats and grab your Morty, we’re going full mad scientist!
StrawHat.Map for Map, Location and Addresses Management
A management system for mainly addresses and location management. There is a bunch of functionalities that will allow you to plug in this in your application and manage those things for you.
We are working on the geo location functionality and connecting with different search engine like Google Map Search and Mapbox or any other one so you wouldn’t need to implement that.
I hope you find something useful, feedback are appreciated.
StrawHat.Map for Map, Location and Addresses Management
A management system for mainly addresses and location management. There is a bunch of functionalities that will allow you to plug in this in your application and manage those things for you.
We are working on the geo location functionality and connecting with different search engine like Google Map Search and Mapbox or any other one so you wouldn’t need to implement that.
I hope you find something useful, feedback are appreciated.
Ecto type for IPv4 and IPv6 addresses
Blog post that shows how to implement a custom Ecto type for IP addresses:
Writing a Plug Library
I published a blog post about writing an elixir Plug library called plug_validator
gen_spoxy - caching made fun!
gen_spoxy is a library developed at Spot.IM which makes it very easy to create from scratch highly-concurrent applicative reverse-proxy that holds a short-lived (configurable) in-memory cache.
repository: https://github.com/SpotIM/gen_spoxy
have fun!
Compiling External Resources with Elixir
I wanted to write a simple key value parser as a macro and found out about the @external_resource
tag to allow live code reloading the modules based on external files.
https://blog.oestrich.org/2018/03/elixir-external-resources/
Webpack + Phoenix
Repo: https://github.com/straw-hat-team/phoenix_assets_webpack
Sharing the latest updates of Webpack setup for Phoenix.
- Upgraded to Webpack 4
- Added Elm
- Added ESLint + Prettier
- Added .env
- Added service workers
Enjoy!
ModestEx - Pipeable transformations on html strings (with CSS selectors)
ModestEx - Pipeable transformations on html strings (with CSS selectors), e.g. find(), prepend(), append(), replace(), remove(), insert_after(), insert_before(), etc.
erl-env make retrieving configuration parameters 7x faster than application:get_env/2-3
eenv is a simple application to make retrieving configuration parameters super fast(7x faster than application:get_env)and stable. It’s very straightforward(lines < 200) and worth a visit.
Dependabot now supports umbrella applications
Dependabot is a bot that automatically updates your dependencies. A couple of weeks ago we launched Elixir support in beta.
We know that most businesses who are running Elixir in production today are often using umbrella applications so we are super pleased to announce that we have added support for that too. 🎉
Sign up here: https://dependabot.com (it’s completely free for personal accounts 🤑).