hobo 0.8.8 → 0.8.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +34 -0
- data/Rakefile +30 -24
- data/bin/hobo +30 -10
- data/doctest/hobo/hobo_helper.rdoctest +92 -0
- data/doctest/hobo/lifecycles.rdoctest +261 -0
- data/doctest/scopes.rdoctest +387 -0
- data/dryml_generators/rapid/forms.dryml.erb +3 -3
- data/dryml_generators/rapid/pages.dryml.erb +4 -4
- data/lib/active_record/viewhints_validations_interceptor.rb +1 -1
- data/lib/hobo.rb +1 -1
- data/lib/hobo/accessible_associations.rb +3 -3
- data/lib/hobo/authentication_support.rb +1 -1
- data/lib/hobo/dryml.rb +10 -0
- data/lib/hobo/dryml/taglib.rb +3 -5
- data/lib/hobo/hobo_helper.rb +3 -1
- data/lib/hobo/include_in_save.rb +1 -0
- data/lib/hobo/lifecycles/actions.rb +6 -2
- data/lib/hobo/model.rb +1 -1
- data/lib/hobo/model_controller.rb +34 -12
- data/lib/hobo/permissions.rb +1 -1
- data/lib/hobo/rapid_helper.rb +3 -0
- data/lib/hobo/scopes/association_proxy_extensions.rb +8 -2
- data/lib/hobo/scopes/automatic_scopes.rb +3 -3
- data/lib/hobo/user_controller.rb +2 -1
- data/rails_generators/hobo/hobo_generator.rb +1 -1
- data/rails_generators/hobo/templates/application.dryml +0 -2
- data/rails_generators/hobo_admin_site/hobo_admin_site_generator.rb +45 -0
- data/rails_generators/hobo_admin_site/templates/admin.css +2 -0
- data/rails_generators/hobo_admin_site/templates/application.dryml +1 -0
- data/rails_generators/hobo_admin_site/templates/controller.rb +13 -0
- data/rails_generators/hobo_admin_site/templates/site_taglib.dryml +32 -0
- data/rails_generators/hobo_admin_site/templates/users_index.dryml +5 -0
- data/rails_generators/hobo_front_controller/hobo_front_controller_generator.rb +7 -1
- data/rails_generators/hobo_front_controller/templates/index.dryml +16 -0
- data/rails_generators/hobo_rapid/hobo_rapid_generator.rb +31 -1
- data/rails_generators/hobo_rapid/templates/hobo-rapid.js +5 -3
- data/rails_generators/hobo_rapid/templates/lowpro.js +40 -21
- data/rails_generators/hobo_rapid/templates/themes/clean/public/images/101-3B5F87-ACD3E6.png +0 -0
- data/rails_generators/hobo_rapid/templates/themes/clean/public/images/30-3E547A-242E42.png +0 -0
- data/rails_generators/hobo_rapid/templates/themes/clean/public/images/30-DBE1E5-FCFEF5.png +0 -0
- data/rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/clean.css +12 -4
- data/rails_generators/hobo_subsite/hobo_subsite_generator.rb +1 -1
- data/rails_generators/hobo_user_controller/hobo_user_controller_generator.rb +22 -0
- data/rails_generators/hobo_user_controller/templates/accept_invitation.dryml +5 -0
- data/rails_generators/hobo_user_controller/templates/controller.rb +22 -0
- data/rails_generators/hobo_user_model/hobo_user_model_generator.rb +17 -1
- data/rails_generators/hobo_user_model/templates/invite.erb +9 -0
- data/rails_generators/hobo_user_model/templates/mailer.rb +15 -0
- data/rails_generators/hobo_user_model/templates/model.rb +31 -4
- data/taglibs/rapid_core.dryml +25 -6
- data/taglibs/rapid_forms.dryml +65 -24
- data/taglibs/rapid_lifecycles.dryml +1 -1
- data/taglibs/rapid_navigation.dryml +2 -2
- data/taglibs/rapid_plus.dryml +4 -3
- metadata +151 -210
- data/Manifest +0 -155
- data/hobo.gemspec +0 -46
- data/rails_generators/hobo_rapid/templates/themes/clean/public/images/100-3B5F87-ACD3E6.png +0 -0
data/taglibs/rapid_core.dryml
CHANGED
@@ -293,6 +293,25 @@ Or a new page if the context is a class:
|
|
293
293
|
<a with="&BlogPost"/> -> <a href="/blog_posts">Blog Posts</a>`
|
294
294
|
* If `action="new"` then `<a>` will check that the current user has permission to create the object
|
295
295
|
* Several useful classes are added automatically to the output `<a>`.
|
296
|
+
|
297
|
+
### Attributes
|
298
|
+
|
299
|
+
* action: If "new", triggers the special behaviour listed above. Otherwise, contains the action to be performed on the context. If neither `action` nor `method` are specified, the action will be "index" or "show", as appropriate.
|
300
|
+
|
301
|
+
* to: Use this item as the target instead of the current context.
|
302
|
+
|
303
|
+
* params, query-params: These are appended to the target as a query string after a "?".
|
304
|
+
|
305
|
+
* href, name: If either of these attributes are present, the smart features of this tag are turned off.
|
306
|
+
|
307
|
+
* format: this adds ".#{format}" to the end of the url
|
308
|
+
|
309
|
+
* subsite: routes the URL using the subsite
|
310
|
+
|
311
|
+
* force: overrides the permission check if `action` is "new"
|
312
|
+
|
313
|
+
* method: "get", "put", "post" or "delete". "get" is the default
|
314
|
+
|
296
315
|
-->
|
297
316
|
<def tag="a" attrs="action, to, params, query-params, href, format, subsite, force"><%=
|
298
317
|
content = parameters.default
|
@@ -419,7 +438,7 @@ Assuming the context is a blog post...
|
|
419
438
|
else
|
420
439
|
wrapper = if inline
|
421
440
|
:span
|
422
|
-
elsif block ||
|
441
|
+
elsif block || this_type <= HoboFields::Text
|
423
442
|
:div
|
424
443
|
else
|
425
444
|
:span
|
@@ -433,7 +452,7 @@ Assuming the context is a blog post...
|
|
433
452
|
%></def>
|
434
453
|
|
435
454
|
<!-- `<view>` calls this tag when called for a `has_many` collection. By default calls `<links-for-collection/>` -->
|
436
|
-
<def tag="collection-view" polymorphic><links-for-collection
|
455
|
+
<def tag="collection-view" polymorphic><links-for-collection merge-attrs/></def>
|
437
456
|
|
438
457
|
<!-- Renders a comma separated list of links (`<a>`), or "(none)" if the list is empty -->
|
439
458
|
<def tag="links-for-collection"><%= this.empty? ? "(none)" : context_map { a }.join(", ") %></def>
|
@@ -514,11 +533,11 @@ The label can be customised using the `label` attribute, e.g.
|
|
514
533
|
main = label.blank? ? c : pluralize(c, label)
|
515
534
|
|
516
535
|
if prefix.in? %w(are is)
|
517
|
-
|
518
|
-
p + ' ' + main.to_s
|
519
|
-
else
|
520
|
-
main
|
536
|
+
prefix = c == 1 ? "is" : "are"
|
521
537
|
end
|
538
|
+
|
539
|
+
(prefix ? "#{prefix} #{main}" : main.to_s)
|
540
|
+
|
522
541
|
end
|
523
542
|
%></span></def>
|
524
543
|
|
data/taglibs/rapid_forms.dryml
CHANGED
@@ -342,7 +342,7 @@ The menus default to the current date if the current value is nil.
|
|
342
342
|
-->
|
343
343
|
<def tag="input" for="date" attrs="order">
|
344
344
|
<% order = order.nil? ? [:year, :month, :day] : comma_split(order).*.to_sym -%>
|
345
|
-
<%= select_date(this ||
|
345
|
+
<%= select_date(this || current_time, attributes.merge(:prefix => param_name_for_this, :order => order)) %>
|
346
346
|
</def>
|
347
347
|
|
348
348
|
|
@@ -360,7 +360,7 @@ The menus default to the current time if the current value is nil.
|
|
360
360
|
-->
|
361
361
|
<def tag="input" for="time" attrs="order">
|
362
362
|
<% order = order.nil? ? [:year, :month, :day, :hour, :minute, :second] : comma_split(order).*.to_sym -%>
|
363
|
-
<%= select_date(this ||
|
363
|
+
<%= select_date(this || current_time, attributes.merge(:prefix => param_name_for_this, :order => order)) %>
|
364
364
|
</def>
|
365
365
|
|
366
366
|
|
@@ -383,7 +383,7 @@ The menus default to the current time if the current value is nil.
|
|
383
383
|
require 'ruby-debug'
|
384
384
|
debugger
|
385
385
|
end -%>
|
386
|
-
<%= select_datetime(this ||
|
386
|
+
<%= select_datetime(this || current_time, attributes.merge(:prefix => param_name_for_this)) %>
|
387
387
|
</def>
|
388
388
|
|
389
389
|
<!-- An `<input type='text'>` input. -->
|
@@ -605,13 +605,14 @@ This is the default input that Rapid uses for `belongs_to` associations. The men
|
|
605
605
|
- `blank-message` - the message for the 'none' option. Defaults to "(No `<model-name>`)", e.g. "(No Product)"
|
606
606
|
- `options` - an array of records to include in the menu. Defaults to the all the records in the target table that match any `:conditions` declared on the `belongs_to` (subject to `limit`)
|
607
607
|
- `limit` - if `options` is not specified, this limits the number of records. Default: 100
|
608
|
+
- `text_method` - The method to call on each record to get the text for the option. Multiple methods are supported ie "institution.name"
|
608
609
|
|
609
610
|
### See Also
|
610
611
|
|
611
612
|
For situations where there are too many target records to practically include in a menu, `<name-one>` provides an autocompleter which would be more suitable.
|
612
613
|
|
613
614
|
-->
|
614
|
-
<def tag="select-one" attrs="include-none, blank-message, options, sort, limit"><%
|
615
|
+
<def tag="select-one" attrs="include-none, blank-message, options, sort, limit, text-method"><%
|
615
616
|
raise HoboError.new("Not allowed to edit #{this_field}") if !attributes[:disabled] && !can_edit?
|
616
617
|
|
617
618
|
blank_message ||= "(No #{this_type.name.to_s.titleize})"
|
@@ -622,7 +623,14 @@ For situations where there are too many target records to practically include in
|
|
622
623
|
this_field_reflection.klass.all(:conditions => conditions, :limit => limit).select {|x| can_view?(x)}
|
623
624
|
end
|
624
625
|
|
625
|
-
|
626
|
+
if text_method.nil?
|
627
|
+
select_options = options.map { |x| [x.to_s, x.id] }
|
628
|
+
else
|
629
|
+
select_options = options.map do |x|
|
630
|
+
[ text_method.split(".").inject(x) { |v, method| v.send(method) },
|
631
|
+
x.id ]
|
632
|
+
end
|
633
|
+
end
|
626
634
|
select_options = select_options.sort if sort
|
627
635
|
select_options.insert(0, [blank_message, ""]) if include_none || (this.nil? && include_none != false)
|
628
636
|
attributes = add_classes(attributes, "input", "belongs_to", type_and_field)
|
@@ -633,21 +641,54 @@ For situations where there are too many target records to practically include in
|
|
633
641
|
</def>
|
634
642
|
|
635
643
|
|
636
|
-
<!-- An `<input type="text">` with auto-completion. Allows the user to chose the target of a `belongs_to` association
|
637
|
-
by name.
|
638
|
-
|
639
|
-
### Attributes
|
644
|
+
<!-- An `<input type="text">` with auto-completion. Allows the user to chose the target of a `belongs_to` association by name.
|
640
645
|
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
646
|
+
This tag relies on an autocompleter being defined in a controller. A simple example:
|
647
|
+
|
648
|
+
<form with="&ProjectMembership.new">
|
649
|
+
<name-one:user>
|
650
|
+
</form>
|
651
|
+
|
652
|
+
class ProjectMembership < ActiveRecord::Base
|
653
|
+
hobo_model
|
654
|
+
belongs_to :user
|
655
|
+
end
|
656
|
+
|
657
|
+
class User < ActiveRecord::Base
|
658
|
+
hobo_user_model
|
659
|
+
has_many :project_memberships, :accessible => true, :dependent => :destroy
|
660
|
+
end
|
661
|
+
|
662
|
+
class UsersController < ApplicationController
|
663
|
+
autocomplete
|
664
|
+
end
|
665
|
+
|
666
|
+
The route used by the autocompleter looks something like `/users/complete_name`. The first part of this route is specified by the `complete-target` attribute, and the second part is specified by the `completer` attribute.
|
667
|
+
|
668
|
+
`complete-target` specifies the controller for the route. It can be specified by either supplying a model class or a model. If a model is supplied, the id of the model is passed as a parameter to the controller. (`?id=7`, for example) The default for this attribute is the class of the context. In other words, the class that contains the `has_many / has_one`, not the class with the `belongs_to`.
|
669
|
+
|
670
|
+
`completer` specifies the action for the route. `name-one` prepends `complete_` to the value given here. This should be exactly the same as the first parameter to `autocomplete` in your controller. As an example: `autocomplete :email_address` would correspond to `completer="email_address"`. The default for this attribute is the name field for the model being searched, which is usually `name`, but not always.
|
671
|
+
|
672
|
+
The query string is passed to the controller in the `query` parameter. (`?query=hello` for example).
|
673
|
+
|
674
|
+
For more information on how to customize the controller, see the [controller manual](http://cookbook.hobocentral.net/manual/controllers#autocompleters)
|
675
|
+
|
676
|
+
Here's a more complex example. This used to be a part of [agility](http://cookbook.hobocentral.net/tutorials/agility) until it was simplified.
|
677
|
+
|
678
|
+
class ProjectsController < ApplicationController
|
679
|
+
autocomplete :new_member_name do
|
680
|
+
project = find_instance
|
681
|
+
hobo_completions :name, User.without_project(project).is_not(project.owner)
|
682
|
+
end
|
683
|
+
end
|
684
|
+
|
685
|
+
Note that this was added to the projects controller, rather than the users controller as in the first example. You can read this as: create an auto-complete action called ’new_member_name’ that finds users that are not already members of the project, and not the owner of the project, and completes the :name field.
|
686
|
+
|
687
|
+
<name-one:user complete-target="&@project" completer="new_member_name"/>
|
645
688
|
|
646
|
-
|
689
|
+
We're using an object as the complete-target rather than a class. This allows the `find_instance` in our controller action to function.
|
647
690
|
|
648
|
-
|
649
|
-
- If `completer` is a record, say a `Product` with id `12`: `/products/complete_name?id=12`
|
650
|
-
- If `completer-name` is given, e.g. with `completer-name="new_product_names"`: `/products/complete_new_product_names`
|
691
|
+
There's another example of `<name-one>` use in the [recipes](http://cookbook.hobocentral.net/recipes/36-using-a-name-one-one-a).
|
651
692
|
|
652
693
|
-->
|
653
694
|
<def tag="name-one" attrs="complete-target, completer"><%
|
@@ -704,9 +745,10 @@ An input for `has_many :through` associations that lets the user chose the items
|
|
704
745
|
|
705
746
|
To use this tag, the model of the items the user is chosing *must* have unique names, and the
|
706
747
|
-->
|
707
|
-
<def tag="select-many" attrs="options, targets, remove-label, prompt, disabled"><%
|
748
|
+
<def tag="select-many" attrs="options, targets, remove-label, prompt, disabled, name"><%
|
708
749
|
prompt ||= "Add #{this_field.titleize.singularize}"
|
709
750
|
options ||= this_field_reflection.klass.all(:conditions =>this.conditions).select {|x| can_view?(x)}
|
751
|
+
name ||= param_name_for_this
|
710
752
|
|
711
753
|
values = this
|
712
754
|
-%>
|
@@ -714,15 +756,14 @@ To use this tag, the model of the items the user is chosing *must* have unique n
|
|
714
756
|
<div style="display:none" class="item-proto">
|
715
757
|
<div class="item" param="proto-item">
|
716
758
|
<span></span>
|
717
|
-
<input type="hidden" name="#{
|
759
|
+
<input type="hidden" name="#{name}[]" param="proto-hidden"/>
|
718
760
|
<input type="button" class="remove-item" value="#{remove_label || 'Remove'}" param="proto-remove-button"/>
|
719
761
|
</div>
|
720
762
|
</div>
|
721
763
|
<div class="items">
|
722
|
-
<set param-name="¶m_name_for_this"/>
|
723
764
|
<div class="item" param="item" repeat>
|
724
765
|
<span><%= h this.to_s %></span>
|
725
|
-
<input type="hidden" name="#{
|
766
|
+
<input type="hidden" name="#{name}[]" value="@#{h this.id}" disabled="&disabled"
|
726
767
|
param="hidden"/>
|
727
768
|
<input type="button" class="remove-item" value="#{remove_label || 'Remove'}" disabled="&disabled"
|
728
769
|
param="remove-button"/>
|
@@ -851,8 +892,8 @@ The body of the tag will be repeated for each of the current records in the coll
|
|
851
892
|
<field-list merge-attrs="fields" />
|
852
893
|
</div>
|
853
894
|
<div class="buttons">
|
854
|
-
<button class="remove-item" merge-attrs="disabled">-</button>
|
855
|
-
<button class="add-item" if="&last_item?" merge-attrs="disabled">+</button>
|
895
|
+
<button type="button" class="remove-item" merge-attrs="disabled" param="remove-item">-</button>
|
896
|
+
<button type="button" class="add-item" if="&last_item?" merge-attrs="disabled" param="add-item">+</button>
|
856
897
|
</div>
|
857
898
|
</li>
|
858
899
|
<li if="&empty">
|
@@ -862,7 +903,7 @@ The body of the tag will be repeated for each of the current records in the coll
|
|
862
903
|
</div>
|
863
904
|
</fake-field-context>
|
864
905
|
<div class="buttons">
|
865
|
-
<button class="add-item" merge-attrs="disabled">+</button>
|
906
|
+
<button type="button" class="add-item" merge-attrs="disabled" param="add-item">+</button>
|
866
907
|
</div>
|
867
908
|
</li>
|
868
909
|
</ul>
|
@@ -35,7 +35,7 @@ All of the [standard ajax attributes](/api_taglibs/rapid_forms) are also support
|
|
35
35
|
For example, you could use this on a `Friendship` card: the person invited to have friendship would automatically see 'Accept' and 'Decline' buttons, while the person initiating the invite would see 'Retract'.
|
36
36
|
-->
|
37
37
|
<def tag="transition-buttons">
|
38
|
-
<div class="transitions">
|
38
|
+
<div merge-attrs class="transitions">
|
39
39
|
<% this.lifecycle.available_transitions_for(current_user).each do |t| %>
|
40
40
|
<transition-button transition="&t"/>
|
41
41
|
<% end %>
|
@@ -68,7 +68,7 @@ This is a simple tag - just look at the source if you need to know more detail.
|
|
68
68
|
<def tag="account-nav">
|
69
69
|
<do with="¤t_user">
|
70
70
|
<ul class="navigation account-nav" param>
|
71
|
-
<li if="&RAILS_ENV == 'development'"><dev-user-changer/></li>
|
71
|
+
<li if="&RAILS_ENV == 'development'" param="dev-user-changer"><dev-user-changer/></li>
|
72
72
|
<if test="&logged_in?">
|
73
73
|
<li class='nav-item' param="logged-in-as"><a to="¤t_user">Logged in as <name/></a></li>
|
74
74
|
<li class='nav-item' param="account"><a action="account">Account</a></li>
|
@@ -85,5 +85,5 @@ This is a simple tag - just look at the source if you need to know more detail.
|
|
85
85
|
|
86
86
|
<!--- A simple wrapper around the `will_paginate` helper. All options to `will_paginate` are available as attributes -->
|
87
87
|
<def tag="page-nav">
|
88
|
-
<%= will_paginate this, attributes.symbolize_keys.reverse_merge(:inner_window => 2, :
|
88
|
+
<%= will_paginate this, attributes.symbolize_keys.reverse_merge(:inner_window => 2, :previous_label => "« Prev") %>
|
89
89
|
</def>
|
data/taglibs/rapid_plus.dryml
CHANGED
@@ -28,11 +28,12 @@ An [worked example](/tutorials/agility#improve_the_project_page_with_a_searchabl
|
|
28
28
|
<% col = sort_columns[scope.field_path] || scope.field_path
|
29
29
|
sort = sort_field == col && sort_direction == 'asc' ?
|
30
30
|
"-#{col}" : col
|
31
|
-
sort_url = url_for(params.merge(:sort => sort) - [:page])
|
31
|
+
sort_url = url_for(params.merge(:sort => sort) - [:page])
|
32
|
+
col_heading_name = this.member_class.try.view_hints.try.field_name(scope.field_name) || scope.field_name.titleize %>
|
32
33
|
|
33
34
|
<th param="#{scope.field-name}-heading">
|
34
35
|
<a href="&sort_url" class="column-sort"
|
35
|
-
param="#{scope.field-name}-heading-link"><%=
|
36
|
+
param="#{scope.field-name}-heading-link"><%= col_heading_name %></a>
|
36
37
|
<if test="&col == sort_field">
|
37
38
|
<do param="up-arrow" if="&sort_direction == 'desc'">↑</do>
|
38
39
|
<do param="down-arrow" if="&sort_direction == 'asc'">↓</do>
|
@@ -45,7 +46,7 @@ An [worked example](/tutorials/agility#improve_the_project_page_with_a_searchabl
|
|
45
46
|
<do param="empty-message" if="empty?">No <collection-name lowercase/> to display</do>
|
46
47
|
|
47
48
|
|
48
|
-
<page-nav param if="&this.respond_to? :
|
49
|
+
<page-nav param if="&this.respond_to?(:page_count) || this.respond_to?(:total_pages)"/>
|
49
50
|
</div>
|
50
51
|
</def>
|
51
52
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Locke
|
@@ -9,289 +9,233 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
13
|
-
default_executable:
|
12
|
+
date: 2009-10-15 00:00:00 -04:00
|
13
|
+
default_executable: hobo
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: rails
|
17
17
|
type: :runtime
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- - "
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 2.2.2
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: mislav-will_paginate
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.2.1
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: hobosupport
|
37
37
|
type: :runtime
|
38
38
|
version_requirement:
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - "
|
41
|
+
- - "="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: 0.8.9
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
46
|
+
name: hobofields
|
47
47
|
type: :runtime
|
48
48
|
version_requirement:
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - "="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 0.8.9
|
54
54
|
version:
|
55
|
-
description:
|
55
|
+
description:
|
56
56
|
email: tom@tomlocke.com
|
57
57
|
executables:
|
58
58
|
- hobo
|
59
59
|
extensions: []
|
60
60
|
|
61
61
|
extra_rdoc_files:
|
62
|
+
- LICENSE.txt
|
63
|
+
- README
|
64
|
+
files:
|
65
|
+
- CHANGES.txt
|
66
|
+
- LICENSE.txt
|
67
|
+
- README
|
68
|
+
- Rakefile
|
69
|
+
- bin/hobo
|
70
|
+
- doctest/hobo/hobo_helper.rdoctest
|
71
|
+
- doctest/hobo/lifecycles.rdoctest
|
72
|
+
- doctest/scopes.rdoctest
|
73
|
+
- dryml_generators/rapid/cards.dryml.erb
|
74
|
+
- dryml_generators/rapid/forms.dryml.erb
|
75
|
+
- dryml_generators/rapid/pages.dryml.erb
|
76
|
+
- init.rb
|
77
|
+
- lib/action_view_extensions/helpers/tag_helper.rb
|
78
|
+
- lib/active_record/association_collection.rb
|
79
|
+
- lib/active_record/association_proxy.rb
|
80
|
+
- lib/active_record/association_reflection.rb
|
81
|
+
- lib/active_record/viewhints_validations_interceptor.rb
|
62
82
|
- lib/hobo.rb
|
63
|
-
- lib/hobo/
|
64
|
-
- lib/hobo/
|
65
|
-
- lib/hobo/
|
66
|
-
- lib/hobo/
|
67
|
-
- lib/hobo/
|
68
|
-
- lib/hobo/dryml
|
69
|
-
- lib/hobo/dryml/
|
83
|
+
- lib/hobo/accessible_associations.rb
|
84
|
+
- lib/hobo/authentication_support.rb
|
85
|
+
- lib/hobo/bundle.rb
|
86
|
+
- lib/hobo/controller.rb
|
87
|
+
- lib/hobo/dev_controller.rb
|
88
|
+
- lib/hobo/dryml.rb
|
89
|
+
- lib/hobo/dryml/dryml_builder.rb
|
90
|
+
- lib/hobo/dryml/dryml_doc.rb
|
91
|
+
- lib/hobo/dryml/dryml_generator.rb
|
92
|
+
- lib/hobo/dryml/dryml_support_controller.rb
|
70
93
|
- lib/hobo/dryml/parser.rb
|
71
|
-
- lib/hobo/dryml/template_handler.rb
|
72
|
-
- lib/hobo/dryml/parser/source.rb
|
73
|
-
- lib/hobo/dryml/parser/tree_parser.rb
|
74
94
|
- lib/hobo/dryml/parser/attribute.rb
|
75
|
-
- lib/hobo/dryml/parser/text.rb
|
76
95
|
- lib/hobo/dryml/parser/base_parser.rb
|
77
96
|
- lib/hobo/dryml/parser/document.rb
|
78
|
-
- lib/hobo/dryml/parser/elements.rb
|
79
97
|
- lib/hobo/dryml/parser/element.rb
|
80
|
-
- lib/hobo/dryml/
|
81
|
-
- lib/hobo/dryml/
|
82
|
-
- lib/hobo/dryml/
|
83
|
-
- lib/hobo/dryml/
|
98
|
+
- lib/hobo/dryml/parser/elements.rb
|
99
|
+
- lib/hobo/dryml/parser/source.rb
|
100
|
+
- lib/hobo/dryml/parser/text.rb
|
101
|
+
- lib/hobo/dryml/parser/tree_parser.rb
|
84
102
|
- lib/hobo/dryml/part_context.rb
|
85
|
-
- lib/hobo/dryml/template.rb
|
86
|
-
- lib/hobo/dryml/dryml_generator.rb
|
87
103
|
- lib/hobo/dryml/scoped_variables.rb
|
88
|
-
- lib/hobo/
|
104
|
+
- lib/hobo/dryml/tag_parameters.rb
|
105
|
+
- lib/hobo/dryml/taglib.rb
|
106
|
+
- lib/hobo/dryml/template.rb
|
107
|
+
- lib/hobo/dryml/template_environment.rb
|
108
|
+
- lib/hobo/dryml/template_handler.rb
|
109
|
+
- lib/hobo/find_for.rb
|
110
|
+
- lib/hobo/generator.rb
|
89
111
|
- lib/hobo/guest.rb
|
90
|
-
- lib/hobo/user_controller.rb
|
91
|
-
- lib/hobo/rapid_helper.rb
|
92
|
-
- lib/hobo/tasks/rails.rb
|
93
|
-
- lib/hobo/permissions/associations.rb
|
94
|
-
- lib/hobo/include_in_save.rb
|
95
112
|
- lib/hobo/hobo_helper.rb
|
96
|
-
- lib/hobo/
|
97
|
-
- lib/hobo/scopes/apply_scopes.rb
|
98
|
-
- lib/hobo/scopes/automatic_scopes.rb
|
99
|
-
- lib/hobo/scopes/association_proxy_extensions.rb
|
100
|
-
- lib/hobo/bundle.rb
|
101
|
-
- lib/hobo/controller.rb
|
102
|
-
- lib/hobo/find_for.rb
|
113
|
+
- lib/hobo/include_in_save.rb
|
103
114
|
- lib/hobo/lifecycles.rb
|
104
|
-
- lib/hobo/undefined.rb
|
105
|
-
- lib/hobo/user.rb
|
106
|
-
- lib/hobo/dryml.rb
|
107
|
-
- lib/hobo/undefined_access_error.rb
|
108
|
-
- lib/hobo/authentication_support.rb
|
109
|
-
- lib/hobo/dev_controller.rb
|
110
|
-
- lib/hobo/accessible_associations.rb
|
111
|
-
- lib/hobo/scopes.rb
|
112
|
-
- lib/hobo/view_hints.rb
|
113
|
-
- lib/hobo/generator.rb
|
114
|
-
- lib/hobo/static_tags
|
115
|
-
- lib/hobo/model_router.rb
|
116
|
-
- lib/hobo/model_controller.rb
|
117
|
-
- lib/hobo/model.rb
|
118
|
-
- lib/action_view_extensions/helpers/tag_helper.rb
|
119
|
-
- lib/active_record/association_proxy.rb
|
120
|
-
- lib/active_record/association_reflection.rb
|
121
|
-
- lib/active_record/association_collection.rb
|
122
|
-
- lib/active_record/viewhints_validations_interceptor.rb
|
123
|
-
- bin/hobo
|
124
|
-
- tasks/hobo_tasks.rake
|
125
|
-
- tasks/environments.rake
|
126
|
-
- LICENSE.txt
|
127
|
-
- README
|
128
|
-
files:
|
129
|
-
- lib/hobo.rb
|
130
|
-
- lib/hobo/lifecycles/state.rb
|
131
|
-
- lib/hobo/lifecycles/transition.rb
|
132
115
|
- lib/hobo/lifecycles/actions.rb
|
133
116
|
- lib/hobo/lifecycles/creator.rb
|
134
117
|
- lib/hobo/lifecycles/lifecycle.rb
|
135
|
-
- lib/hobo/
|
136
|
-
- lib/hobo/
|
137
|
-
- lib/hobo/
|
138
|
-
- lib/hobo/
|
139
|
-
- lib/hobo/
|
140
|
-
- lib/hobo/dryml/parser/tree_parser.rb
|
141
|
-
- lib/hobo/dryml/parser/attribute.rb
|
142
|
-
- lib/hobo/dryml/parser/text.rb
|
143
|
-
- lib/hobo/dryml/parser/base_parser.rb
|
144
|
-
- lib/hobo/dryml/parser/document.rb
|
145
|
-
- lib/hobo/dryml/parser/elements.rb
|
146
|
-
- lib/hobo/dryml/parser/element.rb
|
147
|
-
- lib/hobo/dryml/taglib.rb
|
148
|
-
- lib/hobo/dryml/dryml_support_controller.rb
|
149
|
-
- lib/hobo/dryml/dryml_builder.rb
|
150
|
-
- lib/hobo/dryml/dryml_doc.rb
|
151
|
-
- lib/hobo/dryml/part_context.rb
|
152
|
-
- lib/hobo/dryml/template.rb
|
153
|
-
- lib/hobo/dryml/dryml_generator.rb
|
154
|
-
- lib/hobo/dryml/scoped_variables.rb
|
118
|
+
- lib/hobo/lifecycles/state.rb
|
119
|
+
- lib/hobo/lifecycles/transition.rb
|
120
|
+
- lib/hobo/model.rb
|
121
|
+
- lib/hobo/model_controller.rb
|
122
|
+
- lib/hobo/model_router.rb
|
155
123
|
- lib/hobo/permissions.rb
|
156
|
-
- lib/hobo/guest.rb
|
157
|
-
- lib/hobo/user_controller.rb
|
158
|
-
- lib/hobo/rapid_helper.rb
|
159
|
-
- lib/hobo/tasks/rails.rb
|
160
124
|
- lib/hobo/permissions/associations.rb
|
161
|
-
- lib/hobo/
|
162
|
-
- lib/hobo/
|
163
|
-
- lib/hobo/scopes/named_scope_extensions.rb
|
125
|
+
- lib/hobo/rapid_helper.rb
|
126
|
+
- lib/hobo/scopes.rb
|
164
127
|
- lib/hobo/scopes/apply_scopes.rb
|
165
|
-
- lib/hobo/scopes/automatic_scopes.rb
|
166
128
|
- lib/hobo/scopes/association_proxy_extensions.rb
|
167
|
-
- lib/hobo/
|
168
|
-
- lib/hobo/
|
169
|
-
- lib/hobo/
|
170
|
-
- lib/hobo/
|
129
|
+
- lib/hobo/scopes/automatic_scopes.rb
|
130
|
+
- lib/hobo/scopes/named_scope_extensions.rb
|
131
|
+
- lib/hobo/static_tags
|
132
|
+
- lib/hobo/tasks/rails.rb
|
171
133
|
- lib/hobo/undefined.rb
|
172
|
-
- lib/hobo/user.rb
|
173
|
-
- lib/hobo/dryml.rb
|
174
134
|
- lib/hobo/undefined_access_error.rb
|
175
|
-
- lib/hobo/
|
176
|
-
- lib/hobo/
|
177
|
-
- lib/hobo/accessible_associations.rb
|
178
|
-
- lib/hobo/scopes.rb
|
135
|
+
- lib/hobo/user.rb
|
136
|
+
- lib/hobo/user_controller.rb
|
179
137
|
- lib/hobo/view_hints.rb
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
183
|
-
- lib/hobo/model_controller.rb
|
184
|
-
- lib/hobo/model.rb
|
185
|
-
- lib/action_view_extensions/helpers/tag_helper.rb
|
186
|
-
- lib/active_record/association_proxy.rb
|
187
|
-
- lib/active_record/association_reflection.rb
|
188
|
-
- lib/active_record/association_collection.rb
|
189
|
-
- lib/active_record/viewhints_validations_interceptor.rb
|
190
|
-
- bin/hobo
|
191
|
-
- Rakefile
|
192
|
-
- tasks/hobo_tasks.rake
|
193
|
-
- tasks/environments.rake
|
194
|
-
- CHANGES.txt
|
195
|
-
- taglibs/rapid_document_tags.dryml
|
196
|
-
- taglibs/rapid_support.dryml
|
197
|
-
- taglibs/rapid_navigation.dryml
|
198
|
-
- taglibs/rapid_generics.dryml
|
199
|
-
- taglibs/rapid_user_pages.dryml
|
200
|
-
- taglibs/core.dryml
|
201
|
-
- taglibs/rapid_lifecycles.dryml
|
202
|
-
- taglibs/rapid.dryml
|
203
|
-
- taglibs/rapid_editing.dryml
|
204
|
-
- taglibs/rapid_pages.dryml
|
205
|
-
- taglibs/rapid_core.dryml
|
206
|
-
- taglibs/rapid_forms.dryml
|
207
|
-
- taglibs/rapid_plus.dryml
|
208
|
-
- rails_generators/hobo_user_controller/templates/functional_test.rb
|
209
|
-
- rails_generators/hobo_user_controller/templates/helper.rb
|
210
|
-
- rails_generators/hobo_user_controller/templates/controller.rb
|
211
|
-
- rails_generators/hobo_user_controller/USAGE
|
212
|
-
- rails_generators/hobo_user_controller/hobo_user_controller_generator.rb
|
213
|
-
- rails_generators/hobo_rapid/templates/IE7.js
|
214
|
-
- rails_generators/hobo_rapid/templates/reset.css
|
215
|
-
- rails_generators/hobo_rapid/templates/blank.gif
|
216
|
-
- rails_generators/hobo_rapid/templates/lowpro.js
|
217
|
-
- rails_generators/hobo_rapid/templates/ie7-recalc.js
|
218
|
-
- rails_generators/hobo_rapid/templates/hobo-rapid.js
|
219
|
-
- rails_generators/hobo_rapid/templates/themes/clean/views/clean.dryml
|
220
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/clean.css
|
221
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/rapid-ui.css
|
222
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/fieldbg.gif
|
223
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/pencil.png
|
224
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/50-ACD3E6-fff.png
|
225
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/small_close.png
|
226
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/100-3B5F87-ACD3E6.png
|
227
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/300-ACD3E6-fff.png
|
228
|
-
- rails_generators/hobo_rapid/templates/themes/clean/public/images/spinner.gif
|
229
|
-
- rails_generators/hobo_rapid/templates/hobo-rapid.css
|
230
|
-
- rails_generators/hobo_rapid/hobo_rapid_generator.rb
|
138
|
+
- rails_generators/hobo/hobo_generator.rb
|
139
|
+
- rails_generators/hobo/templates/application.css
|
140
|
+
- rails_generators/hobo/templates/application.dryml
|
231
141
|
- rails_generators/hobo/templates/dryml-support.js
|
232
142
|
- rails_generators/hobo/templates/guest.rb
|
233
|
-
- rails_generators/hobo/templates/application.dryml
|
234
143
|
- rails_generators/hobo/templates/initializer.rb
|
235
|
-
- rails_generators/
|
236
|
-
- rails_generators/
|
144
|
+
- rails_generators/hobo_admin_site/hobo_admin_site_generator.rb
|
145
|
+
- rails_generators/hobo_admin_site/templates/admin.css
|
146
|
+
- rails_generators/hobo_admin_site/templates/application.dryml
|
147
|
+
- rails_generators/hobo_admin_site/templates/controller.rb
|
148
|
+
- rails_generators/hobo_admin_site/templates/site_taglib.dryml
|
149
|
+
- rails_generators/hobo_admin_site/templates/users_index.dryml
|
150
|
+
- rails_generators/hobo_front_controller/USAGE
|
237
151
|
- rails_generators/hobo_front_controller/hobo_front_controller_generator.rb
|
152
|
+
- rails_generators/hobo_front_controller/templates/controller.rb
|
238
153
|
- rails_generators/hobo_front_controller/templates/functional_test.rb
|
239
154
|
- rails_generators/hobo_front_controller/templates/helper.rb
|
240
|
-
- rails_generators/hobo_front_controller/templates/controller.rb
|
241
155
|
- rails_generators/hobo_front_controller/templates/index.dryml
|
242
|
-
- rails_generators/
|
243
|
-
- rails_generators/
|
244
|
-
- rails_generators/hobo_user_model/templates/fixtures.yml
|
245
|
-
- rails_generators/hobo_user_model/templates/unit_test.rb
|
246
|
-
- rails_generators/hobo_user_model/templates/forgot_password.erb
|
247
|
-
- rails_generators/hobo_user_model/templates/model.rb
|
248
|
-
- rails_generators/hobo_user_model/USAGE
|
249
|
-
- rails_generators/hobo_user_model/hobo_user_model_generator.rb
|
156
|
+
- rails_generators/hobo_model/USAGE
|
157
|
+
- rails_generators/hobo_model/hobo_model_generator.rb
|
250
158
|
- rails_generators/hobo_model/templates/fixtures.yml
|
251
|
-
- rails_generators/hobo_model/templates/unit_test.rb
|
252
159
|
- rails_generators/hobo_model/templates/hints.rb
|
253
160
|
- rails_generators/hobo_model/templates/model.rb
|
254
|
-
- rails_generators/hobo_model/
|
255
|
-
- rails_generators/hobo_model/hobo_model_generator.rb
|
256
|
-
- rails_generators/hobo_model_controller/templates/functional_test.rb
|
257
|
-
- rails_generators/hobo_model_controller/templates/helper.rb
|
258
|
-
- rails_generators/hobo_model_controller/templates/controller.rb
|
161
|
+
- rails_generators/hobo_model/templates/unit_test.rb
|
259
162
|
- rails_generators/hobo_model_controller/USAGE
|
260
163
|
- rails_generators/hobo_model_controller/hobo_model_controller_generator.rb
|
164
|
+
- rails_generators/hobo_model_controller/templates/controller.rb
|
165
|
+
- rails_generators/hobo_model_controller/templates/functional_test.rb
|
166
|
+
- rails_generators/hobo_model_controller/templates/helper.rb
|
167
|
+
- rails_generators/hobo_model_resource/hobo_model_resource_generator.rb
|
168
|
+
- rails_generators/hobo_model_resource/templates/controller.rb
|
261
169
|
- rails_generators/hobo_model_resource/templates/functional_test.rb
|
262
170
|
- rails_generators/hobo_model_resource/templates/helper.rb
|
263
|
-
- rails_generators/
|
264
|
-
- rails_generators/
|
171
|
+
- rails_generators/hobo_rapid/hobo_rapid_generator.rb
|
172
|
+
- rails_generators/hobo_rapid/templates/IE7.js
|
173
|
+
- rails_generators/hobo_rapid/templates/blank.gif
|
174
|
+
- rails_generators/hobo_rapid/templates/hobo-rapid.css
|
175
|
+
- rails_generators/hobo_rapid/templates/hobo-rapid.js
|
176
|
+
- rails_generators/hobo_rapid/templates/ie7-recalc.js
|
177
|
+
- rails_generators/hobo_rapid/templates/lowpro.js
|
178
|
+
- rails_generators/hobo_rapid/templates/reset.css
|
179
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/101-3B5F87-ACD3E6.png
|
180
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/30-3E547A-242E42.png
|
181
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/30-DBE1E5-FCFEF5.png
|
182
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/300-ACD3E6-fff.png
|
183
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/50-ACD3E6-fff.png
|
184
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/fieldbg.gif
|
185
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/pencil.png
|
186
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/small_close.png
|
187
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/images/spinner.gif
|
188
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/clean.css
|
189
|
+
- rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/rapid-ui.css
|
190
|
+
- rails_generators/hobo_rapid/templates/themes/clean/views/clean.dryml
|
191
|
+
- rails_generators/hobo_subsite/hobo_subsite_generator.rb
|
265
192
|
- rails_generators/hobo_subsite/templates/application.dryml
|
266
193
|
- rails_generators/hobo_subsite/templates/controller.rb
|
267
194
|
- rails_generators/hobo_subsite/templates/site_taglib.dryml
|
268
|
-
- rails_generators/
|
269
|
-
-
|
270
|
-
-
|
271
|
-
-
|
195
|
+
- rails_generators/hobo_user_controller/USAGE
|
196
|
+
- rails_generators/hobo_user_controller/hobo_user_controller_generator.rb
|
197
|
+
- rails_generators/hobo_user_controller/templates/accept_invitation.dryml
|
198
|
+
- rails_generators/hobo_user_controller/templates/controller.rb
|
199
|
+
- rails_generators/hobo_user_controller/templates/functional_test.rb
|
200
|
+
- rails_generators/hobo_user_controller/templates/helper.rb
|
201
|
+
- rails_generators/hobo_user_model/USAGE
|
202
|
+
- rails_generators/hobo_user_model/hobo_user_model_generator.rb
|
203
|
+
- rails_generators/hobo_user_model/templates/fixtures.yml
|
204
|
+
- rails_generators/hobo_user_model/templates/forgot_password.erb
|
205
|
+
- rails_generators/hobo_user_model/templates/invite.erb
|
206
|
+
- rails_generators/hobo_user_model/templates/mailer.rb
|
207
|
+
- rails_generators/hobo_user_model/templates/model.rb
|
208
|
+
- rails_generators/hobo_user_model/templates/unit_test.rb
|
272
209
|
- script/destroy
|
273
210
|
- script/generate
|
274
|
-
-
|
275
|
-
-
|
276
|
-
-
|
277
|
-
-
|
211
|
+
- taglibs/core.dryml
|
212
|
+
- taglibs/rapid.dryml
|
213
|
+
- taglibs/rapid_core.dryml
|
214
|
+
- taglibs/rapid_document_tags.dryml
|
215
|
+
- taglibs/rapid_editing.dryml
|
216
|
+
- taglibs/rapid_forms.dryml
|
217
|
+
- taglibs/rapid_generics.dryml
|
218
|
+
- taglibs/rapid_lifecycles.dryml
|
219
|
+
- taglibs/rapid_navigation.dryml
|
220
|
+
- taglibs/rapid_pages.dryml
|
221
|
+
- taglibs/rapid_plus.dryml
|
222
|
+
- taglibs/rapid_support.dryml
|
223
|
+
- taglibs/rapid_user_pages.dryml
|
224
|
+
- tasks/environments.rake
|
225
|
+
- tasks/hobo_tasks.rake
|
226
|
+
- test/generators/test_generator_helper.rb
|
227
|
+
- test/generators/test_helper.rb
|
228
|
+
- test/generators/test_hobo_model_controller_generator.rb
|
278
229
|
- test/permissions/models/models.rb
|
279
230
|
- test/permissions/models/schema.rb
|
280
231
|
- test/permissions/test_permissions.rb
|
281
|
-
- test/generators/test_hobo_model_controller_generator.rb
|
282
|
-
- test/generators/test_generator_helper.rb
|
283
|
-
- test/generators/test_helper.rb
|
284
|
-
- hobo.gemspec
|
285
232
|
has_rdoc: true
|
286
233
|
homepage: http://hobocentral.net/
|
234
|
+
licenses: []
|
235
|
+
|
287
236
|
post_install_message:
|
288
237
|
rdoc_options:
|
289
|
-
- --
|
290
|
-
- --inline-source
|
291
|
-
- --title
|
292
|
-
- Hobo
|
293
|
-
- --main
|
294
|
-
- README
|
238
|
+
- --charset=UTF-8
|
295
239
|
require_paths:
|
296
240
|
- lib
|
297
241
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -304,17 +248,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
304
248
|
requirements:
|
305
249
|
- - ">="
|
306
250
|
- !ruby/object:Gem::Version
|
307
|
-
version: "
|
251
|
+
version: "0"
|
308
252
|
version:
|
309
253
|
requirements: []
|
310
254
|
|
311
255
|
rubyforge_project: hobo
|
312
|
-
rubygems_version: 1.3.
|
256
|
+
rubygems_version: 1.3.5
|
313
257
|
signing_key:
|
314
|
-
specification_version:
|
258
|
+
specification_version: 3
|
315
259
|
summary: The web app builder for Rails
|
316
|
-
test_files:
|
317
|
-
|
318
|
-
- test/generators/test_helper.rb
|
319
|
-
- test/generators/test_hobo_model_controller_generator.rb
|
320
|
-
- test/permissions/test_permissions.rb
|
260
|
+
test_files: []
|
261
|
+
|