Disconnect from discourse after read_only mode

What app is this about, and its version: Discourse 3.5.2~ynh1
What YunoHost version are you running: 12.1.35
What type of hardware are you using: VPS bought online

Describe your issue

I have need put Discourse on mode read_only to have a maintenance work, as explain on the documentation, in the path /admin/backups you can enable this read_only mode. Explain here Read Only Modes in Discourse - Site Management - Discourse Meta

But now I can’t no more login on the discourse. I could do a day ago an d come could come back to the admin settings to remove this read only mode, but I don’t know why, this time I couldn’t.

I see in the forum a solution is enter on a rails console rails c and a command Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY), but I don’t know if it’s possible call rails in the app, and how do this ??

Share relevant logs or error messages

I have try this

yunohost app shell discourse
discourse@yuno:~/discourse$ cd bin/
discourse@yuno:~/discourse/bin$ ls
annotaterb  bundle  dev  docker  ember-cli  lint  notify_file_change  rails  rake  rspec  rubocop  system_rspec  turbo_rspec  unicorn
./rails c
/opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/kconv.rb:13: warning: /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/x86_64-linux/nkf.so was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
You can add nkf to your Gemfile or gemspec to silence this warning.
/opt/rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/rubygems_integration.rb:215:in `block (2 levels) in replace_gem': listen is not part of the bundle. Add it to your Gemfile. (Gem::LoadError)
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/evented_file_update_checker.rb:3:in `<main>'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
	from /var/www/discourse/discourse/config/environments/development.rb:10:in `block in <main>'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/railtie.rb:256:in `instance_eval'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/railtie.rb:256:in `configure'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/railtie.rb:191:in `configure'
	from /var/www/discourse/discourse/config/environments/development.rb:3:in `<main>'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:567:in `block (2 levels) in <class:Engine>'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:566:in `each'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:566:in `block in <class:Engine>'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:32:in `instance_exec'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:32:in `run'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:231:in `block in tsort_each'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:353:in `block (2 levels) in each_strongly_connected_component'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:425:in `block (2 levels) in each_strongly_connected_component_from'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:434:in `each_strongly_connected_component_from'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:424:in `block in each_strongly_connected_component_from'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:50:in `each'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:50:in `tsort_each_child'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:418:in `call'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:418:in `each_strongly_connected_component_from'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:352:in `block in each_strongly_connected_component'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:350:in `each'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:350:in `call'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:350:in `each_strongly_connected_component'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:229:in `tsort_each'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/tsort.rb:208:in `tsort_each'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/initializable.rb:60:in `run_initializers'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application.rb:440:in `initialize!'
	from /var/www/discourse/discourse/config/environment.rb:7:in `<main>'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application.rb:416:in `require_environment!'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command/actions.rb:20:in `boot_application!'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/commands/console/console_command.rb:86:in `perform'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command/base.rb:73:in `perform'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:65:in `block in invoke'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:143:in `with_argv'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:63:in `invoke'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/commands.rb:18:in `<main>'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	from /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	from /var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from ./rails:18:in `<main>'

 I imagine rails console is a gem not build ??

No logs

J’ai eu besoin de mettre Discourse on mode read_only pour une tâche de maintenance en me rendant sur /admin/backups on peut activer ce mode read_only (activer la lecture seule). Expliqué ici: Read Only Modes in Discourse - Site Management - Discourse Meta

But now I can’t no more login on the discourse. I could do a day ago an d come could come back to the admin settings to remove this read only mode, but I don’t know why, this time I couldn’t.

Je vois dans le forum une solution est avec rails console, rails c et une commande Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY), mais je ne sais pas comment c’est possible d’appeler rails dans l’application, comment faire cela ?? J’ai tenter en dans shell l’application… J’ai vu qu’il y avait un dossier bin ou le binaire de rails semble présent, mais comment l’exécuter ??

discourse@yuno:~/discourse$ bin/rails -c
/opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/kconv.rb:13: warning: /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/x86_64-linux/nkf.so was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
You can add nkf to your Gemfile or gemspec to silence this warning.
bin/rails aborted!
LoadError: cannot load such file -- annotate_rb (LoadError)
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
/var/www/discourse/discourse/lib/tasks/annotate_rb.rake:6:in `<main>'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:687:in `load'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:687:in `block in run_tasks_blocks'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:687:in `each'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:687:in `run_tasks_blocks'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/application.rb:562:in `run_tasks_blocks'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/engine.rb:470:in `load_tasks'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/railtie.rb:226:in `public_send'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/railtie.rb:226:in `method_missing'
/var/www/discourse/discourse/Rakefile:9:in `<main>'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/commands/rake/rake_command.rb:43:in `block in with_rake'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/commands/rake/rake_command.rb:41:in `with_rake'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:150:in `invoke_rake'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:67:in `block in invoke'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:143:in `with_argv'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/command.rb:63:in `invoke'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
(See full trace by running task with --trace)

If I did not found solutions perhaps doing yunohost app discourse upgrade -F could resolve the issue ?? not sure…

The best should be how use rails c in this environment ??

Ok I found the solution !!

yunohost app shell discourse
discourse@yuno:~/discourse$ RAILS_ENV=production bin/rails console
/opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/kconv.rb:13: warning: /opt/rbenv/versions/3.3.6/lib/ruby/3.3.0/x86_64-linux/nkf.so was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
You can add nkf to your Gemfile or gemspec to silence this warning.
fatal: not a git repository (or any of the parent directories): .git
Loading production environment (Rails 8.0.2.1)
discourse(prod)> Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
=> true
discourse(prod)> quit
1 Like