upgrades ruby gems, related fixes

This commit is contained in:
Kyle Drake 2017-05-08 02:54:19 -07:00
parent 282ae9e45d
commit 31b864227a
7 changed files with 146 additions and 149 deletions

View file

@ -1,6 +1,6 @@
source 'https://rubygems.org'
gem 'sinatra'
gem 'sinatra', '2.0.0'
gem 'redis'
gem 'redis-namespace'
gem 'sequel'

View file

@ -1,6 +1,6 @@
GIT
remote: https://github.com/planio-gmbh/dav4rack.git
revision: e68dcf97399a116878a1a68b5c879f5cb05c40cb
revision: ec491dccab4bcfa846bb4616c7177fb09819981c
branch: redmine-storage
specs:
dav4rack (0.3.0)
@ -12,14 +12,14 @@ GIT
GEM
remote: https://rubygems.org/
specs:
acme-client (0.4.0)
acme-client (0.5.5)
faraday (~> 0.9, >= 0.9.1)
activesupport (5.0.2)
activesupport (5.1.0)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.5.0)
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
annoy (0.5.6)
highline (>= 1.5.0)
@ -28,8 +28,8 @@ GEM
bcrypt (3.1.11)
blankslate (3.1.3)
builder (3.2.3)
byebug (8.2.4)
capybara (2.13.0)
byebug (9.0.6)
capybara (2.14.0)
addressable
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
@ -40,15 +40,14 @@ GEM
capybara (>= 2)
minitest (>= 4)
certified (1.0.0)
climate_control (0.0.3)
activesupport (>= 3.0)
climate_control (0.1.0)
cliver (0.3.2)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
coderay (1.1.1)
concurrent-ruby (1.0.5)
connection_pool (2.2.0)
coveralls (0.8.20)
connection_pool (2.2.1)
coveralls (0.8.21)
json (>= 1.8, < 3)
simplecov (~> 0.14.1)
term-ansicolor (~> 1.3)
@ -59,41 +58,41 @@ GEM
crass (1.0.2)
dante (0.2.0)
docile (1.1.5)
domain_name (0.5.20160826)
domain_name (0.5.20170404)
unf (>= 0.0.5, < 1.0.0)
drydock (0.6.9)
erubis (2.7.0)
exifr (1.2.5)
fabrication (2.15.0)
fabrication (2.16.1)
facter (2.4.6)
faker (1.6.3)
faker (1.7.3)
i18n (~> 0.5)
faraday (0.9.2)
faraday (0.12.1)
multipart-post (>= 1.2, < 3)
faraday_middleware (0.9.2)
faraday (>= 0.7.4, < 0.10)
feedjira (2.1.0)
faraday_middleware (0.11.0.1)
faraday (>= 0.7.4, < 1.0)
feedjira (2.1.2)
faraday (>= 0.9)
faraday_middleware (>= 0.9)
loofah (>= 2.0)
sax-machine (>= 1.0)
ffi (1.9.10)
ffi-compiler (0.1.3)
ffi (1.9.18)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
filesize (0.1.1)
fspath (3.0.3)
fspath (3.1.0)
gandi (3.3.27)
hashie
geoip (1.6.1)
hashdiff (0.3.2)
geoip (1.6.3)
hashdiff (0.3.4)
hashie (3.5.5)
highline (1.7.8)
hiredis (0.6.1)
hoe (3.14.2)
rake (>= 0.8, < 11.0)
htmlentities (4.3.4)
http (2.0.3)
http (2.2.2)
addressable (~> 2.3)
http-cookie (~> 1.0)
http-form_data (~> 1.0.1)
@ -102,85 +101,85 @@ GEM
domain_name (~> 0.5)
http-form_data (1.0.1)
http_parser.rb (0.6.0)
i18n (0.7.0)
image_optim (0.24.1)
i18n (0.8.1)
image_optim (0.24.3)
exifr (~> 1.2, >= 1.2.2)
fspath (~> 3.0)
image_size (~> 1.5)
in_threads (~> 1.3)
progress (~> 3.0, >= 3.0.1)
image_optim_pack (0.3.0.20161206)
image_optim_pack (0.5.0)
fspath (>= 2.1, < 4)
image_optim (~> 0.19)
image_size (1.5.0)
in_threads (1.3.1)
in_threads (1.4.0)
io-extra (1.2.8)
ipaddress (0.8.3)
jimson-temp (0.9.5)
jimson-temp (0.9.4)
blankslate (>= 3.1.2)
multi_json (~> 1.0)
rack (~> 1.4)
rest-client (~> 1.0)
multi_json (>= 1.7.6)
rack (>= 1.4.5)
rest-client (>= 1.6.7)
json (1.8.6)
loofah (2.0.3)
nokogiri (>= 1.5.9)
m (1.4.2)
m (1.5.0)
method_source (>= 0.6.7)
rake (>= 0.9.2.2)
magic (0.2.9)
ffi (>= 0.6.3)
mail (2.6.4)
mail (2.6.5)
mime-types (>= 1.16, < 4)
metaclass (0.0.4)
method_source (0.8.2)
mime-types (2.99.3)
mini_portile2 (2.1.0)
minitest (5.10.1)
minitest-reporters (1.1.8)
minitest-reporters (1.1.14)
ansi
builder
minitest (>= 5.0)
ruby-progressbar
mocha (1.1.0)
mocha (1.2.1)
metaclass (~> 0.0.1)
mock_redis (0.16.1)
mock_redis (0.17.3)
monetize (1.6.0)
money (~> 6.8)
money (6.8.1)
i18n (>= 0.6.4, <= 0.7.0)
sixarm_ruby_unaccent (>= 1.1.1, < 2)
money (6.9.0)
i18n (>= 0.6.4, < 0.9)
msgpack (1.1.0)
multi_json (1.12.1)
multipart-post (2.0.0)
mustermann (1.0.0)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (3.1.1)
net-ssh (4.1.0)
netrc (0.11.0)
nokogiri (1.7.0.1)
nokogiri (1.7.1)
mini_portile2 (~> 2.1.0)
nokogumbo (1.4.7)
nokogumbo (1.4.10)
nokogiri
ox (2.4.6)
ox (2.5.0)
paypal-recurring (1.1.0)
pg (0.20.0)
poltergeist (1.11.0)
poltergeist (1.15.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
websocket-driver (>= 0.2.0)
progress (3.2.2)
pry (0.10.3)
progress (3.3.1)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
pry-byebug (3.3.0)
byebug (~> 8.0)
pry-byebug (3.4.2)
byebug (~> 9.0)
pry (~> 0.10)
public_suffix (2.0.5)
puma (3.4.0)
rack (1.6.5)
rack-cache (1.6.1)
puma (3.8.2)
rack (2.0.1)
rack-cache (1.7.0)
rack (>= 0.4)
rack-protection (1.5.3)
rack-protection (2.0.0)
rack
rack-recaptcha (0.6.6)
json
@ -191,15 +190,15 @@ GEM
rack (>= 1.0.0)
rake (10.5.0)
redis (3.3.3)
redis-namespace (1.5.2)
redis-namespace (1.5.3)
redis (~> 3.0, >= 3.0.4)
rest-client (1.8.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0)
netrc (~> 0.7)
rinku (2.0.0)
rmagick (2.15.4)
ruby-progressbar (1.7.5)
rinku (2.0.2)
rmagick (2.16.0)
ruby-progressbar (1.8.1)
rye (0.9.13)
annoy
docile (>= 1.0.1)
@ -208,40 +207,40 @@ GEM
net-ssh (>= 2.0.13)
sysinfo (>= 0.8.1)
safe_yaml (1.0.4)
sanitize (4.0.1)
sanitize (4.4.0)
crass (~> 1.0.2)
nokogiri (>= 1.4.4)
nokogumbo (~> 1.4.1)
sass (3.4.22)
sass (3.4.23)
sax-machine (1.3.2)
scrypt (2.1.1)
ffi-compiler (>= 0.0.2)
rake
sequel (4.44.0)
sequel_pg (1.6.17)
scrypt (3.0.5)
ffi-compiler (>= 1.0, < 2.0)
sequel (4.46.0)
sequel_pg (1.6.18)
pg (>= 0.8.0)
sequel (>= 4.0.0)
shotgun (0.9.1)
shotgun (0.9.2)
rack (>= 1.0)
sidekiq (4.1.2)
sidekiq (4.1.4)
concurrent-ruby (~> 1.0)
connection_pool (~> 2.2, >= 2.2.0)
redis (~> 3.2, >= 3.2.1)
sinatra (>= 1.4.7)
simplecov (0.14.1)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.0)
simpleidn (0.0.6)
sinatra (1.4.8)
rack (~> 1.5)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
simpleidn (0.0.7)
sinatra (2.0.0)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.0)
tilt (~> 2.0)
sinatra-flash (0.3.0)
sinatra (>= 1.0.0)
sinatra-xsendfile (0.4.2)
sinatra (>= 0.9.1)
sixarm_ruby_unaccent (1.1.1)
slop (3.6.0)
storable (0.8.9)
stripe (1.15.0)
@ -255,28 +254,28 @@ GEM
sysinfo (0.8.1)
drydock
storable
term-ansicolor (1.5.0)
term-ansicolor (1.6.0)
tins (~> 1.0)
thor (0.19.4)
thread (0.2.2)
thread_safe (0.3.6)
tilt (2.0.6)
tilt (2.0.7)
timecop (0.8.1)
tins (1.13.2)
tzinfo (1.2.3)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
unf_ext (0.0.7.4)
uuidtools (2.1.5)
webmock (2.3.2)
webmock (3.0.1)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff
websocket-driver (0.6.4)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
will_paginate (3.1.0)
will_paginate (3.1.5)
xmlrpc (0.3.0)
xpath (2.0.0)
nokogiri (~> 1.3)
@ -348,7 +347,7 @@ DEPENDENCIES
sidekiq (~> 4.1.2)
simplecov
simpleidn
sinatra
sinatra (= 2.0.0)
sinatra-flash
sinatra-xsendfile
stripe (= 1.15.0)

View file

@ -6,14 +6,14 @@ get '/browse/?' do
params.delete 'tag' if params[:tag].nil? || params[:tag].strip.empty?
if is_education?
site_dataset = education_sites_dataset
ds = education_sites_dataset
else
site_dataset = browse_sites_dataset
ds = browse_sites_dataset
end
site_dataset = site_dataset.paginate @page, Site::BROWSE_PAGINATION_LENGTH
@pagination_dataset = site_dataset
@sites = site_dataset.all
ds = ds.paginate @page, Site::BROWSE_PAGINATION_LENGTH
@pagination_dataset = ds
@sites = ds.all
site_ids = @sites.collect {|s| s[:id]}
tags = DB['select site_id,name from tags join sites_tags on tags.id=sites_tags.tag_id where site_id IN ?', site_ids].all
@ -31,25 +31,24 @@ get '/browse/?' do
end
def education_sites_dataset
site_dataset = Site.filter is_deleted: false
site_dataset = site_dataset.association_join(:tags).select_all(:sites)
ds = Site.filter is_deleted: false
ds = ds.association_join(:tags).select_all(:sites)
params[:tag] = current_site.tags.first.name
site_dataset.where! ['tags.name = ?', params[:tag]]
ds = ds.where ['tags.name = ?', params[:tag]]
end
def browse_sites_dataset
site_dataset = Site.browse_dataset
ds = Site.browse_dataset
if current_site
site_dataset.or! sites__id: current_site.id
ds = ds.or sites__id: current_site.id
if !current_site.blocking_site_ids.empty?
site_dataset.where!(Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocking_site_ids))
ds = ds.where(Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocking_site_ids))
end
if current_site.blocks_dataset.count
site_dataset.where!(
ds = ds.where(
Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocks_dataset.select(:actioning_site_id).all.collect {|s| s.actioning_site_id})
)
end
@ -57,56 +56,56 @@ def browse_sites_dataset
case params[:sort_by]
when 'special_sauce'
site_dataset.exclude! score: nil
site_dataset.order! :score.desc
ds = ds.exclude score: nil
ds = ds.order :score.desc
when 'followers'
site_dataset.order! :follow_count.desc, :updated_at.desc
ds = ds.order :follow_count.desc, :updated_at.desc
when 'supporters'
site_dataset.exclude! plan_type: nil
site_dataset.exclude! plan_type: 'free'
site_dataset.order! :views.desc, :site_updated_at.desc
ds = ds.exclude plan_type: nil
ds = ds.exclude plan_type: 'free'
ds = ds.order :views.desc, :site_updated_at.desc
when 'featured'
site_dataset.exclude! featured_at: nil
site_dataset.order! :featured_at.desc
ds = ds.exclude featured_at: nil
ds = ds.order :featured_at.desc
when 'hits'
site_dataset.where!{views > 100}
site_dataset.order!(:hits.desc, :site_updated_at.desc)
ds = ds.where{views > 100}
ds = ds.order(:hits.desc, :site_updated_at.desc)
when 'views'
site_dataset.where!{views > 100}
site_dataset.order!(:views.desc, :site_updated_at.desc)
ds = ds.where{views > 100}
ds = ds.order(:views.desc, :site_updated_at.desc)
when 'newest'
site_dataset.order!(:created_at.desc, :views.desc)
ds = ds.order(:created_at.desc, :views.desc)
when 'oldest'
site_dataset.where!{views > 100}
site_dataset.order!(:created_at, :views.desc)
ds = ds.where{views > 100}
ds = ds.order(:created_at, :views.desc)
when 'random'
site_dataset.where!{views > 100}
site_dataset.where! 'random() < 0.01'
ds = ds.where{views > 100}
ds = ds.where 'random() < 0.01'
when 'last_updated'
site_dataset.where!{views > 100}
ds = ds.where{views > 100}
params[:sort_by] = 'last_updated'
site_dataset.exclude!(site_updated_at: nil)
site_dataset.order!(:site_updated_at.desc, :views.desc)
ds = ds.exclude(site_updated_at: nil)
ds = ds.order(:site_updated_at.desc, :views.desc)
when 'tipping_enabled'
site_dataset.where! tipping_enabled: true
site_dataset.where!("(tipping_paypal is not null and tipping_paypal != '') or (tipping_bitcoin is not null and tipping_bitcoin != '')")
site_dataset.where!{views > 10_000}
site_dataset.group! :sites__id
site_dataset.order! :follow_count.desc, :views.desc, :updated_at.desc
ds = ds.where tipping_enabled: true
ds = ds.where("(tipping_paypal is not null and tipping_paypal != '') or (tipping_bitcoin is not null and tipping_bitcoin != '')")
ds = ds.where{views > 10_000}
ds = ds.group :sites__id
ds = ds.order :follow_count.desc, :views.desc, :updated_at.desc
else
params[:sort_by] = 'followers'
site_dataset.order! :follow_count.desc, :views.desc, :updated_at.desc
ds = ds.order :follow_count.desc, :views.desc, :updated_at.desc
end
site_dataset.where! ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
ds = ds.where ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
if params[:tag]
site_dataset.select_all! :sites
site_dataset.inner_join! :sites_tags, :site_id => :id
site_dataset.inner_join! :tags, :id => :sites_tags__tag_id
site_dataset.where! ['tags.name = ?', params[:tag]]
site_dataset.where! ['tags.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
ds = ds.select_all :sites
ds = ds.inner_join :sites_tags, :site_id => :id
ds = ds.inner_join :tags, :id => :sites_tags__tag_id
ds = ds.where ['tags.name = ?', params[:tag]]
ds = ds.where ['tags.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
end
site_dataset
ds
end

View file

@ -59,11 +59,10 @@ post '/site_files/create' do
site_file ||= SiteFile.new site_id: current_site.id, path: name
site_file.set_all(
size: 0,
sha1_hash: Digest::SHA1.hexdigest(''),
updated_at: Time.now
)
site_file.size = 0
site_file.set size: 0
site_file.set sha1_hash: Digest::SHA1.hexdigest('')
site_file.set updated_at: Time.now
site_file.save
end

View file

@ -33,6 +33,8 @@ raise 'hash_ip_salt is required' unless $config['ip_hash_salt']
DB = Sequel.connect $config['database'], sslmode: 'disable', max_connections: $config['database_pool']
DB.extension :pagination
DB.extension :auto_literal_strings
Sequel.split_symbols = true
require 'will_paginate/sequel'

View file

@ -4,7 +4,13 @@ class Comment < Sequel::Model
many_to_one :actioning_site, class: :Site
one_to_many :comment_likes
dataset.exclude! is_deleted: true
def dataset
if @_is_deleted_filter_set.nil?
@dataset = @dataset.filter is_deleted: false
@_is_deleted_filter_set = true
end
super
end
def liking_site_titles
comment_likes_dataset.select(:id, :actioning_site_id).all.collect do |comment_like|

View file

@ -919,7 +919,7 @@ class Site < Sequel::Model
# Check for existing email if new or changing email.
if new? || @original_email
email_check = self.class.select(:id).filter(email: values[:email])
email_check.exclude!(id: self.id) unless new?
email_check = email_check.exclude(id: self.id) unless new?
email_check = email_check.first
if parent? && email_check && email_check.id != self.id
@ -1313,19 +1313,13 @@ class Site < Sequel::Model
return suggestions if suggestions.length == limit
# Old.
#suggestions += suggestions_dataset.where("views >= #{SUGGESTIONS_VIEWS_MIN}").limit(limit-suggestions.length).order(Sequel.lit('RANDOM()')).all
ds = self.class.browse_dataset
ds = ds.select_all :sites
ds = ds.order :follow_count.desc, :updated_at.desc
ds = ds.where Sequel.lit("views >= #{SUGGESTIONS_VIEWS_MIN}")
ds = ds.limit limit - suggestions.length
# New:
site_dataset = self.class.browse_dataset
site_dataset.select_all! :sites
site_dataset.order! :follow_count.desc, :updated_at.desc
site_dataset.where! "views >= #{SUGGESTIONS_VIEWS_MIN}"
site_dataset.limit! limit-suggestions.length
#site_dataset.order! Sequel.lit('RANDOM()')
suggestions += site_dataset.all
suggestions += ds.all
end
def screenshot_path(path, resolution)
@ -1548,11 +1542,9 @@ class Site < Sequel::Model
site_file ||= SiteFile.new site_id: self.id, path: relative_path
site_file.set_all(
size: uploaded_size,
sha1_hash: uploaded_sha1,
updated_at: Time.now
)
site_file.set size: uploaded_size
site_file.set sha1_hash: uploaded_sha1
site_file.set updated_at: Time.now
site_file.save
purge_cache path