acl9 0.12.0 → 2.1.2

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 (141) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +22 -0
  5. data/Appraisals +11 -0
  6. data/CHANGELOG.md +114 -0
  7. data/CONTRIBUTING.md +62 -0
  8. data/Gemfile +9 -0
  9. data/Gemfile.lock +141 -0
  10. data/LICENSE +9 -0
  11. data/README.md +308 -0
  12. data/Rakefile +9 -27
  13. data/acl9.gemspec +29 -0
  14. data/bin/appraisal +16 -0
  15. data/bin/bundler +16 -0
  16. data/bin/cc-tddium-post-worker +16 -0
  17. data/bin/erubis +16 -0
  18. data/bin/rackup +16 -0
  19. data/bin/rails +16 -0
  20. data/bin/rake +16 -0
  21. data/bin/sprockets +16 -0
  22. data/bin/tapout +16 -0
  23. data/bin/thor +16 -0
  24. data/bin/tilt +16 -0
  25. data/bin/yard +16 -0
  26. data/bin/yardoc +16 -0
  27. data/bin/yri +16 -0
  28. data/gemfiles/rails_4.0.gemfile +10 -0
  29. data/gemfiles/rails_4.1.gemfile +10 -0
  30. data/gemfiles/rails_4.2.gemfile +10 -0
  31. data/lib/acl9/controller_extensions/dsl_base.rb +36 -55
  32. data/lib/acl9/controller_extensions/generators.rb +1 -1
  33. data/lib/acl9/controller_extensions.rb +1 -1
  34. data/lib/acl9/helpers.rb +12 -5
  35. data/lib/acl9/model_extensions/for_object.rb +20 -5
  36. data/lib/acl9/model_extensions/for_subject.rb +48 -21
  37. data/lib/acl9/model_extensions.rb +22 -25
  38. data/lib/acl9/prepositions.rb +18 -0
  39. data/lib/acl9/version.rb +3 -0
  40. data/lib/acl9.rb +36 -10
  41. data/lib/generators/acl9/setup/USAGE +35 -0
  42. data/lib/generators/acl9/setup/setup_generator.rb +115 -0
  43. data/lib/generators/acl9/setup/templates/create_role_tables.rb +22 -0
  44. data/lib/generators/acl9/setup/templates/role.rb +3 -0
  45. data/test/config_test.rb +55 -0
  46. data/test/controller_extensions/actions_test.rb +199 -0
  47. data/test/controller_extensions/anon_test.rb +39 -0
  48. data/test/controller_extensions/base.rb +96 -0
  49. data/test/controller_extensions/basics_test.rb +44 -0
  50. data/test/controller_extensions/conditions_test.rb +48 -0
  51. data/test/controller_extensions/method_test.rb +70 -0
  52. data/test/controller_extensions/multi_match_test.rb +142 -0
  53. data/test/controller_extensions/multiple_role_arguments_test.rb +135 -0
  54. data/test/controller_extensions/prepositions_test.rb +108 -0
  55. data/test/controller_extensions/pseudo_role_test.rb +26 -0
  56. data/test/controller_extensions/role_test.rb +75 -0
  57. data/test/controllers/acl_action_override_test.rb +24 -0
  58. data/test/controllers/acl_arguments_test.rb +5 -0
  59. data/test/controllers/acl_block_test.rb +5 -0
  60. data/test/controllers/acl_boolean_method_test.rb +5 -0
  61. data/test/controllers/acl_helper_method_test.rb +26 -0
  62. data/test/controllers/acl_ivars_test.rb +15 -0
  63. data/test/controllers/acl_method2_test.rb +6 -0
  64. data/test/controllers/acl_method_test.rb +6 -0
  65. data/test/controllers/acl_object_hash_test.rb +18 -0
  66. data/test/controllers/acl_query_method_named_test.rb +9 -0
  67. data/test/controllers/acl_query_method_test.rb +9 -0
  68. data/test/controllers/acl_query_method_with_lambda_test.rb +9 -0
  69. data/test/controllers/acl_query_mixin.rb +51 -0
  70. data/test/controllers/acl_subject_method_test.rb +15 -0
  71. data/test/controllers/arguments_checking_test.rb +43 -0
  72. data/test/dummy/app/controllers/acl_action_override.rb +15 -0
  73. data/test/dummy/app/controllers/acl_arguments.rb +10 -0
  74. data/test/dummy/app/controllers/acl_block.rb +6 -0
  75. data/test/dummy/app/controllers/acl_boolean_method.rb +23 -0
  76. data/test/dummy/app/controllers/acl_helper_method.rb +11 -0
  77. data/test/dummy/app/controllers/acl_ivars.rb +17 -0
  78. data/test/dummy/app/controllers/acl_method.rb +6 -0
  79. data/test/dummy/app/controllers/acl_method2.rb +6 -0
  80. data/test/dummy/app/controllers/acl_objects_hash.rb +10 -0
  81. data/test/dummy/app/controllers/acl_query_method.rb +9 -0
  82. data/test/dummy/app/controllers/acl_query_method_named.rb +13 -0
  83. data/test/dummy/app/controllers/acl_query_method_with_lambda.rb +9 -0
  84. data/test/dummy/app/controllers/acl_subject_method.rb +16 -0
  85. data/test/dummy/app/controllers/application_controller.rb +7 -0
  86. data/test/dummy/app/controllers/empty_controller.rb +5 -0
  87. data/test/dummy/app/helpers/application_helper.rb +2 -0
  88. data/test/dummy/app/helpers/some_helper.rb +8 -0
  89. data/test/dummy/app/models/.keep +0 -0
  90. data/test/dummy/app/models/access.rb +3 -0
  91. data/test/dummy/app/models/account.rb +3 -0
  92. data/test/dummy/app/models/bar.rb +3 -0
  93. data/test/dummy/app/models/concerns/.keep +0 -0
  94. data/test/dummy/app/models/foo.rb +3 -0
  95. data/test/dummy/app/models/foo_bar.rb +3 -0
  96. data/test/dummy/app/models/other/foo.rb +5 -0
  97. data/test/dummy/app/models/other/role.rb +5 -0
  98. data/test/dummy/app/models/other/user.rb +5 -0
  99. data/test/dummy/app/models/role.rb +3 -0
  100. data/test/dummy/app/models/user.rb +3 -0
  101. data/test/dummy/app/models/uuid.rb +4 -0
  102. data/test/dummy/config/application.rb +23 -0
  103. data/test/dummy/config/boot.rb +4 -0
  104. data/test/dummy/config/database.yml +25 -0
  105. data/test/dummy/config/environment.rb +5 -0
  106. data/test/dummy/config/environments/development.rb +37 -0
  107. data/test/dummy/config/environments/production.rb +78 -0
  108. data/test/dummy/config/environments/test.rb +40 -0
  109. data/test/dummy/config/initializers/assets.rb +8 -0
  110. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  111. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  112. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  113. data/test/dummy/config/initializers/inflections.rb +16 -0
  114. data/test/dummy/config/initializers/mime_types.rb +4 -0
  115. data/test/dummy/config/initializers/secrets.rb +1 -0
  116. data/test/dummy/config/initializers/session_store.rb +3 -0
  117. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  118. data/test/dummy/config/locales/en.yml +23 -0
  119. data/test/dummy/config/routes.rb +3 -0
  120. data/test/dummy/config.ru +4 -0
  121. data/test/dummy/db/migrate/20141117132218_create_tables.rb +99 -0
  122. data/test/helpers/helper_test.rb +89 -0
  123. data/test/models/roles_test.rb +357 -0
  124. data/test/models/roles_with_custom_association_names_test.rb +28 -0
  125. data/test/models/roles_with_custom_class_names_test.rb +28 -0
  126. data/test/models/system_roles_test.rb +22 -0
  127. data/test/models/users_roles_and_subjects_with_namespaced_class_names_test.rb +30 -0
  128. data/test/test_helper.rb +80 -20
  129. data/test/version_test.rb +7 -0
  130. metadata +290 -71
  131. data/CHANGELOG.textile +0 -46
  132. data/README.textile +0 -903
  133. data/VERSION.yml +0 -5
  134. data/lib/acl9/config.rb +0 -11
  135. data/test/access_control_test.rb +0 -338
  136. data/test/dsl_base_test.rb +0 -795
  137. data/test/helpers_test.rb +0 -134
  138. data/test/roles_test.rb +0 -355
  139. data/test/support/controllers.rb +0 -207
  140. data/test/support/models.rb +0 -59
  141. data/test/support/schema.rb +0 -92
data/README.md ADDED
@@ -0,0 +1,308 @@
1
+ # acl9
2
+
3
+ [![Travis-CI](https://travis-ci.org/be9/acl9.svg?branch=master)](https://travis-ci.org/be9/acl9) [![Code Climate](https://codeclimate.com/github/be9/acl9/badges/gpa.svg)](https://codeclimate.com/github/be9/acl9) [![Test Coverage](https://codeclimate.com/github/be9/acl9/badges/coverage.svg)](https://codeclimate.com/github/be9/acl9)
4
+
5
+ Acl9 is a role-based authorization system that provides a concise DSL for
6
+ securing your Rails application.
7
+
8
+ Access control is pointless if you're not sure you've done it right. The
9
+ fundamental goal of acl9 is to ensure that your rules are easy to understand and
10
+ easy to test - in other words acl9 makes it easy to ensure you've got your
11
+ permissions correct.
12
+
13
+ ## Installation
14
+
15
+ Acl9 is [Semantically Versioned](http://semver.org/), so just add this to your
16
+ `Gemfile`:
17
+
18
+ ```ruby
19
+ gem 'acl9', '~> 2.0'
20
+ ```
21
+
22
+ You will need Ruby 2.x
23
+
24
+ We dropped support for Rails < 4 in the 1.x releases, so if you're still using
25
+ Rails 2.x or 3.x then you'll want this:
26
+
27
+ ```ruby
28
+ gem 'acl9', '~> 0.12'
29
+ ```
30
+
31
+ ## Getting Started
32
+
33
+ The simplest way to demonstrate this is with some examples.
34
+
35
+ ### Access Control
36
+
37
+ You declare the access control directly in your controller, so it's visible and
38
+ obvious for any developer looking at the controller:
39
+
40
+ ```ruby
41
+ class Admin::SchoolsController < ApplicationController
42
+ access_control do
43
+ allow :support, :of => School
44
+ allow :admins, :managers, :teachers, :of => :school
45
+ deny :teachers, :only => :destroy
46
+
47
+ action :index do
48
+ allow anonymous, logged_in
49
+ end
50
+
51
+ allow logged_in, :only => :show
52
+ deny :students
53
+ end
54
+
55
+ def index
56
+ # ...
57
+ end
58
+
59
+ # ...
60
+ end
61
+ ```
62
+
63
+ You can see more about all this stuff in the wiki under [Access Control
64
+ Subsystem](//github.com/be9/acl9/wiki/Access-Control-Subsystem)
65
+
66
+ ### Roles
67
+
68
+ The other side of acl9 is where you give and remove roles to and from a user. As
69
+ you're looking through these examples refer back to the [Access
70
+ Control](#access-control) example and you should be able to see which access
71
+ control rule each role corresponds to.
72
+
73
+ Let's say we want to create an admin of a given school, not a global admin, just
74
+ the admin for a particular school:
75
+
76
+ ```ruby
77
+ user.has_role! :admin, school
78
+ user.has_role! :admin, of: school
79
+ ```
80
+
81
+ Then let's say we have some support people in our organization who are dedicated
82
+ to supporting all the schools. We could do two things, either we could come up
83
+ with a new role name like `:school_support` or we can use the fact that we can
84
+ assign roles to any object, including a class, and do this:
85
+
86
+ ```ruby
87
+ user.has_role! :support, School
88
+ user.has_role! :support, for: School
89
+ ```
90
+
91
+ You can see the `allow` line in our `access_control` block that this corresponds
92
+ with. If we had used `:school_support` instead then that line would have to be:
93
+ `allow :school_support`
94
+
95
+ Now, when a support person leaves that team, we need to remove that role:
96
+
97
+ ```ruby
98
+ user.has_no_role! :support, School
99
+ user.has_no_role! :support, at: School
100
+ ```
101
+
102
+ You can see more about all this stuff in the wiki under [Role
103
+ Subsystem](//github.com/be9/acl9/wiki/Role-Subsystem)
104
+
105
+ ## Database Setup
106
+
107
+ As mentioned in [Role Subsystem](//github.com/be9/acl9/wiki/Role-Subsystem) you
108
+ don't have to use these, if your role system is very simple all you need is a
109
+ `has_role?` method in your subject model that returns a boolean and the Access
110
+ Control part of Acl9 will work from that.
111
+
112
+ However, most commonly, the roles and role assignments are stored in two new
113
+ tables that you create specifically for Acl9. There's a rails generator for
114
+ creating the migrations, role model and updating the subject model and
115
+ optionally any number of object models.
116
+
117
+ You can view the USAGE for this generator by running the following in your app
118
+ directory:
119
+
120
+ ```sh
121
+ bin/rails g acl9:setup -h
122
+ ```
123
+
124
+ ## Configuration
125
+
126
+ There are five configurable settings. These all have sensible defaults which can
127
+ be easily overridden in `config/initializers/acl9.rb`
128
+
129
+ You can also override each of the `:default_*` settings (dropping the "default_"
130
+ prefix) in your models/controllers - see below for more detail:
131
+
132
+ ### :default_role_class_name
133
+
134
+ Set to `'Role'` and can be overridden in your "user" model, [see the wiki for more](//github.com/be9/acl9/wiki/Role-Subsystem#custom-class-names).
135
+
136
+ ### :default_association_name
137
+
138
+ Set to `:role_objects` and can be overridden in
139
+ your "user" model, [see the wiki for more](//github.com/be9/acl9/wiki/Role-Subsystem#subject-model).
140
+ We chose a name for this association that was unlikely to conflict with
141
+ existing models but a lot of people override this to be just `:roles`
142
+
143
+ ### :default_subject_class_name
144
+
145
+ Set to `'User'` and can be overridden in your
146
+ "role" model, [see the wiki for more](//github.com/be9/acl9/wiki/Role-Subsystem#custom-class-names).
147
+
148
+ ### :default_subject_method
149
+
150
+ Set to `:current_user` and can be overridden in
151
+ your controllers, [see the wiki for more](//github.com/be9/acl9/wiki/Access-Control-Subsystem#subject_method).
152
+
153
+ ### :default_join_table_name
154
+
155
+ This is set to `nil` by default, which will mean it will use the Rails method of
156
+ calculating the join table name for a `has_and_belongs_to_many` (eg.
157
+ `users_roles`). Remember that if you override this value, either do it before
158
+ you run `rails g acl9:setup` or be sure to update your migration or database.
159
+
160
+ ### :normalize_role_names
161
+
162
+ Set to `true` (see "Upgrade Notes" below if you're upgrading) and can only be
163
+ changed by setting it in `Acl9.config`. When true this causes Acl9 to normalize
164
+ your role names, normalization is `.to_s.underscore.singularize`. This is done
165
+ on both the setter and getter.
166
+
167
+ ### :protect_global_roles
168
+
169
+ Set to `true` (see "Upgrade Notes" below if you're upgrading) and can only be
170
+ changed by merging into `Acl9.config`. This setting changes how global roles
171
+ (ie. roles with no object) are treated.
172
+
173
+ Say we set a role like so:
174
+
175
+ ```ruby
176
+ user.has_role! :admin, school
177
+ ```
178
+
179
+ When `:protect_global_roles` is `true` (as is the default) then `user.has_role?
180
+ :admin` is `false`. Ie. changing the role on a specific instance doesn't impact
181
+ the global role (hence the name).
182
+
183
+ When `:protect_global_roles` is `false` then `user.has_role? :admin` is `true`.
184
+ Ie. setting a role on a specific instance makes that person a global one of
185
+ those roles.
186
+
187
+ Basically these are just two different ways of working with roles, if you're
188
+ protecting your global roles then you can use them as sort of a superuser
189
+ version of a given role. So you can have an admin of a school **and** a global
190
+ admin with different privileges.
191
+
192
+ If you don't protect your global roles then you can use them as a catch-all for
193
+ any specific roles, so then the admins of schools, classrooms and students can
194
+ all be granted a privilege by allowing the global `:admin` role.
195
+
196
+ ### Example
197
+
198
+ ```ruby
199
+ # config/initializers/acl9.rb
200
+ Acl9.config.default_association_name = :roles
201
+
202
+ # or...
203
+ Acl9.configure do |c|
204
+ c.default_association_name = :roles
205
+ end
206
+ ```
207
+
208
+ ### Reset Defaults
209
+
210
+ On the off chance that you ever need to reset the config back to its default you
211
+ can use:
212
+
213
+ ```ruby
214
+ Acl9.config.reset!
215
+ ```
216
+
217
+ ## Upgrade Notes
218
+
219
+ ### Acl9 now protects global roles by default
220
+
221
+ Please, PLEASE, **PLEASE** note. If you're upgrading from the `0.x` series of acl9
222
+ then there's an important change in one of the defaults for `1.x`. We flipped
223
+ the default value of `:protect_global_roles` from `false` to `true`.
224
+
225
+ Say you had a role on an object:
226
+
227
+ ```ruby
228
+ user.has_role! :manager, department
229
+ ```
230
+
231
+ We all know that this means:
232
+
233
+ ```ruby
234
+ user.has_role? :manager, department # => true
235
+ user.has_role? :manager, in: department # => true
236
+ ```
237
+
238
+ With `:protect_global_roles` set to `false`, as it was in `0.x` then the above
239
+ role would mean that the global `:manager` role would also be `true`.
240
+
241
+ Ie. this is how `0.x` behaved:
242
+
243
+ ```ruby
244
+ user.has_role? :manager # => true
245
+ ```
246
+
247
+ Now in `1.x` we default `:protect_global_roles` to `true` which means that the
248
+ global `:manager` role is protected, ie:
249
+
250
+ ```ruby
251
+ user.has_role? :manager # => false
252
+ ```
253
+
254
+ In words, in 1.x just because you're the `:manager` of a `department` that
255
+ doesn't make you a global `:manager` (anymore).
256
+
257
+ ### Acl9 now normalizes role names by default
258
+
259
+ So basically we downcase, underscore, and singularize your role names, so:
260
+
261
+ ```ruby
262
+ user.has_role! 'FooBars'
263
+
264
+ user.has_role? 'FooBars' # => true
265
+ user.has_role? :foo_bar # => true
266
+
267
+ user.has_role! :foo_bar # => nil, because it was already set above
268
+ ```
269
+
270
+ If you're upgrading then you will want to do something like this:
271
+
272
+ ```ruby
273
+ Role.all.each do |role|
274
+ role.update! name: role.name.underscore.singularize
275
+ end
276
+ ```
277
+
278
+ **Then check for any duplicates** and resolve those manually.
279
+
280
+ ### Acl9 now raises ArgumentError on bad args to `allow`/`deny`
281
+
282
+ In 2.x and above we now try to help the developer by raising ArgumentError if
283
+ they mess up with the options they pass to `allow`/`deny`, this prevents people
284
+ doing things that they think are going to work but actually aren't like:
285
+
286
+ ```ruby
287
+ allow all, actions: [ :index, :show ] # <---- BROKEN!!
288
+ ```
289
+
290
+ ## Community
291
+
292
+ **Gitter:** [Join the gitter chat here](https://gitter.im/be9/acl9)
293
+
294
+ **docs:** Rdocs are available [here](http://rdoc.info/projects/be9/acl9).
295
+
296
+ **StackOverflow:** Go ask (or answer) a question [on
297
+ StackOverflow](http://stackoverflow.com/questions/tagged/acl9)
298
+
299
+ **Mailing list:** We have an old skule mailing list as well [acl9-discuss
300
+ group](http://groups.google.com/group/acl9-discuss)
301
+
302
+ **Contributing:** Last but not least, check out the [Contributing
303
+ Guide](./CONTRIBUTING.md) if you want to get even more involved
304
+
305
+ ## Acknowledgements
306
+
307
+ [All these people are awesome!](//github.com/be9/acl9/graphs/contributors) as are all the
308
+ people who have raised or investigated issues.
data/Rakefile CHANGED
@@ -1,40 +1,22 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rake/testtask'
1
+ #!/usr/bin/env rake
2
+ require 'bundler/setup'
3
+ require 'bundler/gem_tasks'
4
4
 
5
5
  desc 'Default: run tests.'
6
6
  task :default => :test
7
7
 
8
- begin
9
- require 'jeweler'
10
- Jeweler::Tasks.new do |s|
11
- s.name = "acl9"
12
- s.summary = "Yet another role-based authorization system for Rails"
13
- s.email = "olegdashevskii@gmail.com"
14
- s.homepage = "http://github.com/be9/acl9"
15
- s.description = "Role-based authorization system for Rails with a nice DSL for access control lists"
16
- s.authors = ["oleg dashevskii"]
17
- s.files = FileList["[A-Z]*", "{lib,test}/**/*.rb"]
18
- s.add_development_dependency "jeremymcanally-context", ">= 0.5.5"
19
- s.add_development_dependency "jnunemaker-matchy", ">= 0.4.0"
20
- end
21
- Jeweler::GemcutterTasks.new
22
- rescue LoadError
23
- puts "Jeweler not available. Install it with: sudo gem install jeweler"
24
- end
8
+ require 'rake/testtask'
25
9
 
26
10
  Rake::TestTask.new(:test) do |test|
27
11
  test.libs << 'lib' << 'test'
28
12
  test.pattern = 'test/**/*_test.rb'
29
13
  test.verbose = false
14
+ test.options = " | tapout runtime"
30
15
  end
31
16
 
32
- begin
33
- require 'yard'
17
+ require 'yard'
34
18
 
35
- YARD::Rake::YardocTask.new do |t|
36
- t.files = ['lib/**/*.rb']
37
- #t.options = ['--any', '--extra', '--opts'] # optional
38
- end
39
- rescue LoadError
19
+ YARD::Rake::YardocTask.new do |t|
20
+ t.files = ['lib/**/*.rb']
40
21
  end
22
+
data/acl9.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.expand_path("../lib", __FILE__)
3
+ require "acl9/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.authors = ["oleg dashevskii", "Jason King"]
7
+ s.email = ["olegdashevskii@gmail.com", "jk@handle.it"]
8
+ s.description = "Role-based authorization system for Rails with a concise DSL for securing your Rails application. Acl9 makes it easy to get security right for your app, the access control code sits right in your controller, the syntax is very easy to understand, and acl9 makes it easy to test your access rules."
9
+ s.summary = "Role-based authorization system for Rails with a concise DSL for securing your Rails application."
10
+ s.homepage = "http://github.com/be9/acl9"
11
+
12
+ s.files = `git ls-files`.split($\)
13
+ s.test_files = s.files.grep(%r{^test/})
14
+ s.name = "acl9"
15
+ s.require_paths = ["lib"]
16
+ s.version = Acl9::VERSION
17
+ s.license = 'MIT'
18
+
19
+ s.required_ruby_version = ">= 2"
20
+
21
+ s.rdoc_options = ["--charset=UTF-8"]
22
+
23
+ s.add_dependency "rails", '~> 4.0'
24
+
25
+ s.add_development_dependency "codeclimate-test-reporter"
26
+ s.add_development_dependency "yard"
27
+ s.add_development_dependency 'sqlite3'
28
+ end
29
+
data/bin/appraisal ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'appraisal' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('appraisal', 'appraisal')
data/bin/bundler ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'bundler' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('bundler', 'bundler')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'cc-tddium-post-worker' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('codeclimate-test-reporter', 'cc-tddium-post-worker')
data/bin/erubis ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'erubis' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('erubis', 'erubis')
data/bin/rackup ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rackup' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rack', 'rackup')
data/bin/rails ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rails' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('railties', 'rails')
data/bin/rake ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rake' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rake', 'rake')
data/bin/sprockets ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'sprockets' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('sprockets', 'sprockets')
data/bin/tapout ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'tapout' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('tapout', 'tapout')
data/bin/thor ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'thor' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('thor', 'thor')
data/bin/tilt ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'tilt' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('tilt', 'tilt')
data/bin/yard ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'yard' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('yard', 'yard')
data/bin/yardoc ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'yardoc' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('yard', 'yardoc')
data/bin/yri ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'yri' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('yard', 'yri')
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "tapout"
7
+ gem "minitap"
8
+ gem "rails", "~> 4.0.0"
9
+
10
+ gemspec :path => "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "tapout"
7
+ gem "minitap"
8
+ gem "rails", "~> 4.1.0"
9
+
10
+ gemspec :path => "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "tapout"
7
+ gem "minitap"
8
+ gem "rails", "~> 4.2.0"
9
+
10
+ gemspec :path => "../"