excursion 0.0.12 → 0.0.13

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
  SHA1:
3
- metadata.gz: ee64e15f8d7724efbe4740ea2df2536c720a2865
4
- data.tar.gz: 45927cde8ec41918fca4bcc1144075d0e40d0c4f
3
+ metadata.gz: 31ae3beacdf213dacf60c6fe3030b3e7a15edc8e
4
+ data.tar.gz: 06beac4115e7521cc821013cbdb17b8e11f55ff3
5
5
  SHA512:
6
- metadata.gz: 039ba40d1e6aa5f66f262a751f64b65a04f03eed7a0f3237d020850e942790826644d2d6d2453b20aa839e4c85a210e35f4016497b5c24ea7ce30052b6166955
7
- data.tar.gz: 0d2ba1e113445f529f6c86e1a78b014eed8554987b524cb4142e08de997968caf20f13d4fb2401f59d2af978fe6b6045e5f6dc39874a2ac1ef83702a80bcc325
6
+ metadata.gz: 6b4f9dc9c685b6d9c0ebff8565a057342c7ba05c154ddd59567c5d584c6801fb297d297f151c7dc6064163c7e8bb0f183afe652008f26b6b3c6fcc8d073be384
7
+ data.tar.gz: 025ef5e40dc828570a9b1094bdd1ceca843ebf879a5b10aeec3f61d9477ab70c1189ebb0ee7f6c3d376bf4d53b5ca6f1b1666891a96365df64e97e977bd467e1
@@ -1,7 +1,7 @@
1
1
  module Excursion
2
2
  module Pool
3
3
  class Application
4
- attr_reader :name, :default_url_options
4
+ attr_accessor :name, :default_url_options
5
5
 
6
6
  def self.from_cache(cached)
7
7
  new(cached[:name], cached) unless cached.nil?
@@ -11,6 +11,11 @@ module Excursion
11
11
  routes[key.to_sym]
12
12
  end
13
13
 
14
+ def add_route(key, route)
15
+ route = journey_route(key, Rails.application, journey_path(route), {required_defaults: []}) unless route.is_a?(journey_route_class)
16
+ routes.add(key.to_sym, route)
17
+ end
18
+
14
19
  def routes
15
20
  @routes ||= ActionDispatch::Routing::RouteSet::NamedRouteCollection.new
16
21
  end
@@ -20,7 +25,8 @@ module Excursion
20
25
  raise ArgumentError, 'routes must be a Hash or NamedRouteCollection' unless routes.is_a?(Hash)
21
26
  @routes = ActionDispatch::Routing::RouteSet::NamedRouteCollection.new
22
27
  routes.each do |name, route|
23
- @routes.add(name, route)
28
+ route = journey_route(name, Rails.application, journey_path(route), {required_defaults: []}) unless route.is_a?(journey_route_class)
29
+ @routes.add(name.to_sym, route)
24
30
  end
25
31
  end
26
32
 
@@ -54,7 +60,7 @@ module Excursion
54
60
  def routes_from_cache(routes)
55
61
  collection = ActionDispatch::Routing::RouteSet::NamedRouteCollection.new
56
62
  routes.each do |name, path|
57
- collection.add(name, journey_route(name, Rails.application, journey_path(path), {required_defaults: []}))
63
+ collection.add(name.to_sym, journey_route(name, Rails.application, journey_path(path), {required_defaults: []}))
58
64
  end
59
65
  collection
60
66
  end
@@ -0,0 +1,30 @@
1
+ module Excursion
2
+ module Pool
3
+ class DSL
4
+
5
+ def self.block_eval(app=nil, &block)
6
+ @application = app.is_a?(Excursion::Pool::Application) ? app : Excursion::Pool::Application.new('', {})
7
+ instance_eval &block if block_given?
8
+
9
+ raise "You must assign a name to the application" if @application.name.blank?
10
+ @application
11
+ end
12
+
13
+ def self.name(name_str)
14
+ @application.name = name_str
15
+ end
16
+
17
+ def self.default_url_options(url_options)
18
+ @application.default_url_options = url_options
19
+ end
20
+
21
+ def self.routes(route_hash)
22
+ @application.routes = route_hash
23
+ end
24
+
25
+ def self.route(name, path)
26
+ @application.add_route(name.to_sym, path)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,4 +1,5 @@
1
1
  require 'excursion/pool/application'
2
+ require 'excursion/pool/dsl'
2
3
  require 'excursion/exceptions/pool'
3
4
  require 'excursion/exceptions/datastores'
4
5
 
@@ -7,7 +8,9 @@ module Excursion
7
8
  @@applications = {}
8
9
 
9
10
  def self.all_applications
10
- datastore.all_apps
11
+ datastore.all_apps.each do |app|
12
+ @@applications[app.name] = app
13
+ end
11
14
  end
12
15
 
13
16
  def self.application(name)
@@ -16,14 +19,39 @@ module Excursion
16
19
  @@applications[name] = datastore.app(name)
17
20
  end
18
21
 
19
- def self.register_application(app)
20
- raise ArgumentError, "app must be an instance of Rails::Application" unless app.is_a?(Rails::Application)
22
+ def self.register_application(app=nil, opts={}, &block)
23
+ raise ArgumentError, "app must be an instance of Rails::Application" unless app.is_a?(Rails::Application) || block_given?
24
+ opts = {cache: true}.merge(opts)
21
25
 
22
- name = app.class.name.underscore.split("/").first
23
- config = {default_url_options: Excursion.configuration.default_url_options}
26
+ if app.is_a?(Rails::Application)
27
+ name = app.class.name.underscore.split("/").first
28
+ config = {default_url_options: Excursion.configuration.default_url_options}
29
+ routes = app.routes.named_routes
30
+ @@applications[name] = Application.new(name, config, routes)
31
+ end
32
+
33
+ if block_given?
34
+ if @@applications.has_key?(name)
35
+ DSL.block_eval(@@applications[name], &block)
36
+ else
37
+ block_app = DSL.block_eval(&block)
38
+ name = block_app.name
39
+ @@applications[name] = block_app
40
+ end
41
+ end
24
42
 
25
- @@applications[name] = Application.new(name, config, app.routes.named_routes)
26
- datastore.set(name, @@applications[name].to_cache)
43
+ datastore.set(name, @@applications[name].to_cache) if opts[:cache]
44
+ @@applications[name]
45
+ end
46
+
47
+ def self.register_hash(app_hash)
48
+ raise ArgumentError, "you must provide at minimum a hash with a :name key" unless app_hash.is_a?(Hash) && app_hash.has_key?(:name)
49
+
50
+ app_hash = {default_url_options: Excursion.configuration.default_url_options, routes: {}, registered_at: Time.now}.merge(app_hash)
51
+ name = app_hash[:name]
52
+
53
+ datastore.set(name, app_hash)
54
+ @@applications[name] = datastore.app(name)
27
55
  end
28
56
 
29
57
  def self.remove_application(app)
@@ -1,3 +1,3 @@
1
1
  module Excursion
2
- VERSION = '0.0.12'
2
+ VERSION = '0.0.13'
3
3
  end
@@ -53,7 +53,7 @@ module Dummy
53
53
  # This will create an empty whitelist of attributes available for mass-assignment for all models
54
54
  # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
55
55
  # parameters by using an attr_accessible or attr_protected declaration.
56
- config.active_record.whitelist_attributes = true
56
+ #config.active_record.whitelist_attributes = true
57
57
 
58
58
  # Enable the asset pipeline
59
59
  config.assets.enabled = true
@@ -21,11 +21,11 @@ Dummy::Application.configure do
21
21
  config.action_dispatch.best_standards_support = :builtin
22
22
 
23
23
  # Raise exception on mass assignment protection for Active Record models
24
- config.active_record.mass_assignment_sanitizer = :strict
24
+ #config.active_record.mass_assignment_sanitizer = :strict
25
25
 
26
26
  # Log the query plan for queries taking more than this (works
27
27
  # with SQLite, MySQL, and PostgreSQL)
28
- config.active_record.auto_explain_threshold_in_seconds = 0.5
28
+ #config.active_record.auto_explain_threshold_in_seconds = 0.5
29
29
 
30
30
  # Do not compress assets
31
31
  config.assets.compress = false
@@ -28,7 +28,7 @@ Dummy::Application.configure do
28
28
  config.action_mailer.delivery_method = :test
29
29
 
30
30
  # Raise exception on mass assignment protection for Active Record models
31
- config.active_record.mass_assignment_sanitizer = :strict
31
+ #config.active_record.mass_assignment_sanitizer = :strict
32
32
 
33
33
  # Print deprecation notices to the stderr
34
34
  config.active_support.deprecation = :stderr