stimpack 0.1.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -5
- data/lib/stimpack/pack/configuration.rb +3 -4
- data/lib/stimpack/pack.rb +7 -1
- data/lib/stimpack/packs.rb +1 -1
- data/lib/stimpack/railtie.rb +1 -1
- data/lib/stimpack/version.rb +1 -1
- data/lib/stimpack.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cb6166834b2ea8ebd3623491464ee321b457fc4347c7f8af80e8efa47c18785
|
4
|
+
data.tar.gz: b165b651e620abd0197c509070049a2f9ff5523f2b5c4ab32b2b7d26392c8b16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81f1124b9c8901a6a681f00385f9a5d67c48d035925c241b69ab68f0c9745d7b4c15decd45d59b1fceb6d9b552ec23c4431f900a230f77ef1954c5edba740bf0
|
7
|
+
data.tar.gz: e4c881c3356dab09454183967508051133a1054054fc10dc9106cae7fb5b2ef3378ff5c68da93dcfb119e55004144cb539c70ebf8c875ca9e301a4ecdafd2e94
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Stimpack
|
2
2
|
|
3
|
-
`stimpack`
|
3
|
+
`stimpack` establishes and implements a set of conventions for splitting up large monoliths built on top of [`packwerk`](https://github.com/Shopify/packwerk). With `stimpack`, new packages' autoload paths are automatically added to Rails, so your code will immediately become usable and loadable without additional configuration.
|
4
4
|
|
5
5
|
Here is an example application that uses `stimpack`:
|
6
6
|
```
|
@@ -24,12 +24,12 @@ packs/
|
|
24
24
|
some_other_non_namespaced_private_model.rb # this works too
|
25
25
|
my_domain/
|
26
26
|
my_private_namespacd_model.rb
|
27
|
-
config/
|
28
|
-
initializers/ # Initializers can live in packs and load as expected
|
29
27
|
controllers/
|
30
28
|
views/
|
31
|
-
|
32
|
-
|
29
|
+
config/
|
30
|
+
initializers/ # Initializers can live in packs and load as expected
|
31
|
+
lib/
|
32
|
+
tasks/
|
33
33
|
spec/ # With stimpack, specs for a pack live next to the pack
|
34
34
|
public/
|
35
35
|
my_domain_spec.rb
|
@@ -71,6 +71,17 @@ module MyCoolApp
|
|
71
71
|
end
|
72
72
|
```
|
73
73
|
|
74
|
+
### Splitting routes
|
75
|
+
`stimpack` allows you to split your application routes for every pack. You just have to create a file describing your routes and then `draw` them in your root `config/routes.rb` file.
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
# packs/my_domain/config/routes/my_domain.rb
|
79
|
+
resources :my_resource
|
80
|
+
|
81
|
+
# config/routes.rb
|
82
|
+
draw(:my_domain)
|
83
|
+
```
|
84
|
+
|
74
85
|
### Making your Package an Engine
|
75
86
|
Add `engine: true` to your `package.yml` to make it an actual Rails engine:
|
76
87
|
```yml
|
@@ -3,11 +3,10 @@
|
|
3
3
|
module Stimpack
|
4
4
|
class Pack
|
5
5
|
class Configuration
|
6
|
-
FILE = "package.yml"
|
7
6
|
KEY = "metadata"
|
8
7
|
|
9
|
-
def initialize(
|
10
|
-
@
|
8
|
+
def initialize(path)
|
9
|
+
@path = path
|
11
10
|
end
|
12
11
|
|
13
12
|
def engine
|
@@ -18,7 +17,7 @@ module Stimpack
|
|
18
17
|
private
|
19
18
|
|
20
19
|
def data
|
21
|
-
@data ||= YAML.load_file(@
|
20
|
+
@data ||= YAML.load_file(@path).fetch(KEY, {}).freeze
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
data/lib/stimpack/pack.rb
CHANGED
@@ -2,12 +2,18 @@
|
|
2
2
|
|
3
3
|
module Stimpack
|
4
4
|
class Pack
|
5
|
+
PACKAGE_FILE = "package.yml"
|
6
|
+
|
5
7
|
autoload :Configuration, "stimpack/pack/configuration"
|
6
8
|
|
7
9
|
attr_reader :name
|
8
10
|
attr_reader :path
|
9
11
|
attr_reader :engine
|
10
12
|
|
13
|
+
def self.create(path)
|
14
|
+
new(path) if path.join(PACKAGE_FILE).exist?
|
15
|
+
end
|
16
|
+
|
11
17
|
def initialize(path)
|
12
18
|
@path = path
|
13
19
|
@name = path.relative_path_from(Packs.root)
|
@@ -22,7 +28,7 @@ module Stimpack
|
|
22
28
|
end
|
23
29
|
|
24
30
|
def config
|
25
|
-
@config ||= Configuration.new(
|
31
|
+
@config ||= Configuration.new(path.join(PACKAGE_FILE))
|
26
32
|
end
|
27
33
|
|
28
34
|
private
|
data/lib/stimpack/packs.rb
CHANGED
@@ -14,7 +14,7 @@ module Stimpack
|
|
14
14
|
def resolve
|
15
15
|
# Gather all the packs under the root directory and create packs.
|
16
16
|
root.children.select(&:directory?).sort!.each do |path|
|
17
|
-
pack = Pack.
|
17
|
+
next unless pack = Pack.create(path)
|
18
18
|
@packs[pack.name] = pack
|
19
19
|
end
|
20
20
|
@packs.freeze
|
data/lib/stimpack/railtie.rb
CHANGED
data/lib/stimpack/version.rb
CHANGED
data/lib/stimpack.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ngan Pham
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|