elm-rails
elm-rails copied to clipboard
View helpers for incorporating Elm modules into Rails views
elm-rails
elm-rails makes it easy to use Elm modules in your Ruby on Rails applications. This project was heavily inspired by react-rails.
Compatibility
Only works with Elm 0.19.
This gem is tested against Ruby versions 2.7, 3.0, and 3.1; and Rails versions 6.1, and 7.0. It may work on other versions, and if you want to open a PR adding tests against those versions they would be welcome.
Installation
-
Add elm-rails to your
Gemfileand runbundle installgem "elm-rails" -
Create a new directory to house all Elm modules
mkdir app/assets/elm -
Update
.gitignoreto ignore elm files/elm-stuff
Usage
-
Define your elm modules in the
app/assets/elmdirectory.app/assets/elm/Hello.elm
module Hello exposing (..) import Html exposing (text) port noun : String main = text ("Hello " ++ noun) -
Open your
app/assets/javascripts/application.jsand require yourHello.elm.
//= require Hello
-
Use the view helper to insert your component into your view. Pass port values as a
Hash.<h1>This is an Elm component!</h1> <%= elm_embed('Elm.Hello', { noun: 'World!' }) %> -
That's it!
Configuration
By default, elm-rails uses elm-compiler under the hood, which will use the version of elm available in your system path, and then installing its own copy in /tmp if needed. If you wish, you may configure this path in an initializer:
config/initializers/elm_compiler.rb
erb Elm::Compiler.elm_path = "bin/elm"