mysql2 gem没有加载安装redmine-agile

问题描述 投票:0回答:2

我正在尝试安装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)

尝试从redminethis answer目录失败与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)
ruby-on-rails redmine redmine-plugins
2个回答
1
投票

不必要地使用sudo作为root运行命令是解决一些宝石问题的常见原因。

在几乎所有情况下,你都不应该使用sudo来运行你的rake任务。相反,使用通常通常运行应用服务器的用户,例如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

1
投票

这个错误显然是说你没有安装Gem 'mysql2'你运行命令bundle install?你能试试吗?

在项目根文件夹上,请运行以下命令

gem list mysql2

它应该显示本地宝石,并列出已安装的mysql2

如果没有安装,这意味着要么你无法安装mysql2,要么你没有运行bundle install命令。也许你可以试试以下

Gemfile中添加以下行

gem "mysql2", "0.3.14"

现在运行以下命令

bundle install

现在检查是否真的安装了mysql2

gem list mysql2

如果是,那么一切都好,希望它有效。

© www.soinside.com 2019 - 2024. All rights reserved.