mysql2 gem не загружен при установке redmine-agile - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь установить плагин Redmine Agile , и не могу выполнить шаг 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, нообойти это, следуя этому ответу .

Я попытался добавить 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, но я не знаю, как он будет установлен.

Я на Ubuntu 16.04.4 LTS, MySQL 5.7.22.Я служу Redmine, используя что-то , похожее на этот ответ .

ОБНОВЛЕНИЕ

Когда я пытался 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)

Попытка выполнить это из каталога redmine per этого ответа завершилась неудачно сmysql2 gem error.

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 голосов
/ 13 февраля 2019

Ненужное использование sudo для запуска команды, так как root является распространенной причиной проблем, чтобы найти решение некоторых драгоценных камней.

Поэтому почти во всех случаях не следует использовать 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
0 голосов
/ 13 февраля 2019

Эта ошибка явно говорит о том, что вы не установили Gem 'mysql2' выполнили ли вы команду bundle install?Можете ли вы попробовать выполнить

В корневой папке вашего проекта, пожалуйста, выполните следующую команду

gem list mysql2

Она должна показать вам локальные гемы, а также список mysql2 как установленный

В случае, если этоне установлен, это означает, что вы либо не можете установить mysql2, либо не выполнили команду bundle install.Возможно, вы можете попробовать следующую команду:

Добавьте следующую строку в Gemfile

gem "mysql2", "0.3.14"

, теперь выполните следующую команду

bundle install

Теперь проверьте, действительно ли установлен mysql2

gem list mysql2

Если да, то все хорошо, надеюсь, это сработает.

...