Skip to content

Commit d13f275

Browse files
committed
Merge pull request ruby-china#539 from ruby-china/use-activerecord
Use ActiveRecord
2 parents e743374 + c838f86 commit d13f275

File tree

101 files changed

+1358
-1465
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1358
-1465
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,4 @@ chromedriver.log
3333
.idea/
3434
spec/examples.txt
3535
.vagrant
36+
.byebug_history

.travis.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ env:
33
- USE_OFFICIAL_GEM_SOURCE=1
44

55
services:
6-
- mongodb
6+
- postgresql
77
- memcached
88
- redis-server
99
- elasticsearch
@@ -12,14 +12,14 @@ rvm:
1212
- 2.3.0
1313

1414
before_script:
15-
- mongo ruby_china_test --eval 'db.addUser("travis", "test");'
15+
- psql -c "create database \"ruby-china-test\";" -U postgres
1616
- cp config/config.yml.default config/config.yml
17-
- cp config/mongoid.yml.default config/mongoid.yml
17+
- cp config/database.yml.default config/database.yml
1818
- cp config/redis.yml.default config/redis.yml
1919
- cp config/elasticsearch.yml.default config/elasticsearch.yml
2020
- cp config/secrets.yml.default config/secrets.yml
21-
- sed -i "s/SETUP_DEVELOPMENT_HOST/127.0.0.1:27017/g" config/mongoid.yml
2221
- sed -i "s/SETUP_REDIS_HOST/127.0.0.1/g" config/redis.yml
2322
- sed -i "s/SETUP_REDIS_PORT/6379/g" config/redis.yml
23+
- RAILS_ENV=test bundle exec rake db:migrate
2424

2525
script: RAILS_ENV=test bundle exec rake

Gemfile

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ gem 'mini_magick'
3838
gem 'rucaptcha'
3939
gem 'letter_avatar'
4040

41-
# Mongoid 辅助插件
42-
gem 'mongoid', '5.0.0'
43-
gem 'mongoid_auto_increment_id'
44-
gem 'mongoid_rails_migrations'
41+
gem 'pg'
42+
gem 'activerecord_any_of'
43+
44+
# remove this after migrate MongoDB into PostgreSQL
45+
gem 'mongo', require: false
4546

4647
# 用户系统
4748
gem 'devise', '~> 3.5.1'
@@ -115,10 +116,6 @@ gem 'rack-utf8_sanitizer'
115116
# Mini profiler
116117
gem 'rack-mini-profiler', require: false
117118

118-
# gem 'newrelic_rpm'
119-
# gem 'newrelic_moped'
120-
# gem 'newrelic-grape'
121-
122119
gem 'oneapm_rpm'
123120

124121
group :development do
@@ -149,7 +146,5 @@ group :development, :test do
149146
gem 'better_errors'
150147
gem 'binding_of_caller'
151148

152-
gem 'tunemygc'
153-
154149
gem 'bundler-audit', require: false
155150
end

Gemfile.lock

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ GEM
4141
activemodel (= 4.2.5)
4242
activesupport (= 4.2.5)
4343
arel (~> 6.0)
44+
activerecord_any_of (1.3)
45+
activerecord (>= 3.2.13, < 5)
4446
activesupport (4.2.5)
4547
i18n (~> 0.7)
4648
json (~> 1.7, >= 1.7.7)
@@ -57,8 +59,6 @@ GEM
5759
sass-rails
5860
arel (6.0.3)
5961
ast (2.2.0)
60-
astrolabe (1.3.1)
61-
parser (~> 2.2)
6262
auto-space (0.0.4)
6363
activesupport (> 3.0.0)
6464
axiom-types (0.1.1)
@@ -241,19 +241,6 @@ GEM
241241
minitest (5.8.3)
242242
mongo (2.2.1)
243243
bson (~> 4.0)
244-
mongoid (5.0.0)
245-
activemodel (~> 4.0)
246-
mongo (~> 2.1)
247-
origin (~> 2.1)
248-
tzinfo (>= 0.3.37)
249-
mongoid_auto_increment_id (0.8.1)
250-
mongoid (>= 5.0.0, < 6.0.0)
251-
mongoid_rails_migrations (1.1.0)
252-
activesupport (>= 4.2.0)
253-
bundler (>= 1.0.0)
254-
mongoid (>= 4.0.0)
255-
rails (>= 4.2.0)
256-
railties (>= 4.2.0)
257244
multi_json (1.11.2)
258245
multi_xml (0.5.5)
259246
multipart-post (2.0.0)
@@ -282,11 +269,11 @@ GEM
282269
oauth2 (~> 1.0)
283270
omniauth (~> 1.2)
284271
oneapm_rpm (1.3.3)
285-
origin (2.1.1)
286272
orm_adapter (0.5.0)
287273
parallel (1.6.1)
288-
parser (2.2.3.0)
289-
ast (>= 1.1, < 3.0)
274+
parser (2.3.0.1)
275+
ast (~> 2.2)
276+
pg (0.18.4)
290277
phantomjs (1.9.8.0)
291278
posix-spawn (0.3.11)
292279
postmark (0.9.15)
@@ -372,13 +359,11 @@ GEM
372359
rspec-mocks (~> 3.4.0)
373360
rspec-support (~> 3.4.0)
374361
rspec-support (3.4.1)
375-
rubocop (0.35.1)
376-
astrolabe (~> 1.3)
377-
parser (>= 2.2.3.0, < 3.0)
362+
rubocop (0.36.0)
363+
parser (>= 2.3.0.0, < 3.0)
378364
powerpack (~> 0.1)
379365
rainbow (>= 1.99.1, < 3.0)
380366
ruby-progressbar (~> 1.7)
381-
tins (<= 1.6.0)
382367
ruby-prof (0.15.9)
383368
ruby-progressbar (1.7.5)
384369
rucaptcha (0.3.2)
@@ -416,8 +401,6 @@ GEM
416401
thor (0.19.1)
417402
thread_safe (0.3.5)
418403
tilt (2.0.1)
419-
tins (1.6.0)
420-
tunemygc (1.0.62)
421404
tzinfo (1.2.2)
422405
thread_safe (~> 0.1)
423406
uglifier (2.7.2)
@@ -444,6 +427,7 @@ PLATFORMS
444427
DEPENDENCIES
445428
actionpack-action_caching
446429
active_model_serializers
430+
activerecord_any_of
447431
api_taster (= 0.6.0)
448432
auto-space (= 0.0.4)
449433
better_errors
@@ -485,14 +469,13 @@ DEPENDENCIES
485469
md_emoji
486470
message_bus
487471
mini_magick
488-
mongoid (= 5.0.0)
489-
mongoid_auto_increment_id
490-
mongoid_rails_migrations
472+
mongo
491473
nokogiri
492474
omniauth (~> 1.2.2)
493475
omniauth-github (~> 1.1.0)
494476
oneapm_rpm
495477
parallel
478+
pg
496479
postmark (= 0.9.15)
497480
postmark-rails (= 0.4.1)
498481
puma (~> 2.14.0)
@@ -520,7 +503,6 @@ DEPENDENCIES
520503
sinatra
521504
social-share-button (= 0.1.5)
522505
sprockets
523-
tunemygc
524506
turbolinks!
525507
uglifier
526508
unicorn (= 5.0.0)

app/controllers/cpanel/application_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class ApplicationController < ::ApplicationController
77
before_action :set_active_menu
88

99
def require_admin
10-
render_404 unless Setting.admin_emails.include?(current_user.email)
10+
render_404 unless current_user.admin?
1111
end
1212

1313
def set_active_menu

app/controllers/cpanel/applications_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class ApplicationsController < ApplicationController
33
def index
4-
@applications = Doorkeeper::Application.desc('_id').paginate(page: params[:page], per_page: 20)
4+
@applications = Doorkeeper::Application.order(id: :desc).paginate(page: params[:page], per_page: 20)
55

66
respond_to do |format|
77
format.html # index.html.erb

app/controllers/cpanel/exception_logs_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class ExceptionLogsController < ApplicationController
33
def index
4-
@exception_logs = ExceptionLog.desc('_id').paginate(page: params[:page], per_page: 20)
4+
@exception_logs = ExceptionLog.order(id: :desc).paginate(page: params[:page], per_page: 20)
55

66
respond_to do |format|
77
format.html # index.html.erb

app/controllers/cpanel/pages_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class PagesController < ApplicationController
33
def index
4-
@pages = Page.unscoped.desc(:_id).paginate page: params[:page], per_page: 30
4+
@pages = Page.unscoped.order(id: :desc).paginate page: params[:page], per_page: 30
55
end
66

77
def show

app/controllers/cpanel/replies_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class RepliesController < ApplicationController
33
def index
4-
@replies = Reply.unscoped.desc(:_id).includes(:topic, :user).paginate page: params[:page], per_page: 30
4+
@replies = Reply.unscoped.order(id: :desc).includes(:topic, :user).paginate page: params[:page], per_page: 30
55
end
66

77
def show

app/controllers/cpanel/site_configs_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class SiteConfigsController < ApplicationController
33
def index
4-
@site_configs = SiteConfig.desc(:_id)
4+
@site_configs = SiteConfig.order(id: :desc)
55
end
66

77
def edit

app/controllers/cpanel/site_nodes_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class SiteNodesController < ApplicationController
33
def index
4-
@site_nodes = SiteNode.desc('_id').paginate(page: params[:page], per_page: 20)
4+
@site_nodes = SiteNode.order(id: :desc).paginate(page: params[:page], per_page: 20)
55

66
respond_to do |format|
77
format.html # index.html.erb

app/controllers/cpanel/topics_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Cpanel
22
class TopicsController < ApplicationController
33
def index
4-
@topics = Topic.unscoped.desc(:_id).includes(:user).paginate page: params[:page], per_page: 30
4+
@topics = Topic.unscoped.order(id: :desc).includes(:user).paginate page: params[:page], per_page: 30
55
end
66

77
def show

app/controllers/cpanel/users_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def index
55
if params[:q]
66
@users = @users.where(login: /#{params[:q]}/)
77
end
8-
@users = @users.desc(:_id).paginate page: params[:page], per_page: 30
8+
@users = @users.order(id: :desc).paginate page: params[:page], per_page: 30
99
end
1010

1111
def show

app/controllers/jobs_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ def index
99
@node = Node.find(Node.jobs_id)
1010
@suggest_topics = Topic.where(node_id: @node.id).suggest.limit(3)
1111
suggest_topic_ids = @suggest_topics.map(&:id)
12-
@topics = @node.topics.last_actived.fields_for_list.where(:_id.nin => suggest_topic_ids).includes(:user).paginate(page: params[:page], per_page: 15)
12+
@topics = @node.topics.last_actived.fields_for_list
13+
@topics = @topics.where.not(id: suggest_topic_ids) if suggest_topic_ids.count > 0
14+
@topics = @topics.includes(:user).paginate(page: params[:page], per_page: 15)
1315
set_seo_meta("#{@node.name} &raquo; #{t('menu.topics')}", "#{Setting.app_name}#{t('menu.topics')}#{@node.name}", @node.summary)
1416
render '/topics/index'
1517
end

app/controllers/pages_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def new
4646
end
4747

4848
def edit
49-
@page = Page.find(params[:id])
49+
@page = Page.find_by_slug(params[:id])
5050
set_seo_meta t('pages.edit_wiki_page')
5151
end
5252

@@ -63,7 +63,7 @@ def create
6363
end
6464

6565
def update
66-
@page = Page.find(params[:id])
66+
@page = Page.find_by_slug(params[:id])
6767
@page.version_enable = true
6868
@page.user_id = current_user.id
6969

app/controllers/sites_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ class SitesController < ApplicationController
22
load_and_authorize_resource
33

44
def index
5-
@site_nodes = SiteNode.all.desc('sort')
5+
@site_nodes = SiteNode.all.order(sort: :desc)
66
set_seo_meta("Ruby #{t('menu.sites')}")
77
end
88

app/controllers/topics_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def index
1818
@topics = @topics.without_hide_nodes
1919
end
2020
@topics = @topics.fields_for_list
21-
@topics = @topics.paginate(page: params[:page], per_page: 22, total_entries: 1500)
21+
@topics = @topics.paginate(page: params[:page], per_page: 22, total_entries: 1500).to_a
2222
end
2323
@threads.each(&:join)
2424

@@ -84,12 +84,12 @@ def show
8484
@show_raw = params[:raw] == '1'
8585

8686
@threads << Thread.new do
87-
@replies = @topic.replies.unscoped.without_body.asc(:_id).all
87+
@replies = Reply.unscoped.where(topic_id: @topic.id).without_body.order(:id).all
8888

8989
check_current_user_liked_replies
90+
check_current_user_status_for_topic
9091
end
9192

92-
check_current_user_status_for_topic
9393
set_special_node_active_menu
9494

9595
@threads.each(&:join)
@@ -114,7 +114,7 @@ def check_current_user_status_for_topic
114114

115115
@threads << Thread.new do
116116
# 通知处理
117-
current_user.read_topic(@topic)
117+
current_user.read_topic(@topic, replies_ids: @replies.collect(&:id))
118118
end
119119

120120
# 是否关注过

app/controllers/users_controller.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def show
2020
end
2121

2222
def topics
23-
@topics = @user.topics.unscoped.fields_for_list.recent.paginate(page: params[:page], per_page: 40)
23+
@topics = @user.topics.fields_for_list.recent.paginate(page: params[:page], per_page: 40)
2424
set_seo_meta("#{@user.login} 的帖子")
2525
end
2626

@@ -31,7 +31,7 @@ def replies
3131

3232
def favorites
3333
@topic_ids = @user.favorite_topic_ids.reverse.paginate(page: params[:page], per_page: 40)
34-
@topics = Topic.where(:_id.in => @topic_ids).fields_for_list
34+
@topics = Topic.where(id: @topic_ids).fields_for_list
3535
@topics = @topics.to_a.sort do |a, b|
3636
@topic_ids.index(a.id) <=> @topic_ids.index(b.id)
3737
end
@@ -60,13 +60,13 @@ def update_private_token
6060
end
6161

6262
def city
63-
@location = Location.find_by_name(params[:id])
63+
@location = Location.location_find_by_name(params[:id])
6464
if @location.blank?
6565
render_404
6666
return
6767
end
6868

69-
@users = User.where(location_id: @location.id).fields_for_list.desc('replies_count').paginate(page: params[:page], per_page: 60)
69+
@users = User.where(location_id: @location.id).fields_for_list.order(replies_count: :desc).paginate(page: params[:page], per_page: 60)
7070

7171
render_404 if @users.count == 0
7272
end
@@ -86,7 +86,7 @@ def blocked
8686
render_404
8787
end
8888

89-
@blocked_users = User.where(:_id.in => current_user.blocked_user_ids).paginate(page: params[:page], per_page: 20)
89+
@blocked_users = User.where(id: current_user.blocked_user_ids).paginate(page: params[:page], per_page: 20)
9090
end
9191

9292
def follow

app/models/authorization.rb

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
class Authorization
2-
include Mongoid::Document
3-
include Mongoid::Timestamps
4-
include Mongoid::BaseModel
5-
6-
field :provider
7-
field :uid, type: String
8-
embedded_in :user, inverse_of: :authorizations
9-
1+
class Authorization < ActiveRecord::Base
102
validates :uid, :provider, presence: true
113
validates :uid, uniqueness: { scope: :provider }
124
end

0 commit comments

Comments
 (0)