spree_core 0.70.5 → 0.70.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+