shirinji-rails 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 2d8ea33f393fb706b8b855991df475f4ecb248e0
4
- data.tar.gz: 88e115385be179f6548ce7c5ac69f0b489a010c5
3
+ metadata.gz: ba2074a1253de14110ff4086a0f670ef766807da
4
+ data.tar.gz: d65935189fbfe865c055b408c04be42a57650d4b
5
5
  SHA512:
6
- metadata.gz: b2f77b730c8b9455b846f24170d44b5461837ee2840354d4787e00f3dc242d727a5e1508680f96d3f5b3889bb653a457fd19bbf3b7ce306f058213ff80fd5dab
7
- data.tar.gz: ad6e7046af6e84253c939d4c207c94d8807508830f9af2440ce9f1be1dce91a73a21d01dd9c40e2fa3ca25376300a1aa77ce4d8627117a5f0a1c261e7a626b99
6
+ metadata.gz: 6c701e777444d64a878beb4469c12e00fcf9a24a6da326168b2ac19883ee28a2a9d6f4e25ab2abc47e3a36ff555969434deffdadcf313cd439c489c10151af1d
7
+ data.tar.gz: 9e35d5e0ad789451be08e52b20fce67557322c58efbc5de38afbfda77b6379d4f157365b2a4ffbb9cf37b25fe9d92e497f9045a47698c0194c211d76564ec592
data/.travis.yml CHANGED
@@ -2,4 +2,14 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.3.1
5
+ - 2.4.0
6
+ - 2.4.1
7
+ - 2.4.2
8
+ - 2.4.3
9
+ - 2.4.4
10
+ - 2.5.0
11
+ - 2.5.1
12
+ - 2.5.2
13
+ - 2.5.3
14
+ - 2.6.0
5
15
  before_install: gem install bundler -v 1.16.1
data/Gemfile.lock CHANGED
@@ -1,76 +1,76 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shirinji-rails (0.0.3)
4
+ shirinji-rails (0.0.4)
5
5
  railties (>= 5.0.0)
6
6
  shirinji (= 0.0.3)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (5.2.0)
12
- actionview (= 5.2.0)
13
- activesupport (= 5.2.0)
11
+ actionpack (5.2.2)
12
+ actionview (= 5.2.2)
13
+ activesupport (= 5.2.2)
14
14
  rack (~> 2.0)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
17
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
18
- actionview (5.2.0)
19
- activesupport (= 5.2.0)
18
+ actionview (5.2.2)
19
+ activesupport (= 5.2.2)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
24
- activesupport (5.2.0)
24
+ activesupport (5.2.2)
25
25
  concurrent-ruby (~> 1.0, >= 1.0.2)
26
26
  i18n (>= 0.7, < 2)
27
27
  minitest (~> 5.1)
28
28
  tzinfo (~> 1.1)
29
29
  builder (3.2.3)
30
- concurrent-ruby (1.0.5)
30
+ concurrent-ruby (1.1.4)
31
31
  crass (1.0.4)
32
32
  diff-lcs (1.3)
33
- erubi (1.7.1)
34
- i18n (1.0.0)
33
+ erubi (1.8.0)
34
+ i18n (1.5.3)
35
35
  concurrent-ruby (~> 1.0)
36
- loofah (2.2.2)
36
+ loofah (2.2.3)
37
37
  crass (~> 1.0.2)
38
38
  nokogiri (>= 1.5.9)
39
- method_source (0.9.0)
40
- mini_portile2 (2.3.0)
39
+ method_source (0.9.2)
40
+ mini_portile2 (2.4.0)
41
41
  minitest (5.11.3)
42
- nokogiri (1.8.2)
43
- mini_portile2 (~> 2.3.0)
44
- rack (2.0.4)
45
- rack-test (1.0.0)
42
+ nokogiri (1.10.1)
43
+ mini_portile2 (~> 2.4.0)
44
+ rack (2.0.6)
45
+ rack-test (1.1.0)
46
46
  rack (>= 1.0, < 3)
47
47
  rails-dom-testing (2.0.3)
48
48
  activesupport (>= 4.2.0)
49
49
  nokogiri (>= 1.6)
50
50
  rails-html-sanitizer (1.0.4)
51
51
  loofah (~> 2.2, >= 2.2.2)
52
- railties (5.2.0)
53
- actionpack (= 5.2.0)
54
- activesupport (= 5.2.0)
52
+ railties (5.2.2)
53
+ actionpack (= 5.2.2)
54
+ activesupport (= 5.2.2)
55
55
  method_source
56
56
  rake (>= 0.8.7)
57
- thor (>= 0.18.1, < 2.0)
57
+ thor (>= 0.19.0, < 2.0)
58
58
  rake (10.5.0)
59
- rspec (3.7.0)
60
- rspec-core (~> 3.7.0)
61
- rspec-expectations (~> 3.7.0)
62
- rspec-mocks (~> 3.7.0)
63
- rspec-core (3.7.1)
64
- rspec-support (~> 3.7.0)
65
- rspec-expectations (3.7.0)
59
+ rspec (3.8.0)
60
+ rspec-core (~> 3.8.0)
61
+ rspec-expectations (~> 3.8.0)
62
+ rspec-mocks (~> 3.8.0)
63
+ rspec-core (3.8.0)
64
+ rspec-support (~> 3.8.0)
65
+ rspec-expectations (3.8.2)
66
66
  diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.7.0)
68
- rspec-mocks (3.7.0)
67
+ rspec-support (~> 3.8.0)
68
+ rspec-mocks (3.8.0)
69
69
  diff-lcs (>= 1.2.0, < 2.0)
70
- rspec-support (~> 3.7.0)
71
- rspec-support (3.7.1)
70
+ rspec-support (~> 3.8.0)
71
+ rspec-support (3.8.0)
72
72
  shirinji (0.0.3)
73
- thor (0.20.0)
73
+ thor (0.20.3)
74
74
  thread_safe (0.3.6)
75
75
  tzinfo (1.2.5)
76
76
  thread_safe (~> 0.1)
@@ -79,10 +79,10 @@ PLATFORMS
79
79
  ruby
80
80
 
81
81
  DEPENDENCIES
82
- bundler (~> 1.16)
82
+ bundler (~> 2.0)
83
83
  rake (~> 10.0)
84
84
  rspec (~> 3.0)
85
85
  shirinji-rails!
86
86
 
87
87
  BUNDLED WITH
88
- 1.16.1
88
+ 2.0.1
data/README.md CHANGED
@@ -14,7 +14,7 @@ And then execute:
14
14
 
15
15
  $ bundle
16
16
 
17
- ## Usage
17
+ ## General usage
18
18
 
19
19
  Add this file in `config/dependencies.rb`
20
20
 
@@ -48,6 +48,47 @@ service = MyApp.bean(:user_sign_up_service)
48
48
  service.call(user)
49
49
  ```
50
50
 
51
+ ## Rails entities DSL
52
+
53
+ Since controllers and jobs (and maybe other rails entities) are not under
54
+ Shirinji's control, they can not receive dependencies through their constructors.
55
+
56
+ One solution is to manually create a method for each dependency but it's painful
57
+ and make the code harder to read.
58
+
59
+ Rails integration actually provides a simple DSL to express dependencies.
60
+
61
+ ```ruby
62
+ # application_controller.rb
63
+
64
+ class ApplicationController < ActionController::Base
65
+ include ShirinjiRails::ResolverBinding
66
+ end
67
+
68
+ # in any controller
69
+
70
+ class FooController < ApplicationController
71
+ dependency :config
72
+ # Alias
73
+ dependency foo_create_service: :create_service
74
+
75
+ def index
76
+ config #=> `config` dependency
77
+ create_service # => `foo_create_service` dependency
78
+ end
79
+ end
80
+
81
+ class FooJob < ActiveJob::Base
82
+ include ShirinjiRails::ResolverBinding
83
+
84
+ dependency :config
85
+
86
+ def perform
87
+ config #=> `config` dependency
88
+ end
89
+ end
90
+ ```
91
+
51
92
  ## Contributing
52
93
 
53
94
  Bug reports and pull requests are welcome on GitHub at https://github.com/fdutey/shirinji-rails.
@@ -14,12 +14,14 @@ module ShirinjiRails
14
14
  return unless (conf = config_path)
15
15
 
16
16
  map = eval File.read(conf)
17
- config.shirinji.resolver = Shirinji::Resolver.new(map)
17
+ resolver = Shirinji::Resolver.new(map)
18
18
 
19
19
  ActiveSupport::Reloader.to_prepare do
20
20
  map = eval File.read(conf)
21
- ::Rails.application.config.shirinji.resolver.reload(map)
21
+ resolver.reload(map)
22
22
  end
23
+
24
+ config.shirinji.resolver = resolver
23
25
  end
24
26
 
25
27
  private
@@ -0,0 +1,25 @@
1
+ module ShirinjiRails
2
+ module ResolverBinding
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def dependency(*deps)
7
+ deps.each { |dep| _define_dependency_reader(dep) }
8
+ end
9
+
10
+ def _define_dependency_reader(bean, method = bean)
11
+ if bean.is_a?(Hash)
12
+ return bean.each { |k,v| _define_dependency_reader(k, v) }
13
+ end
14
+
15
+ define_method(method) do
16
+ resolver.resolve(bean)
17
+ end
18
+ end
19
+ end
20
+
21
+ def resolver
22
+ ::Rails.application.config.shirinji.resolver
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module ShirinjiRails
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -1,4 +1,5 @@
1
1
  module ShirinjiRails
2
2
  end
3
3
 
4
- require_relative 'shirinji-rails/railtie'
4
+ require_relative 'shirinji-rails/railtie'
5
+ require_relative 'shirinji-rails/resolver_binding'
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'railties', '>= 5.0.0'
24
24
  spec.add_dependency 'shirinji', '0.0.3'
25
25
 
26
- spec.add_development_dependency 'bundler', '~> 1.16'
26
+ spec.add_development_dependency 'bundler', '~> 2.0'
27
27
  spec.add_development_dependency 'rake', '~> 10.0'
28
28
  spec.add_development_dependency 'rspec', '~> 3.0'
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shirinji-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Dutey
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-11 00:00:00.000000000 Z
11
+ date: 2019-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +102,7 @@ files:
102
102
  - bin/setup
103
103
  - lib/shirinji-rails.rb
104
104
  - lib/shirinji-rails/railtie.rb
105
+ - lib/shirinji-rails/resolver_binding.rb
105
106
  - lib/shirinji-rails/version.rb
106
107
  - shirinji-rails.gemspec
107
108
  homepage: https://github.com/fdutey/shirinji-rails