From 533baa91dfe1ebb24fad10fba948b474701b69fb Mon Sep 17 00:00:00 2001 From: gtarsia Date: Wed, 25 Jun 2025 20:13:20 -0300 Subject: [PATCH] Improve install integration with Literal gem --- .../phlex/install/install_generator.rb | 2 ++ .../install/templates/base_component.rb.erb | 5 ++++- lib/templates/rails.rb | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 lib/templates/rails.rb diff --git a/lib/generators/phlex/install/install_generator.rb b/lib/generators/phlex/install/install_generator.rb index afc6404..b83afc4 100644 --- a/lib/generators/phlex/install/install_generator.rb +++ b/lib/generators/phlex/install/install_generator.rb @@ -2,6 +2,8 @@ module Phlex::Generators class InstallGenerator < ::Rails::Generators::Base + class_option :use_literal_gem, type: :boolean, default: true, + desc: "include `extend Literal::Properties` in Components::Base (recommended)" source_root File.expand_path("templates", __dir__) def create_initializer diff --git a/lib/generators/phlex/install/templates/base_component.rb.erb b/lib/generators/phlex/install/templates/base_component.rb.erb index 76cb951..122d3bb 100644 --- a/lib/generators/phlex/install/templates/base_component.rb.erb +++ b/lib/generators/phlex/install/templates/base_component.rb.erb @@ -1,7 +1,10 @@ # frozen_string_literal: true class Components::Base < Phlex::HTML - # Include any helpers you want to be available across all components +<%- if options[:use_literal_gem] -%> + extend Literal::Properties +<%- end -%> + # Include any other rails helpers you want to be available across all components include Phlex::Rails::Helpers::Routes if Rails.env.development? diff --git a/lib/templates/rails.rb b/lib/templates/rails.rb new file mode 100644 index 0000000..d1cfee1 --- /dev/null +++ b/lib/templates/rails.rb @@ -0,0 +1,19 @@ +# Rails application template +# https://guides.rubyonrails.org/rails_application_templates.html + +gem "phlex-rails" + +use_literal = while true + case ask("Use literal in base component? [Y/n]") + when "", /y/i then break true + when /n/i then break false + end +end +literal_gem_flag = use_literal ? "--use-literal-gem" : "--no-use-literal-gem" + +gem "literal" if use_literal + +after_bundle do + generate "phlex:install", literal_gem_flag + puts "Phlex installed for rails project" +end