activeadmin-nested-namespaces 0.1.0

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 (137) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +162 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +140 -0
  9. data/Rakefile +6 -0
  10. data/activeadmin-nested-namespaces.gemspec +30 -0
  11. data/bin/bundle +105 -0
  12. data/bin/console +14 -0
  13. data/bin/htmldiff +29 -0
  14. data/bin/ldiff +29 -0
  15. data/bin/nokogiri +29 -0
  16. data/bin/rackup +29 -0
  17. data/bin/rails +29 -0
  18. data/bin/rake +29 -0
  19. data/bin/rspec +29 -0
  20. data/bin/sass +29 -0
  21. data/bin/sass-convert +29 -0
  22. data/bin/scss +29 -0
  23. data/bin/setup +8 -0
  24. data/bin/sprockets +29 -0
  25. data/bin/thor +29 -0
  26. data/dummy_app/.gitignore +23 -0
  27. data/dummy_app/Gemfile +57 -0
  28. data/dummy_app/Gemfile.lock +260 -0
  29. data/dummy_app/README.md +24 -0
  30. data/dummy_app/Rakefile +8 -0
  31. data/dummy_app/app/admin/admin_users.rb +28 -0
  32. data/dummy_app/app/admin/dashboard.rb +13 -0
  33. data/dummy_app/app/admin/site1/dashboard.rb +13 -0
  34. data/dummy_app/app/admin/site1/posts.rb +3 -0
  35. data/dummy_app/app/admin/site2/dashboard.rb +12 -0
  36. data/dummy_app/app/admin/site3/demo/dashboard.rb +13 -0
  37. data/dummy_app/app/admin/site3/demo/posts.rb +15 -0
  38. data/dummy_app/app/assets/config/manifest.js +3 -0
  39. data/dummy_app/app/assets/images/.keep +0 -0
  40. data/dummy_app/app/assets/javascripts/active_admin.js.coffee +1 -0
  41. data/dummy_app/app/assets/javascripts/application.js +15 -0
  42. data/dummy_app/app/assets/javascripts/cable.js +13 -0
  43. data/dummy_app/app/assets/javascripts/channels/.keep +0 -0
  44. data/dummy_app/app/assets/stylesheets/active_admin.scss +17 -0
  45. data/dummy_app/app/assets/stylesheets/application.css +15 -0
  46. data/dummy_app/app/channels/application_cable/channel.rb +4 -0
  47. data/dummy_app/app/channels/application_cable/connection.rb +4 -0
  48. data/dummy_app/app/controllers/application_controller.rb +3 -0
  49. data/dummy_app/app/controllers/concerns/.keep +0 -0
  50. data/dummy_app/app/helpers/application_helper.rb +2 -0
  51. data/dummy_app/app/jobs/application_job.rb +2 -0
  52. data/dummy_app/app/mailers/application_mailer.rb +4 -0
  53. data/dummy_app/app/models/admin_user.rb +10 -0
  54. data/dummy_app/app/models/application_record.rb +3 -0
  55. data/dummy_app/app/models/concerns/.keep +0 -0
  56. data/dummy_app/app/models/post.rb +2 -0
  57. data/dummy_app/app/views/layouts/application.html.erb +14 -0
  58. data/dummy_app/app/views/layouts/mailer.html.erb +13 -0
  59. data/dummy_app/app/views/layouts/mailer.text.erb +1 -0
  60. data/dummy_app/bin/bundle +3 -0
  61. data/dummy_app/bin/byebug +29 -0
  62. data/dummy_app/bin/listen +29 -0
  63. data/dummy_app/bin/nokogiri +29 -0
  64. data/dummy_app/bin/puma +29 -0
  65. data/dummy_app/bin/pumactl +29 -0
  66. data/dummy_app/bin/rackup +29 -0
  67. data/dummy_app/bin/rails +4 -0
  68. data/dummy_app/bin/rake +4 -0
  69. data/dummy_app/bin/sass +29 -0
  70. data/dummy_app/bin/sass-convert +29 -0
  71. data/dummy_app/bin/scss +29 -0
  72. data/dummy_app/bin/setup +38 -0
  73. data/dummy_app/bin/spring +29 -0
  74. data/dummy_app/bin/sprockets +29 -0
  75. data/dummy_app/bin/thor +29 -0
  76. data/dummy_app/bin/tilt +29 -0
  77. data/dummy_app/bin/update +29 -0
  78. data/dummy_app/bin/yarn +11 -0
  79. data/dummy_app/config.ru +5 -0
  80. data/dummy_app/config/application.rb +19 -0
  81. data/dummy_app/config/boot.rb +3 -0
  82. data/dummy_app/config/cable.yml +10 -0
  83. data/dummy_app/config/database.yml +25 -0
  84. data/dummy_app/config/environment.rb +5 -0
  85. data/dummy_app/config/environments/development.rb +54 -0
  86. data/dummy_app/config/environments/production.rb +91 -0
  87. data/dummy_app/config/environments/test.rb +42 -0
  88. data/dummy_app/config/initializers/active_admin.rb +313 -0
  89. data/dummy_app/config/initializers/active_admin_nested_namespace.rb +5 -0
  90. data/dummy_app/config/initializers/application_controller_renderer.rb +6 -0
  91. data/dummy_app/config/initializers/assets.rb +14 -0
  92. data/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  93. data/dummy_app/config/initializers/cookies_serializer.rb +5 -0
  94. data/dummy_app/config/initializers/devise.rb +290 -0
  95. data/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
  96. data/dummy_app/config/initializers/inflections.rb +16 -0
  97. data/dummy_app/config/initializers/mime_types.rb +4 -0
  98. data/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  99. data/dummy_app/config/locales/devise.en.yml +64 -0
  100. data/dummy_app/config/locales/en.yml +33 -0
  101. data/dummy_app/config/puma.rb +56 -0
  102. data/dummy_app/config/routes.rb +20 -0
  103. data/dummy_app/config/secrets.yml +32 -0
  104. data/dummy_app/config/spring.rb +6 -0
  105. data/dummy_app/db/migrate/20180823051209_devise_create_admin_users.rb +44 -0
  106. data/dummy_app/db/migrate/20180823051213_create_active_admin_comments.rb +17 -0
  107. data/dummy_app/db/migrate/20180823051222_create_posts.rb +12 -0
  108. data/dummy_app/db/schema.rb +41 -0
  109. data/dummy_app/db/seeds.rb +8 -0
  110. data/dummy_app/lib/assets/.keep +0 -0
  111. data/dummy_app/lib/tasks/.keep +0 -0
  112. data/dummy_app/log/.keep +0 -0
  113. data/dummy_app/package.json +5 -0
  114. data/dummy_app/public/404.html +67 -0
  115. data/dummy_app/public/422.html +67 -0
  116. data/dummy_app/public/500.html +66 -0
  117. data/dummy_app/public/apple-touch-icon-precomposed.png +0 -0
  118. data/dummy_app/public/apple-touch-icon.png +0 -0
  119. data/dummy_app/public/favicon.ico +0 -0
  120. data/dummy_app/public/robots.txt +1 -0
  121. data/dummy_app/test/application_system_test_case.rb +5 -0
  122. data/dummy_app/test/controllers/.keep +0 -0
  123. data/dummy_app/test/fixtures/.keep +0 -0
  124. data/dummy_app/test/fixtures/admin_users.yml +11 -0
  125. data/dummy_app/test/fixtures/files/.keep +0 -0
  126. data/dummy_app/test/helpers/.keep +0 -0
  127. data/dummy_app/test/integration/.keep +0 -0
  128. data/dummy_app/test/mailers/.keep +0 -0
  129. data/dummy_app/test/models/.keep +0 -0
  130. data/dummy_app/test/models/admin_user_test.rb +7 -0
  131. data/dummy_app/test/system/.keep +0 -0
  132. data/dummy_app/test/test_helper.rb +9 -0
  133. data/dummy_app/tmp/.keep +0 -0
  134. data/dummy_app/vendor/.keep +0 -0
  135. data/lib/active_admin/nested_namespace.rb +270 -0
  136. data/lib/active_admin/nested_namespace/version.rb +5 -0
  137. metadata +236 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d62c7b0faddd0a79b3f85ef03abe7e392c2bd2b2
4
+ data.tar.gz: 73a3cabea12b16f59a9b4234339f726b035164a2
5
+ SHA512:
6
+ metadata.gz: 160f6d7298f8687b0f42663033018955c3e4dee1504a26326809b9587ef7cb527deed31b1cdd1d7ce96e87c3b64b47ae5ae271ada117392170e8ba530873622a
7
+ data.tar.gz: 5b2bdfb51d0103b0a6935ec2a163da9f138d00983b112042e7b4ecc5948245e795b22cec7bd8fa0ab4d4b13d2cfea8340e4a2ff7f7bc0087231d06ab4d6a633b
@@ -0,0 +1,18 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
13
+ # Intellij files
14
+ .idea
15
+
16
+ /dummy_app/log/**/*.log
17
+ /dummy_app/vendor/bundle/
18
+ /vendor/bundle/
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.3.7
7
+ before_install: gem install bundler -v 1.16.4
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in activeadmin-nested-namespaces.gemspec
6
+ gemspec
@@ -0,0 +1,162 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ activeadmin-nested-namespaces (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ actionpack (5.2.1)
10
+ actionview (= 5.2.1)
11
+ activesupport (= 5.2.1)
12
+ rack (~> 2.0)
13
+ rack-test (>= 0.6.3)
14
+ rails-dom-testing (~> 2.0)
15
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
16
+ actionview (5.2.1)
17
+ activesupport (= 5.2.1)
18
+ builder (~> 3.1)
19
+ erubi (~> 1.4)
20
+ rails-dom-testing (~> 2.0)
21
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
22
+ activeadmin (1.3.1)
23
+ arbre (>= 1.1.1)
24
+ coffee-rails
25
+ formtastic (~> 3.1)
26
+ formtastic_i18n
27
+ inherited_resources (>= 1.9.0)
28
+ jquery-rails (>= 4.2.0)
29
+ kaminari (>= 0.15)
30
+ railties (>= 4.2, < 5.3)
31
+ ransack (>= 1.8.7)
32
+ sass (~> 3.1)
33
+ sprockets (< 4.1)
34
+ activemodel (5.2.1)
35
+ activesupport (= 5.2.1)
36
+ activerecord (5.2.1)
37
+ activemodel (= 5.2.1)
38
+ activesupport (= 5.2.1)
39
+ arel (>= 9.0)
40
+ activesupport (5.2.1)
41
+ concurrent-ruby (~> 1.0, >= 1.0.2)
42
+ i18n (>= 0.7, < 2)
43
+ minitest (~> 5.1)
44
+ tzinfo (~> 1.1)
45
+ arbre (1.1.1)
46
+ activesupport (>= 3.0.0)
47
+ arel (9.0.0)
48
+ builder (3.2.3)
49
+ coffee-rails (4.2.2)
50
+ coffee-script (>= 2.2.0)
51
+ railties (>= 4.0.0)
52
+ coffee-script (2.4.1)
53
+ coffee-script-source
54
+ execjs
55
+ coffee-script-source (1.12.2)
56
+ concurrent-ruby (1.0.5)
57
+ crass (1.0.4)
58
+ diff-lcs (1.3)
59
+ erubi (1.7.1)
60
+ execjs (2.7.0)
61
+ ffi (1.9.25)
62
+ formtastic (3.1.5)
63
+ actionpack (>= 3.2.13)
64
+ formtastic_i18n (0.6.0)
65
+ has_scope (0.7.2)
66
+ actionpack (>= 4.1)
67
+ activesupport (>= 4.1)
68
+ i18n (1.1.0)
69
+ concurrent-ruby (~> 1.0)
70
+ inherited_resources (1.9.0)
71
+ actionpack (>= 4.2, < 5.3)
72
+ has_scope (~> 0.6)
73
+ railties (>= 4.2, < 5.3)
74
+ responders
75
+ jquery-rails (4.3.3)
76
+ rails-dom-testing (>= 1, < 3)
77
+ railties (>= 4.2.0)
78
+ thor (>= 0.14, < 2.0)
79
+ kaminari (1.1.1)
80
+ activesupport (>= 4.1.0)
81
+ kaminari-actionview (= 1.1.1)
82
+ kaminari-activerecord (= 1.1.1)
83
+ kaminari-core (= 1.1.1)
84
+ kaminari-actionview (1.1.1)
85
+ actionview
86
+ kaminari-core (= 1.1.1)
87
+ kaminari-activerecord (1.1.1)
88
+ activerecord
89
+ kaminari-core (= 1.1.1)
90
+ kaminari-core (1.1.1)
91
+ loofah (2.2.2)
92
+ crass (~> 1.0.2)
93
+ nokogiri (>= 1.5.9)
94
+ method_source (0.9.0)
95
+ mini_portile2 (2.3.0)
96
+ minitest (5.11.3)
97
+ nokogiri (1.8.4)
98
+ mini_portile2 (~> 2.3.0)
99
+ rack (2.0.5)
100
+ rack-test (1.1.0)
101
+ rack (>= 1.0, < 3)
102
+ rails-dom-testing (2.0.3)
103
+ activesupport (>= 4.2.0)
104
+ nokogiri (>= 1.6)
105
+ rails-html-sanitizer (1.0.4)
106
+ loofah (~> 2.2, >= 2.2.2)
107
+ railties (5.2.1)
108
+ actionpack (= 5.2.1)
109
+ activesupport (= 5.2.1)
110
+ method_source
111
+ rake (>= 0.8.7)
112
+ thor (>= 0.19.0, < 2.0)
113
+ rake (10.5.0)
114
+ ransack (2.0.1)
115
+ actionpack (>= 5.0)
116
+ activerecord (>= 5.0)
117
+ activesupport (>= 5.0)
118
+ i18n
119
+ rb-fsevent (0.10.3)
120
+ rb-inotify (0.9.10)
121
+ ffi (>= 0.5.0, < 2)
122
+ responders (2.4.0)
123
+ actionpack (>= 4.2.0, < 5.3)
124
+ railties (>= 4.2.0, < 5.3)
125
+ rspec (3.8.0)
126
+ rspec-core (~> 3.8.0)
127
+ rspec-expectations (~> 3.8.0)
128
+ rspec-mocks (~> 3.8.0)
129
+ rspec-core (3.8.0)
130
+ rspec-support (~> 3.8.0)
131
+ rspec-expectations (3.8.1)
132
+ diff-lcs (>= 1.2.0, < 2.0)
133
+ rspec-support (~> 3.8.0)
134
+ rspec-mocks (3.8.0)
135
+ diff-lcs (>= 1.2.0, < 2.0)
136
+ rspec-support (~> 3.8.0)
137
+ rspec-support (3.8.0)
138
+ sass (3.5.7)
139
+ sass-listen (~> 4.0.0)
140
+ sass-listen (4.0.0)
141
+ rb-fsevent (~> 0.9, >= 0.9.4)
142
+ rb-inotify (~> 0.9, >= 0.9.7)
143
+ sprockets (3.7.2)
144
+ concurrent-ruby (~> 1.0)
145
+ rack (> 1, < 3)
146
+ thor (0.20.0)
147
+ thread_safe (0.3.6)
148
+ tzinfo (1.2.5)
149
+ thread_safe (~> 0.1)
150
+
151
+ PLATFORMS
152
+ ruby
153
+
154
+ DEPENDENCIES
155
+ activeadmin (= 1.3.1)
156
+ activeadmin-nested-namespaces!
157
+ bundler (~> 1.16)
158
+ rake (~> 10.0)
159
+ rspec (~> 3.0)
160
+
161
+ BUNDLED WITH
162
+ 1.16.4
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 - Martin Chan (osiutino)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,140 @@
1
+ # ActiveAdmin Nested Namespace
2
+
3
+ This plugin allows you to register resources/pages with nested namespaces in ActiveAdmin.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'activeadmin-nested-namespaces'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+
18
+ Copy and paste these lines to `config/initializers/active_admin_nested_namespace.rb`
19
+
20
+ ```ruby
21
+ require 'active_admin/nested_namespace'
22
+
23
+ if defined?(ActiveAdmin::NestedNamespace)
24
+ ActiveAdmin::NestedNamespace.setup
25
+ end
26
+ ```
27
+
28
+
29
+ # Get Started
30
+
31
+ Register resources to 2 different namespaces:
32
+
33
+ ```ruby
34
+ # /app/admin/site1/foo/bar/posts.rb
35
+ ActiveAdmin.register Post, namespace: [:admin, :site1, :foo, :bar] do
36
+ ...
37
+ end
38
+ ```
39
+
40
+ ```ruby
41
+ # /app/admin/site2/demo/posts.rb
42
+ ActiveAdmin.register Post, namespace: [:admin, :site2, :demo] do
43
+ ...
44
+ end
45
+ ```
46
+
47
+ It will generate routes like:
48
+
49
+ ```
50
+ admin_site1_foo_bar_root GET /admin/site1/foo/bar(.:format) admin/site1/foo/bar/dashboard#index
51
+ admin_site2_demo_root GET /admin/site2/demo(.:format)
52
+ batch_action_admin_site1_foo_bar_posts POST /admin/site1/foo/bar/posts/batch_action(.:format) admin/site1/foo/bar/posts#batch_action
53
+ admin_site1_foo_bar_posts GET /admin/site1/foo/bar/posts(.:format) admin/site1/foo/bar/posts#index
54
+ POST /admin/site1/foo/bar/posts(.:format) admin/site1/foo/bar/posts#create
55
+ new_admin_site1_foo_bar_post GET /admin/site1/foo/bar/posts/new(.:format) admin/site1/foo/bar/posts#new
56
+ edit_admin_site1_foo_bar_post GET /admin/site1/foo/bar/posts/:id/edit(.:format) admin/site1/foo/bar/posts#edit
57
+ admin_site1_foo_bar_post GET /admin/site1/foo/bar/posts/:id(.:format) admin/site1/foo/bar/posts#show
58
+ PATCH /admin/site1/foo/bar/posts/:id(.:format) admin/site1/foo/bar/posts#update
59
+ PUT /admin/site1/foo/bar/posts/:id(.:format) admin/site1/foo/bar/posts#update
60
+ DELETE /admin/site1/foo/bar/posts/:id(.:format) admin/site1/foo/bar/posts#destroy
61
+ admin_site1_foo_bar_comments GET /admin/site1/foo/bar/comments(.:format) admin/site1/foo/bar/comments#index
62
+ POST /admin/site1/foo/bar/comments(.:format) admin/site1/foo/bar/comments#create
63
+ admin_site1_foo_bar_comment GET /admin/site1/foo/bar/comments/:id(.:format) admin/site1/foo/bar/comments#show
64
+ DELETE /admin/site1/foo/bar/comments/:id(.:format) admin/site1/foo/bar/comments#destroy
65
+ batch_action_admin_site2_demo_posts POST /admin/site2/demo/posts/batch_action(.:format) admin/site2/demo/posts#batch_action
66
+ admin_site2_demo_posts GET /admin/site2/demo/posts(.:format) admin/site2/demo/posts#index
67
+ edit_admin_site2_demo_post GET /admin/site2/demo/posts/:id/edit(.:format) admin/site2/demo/posts#edit
68
+ admin_site2_demo_post GET /admin/site2/demo/posts/:id(.:format) admin/site2/demo/posts#show
69
+ PATCH /admin/site2/demo/posts/:id(.:format) admin/site2/demo/posts#update
70
+ PUT /admin/site2/demo/posts/:id(.:format) admin/site2/demo/posts#update
71
+ admin_site2_demo_comments GET /admin/site2/demo/comments(.:format) admin/site2/demo/comments#index
72
+ POST /admin/site2/demo/comments(.:format) admin/site2/demo/comments#create
73
+ admin_site2_demo_comment GET /admin/site2/demo/comments/:id(.:format) admin/site2/demo/comments#show
74
+ DELETE /admin/site2/demo/comments/:id(.:format) admin/site2/demo/comments#destroy
75
+
76
+ ```
77
+
78
+ # Configuration
79
+
80
+ In your initializers/active_admin.rb, you can define your own handler to the following methods.
81
+
82
+ * authentication_method
83
+ * current_user_method
84
+ * logout_link_path
85
+
86
+ For example:
87
+
88
+ ``` ruby
89
+ # config.authentication_method = :authenticate_admin_user!
90
+ config.authentication_method = Proc.new do |name_path|
91
+ if [config.default_namespace, :root].include?(name_path.first)
92
+ :authenticate_admin_user!
93
+ else
94
+ "authenticate_#{name_path.map(&:to_s).join('_').underscore}_admin_user!".to_sym
95
+ end
96
+ end
97
+
98
+ # config.current_user_method = :current_admin_user
99
+ config.current_user_method = Proc.new do |name_path|
100
+ if [config.default_namespace, :root].include?(name_path.first)
101
+ :current_admin_user
102
+ else
103
+ "current_#{name_path.map(&:to_s).join('_').underscore}_admin_user".to_sym
104
+ end
105
+ end
106
+
107
+ # config.logout_link_path = :destroy_admin_user_session_path
108
+ config.logout_link_path = Proc.new do |name_path|
109
+ if [config.default_namespace, :root].include?(name_path.first)
110
+ :destroy_admin_user_session_path
111
+ else
112
+ "destroy_#{name_path.map(&:to_s).join('_').underscore}_admin_user_session_path".to_sym
113
+ end
114
+ end
115
+
116
+ ```
117
+
118
+ And in your routes.rb:
119
+
120
+ ```ruby
121
+ namespace :site1 do
122
+ namespace :foo do
123
+ namespace :bar do
124
+ devise_for :admin_users, ActiveAdmin::Devise.config
125
+ end
126
+ end
127
+ end
128
+ namespace :site2 do
129
+ namespace :demo do
130
+ devise_for :admin_users, ActiveAdmin::Devise.config
131
+ end
132
+ end
133
+ ```
134
+
135
+ ## Contributors
136
+ [Martin Chan](https://twitter.com/osiutino) - creator
137
+
138
+ ## License
139
+
140
+ [MIT License](https://opensource.org/licenses/MIT)
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,30 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "active_admin/nested_namespace/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "activeadmin-nested-namespaces"
8
+ spec.version = ActiveAdmin::NestedNamespace::VERSION
9
+ spec.authors = ["osiutino"]
10
+ spec.email = ["osiutino@gmail.com"]
11
+
12
+ spec.summary = %q{ ActiveAdmin plugin to enable nested namespaces support }
13
+ spec.description = %q{ This plugin allows you to register resources/pages with nested namespaces in ActiveAdmin. }
14
+ spec.homepage = "https://github.com/siutin/activeadmin-nested-namespaces"
15
+ spec.license = "MIT"
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.16"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rspec", "~> 3.0"
29
+ spec.add_development_dependency "activeadmin", "= 1.3.1"
30
+ end
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'bundle' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "rubygems"
12
+
13
+ m = Module.new do
14
+ module_function
15
+
16
+ def invoked_as_script?
17
+ File.expand_path($0) == File.expand_path(__FILE__)
18
+ end
19
+
20
+ def env_var_version
21
+ ENV["BUNDLER_VERSION"]
22
+ end
23
+
24
+ def cli_arg_version
25
+ return unless invoked_as_script? # don't want to hijack other binstubs
26
+ return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
27
+ bundler_version = nil
28
+ update_index = nil
29
+ ARGV.each_with_index do |a, i|
30
+ if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
31
+ bundler_version = a
32
+ end
33
+ next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34
+ bundler_version = $1 || ">= 0.a"
35
+ update_index = i
36
+ end
37
+ bundler_version
38
+ end
39
+
40
+ def gemfile
41
+ gemfile = ENV["BUNDLE_GEMFILE"]
42
+ return gemfile if gemfile && !gemfile.empty?
43
+
44
+ File.expand_path("../../Gemfile", __FILE__)
45
+ end
46
+
47
+ def lockfile
48
+ lockfile =
49
+ case File.basename(gemfile)
50
+ when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
51
+ else "#{gemfile}.lock"
52
+ end
53
+ File.expand_path(lockfile)
54
+ end
55
+
56
+ def lockfile_version
57
+ return unless File.file?(lockfile)
58
+ lockfile_contents = File.read(lockfile)
59
+ return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
60
+ Regexp.last_match(1)
61
+ end
62
+
63
+ def bundler_version
64
+ @bundler_version ||= begin
65
+ env_var_version || cli_arg_version ||
66
+ lockfile_version || "#{Gem::Requirement.default}.a"
67
+ end
68
+ end
69
+
70
+ def load_bundler!
71
+ ENV["BUNDLE_GEMFILE"] ||= gemfile
72
+
73
+ # must dup string for RG < 1.8 compatibility
74
+ activate_bundler(bundler_version.dup)
75
+ end
76
+
77
+ def activate_bundler(bundler_version)
78
+ if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
79
+ bundler_version = "< 2"
80
+ end
81
+ gem_error = activation_error_handling do
82
+ gem "bundler", bundler_version
83
+ end
84
+ return if gem_error.nil?
85
+ require_error = activation_error_handling do
86
+ require "bundler/version"
87
+ end
88
+ return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))
89
+ warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
90
+ exit 42
91
+ end
92
+
93
+ def activation_error_handling
94
+ yield
95
+ nil
96
+ rescue StandardError, LoadError => e
97
+ e
98
+ end
99
+ end
100
+
101
+ m.load_bundler!
102
+
103
+ if m.invoked_as_script?
104
+ load Gem.bin_path("bundler", "bundle")
105
+ end