/var/www/diary/vendor/bundle/ruby/3.1.0/gems/tdiary-5.2.3/lib/tdiary/application.rb:81:in `base_dir': undefined method `empty?' for nil:NilClass (NoMethodError)
if base_url.empty?
^^^^^^^
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/tdiary-5.2.3/lib/tdiary/application.rb:24:in `initialize'
from /var/www/diary/config.ru:5:in `new'
from /var/www/diary/config.ru:5:in `block in <main>'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/builder.rb:116:in `eval'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/builder.rb:116:in `new_from_string'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/builder.rb:105:in `load_file'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/builder.rb:66:in `parse_file'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:349:in `build_app_and_options_from_config'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:249:in `app'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:422:in `wrapped_app'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:312:in `block in start'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:379:in `handle_profiling'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:311:in `start'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/rack-2.2.4/lib/rack/server.rb:168:in `start'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/tdiary-5.2.3/lib/tdiary/cli.rb:129:in `server'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
from /var/www/diary/vendor/bundle/ruby/3.1.0/gems/tdiary-5.2.3/bin/tdiary:7:in `<top (required)>'
from /var/www/diary/vendor/bundle/ruby/3.1.0/bin/tdiary:25:in `load'
from /var/www/diary/vendor/bundle/ruby/3.1.0/bin/tdiary:25:in `<main>'
なお、ディレクトリやドメインなどは実際のものとは変えています。
To Reproduce / 再現手順
Steps to reproduce the behavior:
Expected behavior / 期待した動作
A clear and concise description of what you expected to happen.
サーバが起動すること
Environment / 動作環境
OS: Debian 12 Bookworm
Browser: Firefox
tDiary Version: 5.2.3
Ruby: 3.1.2
Additional context
base_urlをtdiary.confに設定せずに実行したところサーバ自体は起動したもののCSRF関連のエラーが帰ってくるようになったため、前述の通りbase_urlを設定し実行したところ、起動しなくなった。base_urlをtdiary.conf書きこまずに実行したところ、サーバの起動は確認できたが、https://example.com/~example/diary/update.rb?conf=defaultからの設定更新に失敗する。ブラウザの開発者ツール(F12キーで起動するもの)のネットワークモニタを確認したところ、ajaxのリクエストがInternal Server Errorを返しており、その応答内容を確認すると https://tdiary.org/20050721.html にあるような以下のCSRF関連メッセージが表示される。
Diagnostics:
- Protection Method is 1
- Mode is saveconf
- GET is not allowed
- Request Method is POST
- Referer is another page
- Given referer: https://example.com/~example/diary/update.rb
- Expected base URI: https://example.com/
- Expected update URI: https://example.com/update.rb
- CSRF key is nothing
Describe the bug / 不具合の説明
https://example.com/~example/diary
のようなサブディクトリへアクセスした際にtDiaryを動作するよう、Rackを用いたセットアップを行い、実行したところ、以下のようなエラーが表示され、起動に失敗します。なお、ディレクトリやドメインなどは実際のものとは変えています。
To Reproduce / 再現手順 Steps to reproduce the behavior:
gem install tdiary
tdiary new diary && cd diary
vim Gemfile.local
(tdiaryのバージョンを5.2.3に固定)bundle install
cp tdiary.conf.beginner tdiary.conf
echo -e "def base_url\n'https://example.com/~example/diary'\nend\n" >> tdiary.conf
bundle exec tdiary server
Expected behavior / 期待した動作 A clear and concise description of what you expected to happen.
Additional context
base_urlをtdiary.confに設定せずに実行したところサーバ自体は起動したもののCSRF関連のエラーが帰ってくるようになったため、前述の通りbase_urlを設定し実行したところ、起動しなくなった。base_urlをtdiary.conf書きこまずに実行したところ、サーバの起動は確認できたが、
https://example.com/~example/diary/update.rb?conf=default
からの設定更新に失敗する。ブラウザの開発者ツール(F12キーで起動するもの)のネットワークモニタを確認したところ、ajaxのリクエストがInternal Server Errorを返しており、その応答内容を確認すると https://tdiary.org/20050721.html にあるような以下のCSRF関連メッセージが表示される。