Discourseチームの皆さん!
Ubuntuのstable (v2.8.8)でDiscourse Dockerを実行しようとしていますが、以下のエラーが発生しています。
rake aborted!
NoMethodError: undefined method `min_tags_from_required_group' for #<Category:0x00007fc2ffae9f38>
/src/lib/seed_data/categories.rb:114:in `create_category'
/src/lib/seed_data/categories.rb:15:in `block (2 levels) in create'
/src/lib/seed_data/categories.rb:15:in `each'
/src/lib/seed_data/categories.rb:15:in `block in create'
/src/lib/seed_data/categories.rb:14:in `create'
(eval):6:in `block (2 levels) in run_file'
/src/lib/tasks/db.rake:225:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
これまでに実施したことに関する追加情報:
ここに至るまでに実施したこと:
sudo -s
git clone -b v2.8.8 https://github.com/discourse/discourse.git
chmod -R 2777 ./discourse
cd discourse
以前、ブックマークに関する問題が発生したため、以下の操作を行いました:
nano db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb
そして、こちらを貼り付けました:discourse/db/migrate/20220322024216_add_bookmark_polymorphic_columns.rb at cd817a436574cd00f0bae339ec0c4fe2fcf2bb50 · discourse/discourse · GitHub
その後、以下を実行すると:
d/boot_dev -p --init
min_tags_from_required_groupsに関するエラーが発生します。
どなたか支援していただけますでしょうか?
pfaffman
(Jay Pfaffman)
2022 年 9 月 9 日午前 6:46
2
これは開発環境のインストールですか、それとも標準のインストールですか?
本番環境で実行しようとしている場合は、app.yml でバージョンを stable に設定します。指示されたように discourse をクローンすることはありません。
プラグインはありますか?
@pfaffman 様
ご返信ありがとうございます!
こちらは開発インスタンスのため、app.yml がありません。
プラグインはインストールされておらず、Ubuntu 上の stable で開発インスタンスを実行したいと考えていました。
pfaffman
(Jay Pfaffman)
2022 年 9 月 9 日午前 7:25
4
ああ、わかりました。夜中に投稿すべきではなかったかもしれません。
安定版に切り替える前にデータベースはありましたか?おそらく、次を実行する必要があるでしょう。
rake db:drop db:create db:migrate
マイグレーションをチェリーピックする必要はないはずです。
「いいね!」 1
@pfaffman 様
週末はいかがでしたでしょうか。ご返信ありがとうございます。本日テストして、またご連絡いたします。
「いいね!」 1
こんにちは @pfaffman さん
sudo -s を実行してから d/rake db:drop db:create db:migrate を実行したところ、以下のエラーが発生しました。
PG::InsufficientPrivilege: ERROR: must be owner of database discourse_development
Couldn't drop database 'discourse_development'
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: must be owner of database discourse_development
Caused by:
PG::InsufficientPrivilege: ERROR: must be owner of database discourse_development
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
d/psql に入ってリストを取得しました。
discourse-> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------------------+----------+----------+-------------+-------------+------------------------
discourse | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | discourse=CTc/postgres
discourse_development | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | discourse=CTc/postgres
discourse_test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | discourse=CTc/postgres
discourse_test_multisite | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | discourse=CTc/postgres
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(7 rows)
このエラーを解決するにはどうすればよいでしょうか?
pfaffman
(Jay Pfaffman)
2022 年 9 月 12 日午前 4:53
7
うーん。データベースを自分で削除して再作成し、rakeタスクで移行するだけかもしれません。または、discourseユーザーに作成および破棄の権限を与える(それが一番簡単だと思います)。
@pfaffman さん、
残念ながら、Discourse ユーザーに作成および削除権限を付与するプロセスについてはあまり詳しくありません。最初の選択肢ですが、これらのデータベースをすべて削除してから d/rake db:create db:migrate を実行するように言っていますか?それで正しいですか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
2022 年 9 月 12 日午前 10:31
9
Googleで「postgres user roles」やそれに類するものを検索します。こんな感じです。
su - postgres
psql
grant all rights to usee 'discoursev;
でも、おそらく間違っているでしょう。
@pfaffman さん、
これまでのご協力ありがとうございます!psql のトラブルシューティングをさらに進める前に、一歩立ち止まりたいと思います。私の主な目的は、Ubuntu 上で Discourse の Docker 開発環境(stable)を実行することです。これは Mac では問題なく期待どおりに動作します。これらのテーブルとマイグレーションのエラーなしで実行できるはずではないでしょうか?クリーンインストールを試みると、ブックマークのエラーが発生し、それを解決した後、この NoMethodError が発生し、現在は InsufficientPrivilege エラーが発生しています。
当初は test-passed を使用していたため、stable に切り替えたことが原因だと考えていましたが、クリーンで空の Ubuntu インスタンスでも、NoMethodError が発生します。これは、既存の DB がない状態でも発生します。ここでは、ステップ #1 とステップ #2 を実行しただけです。
Developing using Docker
Since Discourse runs in Docker, you should be able to run Discourse directly from your source directory using a Discourse development container.
Pros: No need to install any system dependencies, no configuration needed at all for setting up a development environment quickly.
Cons: Will be slightly slower than the native dev environment on Ubuntu, and much slower than a native install on MacOS.
See also Developing Discourse using a Dev Container …
あなたは Ubuntu 上で stable を問題なくインストールできますか?
このスレッドを上げます!Ubuntuの安定版で開発者環境を実行することに成功した方が他にいるか知りたいです。
pfaffman
(Jay Pfaffman)
2022 年 9 月 19 日午前 5:23
12
試してください
./bundle exec rake db:drop db:create db:migrate
こんにちは @pfaffman さん
ご返信ありがとうございます!残念ながら、同じ問題が繰り返し発生しています。
d/bundle exec rake db:drop db:create db:migrate
PG::InsufficientPrivilege: ERROR: must be owner of database discourse_development
Couldn't drop database 'discourse_development'
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: must be owner of database discourse_development
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Caused by:
PG::InsufficientPrivilege: ERROR: must be owner of database discourse_development
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
初心者向けガイド を使用して、空のインスタンス(既存のDBや情報なしで最初からやり直した状態)で試しましたが、結果は同じでした。
d/rails s で引き続き表示されるエラーは次のとおりです。
NoMethodError (undefined method `min_tags_from_required_group' for #<Category:0x00007f3cca7ce5a8>)
(eval):36:in `_fast_attributes'
app/models/site.rb:70:in `block in all_categories_cache'
lib/cache.rb:94:in `fetch'
app/models/site.rb:52:in `all_categories_cache'
app/models/site.rb:78:in `categories'
app/serializers/site_serializer.rb:203:in `categories'
(eval):32:in `_fast_attributes'
app/models/site.rb:167:in `json_for'
app/controllers/application_controller.rb:595:in `preload_anonymous_data'
app/controllers/finish_installation_controller.rb:69:in `ensure_no_admins'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/missing_avatars.rb:23:in `call'
lib/middleware/turbo_dev.rb:34:in `call'
pfaffman
(Jay Pfaffman)
2022 年 9 月 20 日午前 10:37
14
それなら、別の方法でデータベースを削除する必要があります。Postgres については Google で検索するか (私もそうしています)、覚えている人が投稿するのを待ってください。もう 1 つの選択肢は、discourse ユーザーがデータベースを削除および作成する権限を持っているかどうかを確認することです。