Merge branch 'master' of https://github.com/r888888888/danbooru
This commit is contained in:
3
Gemfile
3
Gemfile
@@ -20,7 +20,8 @@ end
|
|||||||
|
|
||||||
gem "rails", "3.2.12"
|
gem "rails", "3.2.12"
|
||||||
gem "pg", "0.12.2"
|
gem "pg", "0.12.2"
|
||||||
gem "memcache-client", :require => "memcache"
|
gem "kgio"
|
||||||
|
gem "dalli"
|
||||||
gem "delayed_job"
|
gem "delayed_job"
|
||||||
gem "delayed_job_active_record"
|
gem "delayed_job_active_record"
|
||||||
gem "simple_form"
|
gem "simple_form"
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ GEM
|
|||||||
coderay (1.0.9)
|
coderay (1.0.9)
|
||||||
crack (0.3.2)
|
crack (0.3.2)
|
||||||
daemons (1.1.9)
|
daemons (1.1.9)
|
||||||
|
dalli (2.6.4)
|
||||||
delayed_job (3.0.5)
|
delayed_job (3.0.5)
|
||||||
activesupport (~> 3.0)
|
activesupport (~> 3.0)
|
||||||
delayed_job_active_record (0.4.4)
|
delayed_job_active_record (0.4.4)
|
||||||
@@ -106,7 +107,6 @@ GEM
|
|||||||
i18n (>= 0.4.0)
|
i18n (>= 0.4.0)
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
memcache-client (1.8.5)
|
|
||||||
metaclass (0.0.1)
|
metaclass (0.0.1)
|
||||||
method_source (0.8.1)
|
method_source (0.8.1)
|
||||||
mime-types (1.22)
|
mime-types (1.22)
|
||||||
@@ -226,13 +226,14 @@ DEPENDENCIES
|
|||||||
bcrypt-ruby
|
bcrypt-ruby
|
||||||
capistrano-unicorn
|
capistrano-unicorn
|
||||||
daemons
|
daemons
|
||||||
|
dalli
|
||||||
delayed_job
|
delayed_job
|
||||||
delayed_job_active_record
|
delayed_job_active_record
|
||||||
diff-lcs
|
diff-lcs
|
||||||
factory_girl
|
factory_girl
|
||||||
ffaker!
|
ffaker!
|
||||||
|
kgio
|
||||||
mechanize!
|
mechanize!
|
||||||
memcache-client
|
|
||||||
mocha
|
mocha
|
||||||
net-sftp
|
net-sftp
|
||||||
net-ssh
|
net-ssh
|
||||||
|
|||||||
@@ -32,53 +32,44 @@ class Cache
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.get(key, expiry = 0)
|
def self.get(key, expiry = 0)
|
||||||
begin
|
start_time = Time.now
|
||||||
start_time = Time.now
|
value = MEMCACHE.get key
|
||||||
value = MEMCACHE.get key.slice(0, 200)
|
elapsed = Time.now - start_time
|
||||||
elapsed = Time.now - start_time
|
ActiveRecord::Base.logger.debug('MemCache Get (%0.6f) %s -> %s' % [elapsed, key, value])
|
||||||
ActiveRecord::Base.logger.debug('MemCache Get (%0.6f) %s -> %s' % [elapsed, key, value])
|
if value.nil? and block_given? then
|
||||||
if value.nil? and block_given? then
|
value = yield
|
||||||
value = yield
|
MEMCACHE.set key, value, expiry
|
||||||
MEMCACHE.set key, value, expiry
|
|
||||||
end
|
|
||||||
value
|
|
||||||
rescue MemCache::MemCacheError => err
|
|
||||||
ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
|
|
||||||
if block_given? then
|
|
||||||
value = yield
|
|
||||||
put key, value, expiry
|
|
||||||
end
|
|
||||||
value
|
|
||||||
end
|
end
|
||||||
|
value
|
||||||
|
rescue => err
|
||||||
|
ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
|
||||||
|
if block_given? then
|
||||||
|
value = yield
|
||||||
|
put key, value, expiry
|
||||||
|
end
|
||||||
|
value
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.put(key, value, expiry = 0)
|
def self.put(key, value, expiry = 0)
|
||||||
key.gsub!(/\s/, "_")
|
start_time = Time.now
|
||||||
key = key[0, 200]
|
MEMCACHE.set key, value, expiry
|
||||||
|
elapsed = Time.now - start_time
|
||||||
begin
|
ActiveRecord::Base.logger.debug('MemCache Set (%0.6f) %s -> %s' % [elapsed, key, value])
|
||||||
start_time = Time.now
|
value
|
||||||
MEMCACHE.set key, value, expiry
|
rescue => err
|
||||||
elapsed = Time.now - start_time
|
ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
|
||||||
ActiveRecord::Base.logger.debug('MemCache Set (%0.6f) %s -> %s' % [elapsed, key, value])
|
nil
|
||||||
value
|
|
||||||
rescue MemCache::MemCacheError => err
|
|
||||||
ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.delete(key, delay = nil)
|
def self.delete(key, delay = nil)
|
||||||
begin
|
start_time = Time.now
|
||||||
start_time = Time.now
|
MEMCACHE.delete key, delay
|
||||||
MEMCACHE.delete key, delay
|
elapsed = Time.now - start_time
|
||||||
elapsed = Time.now - start_time
|
ActiveRecord::Base.logger.debug('MemCache Delete (%0.6f) %s' % [elapsed, key])
|
||||||
ActiveRecord::Base.logger.debug('MemCache Delete (%0.6f) %s' % [elapsed, key])
|
nil
|
||||||
nil
|
rescue => err
|
||||||
rescue MemCache::MemCacheError => err
|
ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
|
||||||
ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
|
nil
|
||||||
nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.sanitize(key)
|
def self.sanitize(key)
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ class PostPresenter < Presenter
|
|||||||
|
|
||||||
if pool.neighbors(@post).next
|
if pool.neighbors(@post).next
|
||||||
@next_post_in_pool = pool.neighbors(@post).next
|
@next_post_in_pool = pool.neighbors(@post).next
|
||||||
pool_html << template.link_to("next ›".html_safe, template.post_path(pool.neighbors(@post).next, :pool_id => pool.id), :rel => next_rel, :class => "#{klass} next", :title => "to page #{pool.page_number(pool.neighbors(@post).next)}")
|
pool_html << template.link_to("next ›".html_safe, template.post_path(@next_post_in_pool, :pool_id => pool.id), :rel => next_rel, :class => "#{klass} next", :title => "to page #{pool.page_number(@next_post_in_pool)}")
|
||||||
match_found = true
|
match_found = true
|
||||||
else
|
else
|
||||||
pool_html << '<span class="next">next ›</span>'
|
pool_html << '<span class="next">next ›</span>'
|
||||||
|
|||||||
@@ -108,14 +108,14 @@
|
|||||||
<meta name="post-is-flagged" content="<%= @post.is_flagged? %>">
|
<meta name="post-is-flagged" content="<%= @post.is_flagged? %>">
|
||||||
<meta name="config-large-width" content="<%= Danbooru.config.large_image_width %>">
|
<meta name="config-large-width" content="<%= Danbooru.config.large_image_width %>">
|
||||||
<meta name="always-resize-images" content="<%= CurrentUser.user.always_resize_images? %>">
|
<meta name="always-resize-images" content="<%= CurrentUser.user.always_resize_images? %>">
|
||||||
<meta property="og:title" content="<%= h @post.presenter.humanized_essential_tag_string %> - <%= Danbooru.config.app_name %>">
|
<meta property="og:title" content="<%= @post.presenter.humanized_essential_tag_string %> - <%= Danbooru.config.app_name %>">
|
||||||
<meta property="og:description" content="<%= h @post.presenter.humanized_tag_string %>">
|
<meta property="og:description" content="<%= @post.presenter.humanized_tag_string %>">
|
||||||
<meta property="og:image" content="<%= @post.preview_file_url %>">
|
<meta property="og:image" content="<%= @post.preview_file_url %>">
|
||||||
|
|
||||||
<!-- Twitter properties -->
|
<!-- Twitter properties -->
|
||||||
<% if @post.twitter_card_supported? %>
|
<% if @post.twitter_card_supported? %>
|
||||||
<meta name="twitter:card" content="photo">
|
<meta name="twitter:card" content="photo">
|
||||||
<meta name="twitter:image:src" content="http://<%= Danbooru.config.hostname %><%= @post.file_url %>">
|
<meta name="twitter:image:src" content="http://<%= Danbooru.config.hostname %><%= @post.large_file_url %>">
|
||||||
<meta name="twitter:image:width" content="<%= @post.image_width %>">
|
<meta name="twitter:image:width" content="<%= @post.image_width %>">
|
||||||
<meta name="twitter:image:height" content="<%= @post.image_height %>">
|
<meta name="twitter:image:height" content="<%= @post.image_height %>">
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ module Danbooru
|
|||||||
class Configuration
|
class Configuration
|
||||||
# The version of this Danbooru.
|
# The version of this Danbooru.
|
||||||
def version
|
def version
|
||||||
"2.27.0"
|
"2.28.0"
|
||||||
end
|
end
|
||||||
|
|
||||||
# The name of this Danbooru.
|
# The name of this Danbooru.
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ Danbooru::Application.configure do
|
|||||||
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||||
|
|
||||||
# Use a different cache store in production
|
# Use a different cache store in production
|
||||||
# config.cache_store = :mem_cache_store
|
# config.cache_store = :dalli_store, Danbooru.config.memcached_servers
|
||||||
|
|
||||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
||||||
# config.action_controller.asset_host = "http://assets.example.com"
|
# config.action_controller.asset_host = "http://assets.example.com"
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
require 'memcache'
|
|
||||||
|
|
||||||
unless defined?(MEMCACHE)
|
|
||||||
MEMCACHE = MemCache.new :c_threshold => 10_000, :compression => true, :debug => false, :namespace => Danbooru.config.app_name.gsub(/[^A-Za-z0-9]/, "_"), :readonly => false, :urlencode => false
|
|
||||||
MEMCACHE.servers = Danbooru.config.memcached_servers
|
|
||||||
end
|
|
||||||
9
config/initializers/z_dalli.rb
Normal file
9
config/initializers/z_dalli.rb
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
unless defined?(MEMCACHE)
|
||||||
|
MEMCACHE = Dalli::Client.new(Danbooru.config.memcached_servers, :namespace => Danbooru.config.app_name.gsub(/[^A-Za-z0-9]/, "_"))
|
||||||
|
end
|
||||||
|
|
||||||
|
if Rails.env.production?
|
||||||
|
Danbooru::Application.configure do
|
||||||
|
config.cache_store = :dalli_store, Danbooru.config.memcached_servers
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user