flowmor_router 0.2.2 → 0.2.3

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/flowmor_router/acts_as_routable.rb +35 -18
  4. data/lib/flowmor_router/version.rb +1 -1
  5. data/test/dummy/log/test.log +4086 -0
  6. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-gEJOwfITrtpEVkgIw1L_xmLNBm41bpwh2P5_rp-woc.cache +2 -0
  7. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/061nPawbo6OmA521kVzzv5o6bVu_Y8H5ho6J7RR1eLk.cache +1 -0
  8. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1CZ1RV5wrl0_8pWkVPr4TmCdhFwdlsfaSUud-poHkvM.cache +2 -0
  9. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1VBNy1IsJ3Z_D0PTYedCvyj4Elo4jxPiIi9Q1aWRPV8.cache +2 -0
  10. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5J2BFIwNdTkQn8oGcY7uXVN-KFDQR8at6QdsXk3u3rI.cache +1 -0
  11. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5bcbRA8k1pi0Gbb50vS-omOrCxZcGN4u-0nheKBUVvc.cache +2 -0
  12. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BhfC-Z8hUI2g3RiyEjUfcbsMQs6J8pVWYuzB-3DO4Ps.cache +1 -0
  13. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CuEgJMSoAewC7X7Zq8Cm-22qPr3r4f44rrf0X4UekgQ.cache +0 -0
  14. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Cvxc2J0WW52iPY0QfbvNQk-7SOvKifE5dGM6aHOkO1M.cache +2 -0
  15. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DA80XDAQYQRVyJh6rGZEl7zlAsmaeUQgoKvJ1pF52fA.cache +0 -0
  16. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DYbtGLwz2zopQ1sFYKhdJsEPsXGrCVq4DB4-h1I-Gvw.cache +2 -0
  17. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FXfvlWWutm3zYOF2F9rCKcZbbS9xduR36vcncHlh-0M.cache +0 -0
  18. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GgujIGBFU57YccJtEUa2SnYWgiMy_bVEYZf3vFEwqHw.cache +0 -0
  19. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HC5njS1-RcdLk_HaYU4gV7vf7mS_LCh5jGt4eQghoWU.cache +2 -0
  20. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HSICbEKrxuqsJ8mHc5HdYbW63KPpB5fcalG-ncB9nfA.cache +2 -0
  21. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/K74Pq-4b1QZYqH158k2vmKXB0GRebz4JEy1wYQ7InUs.cache +1 -0
  22. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/K7xtMwoRibU0d8Xy7xB3UlyKGK9UKYCfyD0k2vnrRNA.cache +1 -0
  23. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KPTFQ23wNqiY5kyGDM8oSFGfW4r5iF9siPE67sjeLZw.cache +1 -0
  24. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Lvda6a5KpE-3PFkMDPJojW_Ta2AMXy5L9wOFwvrH4wQ.cache +1 -0
  25. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/M_NLHRKl_6_pWy0NQ6jYvLeCincnPgdh9i7IPjzYyII.cache +0 -0
  26. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7JM-B0JDmmxLTq5MC7Icg0yWXTmSqNDXVm6tX7XtQg.cache +1 -0
  27. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bK18wX-fyQGTeWcrZjSk3OvyNmdJ3j9S5es8XJnVjwU.cache +0 -0
  28. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cDrUZBpysDFOv_yAgZtV-hFW6yfny3Cm34n-6gjtMdc.cache +0 -0
  29. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dA9Dte78y4FMBvx3GvtNajeV6J_ROiHnHGDBs7jORNA.cache +0 -0
  30. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dj5ct1LV1VgTI3byhW6dlfYS5pRZMCKePo9Izu92SNY.cache +2 -0
  31. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/h14KwG-Dn7vk4kuGyh8j7vqZBBnYp3kQEJRydovyrFk.cache +1 -0
  32. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jY5qibYZx-JfvgKFMQ718JacjcxANGHrJsTsXQVYj1Q.cache +1 -0
  33. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lIaofasM7f3m5AXVk0kcxEOFnC-3amsr4Xo0HlboaHI.cache +2 -0
  34. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mJZ6zLA8w_-3K12hQEGUa5sLQ27FmACK_aFxgt-EsdQ.cache +0 -0
  35. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p-bXAF8X0ORyZWU5uCO5R7F71cebc2I9L9dDz0Zcjec.cache +2 -0
  36. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pDY98sUMpZNsoftp1YtaO0Al1zODRyB1Vvt5960LRC8.cache +1 -0
  37. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xW7Uyqk2ae33PhlMnd7cJHCWKEcgBwMpNQuEgvBDGp8.cache +2 -0
  38. metadata +66 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76110e92def8d09bdb91b8aa30e34b9b0b13aa66
4
- data.tar.gz: 03a92958769550c15c22ca3d975f2e12337b6e7c
3
+ metadata.gz: 8f2354bf0ab26b01a8f2d1546ae024da7cfa33cc
4
+ data.tar.gz: 1dd80804e5c591fab85ec55ef55b0c59d423cf04
5
5
  SHA512:
6
- metadata.gz: 98e1b24079da4737f81a6a96c86066d7d4a36f479f387a46de9106c4da93a20bfc7ae4b003b42eb9c85f367a22d4b3e5ea8bd00be7d030093e34741b2d282d90
7
- data.tar.gz: e06a82ce1ba8876f11d9f406ca586515dc44c7a432f986c2ce6fa8a4638ebd8c7c955f44e21a85bfd570309e38faf259aadd0eae0f78d2f800282d11fae23720
6
+ metadata.gz: a4122bdc8691dd32566a1c78056203966b1a11e94affae85b1e174d3cec2cdd818c5a0a9397f5b8eb39b823b8df13c39fc4349d7026824da1e7774fc4d2b4911
7
+ data.tar.gz: 85053464da6bdc9e2043bffe62d4c54e18590a528717f1bc1987e468d7bf246bb7b12ea397c567542dd7c1e08a61603399dedc393819486cdd69c4e1abf3c6ff
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # FlowmorRouter
1
+ # Flowmor Router
2
2
 
3
- FlowmorRouter is a Rails::Engine that enables ActiveRecord Models to route themselves in Rails 4.x applications. For example:
3
+ Flowmor Router is a Rails::Engine that enables ActiveRecord Models to route themselves in Rails 4.x applications. For example:
4
4
 
5
5
  ```ruby
6
6
  class Post < ActiveRecord::Base
@@ -3,7 +3,6 @@ module FlowmorRouter
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
-
7
6
  after_save :reload_routes
8
7
 
9
8
  def reload_routes
@@ -13,22 +12,21 @@ module FlowmorRouter
13
12
 
14
13
  module ClassMethods
15
14
 
16
- def acts_as_routable(actor = nil, options = {})
17
- # juggle what was passed in to correct variables
18
- actor, options = nil, actor if actor.is_a?(Hash) && options == {}
19
- if actor.nil?
20
- singular_name = name.underscore.downcase.split("/").last
21
- actor = singular_name.pluralize
22
- options[:controller_action] = options[:controller_action] || "#{singular_name}#show"
15
+ # Register and assign a distinctive name to the router_class
16
+ def initialize_router_class actor, options
17
+ FlowmorRouter::RouterClasses.register(actor, self, options).tap do |router_class|
18
+ class_attribute router_class.named_instance
19
+ self.send "#{router_class.named_instance}=", router_class
23
20
  end
24
-
25
- # Register and assign a distinctive name to the router_class
26
- router_class = FlowmorRouter::RouterClasses.register(actor, self, options)
27
- class_attribute router_class.named_instance
28
- self.send "#{router_class.named_instance}=", router_class
21
+ end
29
22
 
30
- scope router_class.scope_name, options[:scope] || lambda {}
23
+ # Set up the scope that can be called to get which records should be routed
24
+ def set_routable_scope(router_class, routable_scope)
25
+ scope router_class.scope_name, routable_scope || -> {}
26
+ end
31
27
 
28
+ # Set up reflective methods back to the router_class
29
+ def define_routable_methods router_class
32
30
  define_method router_class.route_name_method_name do
33
31
  router_class.route_name self
34
32
  end
@@ -40,16 +38,35 @@ module FlowmorRouter
40
38
  define_method router_class.path_method_name do
41
39
  router_class.path self
42
40
  end
43
-
41
+ end
42
+
43
+ # Cause the routes to be redrawn unless we're eager loading or testing
44
+ # In the case of eager loading, the routes will finally be drawn only after
45
+ # all the model files have been loaded.
46
+ def prepare_routes
47
+ return if Rails.configuration.eager_load || Rails.env == "test"
44
48
  begin
45
- unless Rails.configuration.eager_load || Rails.env == "test"
46
- Rails.application.routes_reloader.reload!
47
- end
49
+ Rails.application.routes_reloader.reload!
48
50
  rescue SystemStackError
49
51
  # NOP -- Supressing Stack Level Too deep error
50
52
  # caused by models being loaded lazily during development mode.
51
53
  end
52
54
  end
55
+
56
+ def acts_as_routable(actor = nil, options = {})
57
+ # juggle what was passed in to correct variables
58
+ actor, options = nil, actor if actor.is_a?(Hash) && options == {}
59
+ if actor.nil?
60
+ singular_name = name.underscore.downcase.split("/").last
61
+ actor = singular_name.pluralize
62
+ options[:controller_action] = options[:controller_action] || "#{singular_name}#show"
63
+ end
64
+
65
+ router_class = initialize_router_class actor, options
66
+ set_routable_scope router_class, options[:scope]
67
+ define_routable_methods router_class
68
+ prepare_routes
69
+ end
53
70
  end
54
71
  end
55
72
  end
@@ -1,3 +1,3 @@
1
1
  module FlowmorRouter
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end