routing_data 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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