yodel 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,7 +20,7 @@ class Installer
20
20
  end
21
21
 
22
22
  def default_ruby_path
23
- if Config.ruby =~ /rubies\/(.*)\/bin/
23
+ if RbConfig.ruby =~ /rubies\/(.*)\/bin/
24
24
  `rvm wrapper #{$1} yodel`
25
25
  `which yodel_ruby`.strip
26
26
  else
@@ -3,9 +3,7 @@ module QueryAssociation
3
3
 
4
4
  def initialize(name, options={})
5
5
  super
6
- if @options['where']
7
- @options['where'] = Plucky::CriteriaHash.new(@options['where']).to_hash
8
- end
6
+ options['where'] = Plucky::CriteriaHash.new(options['where']).to_hash if options['where']
9
7
  end
10
8
 
11
9
  def validate(record, errors)
@@ -21,12 +19,12 @@ module QueryAssociation
21
19
  end
22
20
 
23
21
  def associate(associated_record, store, record)
24
- associated_record.set_meta(foreign_key(record), record.id)
22
+ associated_record.set_meta(foreign_key(record), association_value(record))
25
23
  associated_record.save_without_validation
26
24
  end
27
25
 
28
26
  def unassociate(associated_record, store, record)
29
- return unless associated_record.get_meta(foreign_key) == record.id
27
+ return unless associated_record.get_meta(foreign_key) == association_value(record)
30
28
  associated_record.set_meta(foreign_key(record), nil)
31
29
  associated_record.save_without_validation
32
30
  end
@@ -41,24 +39,44 @@ module QueryAssociation
41
39
  end
42
40
 
43
41
  def scope(record)
44
- if @options['through']
45
- through_query = record.field(@options['through'].to_s).scope(record).only('_id')
42
+ if options['through']
43
+ through_query = record.field(options['through'].to_s).scope(record).only('_id')
46
44
  cursor = Record.collection.find(through_query.criteria.to_hash, through_query.options.to_hash)
47
45
  ids = cursor.to_a.collect {|doc| doc['_id']}
48
46
  scope = record.site.model(model_name).where(foreign_key(record) => ids)
49
- elsif @options['extends']
50
- scope = record.field(@options['extends'].to_s).scope(record)
47
+
48
+ elsif options['extends']
49
+ # to allow extended associations to override the association's original query, remove
50
+ # any conditions which occur in the additional criteria
51
+ scope = record.field(options['extends'].to_s).scope(record)
52
+ if options['where']
53
+ options['where'].keys.each do |field|
54
+ scope.criteria.source.delete(field)
55
+ end
56
+ end
57
+
51
58
  else
52
- scope = record.site.model(model_name).where(foreign_key(record) => record.id)
59
+ scope = record.site.model(model_name).where(foreign_key(record) => association_value(record))
53
60
  end
54
- scope = scope.where(@options['where'].to_hash) if @options['where']
55
- scope = scope.sort(@options['order'].to_s) if @options['order']
56
- scope = scope.limit(@options['limit'].to_i) if @options['limit']
57
- scope = scope.skip(@options['skip'].to_i) if @options['skip']
61
+
62
+ scope = scope.where(options['where'].to_hash) if options['where']
63
+ scope = scope.sort(options['order'].to_s) if options['order']
64
+ scope = scope.limit(options['limit'].to_i) if options['limit']
65
+ scope = scope.skip(options['skip'].to_i) if options['skip']
58
66
  scope
59
67
  end
60
68
 
61
69
  def associated(store, record)
62
- record.site.model(model_name).first(foreign_key(record) => record.id)
70
+ record.site.model(model_name).first(foreign_key(record) => association_value(record))
71
+ end
72
+
73
+ def association_value(record)
74
+ if options['value_field']
75
+ field = record.fields[options['value_field']]
76
+ raise new InvalidField("Unknown field '#{options['value_field']}' specified in association '#{name}' of model '#{record.model.name}'") if field.nil?
77
+ field.untypecast(record.send(options['value_field']), record)
78
+ else # id
79
+ record.id
80
+ end
63
81
  end
64
82
  end
@@ -38,6 +38,10 @@ class Attachment
38
38
  File.exist?(path)
39
39
  end
40
40
 
41
+ def empty?
42
+ !exist?
43
+ end
44
+
41
45
  def remove_files
42
46
  FileUtils.rm_r directory_path if exist?
43
47
  end
@@ -5,7 +5,7 @@ class Image < Attachment
5
5
  end
6
6
 
7
7
  def crop_image
8
- sizes = @field.options['sizes'].to_hash.merge('admin_thumb' => '100x100')
8
+ sizes = (@field.options['sizes'] || {}).to_hash.merge('admin_thumb' => '100x100')
9
9
  return unless exist?
10
10
  sizes.each do |size_name, size|
11
11
  image = MiniMagick::Image.open(path.to_s)
@@ -122,6 +122,8 @@ class Function
122
122
  previous_value(context, parent_context, params.first)
123
123
  when 'collect'
124
124
  collect(context, parent_context, params.first)
125
+ when 'flatten'
126
+ flatten(context)
125
127
  when 'majority'
126
128
  majority(context, parent_context, params.first)
127
129
  when 'count'
@@ -272,6 +274,11 @@ class Function
272
274
  context.collect {|item| execute(item, field, parent_context)}
273
275
  end
274
276
 
277
+ def flatten(context)
278
+ raise "Context to flatten must respond to flatten" unless context.respond_to?(:flatten)
279
+ context.flatten
280
+ end
281
+
275
282
  def each(context, parent_context, statement)
276
283
  raise "Context to each must respond to each" unless context.respond_to?(:each)
277
284
  context.each {|item| execute(item, statement, parent_context)}
@@ -363,7 +363,7 @@ class Record < SiteRecord
363
363
  # Rendering
364
364
  # ----------------------------------------
365
365
  def content
366
- @content
366
+ @content ||= get('content')
367
367
  end
368
368
 
369
369
  def set_content(content)
@@ -45,7 +45,13 @@ class Site < MongoRecord
45
45
  end
46
46
 
47
47
  def public_directories
48
- @public_dirs ||= Yodel.config.public_directories + [public_directory]
48
+ @public_dirs ||= begin
49
+ if Yodel.env.production?
50
+ Yodel.config.public_directories + [public_directory]
51
+ else
52
+ Yodel.config.public_directories + [public_directory, attachments_directory]
53
+ end
54
+ end
49
55
  end
50
56
 
51
57
  def layouts_directory
@@ -9,7 +9,7 @@ class RecordModelMigration < Migration
9
9
  add_field :name, :string
10
10
  add_field :show_in_search, :boolean, default: true, section: 'Options'
11
11
  add_field :search_keywords, :array, of: :string, display: false
12
- add_field :search_title, :string, display: false
12
+ add_field :search_title, :alias, of: :name, display: false
13
13
 
14
14
  # modelling
15
15
  add_one :eigenmodel, model: :model, destroy: true, display: false
@@ -2,6 +2,7 @@ class SnippetModelMigration < Migration
2
2
  def self.up(site)
3
3
  site.records.create_model :snippets do |snippets|
4
4
  add_field :name, :string, validations: {required: {}}, index: true
5
+ add_field :show_in_search, :boolean, default: false, display: false
5
6
  add_field :content, :text
6
7
  snippets.searchable = false
7
8
  end
@@ -27,7 +27,7 @@ class FormBuilder
27
27
  @embedded_record = options.delete(:embedded_record)
28
28
  @blank_record = options.delete(:blank_record)
29
29
  @prefix = options.delete(:prefix)
30
- @id = options.delete(:id) || "form_for_#{record.id}"
30
+ @id = @params.delete(:id) || options.delete(:id) || "form_for_#{record.id}"
31
31
 
32
32
  # js functions
33
33
  @success_function = options.delete(:success)
@@ -116,17 +116,29 @@ module HTMLDecorator
116
116
  # ----------------------------------------
117
117
  # Formatters
118
118
  # ----------------------------------------
119
- def paragraph(index, field=:content)
120
- text = self[field]
119
+ def paragraph(index, options={})
120
+ text = self.send(options[:field] || :content)
121
121
  paragraphs = Hpricot(text).search('/p')
122
122
  return '' if paragraphs.nil? || paragraphs[index].nil?
123
- paragraphs[index].inner_html
123
+ if options[:strip]
124
+ paragraphs[index].search('//text()').join
125
+ else
126
+ paragraphs[index].inner_html
127
+ end
124
128
  end
125
129
 
126
- def paragraphs_from(index, field=:content)
127
- text = self[field]
130
+ # TODO: determine whether the initial search (Hpricot(text).children) should
131
+ # be changed to Hpricot(text).search('/p'), i.e should paragraphs_from return
132
+ # only p tags, or all child tags. This is dependent on the WYSIWYG editor -
133
+ # does it wrap <ul>s etc. in <p>s first, or are they top level elements?
134
+ def paragraphs_from(index, options={})
135
+ text = self.send(options[:field] || :content)
128
136
  paragraphs = Hpricot(text).children
129
137
  return '' if paragraphs.nil? || paragraphs[index..-1].nil?
130
- paragraphs[index..-1].collect {|p| p.to_s}.join('')
138
+ if options[:strip]
139
+ paragraphs[index..-1].collect {|p| p.search('//text()').join}.join
140
+ else
141
+ paragraphs[index..-1].collect {|p| p.to_s}.join
142
+ end
131
143
  end
132
144
  end
@@ -34,21 +34,33 @@ class Page < Record
34
34
 
35
35
  def assign_path(prefix=nil)
36
36
  if prefix
37
- new_prefix = prefix + '/' + permalink
37
+ prefix = '' if prefix == '/' # when the root page is parent, prefix will be "/"
38
+ base = prefix + '/' + permalink
38
39
  else
39
- new_prefix = '/' + parents.reverse[1..-1].collect(&:permalink).join('/')
40
+ base = '/' + parents.reverse[1..-1].collect(&:permalink).join('/')
40
41
  end
41
42
 
42
- self.path = new_prefix
43
+ permalink_character = site.option('pages.permalink_character') || '-'
44
+ self.path = base
43
45
  count = 0
44
46
 
45
47
  while site.pages.where(:path => self.path, :_id.ne => self.id).exists?
46
48
  count += 1
47
- self.path = "#{new_prefix}#{count}"
49
+ self.path = "#{base}#{permalink_character}#{count}"
48
50
  end
49
51
 
50
- save_without_validation if prefix
51
- children.each {|child| child.assign_path(new_prefix)}
52
+ # child pages are called with prefix supplied
53
+ # FIXME: with the identity map, this call could save another record which has been modified
54
+ # elsewhere; change to update path only, not a full save
55
+ save_without_validation unless prefix.nil?
56
+ children.each {|child| child.assign_path(self.path)}
57
+ end
58
+
59
+ after_validation :assign_child_paths
60
+ def assign_child_paths
61
+ return unless path_changed? || (!path.nil? && values['path'].nil?)
62
+ return unless @errors.empty? # @errors.present? == invalid
63
+ children.each {|child| child.assign_path(path)}
52
64
  end
53
65
 
54
66
 
@@ -10,24 +10,27 @@ class SearchPage < Page
10
10
  }
11
11
 
12
12
  def query
13
- q = (type || site.records).where(show_in_search: true)
13
+ @query ||= begin
14
+ query_type = type || site.records
15
+ q = query_type.where(show_in_search: true)
14
16
 
15
- # constant constraints
16
- conditions.each do |condition|
17
- q = add_condition(q, type, condition.name, condition.operator, condition.value)
18
- end
17
+ # constant constraints
18
+ conditions.each do |condition|
19
+ q = add_condition(q, query_type, condition.name, condition.operator, condition.value)
20
+ end
19
21
 
20
- # user conditions
21
- user_conditions.each do |condition|
22
- param_name = condition.as || condition.name
23
- q = add_condition(q, type, condition.name, condition.operator, params[param_name])
24
- end
22
+ # user conditions
23
+ user_conditions.each do |condition|
24
+ param_name = condition.as || condition.name
25
+ q = add_condition(q, query_type, condition.name, condition.operator, params[param_name])
26
+ end
25
27
 
26
- # add other optional search parameters
27
- q = q.sort(sort || params['sort']) if sort || params['sort']
28
- q = q.limit(limit || params['limit'].to_i) if limit || params['limit']
29
- q = q.skip(skip || params['skip'].to_i) if skip || params['skip']
30
- q
28
+ # add other optional search parameters
29
+ q = q.sort(sort || params['sort']) if sort || params['sort']
30
+ q = q.limit(limit || params['limit'].to_i) if limit || params['limit']
31
+ q = q.skip(skip || params['skip'].to_i) if skip || params['skip']
32
+ q
33
+ end
31
34
  end
32
35
 
33
36
  def add_condition(q, type, field, operator, value)
@@ -39,11 +42,6 @@ class SearchPage < Page
39
42
  value = type.all_record_fields[field.to_s].from_json(value, type)
40
43
  end
41
44
 
42
- # the in operator works on arrays
43
- #if operator == :in
44
- # value = value.to_s.split(' ').reject(&:blank?).collect(&:downcase)
45
- #end
46
-
47
45
  if operator
48
46
  q.where(field.send(operator) => value)
49
47
  else
data/lib/yodel/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yodel
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-09 00:00:00.000000000Z
12
+ date: 2011-12-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70308430598920 !ruby/object:Gem::Requirement
16
+ requirement: &70168508652460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.21
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70308430598920
24
+ version_requirements: *70168508652460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rack
27
- requirement: &70308430597580 !ruby/object:Gem::Requirement
27
+ requirement: &70168508651520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.3.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70308430597580
35
+ version_requirements: *70168508651520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mongo
38
- requirement: &70308430596000 !ruby/object:Gem::Requirement
38
+ requirement: &70168508650680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.3.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70308430596000
46
+ version_requirements: *70168508650680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bson
49
- requirement: &70308430594940 !ruby/object:Gem::Requirement
49
+ requirement: &70168508649740 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.3.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70308430594940
57
+ version_requirements: *70168508649740
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bson_ext
60
- requirement: &70308430593740 !ruby/object:Gem::Requirement
60
+ requirement: &70168508648780 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.1
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70308430593740
68
+ version_requirements: *70168508648780
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: plucky
71
- requirement: &70308430569480 !ruby/object:Gem::Requirement
71
+ requirement: &70168508647460 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.4.1
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70308430569480
79
+ version_requirements: *70168508647460
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: activesupport
82
- requirement: &70308430568120 !ruby/object:Gem::Requirement
82
+ requirement: &70168508646540 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 3.0.3
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70308430568120
90
+ version_requirements: *70168508646540
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: ember
93
- requirement: &70308430566900 !ruby/object:Gem::Requirement
93
+ requirement: &70168508645640 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.3.1
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *70308430566900
101
+ version_requirements: *70168508645640
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: mail
104
- requirement: &70308430566300 !ruby/object:Gem::Requirement
104
+ requirement: &70168508645080 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 2.3.0
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *70308430566300
112
+ version_requirements: *70168508645080
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: hpricot
115
- requirement: &70308430565480 !ruby/object:Gem::Requirement
115
+ requirement: &70168508644040 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 0.8.4
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *70308430565480
123
+ version_requirements: *70168508644040
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: json
126
- requirement: &70308430564580 !ruby/object:Gem::Requirement
126
+ requirement: &70168508643160 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 1.6.1
132
132
  type: :runtime
133
133
  prerelease: false
134
- version_requirements: *70308430564580
134
+ version_requirements: *70168508643160
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rack-contrib
137
- requirement: &70308430559860 !ruby/object:Gem::Requirement
137
+ requirement: &70168508641600 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: 1.1.0
143
143
  type: :runtime
144
144
  prerelease: false
145
- version_requirements: *70308430559860
145
+ version_requirements: *70168508641600
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: rubydns
148
- requirement: &70308430559240 !ruby/object:Gem::Requirement
148
+ requirement: &70168508640940 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: 0.3.3
154
154
  type: :runtime
155
155
  prerelease: false
156
- version_requirements: *70308430559240
156
+ version_requirements: *70168508640940
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: git
159
- requirement: &70308430558500 !ruby/object:Gem::Requirement
159
+ requirement: &70168508640040 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ~>
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: 1.2.5
165
165
  type: :runtime
166
166
  prerelease: false
167
- version_requirements: *70308430558500
167
+ version_requirements: *70168508640040
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: highline
170
- requirement: &70308430557500 !ruby/object:Gem::Requirement
170
+ requirement: &70168508638960 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ~>
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: 1.6.2
176
176
  type: :runtime
177
177
  prerelease: false
178
- version_requirements: *70308430557500
178
+ version_requirements: *70168508638960
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: mini_magick
181
- requirement: &70308430556260 !ruby/object:Gem::Requirement
181
+ requirement: &70168508638200 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ~>
@@ -186,10 +186,10 @@ dependencies:
186
186
  version: '3.3'
187
187
  type: :runtime
188
188
  prerelease: false
189
- version_requirements: *70308430556260
189
+ version_requirements: *70168508638200
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: linguistics
192
- requirement: &70308430554780 !ruby/object:Gem::Requirement
192
+ requirement: &70168508625780 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ~>
@@ -197,10 +197,10 @@ dependencies:
197
197
  version: 1.0.9
198
198
  type: :runtime
199
199
  prerelease: false
200
- version_requirements: *70308430554780
200
+ version_requirements: *70168508625780
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: yodel_admin
203
- requirement: &70308430554200 !ruby/object:Gem::Requirement
203
+ requirement: &70168508625160 !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
206
  - - ! '>='
@@ -208,10 +208,10 @@ dependencies:
208
208
  version: '0'
209
209
  type: :runtime
210
210
  prerelease: false
211
- version_requirements: *70308430554200
211
+ version_requirements: *70168508625160
212
212
  - !ruby/object:Gem::Dependency
213
213
  name: yodel_queue
214
- requirement: &70308430553420 !ruby/object:Gem::Requirement
214
+ requirement: &70168508624200 !ruby/object:Gem::Requirement
215
215
  none: false
216
216
  requirements:
217
217
  - - ! '>='
@@ -219,10 +219,10 @@ dependencies:
219
219
  version: '0'
220
220
  type: :runtime
221
221
  prerelease: false
222
- version_requirements: *70308430553420
222
+ version_requirements: *70168508624200
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: yodel_blog
225
- requirement: &70308430552980 !ruby/object:Gem::Requirement
225
+ requirement: &70168508623420 !ruby/object:Gem::Requirement
226
226
  none: false
227
227
  requirements:
228
228
  - - ! '>='
@@ -230,10 +230,10 @@ dependencies:
230
230
  version: '0'
231
231
  type: :runtime
232
232
  prerelease: false
233
- version_requirements: *70308430552980
233
+ version_requirements: *70168508623420
234
234
  - !ruby/object:Gem::Dependency
235
235
  name: yodel_shop
236
- requirement: &70308430552400 !ruby/object:Gem::Requirement
236
+ requirement: &70168508623000 !ruby/object:Gem::Requirement
237
237
  none: false
238
238
  requirements:
239
239
  - - ! '>='
@@ -241,10 +241,10 @@ dependencies:
241
241
  version: '0'
242
242
  type: :runtime
243
243
  prerelease: false
244
- version_requirements: *70308430552400
244
+ version_requirements: *70168508623000
245
245
  - !ruby/object:Gem::Dependency
246
246
  name: yodel_development_environment
247
- requirement: &70308430551520 !ruby/object:Gem::Requirement
247
+ requirement: &70168508622560 !ruby/object:Gem::Requirement
248
248
  none: false
249
249
  requirements:
250
250
  - - ! '>='
@@ -252,10 +252,10 @@ dependencies:
252
252
  version: '0'
253
253
  type: :runtime
254
254
  prerelease: false
255
- version_requirements: *70308430551520
255
+ version_requirements: *70168508622560
256
256
  - !ruby/object:Gem::Dependency
257
257
  name: yodel_production_environment
258
- requirement: &70308430550760 !ruby/object:Gem::Requirement
258
+ requirement: &70168508621920 !ruby/object:Gem::Requirement
259
259
  none: false
260
260
  requirements:
261
261
  - - ! '>='
@@ -263,7 +263,7 @@ dependencies:
263
263
  version: '0'
264
264
  type: :runtime
265
265
  prerelease: false
266
- version_requirements: *70308430550760
266
+ version_requirements: *70168508621920
267
267
  description: Yodel CMS
268
268
  email:
269
269
  - me@willcannings.com