spree_core 0.70.5 → 0.70.6

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.
@@ -71,36 +71,37 @@ class Product < ActiveRecord::Base
71
71
 
72
72
  alias :options :product_option_types
73
73
 
74
- include ::Scopes::Product
74
+ cattr_accessor :search_scopes do
75
+ []
76
+ end
75
77
 
76
- #RAILS3 TODO - scopes are duplicated here and in scopes/product.rb - can we DRY it up?
77
- # default product scope only lists available and non-deleted products
78
- class << self
79
- def not_deleted
80
- where(Product.arel_table[:deleted_at].eq(nil))
81
- end
78
+ def self.add_search_scope(name, &block)
79
+ define_singleton_method name.intern, &block
80
+ search_scopes << name.intern
81
+ end
82
82
 
83
- def available(available_on = nil)
84
- where(Product.arel_table[:available_on].lteq(available_on || Time.zone.now ))
85
- end
83
+ include ::Scopes::Product
86
84
 
87
- #RAILS 3 TODO - this scope doesn't match the original 2.3.x version, needs attention (but it works)
88
- def active
89
- not_deleted.available
90
- end
85
+ add_search_scope :not_deleted do
86
+ where("products.deleted_at is NULL")
87
+ end
91
88
 
92
- def on_hand
93
- where(Product.arel_table[:count_on_hand].gteq(0))
94
- end
89
+ add_search_scope :available do |*on|
90
+ where("products.available_on <= ?", on.first || Time.zone.now)
91
+ end
95
92
 
96
- def id_equals(input_id)
97
- where(Product.arel_table[:id].eq(input_id))
98
- end
93
+ add_search_scope :active do
94
+ not_deleted.available
95
+ end
99
96
 
100
- def taxons_name_eq(name)
101
- joins(:taxons).where(Taxon.arel_table[:name].eq(name))
102
- end
97
+ add_search_scope :on_hand do
98
+ where("products.count_on_hand > 0")
99
+ end
100
+
101
+ add_search_scope :taxons_name_eq do |name|
102
+ joins(:taxons).where(Taxon.arel_table[:name].eq(name))
103
103
  end
104
+
104
105
  if (ActiveRecord::Base.connection.adapter_name == 'PostgreSQL')
105
106
  if Product.table_exists?
106
107
  scope :group_by_products_id, { :group => Product.column_names.map{|col_name| "#{Product.table_name}.#{col_name}"} }
@@ -108,8 +109,17 @@ class Product < ActiveRecord::Base
108
109
  else
109
110
  scope :group_by_products_id, { :group => "#{Product.table_name}.id" }
110
111
  end
112
+ search_scopes << :group_by_products_id
111
113
  search_methods :group_by_products_id
112
114
 
115
+ add_search_scope :id_equals do |input_id|
116
+ where("products.id = ?", input_id)
117
+ end
118
+
119
+ add_search_scope :taxons_name_eq do |name|
120
+ joins(:taxons).where("taxons.name = ?", name)
121
+ end
122
+
113
123
  # ----------------------------------------------------------------------------------------------------------
114
124
  #
115
125
  # The following methods are deprecated and will be removed in a future version of Spree
@@ -90,10 +90,14 @@ class ProductGroup < ActiveRecord::Base
90
90
  end
91
91
 
92
92
  def add_scope(scope_name, arguments=[])
93
- self.product_scopes << ProductScope.new({
94
- :name => scope_name.to_s,
95
- :arguments => [*arguments]
96
- })
93
+ if Product.search_scopes.include?(scope_name)
94
+ self.product_scopes << ProductScope.new({
95
+ :name => scope_name.to_s,
96
+ :arguments => [*arguments]
97
+ })
98
+ else
99
+ raise ArgumentError.new("'#{scope_name}` can't be used as scope")
100
+ end
97
101
  self
98
102
  end
99
103
 
@@ -58,15 +58,20 @@ module ProductFilters
58
58
  Product.scope :price_range_any,
59
59
  lambda {|*opts|
60
60
  conds = opts.map {|o| ProductFilters.price_filter[:conds][o]}.reject {|c| c.nil?}
61
- Product.scoped(:joins => :master).conditions_any(conds)
61
+ scope = conds.shift
62
+ conds.each do |new_scope|
63
+ scope = scope.or(new_scope)
64
+ end
65
+ Product.scoped(:joins => :master).where(scope)
62
66
  }
63
67
 
64
68
  def ProductFilters.price_filter
65
- conds = [ [ "Under $10", "price <= 10" ],
66
- [ "$10 - $15", "price between 10 and 15" ],
67
- [ "$15 - $18", "price between 15 and 18" ],
68
- [ "$18 - $20", "price between 18 and 20" ],
69
- [ "$20 or over", "price >= 20" ] ]
69
+ v = Spree::Variant.arel_table
70
+ conds = [ [ I18n.t(:under_price, :price => format_price(10)) , v[:price].lteq(10)],
71
+ [ "#{format_price(10)} - #{format_price(15)}" , v[:price].in(10..15)],
72
+ [ "#{format_price(15)} - #{format_price(18)}" , v[:price].in(15..18)],
73
+ [ "#{format_price(18)} - #{format_price(20)}" , v[:price].in(18..20)],
74
+ [ I18n.t(:or_over_price, :price => format_price(20)) , v[:price].gteq(20)]]
70
75
  { :name => "Price Range",
71
76
  :scope => :price_range_any,
72
77
  :conds => Hash[*conds.flatten],
@@ -92,12 +97,17 @@ module ProductFilters
92
97
  Product.scope :brand_any,
93
98
  lambda {|*opts|
94
99
  conds = opts.map {|o| ProductFilters.brand_filter[:conds][o]}.reject {|c| c.nil?}
95
- Product.with_property("brand").conditions_any(conds)
100
+ scope = conds.shift
101
+ conds.each do |new_scope|
102
+ scope = scope.or(new_scope)
103
+ end
104
+ Product.with_property("brand").where(scope)
96
105
  }
97
106
 
98
107
  def ProductFilters.brand_filter
99
108
  brands = ProductProperty.where(:property_id => @@brand_property).map(&:value).compact.uniq
100
- conds = Hash[*brands.map {|b| [b, "product_properties.value = '#{b}'"]}.flatten]
109
+ pp = Spree::ProductProperty.arel_table
110
+ conds = Hash[*brands.map {|b| [b, pp.value.eq(b)]}.flatten]
101
111
  { :name => "Brands",
102
112
  :scope => :brand_any,
103
113
  :conds => conds,
@@ -48,11 +48,16 @@ module Scopes::Product
48
48
  order_text << ((r[1] == 'ascend') ? "asc" : "desc")
49
49
 
50
50
  Product.send(:scope, name.to_s, Product.send(:relation).order(order_text) )
51
+ Product.search_scopes << name.intern
51
52
  end
52
53
 
53
- ::Product.scope :ascend_by_master_price, Product.joins(:variants_with_only_master).order("#{Variant.table_name}.price asc")
54
+ ::Product.add_search_scope :ascend_by_master_price do
55
+ joins(:variants_with_only_master).order('variants.price asc')
56
+ end
54
57
 
55
- ::Product.scope :descend_by_master_price, Product.joins(:variants_with_only_master).order("#{Variant.table_name}.price desc")
58
+ ::Product.add_search_scope :descend_by_master_price do
59
+ joins(:variants_with_only_master).order('variants.price desc')
60
+ end
56
61
 
57
62
  ATTRIBUTE_HELPER_METHODS = {
58
63
  :with_ids => :product_picker_field
@@ -60,105 +65,99 @@ module Scopes::Product
60
65
 
61
66
  # Ryan Bates - http://railscasts.com/episodes/112
62
67
  # general merging of conditions, names following the searchlogic pattern
63
- ::Product.scope :conditions, lambda { |*args| {:conditions => args}}
68
+ ::Product.add_search_scope :conditions do |*args|
69
+ where(args)
70
+ end
64
71
 
65
- # conditions_all is a more descriptively named enhancement of the above
66
- ::Product.scope :conditions_all, lambda { |*args| {:conditions => [args].flatten}}
72
+ ::Product.add_search_scope :conditions_all do |*args|
73
+ where([args].flatten)
74
+ end
67
75
 
68
76
  # forming the disjunction of a list of conditions (as strings)
69
- ::Product.scope :conditions_any, lambda { |*args|
77
+ ::Product.add_search_scope :conditions_any do |*args|
70
78
  args = [args].flatten
71
79
  raise "non-strings in conditions_any" unless args.all? {|s| s.is_a? String}
72
- {:conditions => args.map {|c| "(#{c})"}.join(" OR ")}
73
- }
80
+ where(args.map {|c| "(#{c})"}.join(" OR "))
81
+ end
74
82
 
75
83
 
76
- ::Product.scope :price_between, lambda { |low, high|
77
- { :joins => :master, :conditions => ["#{Variant.table_name}.price BETWEEN ? AND ?", low, high] }
78
- }
79
-
80
- ::Product.scope :master_price_lte, lambda { |price|
81
- { :joins => :master, :conditions => ["#{Variant.table_name}.price <= ?", price] }
82
- }
84
+ ::Product.add_search_scope :price_between do |low, high|
85
+ joins(:master).where("variants.price" => (low.to_f)..(high.to_f))
86
+ end
83
87
 
84
- ::Product.scope :master_price_gte, lambda { |price|
85
- { :joins => :master, :conditions => ["#{Variant.table_name}.price >= ?", price] }
86
- }
88
+ ::Product.add_search_scope :master_price_lte do |price|
89
+ joins(:master).where("variants.price <= ?", price)
90
+ end
87
91
 
92
+ ::Product.add_search_scope :master_price_gte do |price|
93
+ joins(:master).where("variants.price >= ?", price)
94
+ end
88
95
 
89
96
  # This scope selects products in taxon AND all its descendants
90
97
  # If you need products only within one taxon use
91
98
  #
92
99
  # Product.taxons_id_eq(x)
93
100
  #
94
- ::Product.scope :in_taxon, lambda {|taxon|
95
- { :joins => :taxons, :conditions => ["#{Taxon.table_name}.id IN (?) ", taxon.self_and_descendants.map(&:id)]}
96
- }
101
+ ::Product.add_search_scope :in_taxon do |taxon|
102
+ joins(:taxons).where("taxons.id" => taxon.self_and_descendants.map(&:id))
103
+ end
97
104
 
98
105
  # This scope selects products in all taxons AND all its descendants
99
106
  # If you need products only within one taxon use
100
107
  #
101
108
  # Product.taxons_id_eq([x,y])
102
109
  #
103
- Product.scope :in_taxons, lambda {|*taxons|
110
+ ::Product.add_search_scope :in_taxons do |*taxons|
104
111
  taxons = get_taxons(taxons)
105
- taxons.first ? prepare_taxon_conditions(taxons) : {}
106
- }
112
+ taxons.first ? prepare_taxon_conditions(taxons) : scoped
113
+ end
107
114
 
108
115
  # for quick access to products in a group, WITHOUT using the association mechanism
109
- Product.scope :in_cached_group, lambda {|product_group|
110
- { :joins => "JOIN product_groups_products ON products.id = product_groups_products.product_id",
111
- :conditions => ["product_groups_products.product_group_id = ?", product_group]
112
- }
113
- }
116
+ Product.add_search_scope :in_cached_group do |product_group|
117
+ joins("JOIN product_groups_products ON products.id = product_groups_products.product_id").
118
+ where(["product_groups_products.product_group_id = ?", product_group])
119
+ end
114
120
 
115
121
 
116
122
  # a scope that finds all products having property specified by name, object or id
117
- Product.scope :with_property, lambda {|property|
123
+ Product.add_search_scope :with_property do |property|
118
124
  conditions = case property
119
125
  when String then ["properties.name = ?", property]
120
126
  when Property then ["properties.id = ?", property.id]
121
127
  else ["properties.id = ?", property.to_i]
122
128
  end
123
129
 
124
- {
125
- :joins => :properties,
126
- :conditions => conditions
127
- }
128
- }
130
+ joins(:properties).
131
+ where(conditions)
132
+ end
129
133
 
130
134
  # a scope that finds all products having an option_type specified by name, object or id
131
- Product.scope :with_option, lambda {|option|
135
+ Product.add_search_scope :with_option do |option|
132
136
  conditions = case option
133
137
  when String then ["option_types.name = ?", option]
134
138
  when OptionType then ["option_types.id = ?", option.id]
135
139
  else ["option_types.id = ?", option.to_i]
136
140
  end
137
141
 
138
- {
139
- :joins => :option_types,
140
- :conditions => conditions
141
- }
142
- }
142
+ joins(:option_types).
143
+ where(conditions)
144
+ end
143
145
 
144
146
  # a simple test for product with a certain property-value pairing
145
147
  # note that it can test for properties with NULL values, but not for absent values
146
- Product.scope :with_property_value, lambda { |property, value|
148
+ Product.add_search_scope :with_property_value do |property, value|
147
149
  conditions = case property
148
150
  when String then ["properties.name = ?", property]
149
151
  when Property then ["properties.id = ?", property.id]
150
152
  else ["properties.id = ?", property.to_i]
151
153
  end
152
154
  conditions = ["product_properties.value = ? AND #{conditions[0]}", value, conditions[1]]
153
-
154
- {
155
- :joins => :properties,
156
- :conditions => conditions
157
- }
158
- }
155
+ joins(:properties).
156
+ where(conditions)
157
+ end
159
158
 
160
159
  # a scope that finds all products having an option value specified by name, object or id
161
- Product.scope :with_option_value, lambda {|option, value|
160
+ Product.add_search_scope :with_option_value do |option, value|
162
161
  option_type_id = case option
163
162
  when String
164
163
  option_type = OptionType.find_by_name(option) || option.to_i
@@ -172,36 +171,32 @@ module Scopes::Product
172
171
  value, option_type_id
173
172
  ]
174
173
 
175
- {
176
- :joins => {:variants => :option_values},
177
- :conditions => conditions
178
- }
179
- }
174
+ joins(:variants => :option_values).
175
+ where(conditions)
176
+ end
180
177
 
181
178
  # finds product having option value OR product_property
182
- Product.scope :with, lambda{|value|
183
- {
184
- :conditions => ["option_values.name = ? OR product_properties.value = ?", value, value],
185
- :joins => {:variants => :option_values, :product_properties => []}
186
- }
187
- }
179
+ Product.add_search_scope :with do |value|
180
+ joins(:product_properties, :variants => :option_values).
181
+ where("option_values.name = ? OR product_properties.value = ?", value, value)
182
+ end
188
183
 
189
- Product.scope :in_name, lambda{|words|
184
+ Product.add_search_scope :in_name do |words|
190
185
  Product.like_any([:name], prepare_words(words))
191
- }
186
+ end
192
187
 
193
- Product.scope :in_name_or_keywords, lambda{|words|
188
+ Product.add_search_scope :in_name_or_keywords do |words|
194
189
  Product.like_any([:name, :meta_keywords], prepare_words(words))
195
- }
190
+ end
196
191
 
197
- Product.scope :in_name_or_description, lambda{|words|
192
+ Product.add_search_scope :in_name_or_description do |words|
198
193
  Product.like_any([:name, :description, :meta_description, :meta_keywords], prepare_words(words))
199
- }
194
+ end
200
195
 
201
- Product.scope :with_ids, lambda{|ids|
196
+ Product.add_search_scope :with_ids do |ids|
202
197
  ids = ids.split(',') if ids.is_a?(String)
203
- { :conditions => {:id => ids} }
204
- }
198
+ where(:id => ids)
199
+ end
205
200
 
206
201
  # Sorts products from most popular (poularity is extracted from how many
207
202
  # times use has put product in cart, not completed orders)
@@ -211,7 +206,7 @@ module Scopes::Product
211
206
  #
212
207
  # :joins => "LEFT OUTER JOIN (SELECT line_items.variant_id as vid, COUNT(*) as cnt FROM line_items GROUP BY line_items.variant_id) AS popularity_count ON variants.id = vid",
213
208
  # :order => 'COALESCE(cnt, 0) DESC'
214
- Product.scope :descend_by_popularity,
209
+ Product.add_search_scope :descend_by_popularity do
215
210
  {
216
211
  :joins => :master,
217
212
  :order => <<SQL
@@ -229,10 +224,11 @@ module Scopes::Product
229
224
  ), 0) DESC
230
225
  SQL
231
226
  }
227
+ end
232
228
 
233
229
  # Produce an array of keywords for use in scopes.
234
230
  # Always return array with at least an empty string to avoid SQL errors
235
- def self.prepare_words(words)
231
+ def Product.prepare_words(words)
236
232
  return [''] if words.blank?
237
233
  a = words.split(/[,\s]/).map(&:strip)
238
234
  a.any? ? a : ['']
@@ -244,7 +240,7 @@ SQL
244
240
  end
245
241
  end
246
242
 
247
- def self.get_taxons(*ids_or_records_or_names)
243
+ def Product.get_taxons(*ids_or_records_or_names)
248
244
  ids_or_records_or_names.flatten.map { |t|
249
245
  case t
250
246
  when Integer then Taxon.find_by_id(t)
@@ -259,8 +255,8 @@ SQL
259
255
  end
260
256
 
261
257
  # specifically avoid having an order for taxon search (conflicts with main order)
262
- def self.prepare_taxon_conditions(taxons)
258
+ def Product.prepare_taxon_conditions(taxons)
263
259
  ids = taxons.map{|taxon| taxon.self_and_descendants.map(&:id)}.flatten.uniq
264
- { :joins => :taxons, :conditions => ["taxons.id IN (?)", ids] }
260
+ joins(:taxons).where("taxons.id" => ids)
265
261
  end
266
262
  end
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- "0.70.5"
3
+ "0.70.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,190 +1,277 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
- version: !ruby/object:Gem::Version
4
- version: 0.70.5
3
+ version: !ruby/object:Gem::Version
4
+ hash: 267
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 70
9
+ - 6
10
+ version: 0.70.6
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Sean Schofield
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-03-12 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: acts_as_list
16
- requirement: &70367143666360 !ruby/object:Gem::Requirement
17
+
18
+ date: 2012-07-05 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
22
  none: false
18
- requirements:
19
- - - =
20
- - !ruby/object:Gem::Version
23
+ requirements:
24
+ - - "="
25
+ - !ruby/object:Gem::Version
26
+ hash: 19
27
+ segments:
28
+ - 0
29
+ - 1
30
+ - 4
21
31
  version: 0.1.4
32
+ requirement: *id001
22
33
  type: :runtime
23
34
  prerelease: false
24
- version_requirements: *70367143666360
25
- - !ruby/object:Gem::Dependency
26
- name: nested_set
27
- requirement: &70367143738880 !ruby/object:Gem::Requirement
35
+ name: acts_as_list
36
+ - !ruby/object:Gem::Dependency
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
28
38
  none: false
29
- requirements:
30
- - - =
31
- - !ruby/object:Gem::Version
39
+ requirements:
40
+ - - "="
41
+ - !ruby/object:Gem::Version
42
+ hash: 31
43
+ segments:
44
+ - 1
45
+ - 6
46
+ - 8
32
47
  version: 1.6.8
48
+ requirement: *id002
33
49
  type: :runtime
34
50
  prerelease: false
35
- version_requirements: *70367143738880
36
- - !ruby/object:Gem::Dependency
37
- name: rd_find_by_param
38
- requirement: &70367143737900 !ruby/object:Gem::Requirement
51
+ name: nested_set
52
+ - !ruby/object:Gem::Dependency
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
39
54
  none: false
40
- requirements:
41
- - - =
42
- - !ruby/object:Gem::Version
55
+ requirements:
56
+ - - "="
57
+ - !ruby/object:Gem::Version
58
+ hash: 25
59
+ segments:
60
+ - 0
61
+ - 1
62
+ - 1
43
63
  version: 0.1.1
64
+ requirement: *id003
44
65
  type: :runtime
45
66
  prerelease: false
46
- version_requirements: *70367143737900
47
- - !ruby/object:Gem::Dependency
48
- name: jquery-rails
49
- requirement: &70367143736620 !ruby/object:Gem::Requirement
67
+ name: rd_find_by_param
68
+ - !ruby/object:Gem::Dependency
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
50
70
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 11
75
+ segments:
76
+ - 1
77
+ - 0
78
+ - 14
54
79
  version: 1.0.14
80
+ requirement: *id004
55
81
  type: :runtime
56
82
  prerelease: false
57
- version_requirements: *70367143736620
58
- - !ruby/object:Gem::Dependency
59
- name: highline
60
- requirement: &70367143735040 !ruby/object:Gem::Requirement
83
+ name: jquery-rails
84
+ - !ruby/object:Gem::Dependency
85
+ version_requirements: &id005 !ruby/object:Gem::Requirement
61
86
  none: false
62
- requirements:
63
- - - =
64
- - !ruby/object:Gem::Version
87
+ requirements:
88
+ - - "="
89
+ - !ruby/object:Gem::Version
90
+ hash: 11
91
+ segments:
92
+ - 1
93
+ - 6
94
+ - 2
65
95
  version: 1.6.2
96
+ requirement: *id005
66
97
  type: :runtime
67
98
  prerelease: false
68
- version_requirements: *70367143735040
69
- - !ruby/object:Gem::Dependency
70
- name: stringex
71
- requirement: &70367143733400 !ruby/object:Gem::Requirement
99
+ name: highline
100
+ - !ruby/object:Gem::Dependency
101
+ version_requirements: &id006 !ruby/object:Gem::Requirement
72
102
  none: false
73
- requirements:
74
- - - =
75
- - !ruby/object:Gem::Version
103
+ requirements:
104
+ - - "="
105
+ - !ruby/object:Gem::Version
106
+ hash: 27
107
+ segments:
108
+ - 1
109
+ - 3
110
+ - 0
76
111
  version: 1.3.0
112
+ requirement: *id006
77
113
  type: :runtime
78
114
  prerelease: false
79
- version_requirements: *70367143733400
80
- - !ruby/object:Gem::Dependency
81
- name: state_machine
82
- requirement: &70367143757160 !ruby/object:Gem::Requirement
115
+ name: stringex
116
+ - !ruby/object:Gem::Dependency
117
+ version_requirements: &id007 !ruby/object:Gem::Requirement
83
118
  none: false
84
- requirements:
85
- - - =
86
- - !ruby/object:Gem::Version
119
+ requirements:
120
+ - - "="
121
+ - !ruby/object:Gem::Version
122
+ hash: 21
123
+ segments:
124
+ - 1
125
+ - 0
126
+ - 1
87
127
  version: 1.0.1
128
+ requirement: *id007
88
129
  type: :runtime
89
130
  prerelease: false
90
- version_requirements: *70367143757160
91
- - !ruby/object:Gem::Dependency
92
- name: faker
93
- requirement: &70367143754240 !ruby/object:Gem::Requirement
131
+ name: state_machine
132
+ - !ruby/object:Gem::Dependency
133
+ version_requirements: &id008 !ruby/object:Gem::Requirement
94
134
  none: false
95
- requirements:
96
- - - =
97
- - !ruby/object:Gem::Version
135
+ requirements:
136
+ - - "="
137
+ - !ruby/object:Gem::Version
138
+ hash: 23
139
+ segments:
140
+ - 1
141
+ - 0
142
+ - 0
98
143
  version: 1.0.0
144
+ requirement: *id008
99
145
  type: :runtime
100
146
  prerelease: false
101
- version_requirements: *70367143754240
102
- - !ruby/object:Gem::Dependency
103
- name: paperclip
104
- requirement: &70367143752740 !ruby/object:Gem::Requirement
147
+ name: faker
148
+ - !ruby/object:Gem::Dependency
149
+ version_requirements: &id009 !ruby/object:Gem::Requirement
105
150
  none: false
106
- requirements:
107
- - - =
108
- - !ruby/object:Gem::Version
151
+ requirements:
152
+ - - "="
153
+ - !ruby/object:Gem::Version
154
+ hash: 27
155
+ segments:
156
+ - 2
157
+ - 5
158
+ - 0
109
159
  version: 2.5.0
160
+ requirement: *id009
110
161
  type: :runtime
111
162
  prerelease: false
112
- version_requirements: *70367143752740
113
- - !ruby/object:Gem::Dependency
114
- name: rd_resource_controller
115
- requirement: &70367143750960 !ruby/object:Gem::Requirement
163
+ name: paperclip
164
+ - !ruby/object:Gem::Dependency
165
+ version_requirements: &id010 !ruby/object:Gem::Requirement
116
166
  none: false
117
- requirements:
118
- - - ! '>='
119
- - !ruby/object:Gem::Version
120
- version: '0'
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
172
+ - 0
173
+ version: "0"
174
+ requirement: *id010
121
175
  type: :runtime
122
176
  prerelease: false
123
- version_requirements: *70367143750960
124
- - !ruby/object:Gem::Dependency
125
- name: meta_search
126
- requirement: &70367143774920 !ruby/object:Gem::Requirement
177
+ name: rd_resource_controller
178
+ - !ruby/object:Gem::Dependency
179
+ version_requirements: &id011 !ruby/object:Gem::Requirement
127
180
  none: false
128
- requirements:
129
- - - =
130
- - !ruby/object:Gem::Version
181
+ requirements:
182
+ - - "="
183
+ - !ruby/object:Gem::Version
184
+ hash: 17
185
+ segments:
186
+ - 1
187
+ - 1
188
+ - 1
131
189
  version: 1.1.1
190
+ requirement: *id011
132
191
  type: :runtime
133
192
  prerelease: false
134
- version_requirements: *70367143774920
135
- - !ruby/object:Gem::Dependency
136
- name: activemerchant
137
- requirement: &70367143773260 !ruby/object:Gem::Requirement
193
+ name: meta_search
194
+ - !ruby/object:Gem::Dependency
195
+ version_requirements: &id012 !ruby/object:Gem::Requirement
138
196
  none: false
139
- requirements:
140
- - - =
141
- - !ruby/object:Gem::Version
197
+ requirements:
198
+ - - "="
199
+ - !ruby/object:Gem::Version
200
+ hash: 83
201
+ segments:
202
+ - 1
203
+ - 17
204
+ - 0
142
205
  version: 1.17.0
206
+ requirement: *id012
143
207
  type: :runtime
144
208
  prerelease: false
145
- version_requirements: *70367143773260
146
- - !ruby/object:Gem::Dependency
147
- name: rails
148
- requirement: &70367143772420 !ruby/object:Gem::Requirement
209
+ name: activemerchant
210
+ - !ruby/object:Gem::Dependency
211
+ version_requirements: &id013 !ruby/object:Gem::Requirement
149
212
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ hash: 1
217
+ segments:
218
+ - 3
219
+ - 1
220
+ - 1
153
221
  version: 3.1.1
154
222
  - - <=
155
- - !ruby/object:Gem::Version
223
+ - !ruby/object:Gem::Version
224
+ hash: 11
225
+ segments:
226
+ - 3
227
+ - 1
228
+ - 4
156
229
  version: 3.1.4
230
+ requirement: *id013
157
231
  type: :runtime
158
232
  prerelease: false
159
- version_requirements: *70367143772420
160
- - !ruby/object:Gem::Dependency
161
- name: kaminari
162
- requirement: &70367143770960 !ruby/object:Gem::Requirement
233
+ name: rails
234
+ - !ruby/object:Gem::Dependency
235
+ version_requirements: &id014 !ruby/object:Gem::Requirement
163
236
  none: false
164
- requirements:
165
- - - ! '>='
166
- - !ruby/object:Gem::Version
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ hash: 39
241
+ segments:
242
+ - 0
243
+ - 12
244
+ - 4
167
245
  version: 0.12.4
246
+ requirement: *id014
168
247
  type: :runtime
169
248
  prerelease: false
170
- version_requirements: *70367143770960
171
- - !ruby/object:Gem::Dependency
172
- name: deface
173
- requirement: &70367143769780 !ruby/object:Gem::Requirement
249
+ name: kaminari
250
+ - !ruby/object:Gem::Dependency
251
+ version_requirements: &id015 !ruby/object:Gem::Requirement
174
252
  none: false
175
- requirements:
176
- - - ! '>='
177
- - !ruby/object:Gem::Version
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ hash: 3
257
+ segments:
258
+ - 0
259
+ - 7
260
+ - 0
178
261
  version: 0.7.0
262
+ requirement: *id015
179
263
  type: :runtime
180
264
  prerelease: false
181
- version_requirements: *70367143769780
265
+ name: deface
182
266
  description: Required dependency for Spree
183
267
  email: sean@railsdog.com
184
268
  executables: []
269
+
185
270
  extensions: []
271
+
186
272
  extra_rdoc_files: []
187
- files:
273
+
274
+ files:
188
275
  - LICENSE
189
276
  - README.md
190
277
  - app/assets/images/admin/bg/active-tab.png
@@ -937,26 +1024,33 @@ files:
937
1024
  - vendor/assets/stylesheets/jquery-ui.datepicker.css.erb
938
1025
  homepage: http://spreecommerce.com
939
1026
  licenses: []
1027
+
940
1028
  post_install_message:
941
1029
  rdoc_options: []
942
- require_paths:
1030
+
1031
+ require_paths:
943
1032
  - lib
944
- required_ruby_version: !ruby/object:Gem::Requirement
1033
+ required_ruby_version: !ruby/object:Gem::Requirement
945
1034
  none: false
946
- requirements:
947
- - - ! '>='
948
- - !ruby/object:Gem::Version
1035
+ requirements:
1036
+ - - ">="
1037
+ - !ruby/object:Gem::Version
1038
+ hash: 57
1039
+ segments:
1040
+ - 1
1041
+ - 8
1042
+ - 7
949
1043
  version: 1.8.7
950
- required_rubygems_version: !ruby/object:Gem::Requirement
1044
+ required_rubygems_version: !ruby/object:Gem::Requirement
951
1045
  none: false
952
- requirements:
953
- - - ! '>='
954
- - !ruby/object:Gem::Version
955
- version: '0'
956
- segments:
1046
+ requirements:
1047
+ - - ">="
1048
+ - !ruby/object:Gem::Version
1049
+ hash: 3
1050
+ segments:
957
1051
  - 0
958
- hash: -1049287416961651904
959
- requirements:
1052
+ version: "0"
1053
+ requirements:
960
1054
  - none
961
1055
  rubyforge_project: spree_core
962
1056
  rubygems_version: 1.8.10
@@ -964,3 +1058,4 @@ signing_key:
964
1058
  specification_version: 3
965
1059
  summary: Core e-commerce functionality for the Spree project.
966
1060
  test_files: []
1061
+