stimpack 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 77c100a2db422cb489d3405605ad303d16f83881a5a7fc041217e424672ce6fa
4
- data.tar.gz: 3bb479b3ff75547dc957609dad9b9bb109a3e6396f220d5f0bf04056d5ea8fb9
3
+ metadata.gz: 3cb6166834b2ea8ebd3623491464ee321b457fc4347c7f8af80e8efa47c18785
4
+ data.tar.gz: b165b651e620abd0197c509070049a2f9ff5523f2b5c4ab32b2b7d26392c8b16
5
5
  SHA512:
6
- metadata.gz: '059c1b11d33c8d26d3c08deff15d2864cba2484fae0d62e33042d6feb88a9f40a869522f93847b5bcdb4d654eebf6f1337979e288ad5bce047e104aa83718d21'
7
- data.tar.gz: 42bab45829e429e543e898cdece963e185e53adbc692611f5ddaacaafcccd4e03376cd4cba1a3dc8f6872d66808127fa8d8c05d49e911e3181eef7abe2d32707
6
+ metadata.gz: 81f1124b9c8901a6a681f00385f9a5d67c48d035925c241b69ab68f0c9745d7b4c15decd45d59b1fceb6d9b552ec23c4431f900a230f77ef1954c5edba740bf0
7
+ data.tar.gz: e4c881c3356dab09454183967508051133a1054054fc10dc9106cae7fb5b2ef3378ff5c68da93dcfb119e55004144cb539c70ebf8c875ca9e301a4ecdafd2e94
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Stimpack
2
2
 
3
- `stimpack` makes integrating with [`packwerk`](https://github.com/Shopify/packwerk) easy and establishes conventions such that packwerk packages mimic the feel and structure of [Rails engines](https://guides.rubyonrails.org/engines.html), without all of the boilerplate. With `stimpack`, new packages' autoload paths are automatically added to Rails, so your code will immediately become usable and loadable without additional configuration.
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
- lib/
32
- tasks/
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(pack)
10
- @pack = pack
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(@pack.path.join(FILE)).fetch(KEY, {}).freeze
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(self)
31
+ @config ||= Configuration.new(path.join(PACKAGE_FILE))
26
32
  end
27
33
 
28
34
  private
@@ -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.new(path)
17
+ next unless pack = Pack.create(path)
18
18
  @packs[pack.name] = pack
19
19
  end
20
20
  @packs.freeze
@@ -4,7 +4,7 @@ module Stimpack
4
4
  class Railtie < Rails::Railtie
5
5
  config.before_configuration do |app|
6
6
  Stimpack.load(app)
7
- ActiveSupport.run_load_hooks(:stimpack, yield: Packs)
7
+ ActiveSupport.run_load_hooks(:stimpack, Packs)
8
8
  end
9
9
  end
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module Stimpack
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.4.0".freeze
3
3
  end
data/lib/stimpack.rb CHANGED
@@ -42,6 +42,7 @@ module Stimpack
42
42
  config
43
43
  config/locales
44
44
  config/initializers
45
+ config/routes
45
46
  )
46
47
  end
47
48
 
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.1.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-03-07 00:00:00.000000000 Z
11
+ date: 2022-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails