Sha256: 9844c7601b607790585d41c8a60818126f7fc1ccd23e2b5851973ccd76269885
Contents?: true
Size: 1.89 KB
Versions: 1
Compression:
Stored size: 1.89 KB
Contents
require "ruby2js" require "listen" module Clapton class Engine < ::Rails::Engine isolate_namespace Clapton initializer "clapton.helpers" do ActiveSupport.on_load(:action_view) do include ClaptonHelper end end initializer "clapton.action_cable_helpers" do ActiveSupport.on_load(:action_cable) do ActionCable.server.config.logger = Rails.logger end if Rails.env.development? || Rails.env.test? components_path = Rails.root.join("app", "components") FileUtils.mkdir_p(components_path) unless components_path.exist? FileUtils.touch(components_path.join(".keep")) compile_components listener = Listen.to(Rails.root.join("app", "components")) do |modified, added, removed| compile_components end listener.start end end def compile_components FileUtils.mkdir_p(Rails.root.join("public", "clapton")) unless Rails.root.join("public", "clapton").exist? File.write(Rails.root.join("public", "clapton", "components.js"), File.read(File.join(__dir__, "javascripts", "dist", "components.js"))) File.write(Rails.root.join("public", "clapton", "client.js"), File.read(File.join(__dir__, "javascripts", "dist", "client.js"))) Dir.glob(Rails.root.join("app", "components", "**", "*.rb")).each do |file| code = File.read(file) js = "" js += "import { Clapton } from 'components';" js += "\n" code.scan(/(\w+)Component\.new/).each do |match| js += "import { #{match[0]}Component } from '#{match[0]}Component';" js += "\n" end js += Ruby2JS.convert(code, preset: true) js += "\n" js += "export { #{File.basename(file, ".rb").camelize} };" js += "\n" File.write(Rails.root.join("public", "clapton", "#{File.basename(file, ".rb").camelize}.js"), js) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
clapton-0.0.14 | lib/clapton/engine.rb |