mysql2 gem未加载安装redmine-agile

时间:2019-02-12 19:59:30

标签: ruby-on-rails redmine redmine-plugins

我正在尝试安装Redmine Agile plugin,但无法完成步骤4:

/var/www/html/redmine$ sudo bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production
(in /usr/share/redmine)
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
/usr/share/redmine/lib/plugins/acts_as_activity_provider/init.rb:2:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `eval'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `each'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `<top (required)>'
/usr/share/redmine/config/environment.rb:14:in `<top (required)>'
/usr/share/redmine/lib/tasks/redmine.rake:52:in `block (2 levels) in <top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'

Caused by:
Gem::LoadError: mysql2 is not part of the bundle. Add it to your Gemfile.
/var/lib/gems/2.3.0/gems/bundler-1.16.2/lib/bundler/rubygems_integration.rb:408:in `block (2 levels) in replace_gem'
/usr/share/redmine/lib/plugins/acts_as_activity_provider/init.rb:2:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `eval'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `each'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `<top (required)>'
/usr/share/redmine/config/environment.rb:14:in `<top (required)>'
/usr/share/redmine/lib/tasks/redmine.rake:52:in `block (2 levels) in <top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
Tasks: TOP => redmine:plugins:migrate => environment
(See full trace by running task with --trace)

我以前无法sudo gem install mysql2,但是通过遵循this answer来解决这个问题。

我确实尝试添加gem "mysql2",但这不能解决问题。

/var/www/html/redmine$ cat plugins/redmine_agile/Gemfile
gem "redmine_crm"
gem "mysql2"

我不确定and ensure its version is at the minimum required by ActiveRecord的成分。我不确定如何检查那是什么。我知道我可以在Gemfile中设置gem的版本,但是我不知道它将设置为什么。

我使用的是Ubuntu 16.04.4 LTS,MySQL 5.7.22。我正在使用similar to this answer来为Redmine服务。

UPDATE

当我尝试将rake设置为www-data时,错误变为

www-data@host:/usr/share/redmine/public/plugins/redmine_agile$ bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production
`/home/ubuntu` is not writable.
Bundler will use `/tmp/bundler/home/ubuntu' as your home directory temporarily.
Could not find gem 'redmine_crm' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.

(尝试从rake/var/www/html/redmine的情况下,我总是收到mysql2错误。)

然后我尝试安装redmine_crm。我无法以www-data的身份执行此操作,因此我是以root身份执行的操作:

/var/www/html/redmine/plugins/redmine_agile$ sudo gem install redmine_crm

然后我尝试了bundle install但得到了

There was an error while trying to write to
`/usr/share/redmine/public/plugins/redmine_agile/Gemfile.lock`. It is likely that you need to grant
write permissions for that path.

所以我以root身份运行了。

/var/www/html/redmine/plugins/redmine_agile$ sudo bundle install
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as
root will break this application for all non-root users on this machine.
Resolving dependencies...
Using rake 12.3.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 4.2.6
Using builder 3.2.3
Using erubis 2.7.0
Using nokogiri 1.6.7.2
Using rails-deprecated_sanitizer 1.0.3
Using rails-dom-testing 1.0.6
Using crass 1.0.4
Using loofah 2.2.2
Using rails-html-sanitizer 1.0.4
Using actionview 4.2.6
Using rack 1.6.4
Using rack-test 0.6.3
Using actionpack 4.2.6
Using globalid 0.4.1
Using activejob 4.2.6
Using mini_mime 1.0.0
Using mail 2.7.0
Using actionmailer 4.2.6
Using activemodel 4.2.6
Using arel 6.0.3
Using activerecord 4.2.6
Using bundler 1.16.2
Using concurrent-ruby 1.0.5
Using liquid 2.6.3
Using mysql2 0.5.2
Using thor 0.20.0
Using railties 4.2.6
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Using rails 4.2.6
Using redmine_crm 0.0.42
Bundle complete! 2 Gemfile dependencies, 37 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

尝试rake时遇到了另一个错误。

ubuntu@host:/var/www/html/redmine/plugins/redmine_agile$ sudo bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production
(in /usr/share/redmine)
rake aborted!
NameError: uninitialized constant ActionDispatch::XmlParamsParser
/usr/share/redmine/config/application.rb:55:in `<class:Application>'
/usr/share/redmine/config/application.rb:8:in `<module:RedmineApp>'
/usr/share/redmine/config/application.rb:7:in `<top (required)>'
/usr/share/redmine/Rakefile:4:in `require'
/usr/share/redmine/Rakefile:4:in `<top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)

从每个this answer目录的redmine开始尝试失败,并出现mysql2 gem错误。

ubuntu@host:/var/www/html/redmine/plugins/redmine_agile$ cd ../..
ubuntu@host:/var/www/html/redmine$ sudo bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production
(in /usr/share/redmine)
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
/usr/share/redmine/lib/plugins/acts_as_activity_provider/init.rb:2:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `eval'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `each'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `<top (required)>'
/usr/share/redmine/config/environment.rb:14:in `<top (required)>'
/usr/share/redmine/lib/tasks/redmine.rake:52:in `block (2 levels) in <top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'

Caused by:
Gem::LoadError: mysql2 is not part of the bundle. Add it to your Gemfile.
/var/lib/gems/2.3.0/gems/bundler-1.16.2/lib/bundler/rubygems_integration.rb:408:in `block (2 levels) in replace_gem'
/usr/share/redmine/lib/plugins/acts_as_activity_provider/init.rb:2:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `eval'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in `block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `each'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in `<top (required)>'
/usr/share/redmine/config/environment.rb:14:in `<top (required)>'
/usr/share/redmine/lib/tasks/redmine.rake:52:in `block (2 levels) in <top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
Tasks: TOP => redmine:plugins:migrate => environment
(See full trace by running task with --trace)

2 个答案:

答案 0 :(得分:1)

此错误明确表明您尚未安装Gem 'mysql2',您是否已运行命令bundle install?您可以尝试关注吗

在您的项目根文件夹中,请运行以下命令

gem list mysql2

它应该向您显示本地gems,并列出已安装的mysql2

如果未安装它,则意味着您无法安装mysql2或尚未运行bundle install命令。也许您可以尝试以下

在您的Gemfile

中添加以下行
gem "mysql2", "0.3.14"

现在运行以下命令

bundle install

现在检查是否确实安装了mysql2

gem list mysql2

如果是,那么一切都很好,希望它能起作用。

答案 1 :(得分:1)

不必要地使用sudoroot的身份运行命令是导致解决某些问题的常见原因。

因此,在几乎所有情况下,都不应使用sudo来执行耙任务。相反,请使用通常通常运行应用服务器的用户,例如www-data

# first change to the user that usually runs your app
sudo -u www-data /bin/bash -i
/var/www/html/redmine

# Now run your rake task (without prefixing it with sudo)
bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production