added whenever (cron replacement), fixed related tag calculation updates (now delayed), tag subscriptions now calculated on cron
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -20,3 +20,4 @@ gem "mechanize"
|
|||||||
gem "nokogiri"
|
gem "nokogiri"
|
||||||
gem "meta_search", :git => "git://github.com/ernie/meta_search.git"
|
gem "meta_search", :git => "git://github.com/ernie/meta_search.git"
|
||||||
gem "silent-postgres"
|
gem "silent-postgres"
|
||||||
|
gem "whenever", :require => false
|
||||||
@@ -16,6 +16,7 @@ GIT
|
|||||||
GEM
|
GEM
|
||||||
remote: http://gemcutter.org/
|
remote: http://gemcutter.org/
|
||||||
specs:
|
specs:
|
||||||
|
aaronh-chronic (0.3.9)
|
||||||
actionmailer (3.1.0.rc1)
|
actionmailer (3.1.0.rc1)
|
||||||
actionpack (= 3.1.0.rc1)
|
actionpack (= 3.1.0.rc1)
|
||||||
mail (~> 2.3.0)
|
mail (~> 2.3.0)
|
||||||
@@ -124,6 +125,9 @@ GEM
|
|||||||
tzinfo (0.3.29)
|
tzinfo (0.3.29)
|
||||||
webrobots (0.0.10)
|
webrobots (0.0.10)
|
||||||
nokogiri (>= 1.4.4)
|
nokogiri (>= 1.4.4)
|
||||||
|
whenever (0.6.8)
|
||||||
|
aaronh-chronic (>= 0.3.9)
|
||||||
|
activesupport (>= 2.3.4)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
@@ -146,3 +150,4 @@ DEPENDENCIES
|
|||||||
simple_form
|
simple_form
|
||||||
simplecov
|
simplecov
|
||||||
super_exception_notifier
|
super_exception_notifier
|
||||||
|
whenever
|
||||||
|
|||||||
@@ -488,16 +488,20 @@ class Post < ActiveRecord::Base
|
|||||||
|
|
||||||
def add_tag_subscription_relation(subscriptions, relation)
|
def add_tag_subscription_relation(subscriptions, relation)
|
||||||
subscriptions.each do |subscription|
|
subscriptions.each do |subscription|
|
||||||
subscription =~ /^(.+?):(.+)$/
|
if subscription =~ /^(.+?):(.+)$/
|
||||||
user_name = $1 || subscription
|
user_name = $1
|
||||||
subscription_name = $2
|
subscription_name = $2
|
||||||
|
user = User.find_by_name(user_name)
|
||||||
user = User.find_by_name(user_name)
|
return relation if user.nil?
|
||||||
|
|
||||||
if user
|
|
||||||
post_ids = TagSubscription.find_post_ids(user.id, subscription_name)
|
post_ids = TagSubscription.find_post_ids(user.id, subscription_name)
|
||||||
relation = relation.where(["posts.id IN (?)", post_ids])
|
else
|
||||||
|
user = User.find_by_name(subscription)
|
||||||
|
return relation if user.nil?
|
||||||
|
post_ids = TagSubscription.find_post_ids(user.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
post_ids = [0] if post_ids.empty?
|
||||||
|
relation = relation.where(["posts.id IN (?)", post_ids])
|
||||||
end
|
end
|
||||||
|
|
||||||
relation
|
relation
|
||||||
|
|||||||
@@ -310,11 +310,11 @@ class Tag < ActiveRecord::Base
|
|||||||
module RelationMethods
|
module RelationMethods
|
||||||
def update_related
|
def update_related
|
||||||
counts = RelatedTagCalculator.calculate_from_sample(Danbooru.config.post_sample_size, name)
|
counts = RelatedTagCalculator.calculate_from_sample(Danbooru.config.post_sample_size, name)
|
||||||
self.related_tags = RelatedTagCalculator.convert_hash_to_string(counts)
|
update_attributes(:related_tags => RelatedTagCalculator.convert_hash_to_string(counts), :related_tags_updated_at => Time.now)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_related_if_outdated
|
def update_related_if_outdated
|
||||||
updated_related if should_update_related?
|
delay.update_related if should_update_related?
|
||||||
end
|
end
|
||||||
|
|
||||||
def related_cache_expiry
|
def related_cache_expiry
|
||||||
|
|||||||
5
config/schedule.rb
Normal file
5
config/schedule.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
set :output, "/var/log/whenever.log"
|
||||||
|
|
||||||
|
every 1.hour do
|
||||||
|
TagSubscription.process_all
|
||||||
|
end
|
||||||
@@ -525,7 +525,13 @@ class PostTest < ActiveSupport::TestCase
|
|||||||
assert_equal(post2.id, relation.first.id)
|
assert_equal(post2.id, relation.first.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "return posts for a tag subscription search"
|
should "return posts for a tag subscription search" do
|
||||||
|
post1 = Factory.create(:post, :tag_string => "aaa")
|
||||||
|
sub = Factory.create(:tag_subscription, :tag_query => "aaa", :name => "zzz")
|
||||||
|
TagSubscription.process_all
|
||||||
|
relation = Post.tag_match("sub:#{CurrentUser.name}")
|
||||||
|
assert_equal(1, relation.count)
|
||||||
|
end
|
||||||
|
|
||||||
should "return posts for a particular rating" do
|
should "return posts for a particular rating" do
|
||||||
post1 = Factory.create(:post, :rating => "s")
|
post1 = Factory.create(:post, :rating => "s")
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ class TagTest < ActiveSupport::TestCase
|
|||||||
CurrentUser.user = user
|
CurrentUser.user = user
|
||||||
CurrentUser.ip_addr = "127.0.0.1"
|
CurrentUser.ip_addr = "127.0.0.1"
|
||||||
MEMCACHE.flush_all
|
MEMCACHE.flush_all
|
||||||
|
Delayed::Worker.delay_jobs = false
|
||||||
end
|
end
|
||||||
|
|
||||||
teardown do
|
teardown do
|
||||||
|
|||||||
BIN
tmp/test.jpg
Normal file
BIN
tmp/test.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Reference in New Issue
Block a user