marley 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,7 @@ module Marley
11
11
  filters.inject(self.dataset.filter(:parent_id => nil)) {|ds,f| ds.filter(f)}
12
12
  end
13
13
  def list(params=nil)
14
- (params.is_a?(Sequel::Dataset) ? params : topics(params)).map{|t| t.thread}
14
+ (params.is_a?(Sequel::Dataset) ? params : topics(params)).eager(associations).all.map{|t| t.thread}
15
15
  end
16
16
  end
17
17
  module InstanceMethods
@@ -19,12 +19,12 @@ module Marley
19
19
  super.push(:topic_id, :parent_id)
20
20
  end
21
21
  def children
22
- self.class.filter(:parent_id => id).all
22
+ self.class.filter(:parent_id => id).eager(associations)
23
23
  end
24
24
  def thread
25
- return reggae_instance if children.length==0
25
+ return reggae_instance if children.all.length==0
26
26
  foo=reggae_instance
27
- foo[2] = children.map{|m| m.thread}
27
+ foo[2] = children.all.map{|m| m.thread}
28
28
  foo
29
29
  end
30
30
  def before_save
@@ -36,7 +36,7 @@ module Marley
36
36
  end
37
37
  Marley::Utils.many_to_many_join(self, MR::User)
38
38
  def self.list_dataset
39
- filter(:id => DB[:messages_users].filter(:user_id => current_user[:id]).select(:message_id))
39
+ super.filter(:messages__id => DB[:messages_users].filter(:user_id => current_user[:id]).select(:message_id))
40
40
  end
41
41
  def current_user_role
42
42
  super || (self.users.include?(self.class.current_user) && 'recipient')
@@ -1,30 +1,13 @@
1
1
  module Marley
2
2
  module Plugins
3
3
  class Tagging < Plugin
4
- @default_opts={:join_type => 'many_to_many', :add_to_write_cols? => true}
4
+ @default_opts={:concat_tags => true}
5
5
  def apply(*klasses)
6
6
  klasses.each do |klass|
7
7
  klass=MR.const_get(klass) if klass.is_a?(String)
8
- # not crazy about this nested if shit. there may be a better way...
9
- if val=klass.instance_variable_get('@derived_after_cols')
10
- if val[:new?]
11
- val[:new?][:all] << @tag_col_name.to_sym
12
- else
13
- val[:new?]={:all => [@tag_col_name.to_sym]}
14
- end
15
- else
16
- klass.instance_variable_set('@derived_after_cols',{:new? => {:all => [@tag_col_name.to_sym]}})
17
- end
8
+ klass.derived_after_cols![:new?][:all] << @tag_col_name.to_sym
18
9
  @instance_methods_mod.send(:append_features,klass)
19
- tag_class=@tag_class
20
- join_type=@opts[:"#{klass}_join_type"] || @opts[:join_type]
21
- if join_type=='many_to_many'
22
- Marley::Utils.many_to_many_join(klass, tag_class)
23
- else
24
- reciprocal_join=join_type.split('_').reverse.join('_')
25
- tag_class.send(reciprocal_join.to_sym, klass.resource_name.pluralize.to_sym, {:class => klass})
26
- klass.send(join_type.to_sym, tag_class.resource_name.pluralize.to_sym, {:class => tag_class})
27
- end
10
+ Marley::Utils.many_to_many_join(klass, @tag_class)
28
11
  end
29
12
  end
30
13
  def initialize(opts={})
@@ -33,15 +16,14 @@ module Marley
33
16
  tag_col_name=@tag_col_name="_#{@tag_type}_tags"
34
17
  tag_class=@tag_class=MR.const_get(@tag_col_name.sub(/^_/,'').singularize.camelcase)
35
18
  tags_ds_name=@tags_ds_name="#{tag_col_name.sub(/^_/,'')}_dataset"
36
- add_to_write_cols=@opts[:add_to_write_cols?]
37
19
  @instance_methods_mod=Module.new do |m|
38
20
  attr_accessor tag_col_name
39
- if add_to_write_cols
40
- define_method(:write_cols) {
41
- super << tag_col_name.to_sym
42
- }
43
- end
21
+ define_method(:write_cols) {
22
+ super << tag_col_name.to_sym
23
+ }
44
24
 
25
+ #list dataset should take care of most of this
26
+
45
27
  define_method("#{tag_col_name}_ds".to_sym) { #e.g. _private_tags_ds
46
28
  send(tags_ds_name).filter({:tags__user_id => (tag_class.associations.include?(:user) ? self.class.current_user[:id] : nil)})
47
29
  }
@@ -70,6 +52,10 @@ module Marley
70
52
  class Tags < Joint
71
53
  module Resources
72
54
  class Tag < Sequel::Model
55
+ sti
56
+ def self.list_dataset
57
+ dataset.order(:tag)
58
+ end
73
59
  def validate
74
60
  validates_presence :tag
75
61
  validates_unique [:tag,:user_id]
@@ -85,12 +71,11 @@ module Marley
85
71
  end
86
72
  class PublicTag < Tag
87
73
  @owner_col=nil
88
- set_dataset DB[:tags].filter(:tags__user_id => nil).order(:tag)
89
74
  end
90
75
  class PrivateTag < Tag
91
76
  MR::User.join_to(self) if MR::User
92
77
  def self.list_dataset
93
- current_user_dataset.order(:tag)
78
+ current_user_ds.order(:tag)
94
79
  end
95
80
  end
96
81
  end
@@ -48,16 +48,7 @@ module Marley
48
48
  def current_user_role
49
49
  if u=self.class.current_user
50
50
  return 'new' if u.new?
51
- return "owner" if (@owners||=owners).include?(u) #avoid multiple calls to `owners`
52
- end
53
- end
54
- def owners
55
- if self.class.to_s.match(/User$/)||self.class.superclass.to_s.match(/User$/)
56
- [self]
57
- elsif self.class.owner_col
58
- [MR::User[send(self.class.owner_col)]]
59
- else
60
- self.class.association_reflections.select {|k,v| v[:type]==:many_to_one}.map {|a| self.send(a[0]) && self.send(a[0]).owners}.flatten.compact
51
+ return "owner" if send_or_nil(self.class.owner_col)==u[:id]
61
52
  end
62
53
  end
63
54
  end
@@ -70,18 +61,19 @@ module Marley
70
61
  LOGIN_FORM= [:instance,{:name => 'login',:url => 'main_menu',:description => 'Existing users please log in here:',:new_rec => true,:schema => [[:text,'name',RESTRICT_REQ],[:password,'password',RESTRICT_REQ]]}]
71
62
  Marley.plugin('current_user_methods').apply(self)
72
63
  MU.sti(self)
73
- @owner_col=nil
64
+ @owner_col=:id
74
65
  required_cols![:new?][true]=['password','confirm_password']
75
66
  derived_after_cols![:new?]={true => [:password,:confirm_password]}
76
67
  derived_after_cols![:current_user_role]={'owner' => [:old_password,:password,:confirm_password]}
77
68
  reject_cols![:current_user_role]={:all => ['pw_hash']}
78
69
  ro_cols![:current_user_role]={'new' => ['id'],nil => [/.*/]}
70
+ def after_initialize;end
79
71
  def self.join_to(klass, user_id_col_name=nil)
80
- user_id_col_name||='user_id'
72
+ user_id_col_name||=:user_id
81
73
  klass=MR.const_get(klass) if klass.class==String
82
74
  Marley.plugin(:current_user_methods).apply(klass)
83
75
  klass.owner_col!=user_id_col_name
84
- one_to_many klass.resource_name.to_sym, :class => klass, :key => user_id_col_name
76
+ one_to_many klass.resource_name.pluralize.to_sym, :class => klass, :key => user_id_col_name
85
77
  klass.send(:many_to_one, :user, :class => MR::User, :key => user_id_col_name)
86
78
  end
87
79
  attr_accessor :old_password,:password, :confirm_password
@@ -25,12 +25,11 @@ module Marley
25
25
 
26
26
  def foreign_key_name; :"#{(respond_to?(:table_name) ? table_name : resource_name).to_s.singularize}_id"; end
27
27
 
28
+ def list_dataset
29
+ dataset
30
+ end
28
31
  def list(params={})
29
- if respond_to?(:list_dataset)
30
- list_dataset.filter(params).all
31
- else
32
- filter(params).all
33
- end
32
+ list_dataset.filter(params).all
34
33
  end
35
34
  def sti
36
35
  plugin :single_table_inheritance, :"#{self.to_s.sub(/.*::/,'').underscore}_type", :model_map => lambda{|v| MR.const_get(v.to_sym)}, :key_map => lambda{|klass|klass.name.sub(/.*::/,'')}
data/lib/marley/utils.rb CHANGED
@@ -57,7 +57,7 @@ module Marley
57
57
  klass.plugin :single_table_inheritance, :"#{klass.to_s.sub(/.*::/,'').underscore}_type", :model_map => lambda{|v| MR.const_get(v.to_sym)}, :key_map => lambda{|clss|clss.name.sub(/.*::/,'')}
58
58
  end
59
59
  def self.many_to_many_join(lclass, rclass)
60
- join_table=[lclass.table_name.to_s,rclass.table_name.to_s ].sort.join('_')
60
+ join_table=[lclass.table_name.to_s,rclass.table_name.to_s ].sort.join('_').to_sym
61
61
  lclass.many_to_many(rclass.resource_name.pluralize.to_sym,:join_table => join_table,:class =>rclass, :left_key => lclass.foreign_key_name, :right_key => rclass.foreign_key_name)
62
62
  rclass.many_to_many(lclass.resource_name.pluralize.to_sym,:join_table => join_table, :class =>lclass,:left_key => rclass.foreign_key_name, :right_key => lclass.foreign_key_name)
63
63
  end
data/rdoc/tags_joint.rb CHANGED
@@ -3,6 +3,7 @@ require 'user_joint.rb'
3
3
  DB.create_table :tags do
4
4
  primary_key :id
5
5
  integer :user_id
6
+ text :tag_type
6
7
  text :tag
7
8
  end
8
9
  DB.create_table :messages_tags do
@@ -30,7 +30,7 @@ examples:
30
30
  => [:instance, {:schema=>[[:integer, :id, 2, 1], [:integer, :user_id, 3, 1], [:text, :name, 4, "user1 secret1"], [:text, :message, 0, nil], [:text, :_private_tags, 0, "foo"]], :url=>"/secret/1", :new_rec=>false, :actions=>nil, :name=>"secret"}, []]
31
31
 
32
32
  >> DB[:tags].all
33
- => [{:tag=>"xxxxxx", :id=>1, :user_id=>1}, {:tag=>"sss", :id=>2, :user_id=>1}, {:tag=>"sss", :id=>3, :user_id=>1}, {:tag=>"zzz", :id=>4, :user_id=>1}, {:tag=>"aaa", :id=>5, :user_id=>1}, {:tag=>"foo", :id=>6, :user_id=>1}]
33
+ => [{:tag=>"xxxxxx", :id=>1, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"sss", :id=>2, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"sss", :id=>3, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"zzz", :id=>4, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"aaa", :id=>5, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"foo", :id=>6, :tag_type=>"PrivateTag", :user_id=>1}]
34
34
  >> DB[:messages_tags].all
35
35
  => [{:tag_id=>6, :message_id=>1, :id=>7}]
36
36
 
@@ -58,7 +58,7 @@ examples:
58
58
  => [:instance, {:schema=>[[:integer, :id, 2, 2], [:integer, :user_id, 3, 2], [:text, :name, 4, "user2 secret"], [:text, :message, 0, nil], [:text, :_private_tags, 0, "boo"]], :url=>"/secret/2", :new_rec=>false, :actions=>nil, :name=>"secret"}, []]
59
59
 
60
60
  >> DB[:tags].all
61
- => [{:tag=>"xxxxxx", :id=>1, :user_id=>1}, {:tag=>"sss", :id=>2, :user_id=>1}, {:tag=>"sss", :id=>3, :user_id=>1}, {:tag=>"zzz", :id=>4, :user_id=>1}, {:tag=>"aaa", :id=>5, :user_id=>1}, {:tag=>"foo", :id=>6, :user_id=>1}, {:tag=>"foo", :id=>7, :user_id=>2}, {:tag=>"bar", :id=>8, :user_id=>2}, {:tag=>"bar", :id=>9, :user_id=>2}, {:tag=>"baz", :id=>10, :user_id=>2}, {:tag=>"bat", :id=>11, :user_id=>2}, {:tag=>"boo", :id=>12, :user_id=>2}]
61
+ => [{:tag=>"xxxxxx", :id=>1, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"sss", :id=>2, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"sss", :id=>3, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"zzz", :id=>4, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"aaa", :id=>5, :tag_type=>"PrivateTag", :user_id=>1}, {:tag=>"foo", :id=>6, :tag_type=>"PrivateTag",:user_id=>1}, {:tag=>"foo", :id=>7, :tag_type=>"PrivateTag", :user_id=>2}, {:tag=>"bar", :id=>8, :tag_type=>"PrivateTag", :user_id=>2}, {:tag=>"bar", :id=>9, :tag_type=>"PrivateTag", :user_id=>2}, {:tag=>"baz", :id=>10, :tag_type=>"PrivateTag", :user_id=>2}, {:tag=>"bat", :id=>11, :tag_type=>"PrivateTag", :user_id=>2}, {:tag=>"boo", :id=>12, :tag_type=>"PrivateTag", :user_id=>2}]
62
62
  >> DB[:messages_tags].all
63
63
  => [{:tag_id=>6, :message_id=>1, :id=>7}, {:tag_id=>12, :message_id=>2, :id=>14}]
64
64
 
@@ -37,7 +37,7 @@ example: user1 logged in
37
37
  >> @user1.set_values(:confirm_password => 'zxcvzxcv',:old_password => 'asdfasdf')
38
38
  => [:instance, {:new_rec=>false, :actions=>nil, :schema=>[[:integer, :id, 2, 1], [:text, :name, 0, "user1"], [:text, :email, 0, nil], [:date, :birthday, 0, nil], [:datetime, :date_created, 2, "date_created"], [:text, :description, 0, nil], [:password, :old_password, 0, "asdfasdf"], [:password, :password, 0, "zxcvzxcv"], [:password, :confirm_password, 0, "zxcvzxcv"]], :name=>"user", :url=>"/user/1"}, []]
39
39
  >> @client.update(@user1)
40
- => [:instance, {:new_rec=>false, :actions=>nil, :schema=>[[:integer, :id, 2, 1], [:text, :name, 2, "user1"], [:text, :email, 2, nil], [:date, :birthday, 2, nil], [:datetime, :date_created, 2, "date_created"], [:text, :description, 2, nil]], :name=>"user", :url=>"/user/1"}, []]
40
+ => [:instance, {:new_rec=>false, :actions=>nil, :schema=>[[:integer, :id, 2, 1], [:text, :name, 0, "user1"], [:text, :email, 0, nil], [:date, :birthday, 0, nil], [:datetime, :date_created, 2, "date_created"], [:text, :description, 0, nil], [:password, :old_password, 0, "asdfasdf"], [:password, :password, 0, "zxcvzxcv"], [:password, :confirm_password, 0, "zxcvzxcv"]], :name=>"user", :url=>"/user/1"}, []]
41
41
  >> @client.read({},:code => 401)
42
42
  => [:error, {:error_type=>"authentication", :error_details=>nil, :description=>nil}]
43
43
  >> @client.read({},:auth => ['user1', 'zxcvzxcv'])
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marley
3
3
  version: !ruby/object:Gem::Version
4
- hash: 92329988
5
- prerelease:
6
- segments:
7
- - 0
8
- - 7
9
- - 1
10
- version: 0.7.1
4
+ version: 0.7.2
11
5
  platform: ruby
12
6
  authors:
13
7
  - Herb Daily
@@ -15,95 +9,70 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2012-03-21 00:00:00 Z
12
+ date: 2012-03-24 00:00:00 -03:00
13
+ default_executable:
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: sequel
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
25
20
  requirements:
26
21
  - - ~>
27
22
  - !ruby/object:Gem::Version
28
- hash: 869193570
29
- segments:
30
- - 3
31
23
  version: "3"
32
- type: :runtime
33
- version_requirements: *id001
24
+ version:
34
25
  - !ruby/object:Gem::Dependency
35
26
  name: rack
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
39
30
  requirements:
40
31
  - - ~>
41
32
  - !ruby/object:Gem::Version
42
- hash: 32663276
43
- segments:
44
- - 2
45
33
  version: "2"
46
- type: :runtime
47
- version_requirements: *id002
34
+ version:
48
35
  - !ruby/object:Gem::Dependency
49
36
  name: json
50
- prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- none: false
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
53
40
  requirements:
54
41
  - - ~>
55
42
  - !ruby/object:Gem::Version
56
- hash: 349180216
57
- segments:
58
- - 1
59
- - 6
60
43
  version: "1.6"
61
- type: :runtime
62
- version_requirements: *id003
44
+ version:
63
45
  - !ruby/object:Gem::Dependency
64
46
  name: sqlite3
65
- prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- none: false
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
68
50
  requirements:
69
51
  - - ~>
70
52
  - !ruby/object:Gem::Version
71
- hash: 869193570
72
- segments:
73
- - 3
74
53
  version: "3"
75
- type: :development
76
- version_requirements: *id004
54
+ version:
77
55
  - !ruby/object:Gem::Dependency
78
56
  name: rack-test
79
- prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
81
- none: false
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
82
60
  requirements:
83
61
  - - ~>
84
62
  - !ruby/object:Gem::Version
85
- hash: 881230260
86
- segments:
87
- - 0
88
63
  version: "0"
89
- type: :development
90
- version_requirements: *id005
64
+ version:
91
65
  - !ruby/object:Gem::Dependency
92
66
  name: tdoc
93
- prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
95
- none: false
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
96
70
  requirements:
97
71
  - - ~>
98
72
  - !ruby/object:Gem::Version
99
- hash: 3846723
100
- segments:
101
- - 0
102
- - 16
103
73
  version: "0.16"
104
- type: :development
105
- version_requirements: *id006
106
- description: "Marley is a framework for quickly building RESTful web services and applications. Development is fast because Marley implements lots of sensible defaults, all of which can be overridden and most of which can be overridden easily. "
74
+ version:
75
+ description: "Marley is a framework for quickly building RESTful web services and applications. Development is fast for two reasons: Marley implements lots of sensible defaults, all of which can be overridden and most of which can be overridden easily. And Marley servers exchange only data and metadata with clients. "
107
76
  email: herb.daily@safe-mail.net
108
77
  executables: []
109
78
 
@@ -120,29 +89,25 @@ files:
120
89
  - lib/marley/plugin.rb
121
90
  - lib/marley/resources.rb
122
91
  - lib/marley/router.rb
123
- - lib/marley/utils.rb
124
- - lib/marley/joint.rb
125
- - lib/marley/controllers.rb
126
- - lib/marley/errors.rb
127
- - lib/marley/reggae.rb
128
- - lib/client/marley/jamaica.rb
129
- - lib/client/marley/client/jamaica.css
130
- - lib/client/marley/client/_prevel-full.js
131
- - lib/client/marley/client/prevel-ext.js
132
- - lib/client/marley/client/jamaica.js
133
- - lib/client/marley/client/reggae.js
134
92
  - lib/marley/joints/forum.rb
135
93
  - lib/marley/joints/messages.rb
136
94
  - lib/marley/joints/section.rb
137
95
  - lib/marley/joints/user.rb
138
96
  - lib/marley/joints/tags.rb
97
+ - lib/marley/utils.rb
98
+ - lib/marley/joint.rb
139
99
  - lib/marley/plugins/orm_rest_convenience.rb
140
100
  - lib/marley/plugins/rest_convenience.rb
101
+ - lib/marley/controllers.rb
102
+ - lib/marley/errors.rb
103
+ - lib/marley/reggae.rb
141
104
  - rdoc/orm_rest_convenience_plugin.rb
142
105
  - rdoc/section_joint.rb
143
106
  - rdoc/forum_load.rb
144
107
  - rdoc/forum_joint.rb
145
108
  - rdoc/tags_joint.rdoc
109
+ - rdoc/user_joint/no_auth_provided.rdoc
110
+ - rdoc/user_joint/exiting_users.rdoc
146
111
  - rdoc/messages_joint.rb
147
112
  - rdoc/messages_joint.rdoc
148
113
  - rdoc/hello.rb
@@ -151,22 +116,21 @@ files:
151
116
  - rdoc/example_plugin.rb
152
117
  - rdoc/plugins.rdoc
153
118
  - rdoc/example_joint.rb
119
+ - rdoc/messages_joint/private_messages.rdoc
120
+ - rdoc/messages_joint/public_messages.rdoc
154
121
  - rdoc/forum_joint.rdoc
155
122
  - rdoc/orm_rest_convenience_plugin.rdoc
123
+ - rdoc/reggae/generate.rdoc
124
+ - rdoc/reggae/parse.rdoc
156
125
  - rdoc/user_joint.rb
157
126
  - rdoc/joints.rdoc
158
127
  - rdoc/hello.rdoc
159
128
  - rdoc/tags_joint.rb
160
- - rdoc/reggae.rb
161
- - rdoc/reggae.rdoc
162
- - rdoc/user_joint/no_auth_provided.rdoc
163
- - rdoc/user_joint/exiting_users.rdoc
164
- - rdoc/messages_joint/private_messages.rdoc
165
- - rdoc/messages_joint/public_messages.rdoc
166
- - rdoc/reggae/generate.rdoc
167
- - rdoc/reggae/parse.rdoc
168
129
  - rdoc/tags_joint/announcements.rdoc
169
130
  - rdoc/tags_joint/secrets.rdoc
131
+ - rdoc/reggae.rb
132
+ - rdoc/reggae.rdoc
133
+ has_rdoc: true
170
134
  homepage: http://github.com/herbdaily/marley
171
135
  licenses: []
172
136
 
@@ -176,29 +140,21 @@ rdoc_options: []
176
140
  require_paths:
177
141
  - lib
178
142
  required_ruby_version: !ruby/object:Gem::Requirement
179
- none: false
180
143
  requirements:
181
144
  - - ">="
182
145
  - !ruby/object:Gem::Version
183
- hash: 881230260
184
- segments:
185
- - 0
186
146
  version: "0"
147
+ version:
187
148
  required_rubygems_version: !ruby/object:Gem::Requirement
188
- none: false
189
149
  requirements:
190
150
  - - ">="
191
151
  - !ruby/object:Gem::Version
192
- hash: 540260530
193
- segments:
194
- - 1
195
- - 0
196
- - 0
197
152
  version: 1.0.0
153
+ version:
198
154
  requirements: []
199
155
 
200
156
  rubyforge_project:
201
- rubygems_version: 1.8.12
157
+ rubygems_version: 1.3.5
202
158
  signing_key:
203
159
  specification_version: 3
204
160
  summary: Irie default restful routes for models and other objects