Skip to content

Commit 7652c20

Browse files
timfswtstannard
authored andcommitted
Added possibility to set custom engine name (#65)
1 parent ab62d6b commit 7652c20

File tree

5 files changed

+38
-1
lines changed

5 files changed

+38
-1
lines changed

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@ metadata:
8080
engine: true
8181
```
8282
83+
Add `engine_name: ` to your `package.yml` to use a specific, maybe namespaced, engine name instead of the last package folder name.
84+
```yml
85+
# packs/my_pack/package.yml
86+
enforce_dependencies: true
87+
enforce_privacy: true
88+
metadata:
89+
engine: true
90+
engine_name: namespaced/my_pack
91+
```
92+
93+
The engine is created as `Namespaced::MyPack::Engine` instead of `MyPack::Engine`.
94+
8395
## Ecosystem and Integrations
8496

8597
### RSpec Integration

lib/packs/rails/integrations/rails.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def create_namespace(name)
4646
end
4747

4848
def create_engine(pack)
49-
name = pack.last_name
49+
name = pack.metadata.fetch("engine_name", pack.last_name)
5050
namespace = create_namespace(name)
5151
stim = Stim.new(pack, namespace)
5252
namespace.const_set("Engine", Class.new(::Rails::Engine)).include(stim)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module Pants
2+
module Jeans
3+
class Bootcut
4+
end
5+
end
6+
end
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
metadata:
2+
engine: true
3+
engine_name: pants/jeans

spec/packs-rails_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,22 @@
3939
end
4040
end
4141

42+
context 'custom engine name' do
43+
it "autoloads classes in autoload paths" do
44+
expect(defined?(Pants::Jeans::Bootcut)).to eq("constant")
45+
end
46+
47+
it "adds pack paths to the application" do
48+
Packs::Rails.config.paths.each do |path|
49+
expect(Rails.application.paths[path].paths).to include(rails_dir.join('packs', "pants", "jeans", path))
50+
end
51+
end
52+
53+
it "creates engines namespace for engine packs" do
54+
expect(defined?(Pants::Jeans::Engine)).to eq("constant")
55+
end
56+
end
57+
4258
context 'alternate roots' do
4359
it "autoloads classes in autoload paths" do
4460
expect(defined?(Belts::Brown)).to eq("constant")

0 commit comments

Comments
 (0)