[solved] Installation issue for 5.0.3 - NoMethodError: undefined method `push_dir' for nil:NilClass
Added by alex koval 3 months ago
Hello,
I am getting this on step14 (tried on 2 different servers):
NoMethodError: undefined method `push_dir' for nil:NilClass /home/redmine/redmine-5.0.3/lib/redmine/plugin_loader.rb:130:in `block (2 levels) in add_autoload_paths' /home/redmine/redmine-5.0.3/lib/redmine/plugin_loader.rb:129:in `each' /home/redmine/redmine-5.0.3/lib/redmine/plugin_loader.rb:129:in `block in add_autoload_paths' /home/redmine/redmine-5.0.3/lib/redmine/plugin_loader.rb:125:in `each' /home/redmine/redmine-5.0.3/lib/redmine/plugin_loader.rb:125:in `add_autoload_paths' /home/redmine/redmine-5.0.3/lib/redmine/plugin_loader.rb:105:in `load' /home/redmine/redmine-5.0.3/config/initializers/30-redmine.rb:20:in `<top (required)>' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:326:in `load' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:326:in `block in load' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:299:in `load_dependency' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:326:in `load' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/engine.rb:681:in `block in load_config_initializer' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/notifications.rb:205:in `instrument' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/engine.rb:680:in `load_config_initializer' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/engine.rb:634:in `block (2 levels) in <class:Engine>' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/engine.rb:633:in `each' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/engine.rb:633:in `block in <class:Engine>' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:32:in `instance_exec' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:32:in `run' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:61:in `block in run_initializers' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:50:in `each' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:50:in `tsort_each_child' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/initializable.rb:60:in `run_initializers' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application.rb:391:in `initialize!' /home/redmine/redmine-5.0.3/config/environment.rb:18:in `<top (required)>' /var/lib/gems/3.0.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require' /var/lib/gems/3.0.0/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:332:in `block in require' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:299:in `load_dependency' /var/lib/gems/3.0.0/gems/activesupport-6.1.7/lib/active_support/dependencies.rb:332:in `require' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application.rb:367:in `require_environment!' /var/lib/gems/3.0.0/gems/railties-6.1.7/lib/rails/application.rb:533:in `block in run_tasks_blocks' /usr/share/rubygems-integration/all/gems/rake-13.0.6/exe/rake:27:in `<top (required)>' Tasks: TOP => db:migrate => db:load_config => environment (See full trace by running task with --trace) redmine@ubuntu-s-1vcpu-1gb-intel-fra1-01:~/redmi
Output from `ruby bin/about` looks the same, skipping it.
Here are more details about my system:
System info¶
- Ubuntu 22.04 LTS
- ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
What I did to achieve this¶
Steps [12/14]¶
- Login to server
#+begin_src tmux
ssh root@SERVER.IP.ADDRESS
#+end_src - Install apache and ruby modules
#+begin_src tmux
apt install apache2 libapache2-mod-passenger ruby ruby-dev build-essential
#+end_src - Install postgresql:
#+begin_src tmux
apt install postgresql postgresql-contrib
#+end_src - Enable optional packages:
#+begin_src tmux
apt install imagemagick ghostscript
#+end_src - Create user:
#+begin_src tmux
useradd -m redmine -s /bin/bash
#+end_src - su - redmine
#+begin_src tmux
ssh root@SERVER.IP.ADDRESS
su - redmine
#+end_src - Download
#+begin_src tmux
wget https://redmine.org/releases/redmine-5.0.3.tar.gz
#+end_src - Unpack:
#+begin_src tmux
tar xzf redmine-5.0.3.tar.gz
ln -s redmine-5.0.3 redmine
#+end_src - Configure database
#+begin_src sh
cat << EOF | psql
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'PASSWORD-xxx-xxx' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
EOF
#+end_src
: CREATE ROLE
: CREATE DATABASE - follow on: https://github.com/dopos/dockerfile-redmine/blob/master/Dockerfile and install system libs:
#+begin_src tmux
apt install apt-utils ca-certificates wget nano-tiny imagemagick libpq5 unzip postgresql-client bzr mercurial subversion darcs git openssh-client gcc libmagickcore-dev libmagickwand-dev libpq-dev make g++ cmake autoconf patch libicu-dev rsync
#+end_src - Configure database.yml, configuration.yml
- dest:
- src: /ssh:root@hosting.server.domain:/storage/app/tasks.server.domain/app/htdocs/config
- result:
bc.. production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: PASSWORD-xxx-xxx
encoding: utf8
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
#tls: true
enable_starttls_auto: true
address: "mail.server.domain"
port: 25
domain: "mail.server.domain"
authentication: :plain
user_name: "redmine@server.domain"
password: "xxxxx"
p. <!-- protecting the space after the dot -->
- dest:
- Upload db (see below)
- bundler is missing. installing.
#+begin_src tmux
apt install ruby-bundler
#+end_src - Migrate:
#+begin_src tmux
cd ~/redmine
RAILS_ENV=production bundle exec rake db:migrate
#+end_src - Copy files
- follow up on "copy files":fuzzy:*copy files
- copy them to the dest server:
#+begin_src tmux
cd ~/dev/vhosting.dumps/tasks.server.domain
rsync -ar -e ssh ./files/ redmine@SERVER.IP.ADDRESS:/home/redmine/redmine/files/
#+end_src
Replies (2)
RE: Installation issue for 5.0.3 - NoMethodError: undefined method `push_dir' for nil:NilClass
-
Added by alex koval 3 months ago
As far I see push_dir is used in 2 places:
config/initializers/zeitwerk.rb 4 Rails.autoloaders.main.push_dir lib, namespace: Redmine lib/redmine/plugin_loader.rb 130 Rails.autoloaders.main.push_dir dir
This happens after this change:
commit a914cf4c402b2597e0cc563bd84145ce9eda5a41 Author: Marius Balteanu <marius.balteanu@zitec.com> Date: Wed Nov 17 20:55:08 2021 +0000 Switch to zeitwerk autoloader (#29914, #32938). Patch by Takashi Kato. git-svn-id: http://svn.redmine.org/redmine/trunk@21287 e93f8b46-1217-0410-a6f0-8f06a7374b81
RE: Installation issue for 5.0.3 - NoMethodError: undefined method `push_dir' for nil:NilClass
-
Added by alex koval 3 months ago
I found the issue: I should not have copied config/* from an old installation, it copied it with some previous defaults which caused this issue.
Returning files in config folder back from installation tar file fixed the issue for me.
(1-2/2)