IntelliJ Elixir 12.2.0

Changelog

v12.2.0

Enhancements

  • Test against support IDEA versions in CI to prevent another Find Usage regression
    • 2021.2.3 FindUsageTests differ from manual testings, so don’t test 2021.2.3
    • Make FindUsagesTest UsageViewTreeText work for both 2021.1.3 and other versions
    • Add kernel.ex to all Find Usage Tests to ensure it doesn’t work because it can’t resolve primary element
  • Add find usages for def test

Bug Fixes

  • Work-around Find Usage bug due to temporary change in JetBrains API only in versions that have that change.
    • Restore old find_usages.handler.Call
    • Determine whether to resolve FindUsageHandler primary element based on application build number Assume that are 213.* builds have the already resolved call. This excludes 2021.3, but not 2021.3.1, which includes the fix to restore the 2021.1.3 behaviour.
  • Fix HTML errors in description.html.
  • Add card one-liner.

[Installation Instructions](https://github.com/KronicDeth/intellij-elixir/blob/v12.2.0/README.md#installation

[Elixir Wizards S7E9] Brooklyn Zelenka and The Exciting World of Edge Computing

The latest episode of Elixir Wizards is out today!

Brooklyn Zelenka, co-founder and CTO at Fission, joins us in this high level conversation about edge computing, tech equity, anti-entropy, witchcraft, and the Elixir language. https://smartlogic.io/podcast/elixir-wizards/s7e9-zelenka

Elixir and The Explicit Architecture

How I use The Explicit Architecture in the Elixir projects.

[blog] My experience learning Elixir as a JavaScript developer

Not many junior devs get into Elixir but I decided to learn it just 6 months after graduating a bootcamp while building my first real project, Work Happy. No regrets.

I’ve loved it and have learned so much but not without a lot of struggles. I’ve written about my experience learning Elixir as a JavaScript developer: https://medium.com/@zahradeenie/building-work-happy-learning-elixir-part-one-f3abbfbbaea9

Build Interactive Phoenix LiveView UIs with Components

Learn how to make use of functional components to create complex Phoenix LiveView UIs.

https://blog.appsignal.com/2022/01/11/build-interactive-phoenix-liveview-uis-with-components.html

[Blog] Phoenix File Uploading via Javascript

Uploading files with Phoenix and Javascript? Stephanie Vizzi has created a step-by-step reference to guide you through the process: https://smartlogic.io/blog/phoenix-file-upload-via-javascript/

S3 Storage Provider for Elasticlunr (Elixir)

I just published an S3 storage provider for Elasticlunr. You can now store your indexes to an S3 bucket aside the Disk storage provider included in the base project.

The storage API is flexible, so writing to any storage provider (Google Cloud Storage, DB and so on) shouldn’t be a problem. it’s just a matter of grabbing the right provider or implementing one yourself.

https://github.com/heywhy/ex_elasticlunr_s3

ThinkingElixir 081: Elixir in a Burrito with Quinn and Digit

In episode 81 of Thinking Elixir, we talk with Digit and Quinn Wilton about the Burrito project. It wraps up Elixir to a single binary, enables cross-platform builds using Zig to help while also enabling NIFs! They share how the security focused software they create uses this to run in isolated environments where Elixir can’t be installed. A really cool project that can be used for things like one-off scripts to long running CLI applications with full OTP features and more. They share some of the challenges they had to overcome in creating Burrito and how it being OpenSource helps the company and their project.

https://podcast.thinkingelixir.com/81

Elasticlunr Query DSL

Like every other search engine, you can make more advanced search queries depending on your requirements. In the remaining part of this post, I will be highlighting the available query types provided by Elasticlunr.

Read more: https://atandarash.me/blog/elasticlunr-query-dsl

Note: This is a continuation of the introductory post

IntelliJ Elixir 12.1.0

Changelog

v12.1.0

Enhancements

  • Add MacPorts SDK locations to README.
  • Add support for ** operator to lexer and parser.
  • Color settings for each sigil name. Both the interpolating (lower case) and literal (upper case) name use the same settings.
  • Add support for stepped ranges

Bug Fixes

  • Decompile {:|, …, …} as cons operator in Elixir Dbgi.
  • Fix missing guards when decompiling Elixr DbgI clauses using special decompiler Guards where missing because only decompiler.appendSignature was used.
  • Fix module.Reference.calculateDefaultRangeInElement element.textOffset instead of element.textLength was used for end of range.
  • Render OtpErlangExternalFun correctly as remote captures (&Mod.fun/arity). Fixes decompiling Ecto.Changeset.validate_number.
  • Protect ExUnit configuration Producer from ElixirFile without VirtualFile.
  • Unquote.treeWalkUp no longer assumes that the final argument to unquote is a Call.
  • Fix Find Usages for call definitions
    • Don’t resolve primary Find Usages element. The primary element passed to FindUsageHandler is now already resolved, so resolving it again for call definitions finds usages of def, defmacro, etc.
    • Since the element passed to FindUsagesProvider#canFindUsageFor, definers can no longer be excluded, so remove that check.
  • Don’t highlight Quote or Sigil as normal text if part of documentation. Since the annotators will run in arbitrary order, the Textual annotator has to avoid annotating the same nodes as the ModuleAttribute annotator or the colors can get interleaved.
  • Put ENTRANCE and Initial Visited Element in __module__.Resolver.
  • Keep searching when resolving type parameters if bitstring is encountered.
  • Fix UnaliasedName.unaliasedName for atoms.
  • Restore ElixirAtom#getName Lost when parser was regenerated when Elixir <= 1.6 support was dropped in 679a9689cfe097018b9baa4e894d4550a84d7aac.

Installation Instructions

Meaningful config keys in Elixir projects

A quick reminder that using a meaningful key (eg. a module name instead of an arbitrary atom) to store configuration in Elixir is quite simple and often leads to more maintainable code.

https://craft.mirego.com/2022-01-06-meaningful-config-keys-in-elixir-projects

Passing Unknown Attributes into Your Component

On your LiveView page, you are using a custom component. You want to be able to pass HTML attributes into the component, but the component doesn’t know anything about the attributes being passed! You need a way to pass arbitrary attributes through and get them where you want them.

https://fly.io/phoenix-files/passing-unknown-attributes-into-component/

Elixir Wizards S7E8 Sigu Magwa on the Elixir Community in Kenya

The latest episode of the Elixir Wizards podcast released this morning! Check it out: https://smartlogic.io/podcast/elixir-wizards/s7e8-magwa/

Elixir Wizards S7E8 Sigu Magwa on the Elixir Community in Kenya

The latest episode of the Elixir Wizards podcast released this morning! Check it out: https://smartlogic.io/podcast/elixir-wizards/s7e8-magwa/

"100 Elixir Tips" eBook

I published a new Elixir book:

100 Elixir Tips

Get it for free here

Enjoy!

Using View as a way to simplify your system

Many applications introduce some kind of status to make it easier to share data.

However, more and more modules in your codebase need to be explicit about these assumptions. Views can eliminate the problematic SQL query. It’s also great way to introduce well-defined entities.

https://bartoszgorka.com/view-as-way-to-eliminate-problematic-queries

Restore LiveView State on Startup

You are storing some LiveView state in the browser. You want to retrieve that saved state as early as possible to improve the user experience.

The approach we used earlier waits for the LiveView to request the client to send the data. In your situation, you know you want the data, so why wait around to be asked for it? Can you have it automatically pushed from the client without being requested? Can you do it in a way that is reusable for other pages and other LiveViews and not just this one page?

This recipe improves the design and even makes it work for multiple LiveViews in the same application!

https://fly.io/phoenix-files/restore-liveview-state-on-startup/

ThinkingElixir 080: Waffle Making with Boris Kuznetsov

In episode 80 of Thinking Elixir, we talk with Boris Kuznetsov to learn about the Waffle library and how it is used to attach images, video, and audio to your Ecto records while also processing the attachments for thumbnails, encodings, and more. We learn about the history of the project having forked from Arc, which is no longer maintained. We cover the challenges of supporting and maintaining a library created as a fork. We talk about Second System Syndrome and the desire we often feel that it would be easier to just start over. All this and more!

https://podcast.thinkingelixir.com/80

New in Legendary: 65% reduction in Docker build times via Elixir releases

We introduced a new Dockerfile and CI config that uses Elixir releases and it cut our image build times by 60-70%!

https://gitlab.com/mythic-insight/legendary

Introduction to Elasticlunr

Elasticlunr is a small, full-text search library for use in the Elixir environment. It indexes JSON documents and provides a friendly search interface to retrieve documents.

The library is built for web applications that do not require the deployment complexities of popular search engines while taking advantage of the Beam capabilities.

Read more: https://atandarash.me/blog/introduction-to-elasticlunr

Previous page Next page