Class: Micra::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/micra/install/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#inject_includes_in_layoutObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/generators/micra/install/install_generator.rb', line 22

def inject_includes_in_layout
  layout = "app/views/layouts/application.html.erb"
  return unless File.exist?(layout)

  unless File.read(layout).include?("micra_includes")
    inject_into_file layout,
      "    <%= micra_includes %>\n",
      before: "  </head>\n"
  end
end

#pin_micra_in_importmapObject



12
13
14
15
16
17
18
19
20
# File 'lib/generators/micra/install/install_generator.rb', line 12

def pin_micra_in_importmap
  return unless File.exist?("config/importmap.rb")

  line = %(pin "micra", to: "https://cdn.jsdelivr.net/npm/micra.js@#{Micra::Rails::MICRA_JS_VERSION}/dist/micra.esm.js", preload: true\n)

  append_to_file "config/importmap.rb" do
    "\n# Micra.js — reactive UI directives (<5 KB gzip)\n#{line}"
  end
end

#show_done_messageObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/generators/micra/install/install_generator.rb', line 33

def show_done_message
  say ""
  say "✔ Micra.js installed."
  say ""
  say "  Try it in any view:"
  say ""
  say %(    <%= micra_component :counter, count: 0 do %>)
  say %(      <button @click="dec">−</button>)
  say %(      <strong data-text="count"></strong>)
  say %(      <button @click="inc">+</button>)
  say %(    <% end %>)
  say ""
  say %(  Then in JS (app/javascript/application.js or similar):)
  say ""
  say %(    import * as Micra from "micra")
  say %(    Micra.define("counter", {)
  say %(      state: { count: 0 },)
  say %(      inc() { this.state.count++ },)
  say %(      dec() { this.state.count-- },)
  say %(    }))
  say ""
  say "  Docs: https://denisfl.github.io/micra.js/"
  say ""
end