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 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