routing_data 0.2.0 → 0.2.1

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 (90) hide show
  1. data/README.md +30 -15
  2. data/dummy/Gemfile +38 -0
  3. data/dummy/README.rdoc +261 -0
  4. data/dummy/Rakefile +7 -0
  5. data/dummy/app/assets/images/rails.png +0 -0
  6. data/dummy/app/assets/javascripts/application.js +14 -0
  7. data/dummy/app/assets/javascripts/blogs.js.coffee +3 -0
  8. data/dummy/app/assets/javascripts/categories.js.coffee +3 -0
  9. data/dummy/app/assets/javascripts/home.js.coffee +3 -0
  10. data/dummy/app/assets/javascripts/posts.js.coffee +3 -0
  11. data/dummy/app/assets/javascripts/users.js.coffee +3 -0
  12. data/dummy/app/assets/stylesheets/application.css +13 -0
  13. data/dummy/app/assets/stylesheets/blogs.css.scss +3 -0
  14. data/dummy/app/assets/stylesheets/categories.css.scss +3 -0
  15. data/dummy/app/assets/stylesheets/home.css.scss +3 -0
  16. data/dummy/app/assets/stylesheets/posts.css.scss +3 -0
  17. data/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
  18. data/dummy/app/assets/stylesheets/users.css.scss +3 -0
  19. data/dummy/app/controllers/application_controller.rb +3 -0
  20. data/dummy/app/controllers/blogs_controller.rb +83 -0
  21. data/dummy/app/controllers/categories_controller.rb +83 -0
  22. data/dummy/app/controllers/home_controller.rb +5 -0
  23. data/dummy/app/controllers/posts_controller.rb +86 -0
  24. data/dummy/app/controllers/users_controller.rb +83 -0
  25. data/dummy/app/helpers/application_helper.rb +2 -0
  26. data/dummy/app/helpers/blogs_helper.rb +2 -0
  27. data/dummy/app/helpers/categories_helper.rb +2 -0
  28. data/dummy/app/helpers/home_helper.rb +2 -0
  29. data/dummy/app/helpers/posts_helper.rb +2 -0
  30. data/dummy/app/helpers/users_helper.rb +2 -0
  31. data/dummy/app/models/blog.rb +6 -0
  32. data/dummy/app/models/category.rb +5 -0
  33. data/dummy/app/models/post.rb +11 -0
  34. data/dummy/app/models/user.rb +7 -0
  35. data/dummy/app/views/blogs/_form.html.erb +33 -0
  36. data/dummy/app/views/blogs/edit.html.erb +6 -0
  37. data/dummy/app/views/blogs/index.html.erb +29 -0
  38. data/dummy/app/views/blogs/new.html.erb +5 -0
  39. data/dummy/app/views/blogs/show.html.erb +25 -0
  40. data/dummy/app/views/categories/_form.html.erb +25 -0
  41. data/dummy/app/views/categories/edit.html.erb +6 -0
  42. data/dummy/app/views/categories/index.html.erb +25 -0
  43. data/dummy/app/views/categories/new.html.erb +5 -0
  44. data/dummy/app/views/categories/show.html.erb +15 -0
  45. data/dummy/app/views/home/index.html.erb +29 -0
  46. data/dummy/app/views/layouts/application.html.erb +15 -0
  47. data/dummy/app/views/posts/_form.html.erb +37 -0
  48. data/dummy/app/views/posts/edit.html.erb +6 -0
  49. data/dummy/app/views/posts/index.html.erb +29 -0
  50. data/dummy/app/views/posts/new.html.erb +5 -0
  51. data/dummy/app/views/posts/show.html.erb +25 -0
  52. data/dummy/app/views/users/_form.html.erb +25 -0
  53. data/dummy/app/views/users/edit.html.erb +6 -0
  54. data/dummy/app/views/users/index.html.erb +25 -0
  55. data/dummy/app/views/users/new.html.erb +5 -0
  56. data/dummy/app/views/users/show.html.erb +15 -0
  57. data/dummy/config/application.rb +68 -0
  58. data/dummy/config/boot.rb +6 -0
  59. data/dummy/config/database.yml +25 -0
  60. data/dummy/config/environment.rb +5 -0
  61. data/dummy/config/environments/development.rb +39 -0
  62. data/dummy/config/environments/production.rb +67 -0
  63. data/dummy/config/environments/test.rb +37 -0
  64. data/dummy/config/initializers/backtrace_silencers.rb +7 -0
  65. data/dummy/config/initializers/inflections.rb +15 -0
  66. data/dummy/config/initializers/mime_types.rb +5 -0
  67. data/dummy/config/initializers/secret_token.rb +7 -0
  68. data/dummy/config/initializers/session_store.rb +8 -0
  69. data/dummy/config/initializers/wrap_parameters.rb +14 -0
  70. data/dummy/config/locales/en.yml +5 -0
  71. data/dummy/config/routes.rb +10 -0
  72. data/dummy/config.ru +4 -0
  73. data/dummy/db/development.sqlite3 +0 -0
  74. data/dummy/db/migrate/20121118170847_create_users.rb +11 -0
  75. data/dummy/db/migrate/20121118170945_create_posts.rb +13 -0
  76. data/dummy/db/migrate/20121118171015_create_categories.rb +10 -0
  77. data/dummy/db/migrate/20121118171532_create_blogs.rb +12 -0
  78. data/dummy/db/schema.rb +50 -0
  79. data/dummy/db/seeds.rb +7 -0
  80. data/dummy/public/404.html +26 -0
  81. data/dummy/public/422.html +26 -0
  82. data/dummy/public/500.html +25 -0
  83. data/dummy/public/favicon.ico +0 -0
  84. data/dummy/public/robots.txt +5 -0
  85. data/dummy/script/rails +6 -0
  86. data/lib/routing_data/lib/assets/javascripts/routing_data.js +13 -7
  87. data/lib/routing_data/version.rb +1 -1
  88. data/lib/routing_data/view_helpers.rb +8 -8
  89. data/lib/routing_data.rb +22 -34
  90. metadata +85 -1
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -2,18 +2,24 @@
2
2
  RoutingData = typeof(RoutingData) == 'undefined' ? {} : RoutingData;
3
3
  RoutingData.helpers = {};
4
4
 
5
- for(var route in RoutingData.routes) {
6
- var routeData = RoutingData.routes[route];
7
- RoutingData.helpers[route + '_path'] = createURLHelper(routeData);
5
+ RoutingData.globalizeHelpers = function() {
6
+ for(helperName in RoutingData.helpers) {
7
+ window[helperName] = RoutingData.helpers[helperName];
8
+ };
9
+ };
10
+
11
+ for(var helperName in RoutingData.helpersData) {
12
+ var helperData = RoutingData.helpersData[helperName];
13
+ RoutingData.helpers[helperName + '_path'] = createHelper(helperData);
8
14
  };
9
15
 
10
- function createURLHelper(routeData) {
16
+ function createHelper(helperData) {
11
17
  return function() {
12
18
  var args = typeof(arguments[0]) === 'object' ? arguments[0] : {}
13
- var path = routeData.path;
19
+ var path = helperData.path;
14
20
 
15
- for(var i in routeData.parts) {
16
- var part = routeData.parts[i];
21
+ for(var i in helperData.parts) {
22
+ var part = helperData.parts[i];
17
23
  var replacement = '';
18
24
 
19
25
  if(path.indexOf('/:' + part) !== -1) {
@@ -1,3 +1,3 @@
1
1
  module RoutingData
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -1,13 +1,13 @@
1
1
  module RoutingData
2
2
  module ViewHelpers
3
- def include_routing_data
4
- raw(<<-JAVASCRIPT
5
- <script>
6
- RoutingData = {};
7
- RoutingData.routes = #{RoutingData.routes_json_data};
8
- </script>
9
- JAVASCRIPT
10
- )
3
+ def include_url_helpers_data
4
+ content_tag :script do
5
+ raw <<-JAVASCRIPT
6
+ RoutingData = {};
7
+ RoutingData.helpersData = #{RoutingData.url_helpers_data(as_json: true)};
8
+ JAVASCRIPT
9
+ end
11
10
  end
11
+
12
12
  end
13
13
  end
data/lib/routing_data.rb CHANGED
@@ -4,23 +4,13 @@ require 'routing_data/view_helpers'
4
4
 
5
5
  module RoutingData
6
6
  # Returns Routes objects
7
- def self.all_routes
8
- unless @all_routes
9
- Rails.application.reload_routes!
10
- @all_routes = Rails.application.routes.routes
11
- end
12
-
13
- @all_routes
7
+ def self.routes
8
+ @routes ||= Rails.application.routes.routes
14
9
  end
15
10
 
16
- # Returns url helpers with pathes
11
+ # Returns url helpers module through which you can access url helpers in any part of your rails app.
17
12
  def self.url_helpers
18
- unless @url_helpers
19
- Rails.application.reload_routes!
20
- url_helpers_module = Rails.application.routes.url_helpers
21
- end
22
-
23
- @url_helpers ||= url_helpers_module
13
+ @url_helpers ||= Rails.application.routes.url_helpers
24
14
  end
25
15
 
26
16
  # Returns controllers -> actions map
@@ -36,7 +26,7 @@ module RoutingData
36
26
  unless @controllers_actions_map
37
27
  @controllers_actions_map = {}
38
28
 
39
- all_routes.each do |route|
29
+ routes.each do |route|
40
30
  controller = route.defaults[:controller]
41
31
 
42
32
  if controller
@@ -58,17 +48,23 @@ module RoutingData
58
48
  controllers_actions_map[controller] || []
59
49
  end
60
50
 
51
+ # Returns list of controllers
61
52
  def self.controllers
62
53
  @controllers ||= controllers_actions_map.keys
63
54
  end
64
55
 
65
- def self.routes_data(opts = {})
66
- unless @routes_data
67
- @routes_data = {}
56
+ # Returns url helpers data hash.
57
+ #
58
+ # url_helpers_data - returns full url helpers data.
59
+ # url_helpers_data(with_name_in: ['user', 'post', 'forum']) - returns data for url helpers with specific names.
60
+ # url_helpers_data(for_controllers: ['posts', 'users']) - returns url helpers data for PostsController & UsersController
61
+ def self.url_helpers_data(opts = {})
62
+ unless @url_helpers_data
63
+ @url_helpers_data = {}
68
64
 
69
- all_routes.to_a.each do |route|
65
+ routes.to_a.each do |route|
70
66
  if route.name
71
- @routes_data[route.name] = {
67
+ @url_helpers_data[route.name] = {
72
68
  name: route.name,
73
69
  path: route.path.spec.to_s,
74
70
  controller: route.defaults[:controller],
@@ -79,23 +75,15 @@ module RoutingData
79
75
  end
80
76
  end
81
77
 
82
- if opts[:for_name]
83
- routes_data = @routes_data.select { |route| route[:name] == opts[:for_name] }
84
- elsif opts[:for_name_in]
85
- routes_data = @routes_data.select { |route| route[:for_name_in].include? route[:name] }
86
- elsif opts[:for_controller]
87
- routes_data = @routes_data.select { |route| route[:controller] == opts[:for_controller] }
78
+ if opts[:with_name_in]
79
+ url_helpers_data = @url_helpers_data.values_at(*opts[:with_name_in])
88
80
  elsif opts[:for_controllers]
89
- routes_data = @routes_data.select { |route| opts[:for_controllers].include? route[:controller] }
81
+ url_helpers_data = @url_helpers_data.select { |name, data| opts[:for_controllers].include? data[:controller] }
90
82
  else
91
- routes_data = @routes_data
83
+ url_helpers_data = @url_helpers_data
92
84
  end
93
85
 
94
- routes_data
95
- end
96
-
97
- def self.routes_json_data(opts = {})
98
- @routes_json_data ||= routes_data(opts).to_json
86
+ opts[:as_json] ? url_helpers_data.to_json : url_helpers_data
99
87
  end
100
88
 
101
- end
89
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: routing_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -40,6 +40,90 @@ files:
40
40
  - LICENSE.txt
41
41
  - README.md
42
42
  - Rakefile
43
+ - dummy/Gemfile
44
+ - dummy/README.rdoc
45
+ - dummy/Rakefile
46
+ - dummy/app/assets/images/rails.png
47
+ - dummy/app/assets/javascripts/application.js
48
+ - dummy/app/assets/javascripts/blogs.js.coffee
49
+ - dummy/app/assets/javascripts/categories.js.coffee
50
+ - dummy/app/assets/javascripts/home.js.coffee
51
+ - dummy/app/assets/javascripts/posts.js.coffee
52
+ - dummy/app/assets/javascripts/users.js.coffee
53
+ - dummy/app/assets/stylesheets/application.css
54
+ - dummy/app/assets/stylesheets/blogs.css.scss
55
+ - dummy/app/assets/stylesheets/categories.css.scss
56
+ - dummy/app/assets/stylesheets/home.css.scss
57
+ - dummy/app/assets/stylesheets/posts.css.scss
58
+ - dummy/app/assets/stylesheets/scaffolds.css.scss
59
+ - dummy/app/assets/stylesheets/users.css.scss
60
+ - dummy/app/controllers/application_controller.rb
61
+ - dummy/app/controllers/blogs_controller.rb
62
+ - dummy/app/controllers/categories_controller.rb
63
+ - dummy/app/controllers/home_controller.rb
64
+ - dummy/app/controllers/posts_controller.rb
65
+ - dummy/app/controllers/users_controller.rb
66
+ - dummy/app/helpers/application_helper.rb
67
+ - dummy/app/helpers/blogs_helper.rb
68
+ - dummy/app/helpers/categories_helper.rb
69
+ - dummy/app/helpers/home_helper.rb
70
+ - dummy/app/helpers/posts_helper.rb
71
+ - dummy/app/helpers/users_helper.rb
72
+ - dummy/app/models/blog.rb
73
+ - dummy/app/models/category.rb
74
+ - dummy/app/models/post.rb
75
+ - dummy/app/models/user.rb
76
+ - dummy/app/views/blogs/_form.html.erb
77
+ - dummy/app/views/blogs/edit.html.erb
78
+ - dummy/app/views/blogs/index.html.erb
79
+ - dummy/app/views/blogs/new.html.erb
80
+ - dummy/app/views/blogs/show.html.erb
81
+ - dummy/app/views/categories/_form.html.erb
82
+ - dummy/app/views/categories/edit.html.erb
83
+ - dummy/app/views/categories/index.html.erb
84
+ - dummy/app/views/categories/new.html.erb
85
+ - dummy/app/views/categories/show.html.erb
86
+ - dummy/app/views/home/index.html.erb
87
+ - dummy/app/views/layouts/application.html.erb
88
+ - dummy/app/views/posts/_form.html.erb
89
+ - dummy/app/views/posts/edit.html.erb
90
+ - dummy/app/views/posts/index.html.erb
91
+ - dummy/app/views/posts/new.html.erb
92
+ - dummy/app/views/posts/show.html.erb
93
+ - dummy/app/views/users/_form.html.erb
94
+ - dummy/app/views/users/edit.html.erb
95
+ - dummy/app/views/users/index.html.erb
96
+ - dummy/app/views/users/new.html.erb
97
+ - dummy/app/views/users/show.html.erb
98
+ - dummy/config.ru
99
+ - dummy/config/application.rb
100
+ - dummy/config/boot.rb
101
+ - dummy/config/database.yml
102
+ - dummy/config/environment.rb
103
+ - dummy/config/environments/development.rb
104
+ - dummy/config/environments/production.rb
105
+ - dummy/config/environments/test.rb
106
+ - dummy/config/initializers/backtrace_silencers.rb
107
+ - dummy/config/initializers/inflections.rb
108
+ - dummy/config/initializers/mime_types.rb
109
+ - dummy/config/initializers/secret_token.rb
110
+ - dummy/config/initializers/session_store.rb
111
+ - dummy/config/initializers/wrap_parameters.rb
112
+ - dummy/config/locales/en.yml
113
+ - dummy/config/routes.rb
114
+ - dummy/db/development.sqlite3
115
+ - dummy/db/migrate/20121118170847_create_users.rb
116
+ - dummy/db/migrate/20121118170945_create_posts.rb
117
+ - dummy/db/migrate/20121118171015_create_categories.rb
118
+ - dummy/db/migrate/20121118171532_create_blogs.rb
119
+ - dummy/db/schema.rb
120
+ - dummy/db/seeds.rb
121
+ - dummy/public/404.html
122
+ - dummy/public/422.html
123
+ - dummy/public/500.html
124
+ - dummy/public/favicon.ico
125
+ - dummy/public/robots.txt
126
+ - dummy/script/rails
43
127
  - lib/routing_data.rb
44
128
  - lib/routing_data/engine.rb
45
129
  - lib/routing_data/lib/assets/javascripts/routing_data.js