Commit 245a316

mo khan <mo@mokhan.ca>
2016-05-04 02:46:13
fix cache key and decrease distance for dup search.
1 parent 470dfcc
Changed files (3)
app/models/gym.rb
@@ -57,9 +57,9 @@ class Gym < ActiveRecord::Base
     end
   end
 
-  def duplicate?
+  def duplicate?(distance: 0.1)
     Gym.
-      closest_to(location, distance: 1).
+      closest_to(location, distance: distance).
       where.not(id: id).
       limit(1).
       any?
app/models/search.rb
@@ -1,13 +1,15 @@
 class Search
   def self.yelp(q, categories = [], city, page, per_page, &block)
-    Rails.cache.fetch(q, expires_in: 1.hour) do
+    key = "#{q}-#{city}-#{page}-#{per_page}"
+    Rails.cache.fetch(key, expires_in: 1.hour) do
       city = city.present? ? city : 'Calgary'
       categories = categories.present? ? categories.join(',') : 'fitness'
+      offset = (page * per_page) - per_page
       Kaminari.paginate_array(
         Yelp.client.search(city, {
           category_filter: categories,
           limit: per_page,
-          offset: (page * per_page) - per_page,
+          offset: offset,
           term: q,
         }).businesses.map(&block)
       )
bin/yelp
@@ -3,10 +3,14 @@
 # bin/rails runner -e development bin/yelp
 #url='https://api.yelp.com/v2/search/?term=gym&location=Calgary&sort=2&limit=20&cc=CA&category_filter=gyms'
 #curl $url
+Gym.delete_all
+Location.delete_all
 cities = ['Calgary', 'Edmonton', 'Portland', 'Victoria', 'Anaheim', 'San Diego', 'Seattle']
 cities.each do |city|
   (1..5).each do |page|
     puts "Searching #{city}, page: #{page}"
-    Gym.search_yelp(q: 'gym', city: city, page: page).each(&:save!)
+    gyms = Gym.search_yelp(q: 'gym', city: city, page: page)
+    puts "  Found: #{gyms.count}, #{gyms.map(&:name)}"
+    gyms.each(&:save!)
   end
 end