Commit 245a316
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