Skip to content

Commit 9529aab

Browse files
authored
Fix: Error when template_builder is overwritten (#232)
* Add check for if generator was overriden and use :erb if it was * bump version * Remove rails dependency and just automatically override * Update install_generator * Correctly override template engine option * Ensure all generators that use :erb have correct override * Update remaining generators * Revert unnecessary change
1 parent 4aa5f06 commit 9529aab

9 files changed

Lines changed: 92 additions & 1 deletion

File tree

lib/active_agent/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module ActiveAgent
2-
VERSION = "0.6.1"
2+
VERSION = "0.6.2"
33
end

lib/generators/active_agent/agent_generator.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ class AgentGenerator < ::Rails::Generators::NamedBase
99

1010
check_class_collision suffix: "Agent"
1111

12+
def initialize(*args, **kwargs)
13+
super(*args, **kwargs)
14+
15+
# We must duplicate due to immutable hash
16+
dup_options = options.dup
17+
@options = dup_options.merge(template_engine: :erb)
18+
end
19+
1220
def create_agent_file
1321
template "agent.rb", File.join("app/agents", class_path, "#{file_name}_agent.rb")
1422

lib/generators/active_agent/install_generator.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ class InstallGenerator < ::Rails::Generators::Base
66
class_option :skip_config, type: :boolean, default: false, desc: "Skip configuration file generation"
77
class_option :formats, type: :array, default: [ "text" ], desc: "Specify formats to generate (text, html, json)"
88

9+
def initialize(*args, **kwargs)
10+
super(*args, **kwargs)
11+
12+
# We must duplicate due to immutable hash
13+
dup_options = options.dup
14+
@options = dup_options.merge(template_engine: :erb)
15+
end
16+
917
def self.usage_path
1018
@usage_path ||= File.expand_path("../USAGE", __dir__)
1119
end
@@ -26,6 +34,7 @@ def create_application_agent
2634
hook_for :template_engine
2735

2836
private
37+
2938
def formats
3039
options[:formats].map(&:to_sym)
3140
end

lib/generators/erb/agent_generator.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ class AgentGenerator < Base # :nodoc:
99
argument :actions, type: :array, default: [], banner: "method method"
1010
class_option :formats, type: :array, default: [ "text" ], desc: "Specify formats to generate (text, html, json)"
1111

12+
def initialize(*args, **kwargs)
13+
super(*args, **kwargs)
14+
15+
# We must duplicate due to immutable hash
16+
dup_options = options.dup
17+
@options = dup_options.merge(template_engine: :erb)
18+
end
19+
1220
def copy_view_files
1321
view_base_path = File.join("app/views", class_path, file_name + "_agent")
1422
empty_directory view_base_path

lib/generators/erb/install_generator.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ class InstallGenerator < ::Rails::Generators::Base # :nodoc:
66
source_root File.expand_path("templates", __dir__)
77
class_option :formats, type: :array, default: [ "text" ], desc: "Specify formats to generate (text, html, json)"
88

9+
def initialize(*args, **kwargs)
10+
super(*args, **kwargs)
11+
12+
# We must duplicate due to immutable hash
13+
dup_options = options.dup
14+
@options = dup_options.merge(template_engine: :erb)
15+
end
16+
917
def create_agent_layouts
1018
if behavior == :invoke
1119
formats.each do |format|

test/generators/active_agent/agent_generator_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,21 @@ class ActiveAgent::Generators::AgentGeneratorTest < Rails::Generators::TestCase
146146
assert_no_file "app/views/admin/user_agent/create.json.erb"
147147
end
148148

149+
test "handles erb generator override with proactive detection" do
150+
original_template_engine = Rails::Generators.options[:rails][:template_engine]
151+
Rails::Generators.options[:rails][:template_engine] = :nonexistent
152+
153+
begin
154+
run_generator %w[user create --formats=html]
155+
156+
assert_file "app/agents/user_agent.rb"
157+
assert_file "app/views/user_agent/create.html.erb"
158+
ensure
159+
# Restore original template engine
160+
Rails::Generators.options[:rails][:template_engine] = original_template_engine
161+
end
162+
end
163+
149164
private
150165

151166
def create_file(path, content)

test/generators/active_agent/install_generator_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,19 @@ class ActiveAgent::Generators::InstallGeneratorTest < Rails::Generators::TestCas
104104
assert_no_file "app/views/layouts/agent.html.erb"
105105
assert_no_file "app/views/layouts/agent.json.erb"
106106
end
107+
108+
test "handles erb generator override with proactive detection" do
109+
original_template_engine = Rails::Generators.options[:rails][:template_engine]
110+
Rails::Generators.options[:rails][:template_engine] = :nonexistent
111+
112+
begin
113+
run_generator
114+
115+
# Verify proactive detection created the layout file
116+
assert_file "app/views/layouts/agent.text.erb"
117+
ensure
118+
# Restore original template engine
119+
Rails::Generators.options[:rails][:template_engine] = original_template_engine
120+
end
121+
end
107122
end

test/generators/erb/agent_generator_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,18 @@ class Erb::Generators::AgentGeneratorTest < Rails::Generators::TestCase
5555
assert_directory "app/views/user_agent"
5656
assert_file "app/views/user_agent/instructions.text.erb"
5757
end
58+
59+
test "handles erb generator override with proactive detection" do
60+
original_template_engine = Rails::Generators.options[:rails][:template_engine]
61+
Rails::Generators.options[:rails][:template_engine] = :nonexistent
62+
63+
begin
64+
run_generator %w[user create]
65+
66+
assert_file "app/views/user_agent/create.text.erb"
67+
ensure
68+
# Restore original template engine
69+
Rails::Generators.options[:rails][:template_engine] = original_template_engine
70+
end
71+
end
5872
end

test/generators/erb/install_generator_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,18 @@ class Erb::Generators::InstallGeneratorTest < Rails::Generators::TestCase
2121
assert_match(/<%= yield %>/, content)
2222
end
2323
end
24+
25+
test "handles erb generator override with proactive detection" do
26+
original_template_engine = Rails::Generators.options[:rails][:template_engine]
27+
Rails::Generators.options[:rails][:template_engine] = :nonexistent
28+
29+
begin
30+
run_generator [ "--formats=html" ]
31+
32+
assert_file "app/views/layouts/agent.html.erb"
33+
ensure
34+
# Restore original template engine
35+
Rails::Generators.options[:rails][:template_engine] = original_template_engine
36+
end
37+
end
2438
end

0 commit comments

Comments
 (0)