Miêu tả

Khi update Redmine lên phiên bản mới, tới bước update database, khi thực hiện command:

RAILS_ENV=production bundle exec rake db:migrate

thì bị lỗi:

rake aborted!
LoadError: cannot load such file -- json
/home/ec2-user/.gem/ruby/2.3/gems/activesupport-4.2.8/lib/active_support/core_ext/object/json.rb:2:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/activesupport-4.2.8/lib/active_support/core_ext/object/json.rb:2:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/activesupport-4.2.8/lib/active_support/core_ext/object.rb:12:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/activesupport-4.2.8/lib/active_support/core_ext/object.rb:12:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/configuration.rb:2:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/configuration.rb:2:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/railtie.rb:2:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/railtie.rb:2:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/engine.rb:1:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/engine.rb:1:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/application.rb:7:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/application.rb:7:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails.rb:11:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails.rb:11:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/all.rb:1:in `require'
/home/ec2-user/.gem/ruby/2.3/gems/railties-4.2.8/lib/rails/all.rb:1:in `<top (required)>'
/var/www/html/_redmine/redmine-3.4.6/config/application.rb:3:in `require'
/var/www/html/_redmine/redmine-3.4.6/config/application.rb:3:in `<top (required)>'
/var/www/html/_redmine/redmine-3.4.6/Rakefile:5:in `require'
/var/www/html/_redmine/redmine-3.4.6/Rakefile:5:in `<top (required)>'
/home/ec2-user/.gem/ruby/2.3/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)

Theo như nội dung lỗi thì do Redmine không tìm thấy được library json.
Và theo như nội dung ở issue này thì ở các phiên bản mới của Redmine sẽ không có thư viện json trong Gemfile, do thư viện này đã được ship sẵn trong các phiên bản mới (từ 1.9.2 trở lên) của Ruby.
Vậy mà Ruby (version 2.3.7) trên server của mình lại không có .

Giải pháp

Cài lại Ruby thì khá phiền phức và mình cũng không rành về Ruby nên không muốn đâm đầu vào vấn đề này.
Nên chọn cách giải quyết ăn liền như sau:

  1. Thêm dòng `gem "json`` vào trong file Gemfile ở thư mục root của Redmine.
  2. Chạy lại command bundle install --without development test để cài lại các gem cần thiết trong local của Redmine.