tdiary-core/INSTALL-rack.md at master · tdiary/tdiary-core · GitHub を読んで、そのままやってみる。
> gem install tdiary Fetching webrick-1.8.1.gem Fetching thor-1.2.2.gem Fetching rack-3.0.7.gem Fetching mail-2.8.1.gem Fetching hikidoc-0.1.0.gem Fetching mini_mime-1.1.2.gem Fetching emot-0.0.4.gem Fetching fastimage-2.2.6.gem Fetching tdiary-5.2.4.gem Successfully installed webrick-1.8.1 Successfully installed thor-1.2.2 Successfully installed rack-3.0.7 Successfully installed mini_mime-1.1.2 Successfully installed mail-2.8.1 Successfully installed hikidoc-0.1.0 Successfully installed fastimage-2.2.6 Successfully installed emot-0.0.4 Successfully installed tdiary-5.2.4 Parsing documentation for webrick-1.8.1 Installing ri documentation for webrick-1.8.1 Parsing documentation for thor-1.2.2 Installing ri documentation for thor-1.2.2 Parsing documentation for rack-3.0.7 Installing ri documentation for rack-3.0.7 Parsing documentation for mini_mime-1.1.2 Installing ri documentation for mini_mime-1.1.2 Parsing documentation for mail-2.8.1 Installing ri documentation for mail-2.8.1 Parsing documentation for hikidoc-0.1.0 Installing ri documentation for hikidoc-0.1.0 Parsing documentation for fastimage-2.2.6 Installing ri documentation for fastimage-2.2.6 Parsing documentation for emot-0.0.4 Installing ri documentation for emot-0.0.4 Parsing documentation for tdiary-5.2.4 Installing ri documentation for tdiary-5.2.4 Done installing documentation for webrick, thor, rack, mini_mime, mail, hikidoc, fastimage, emot, tdiary after 6 seconds 9 gems installed
しんぷる
> tdiary version tdiary 5.2.4
大昔のバージョンしか知らないので、CLIがあるのが驚き。
> tdiary new diary create diary create diary/public create diary/misc/plugin create diary/lib/tdiary/filter create diary/lib/tdiary/style create diary/js create diary/theme create diary/README.md create diary/Gemfile create diary/Gemfile.lock create diary/config.ru create diary/tdiary.conf.beginner create diary/tdiary.conf.sample create diary/tdiary.conf.sample-en create diary/doc create diary/doc/HOWTO-authenticate-in-rack.md create diary/doc/HOWTO-make-io.md create diary/doc/HOWTO-make-plugin.md create diary/doc/HOWTO-make-theme.md create diary/doc/HOWTO-testing-tDiary.md create diary/doc/HOWTO-use-plugin.md create diary/doc/HOWTO-write-tDiary.en.md create diary/doc/HOWTO-write-tDiary.md create diary/doc/INSTALL-cgi.md create diary/doc/INSTALL-paas.md create diary/doc/INSTALL-rack.md create diary/doc/INSTALL.md create diary/doc/README.en.md create diary/doc/README.md create diary/doc/UPGRADE.md create diary/doc/doc.css create diary/tdiary.conf create diary/Gemfile.local [DEPRECATED] `Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env` (called at /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/tdiary-5.2.4/lib/tdiary/cli.rb:23) run bundle install --without test development from "./diary" [DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag Bundler 2.4.13 is running, but your lockfile was generated with 2.3.7. Installing Bundler 2.3.7 and restarting using that version. Fetching gem metadata from https://rubygems.org/. Fetching bundler 2.3.7 Installing bundler 2.3.7 [DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag Fetching gem metadata from https://rubygems.org/........... Resolving dependencies... Using rake 13.0.6 Using bundler 2.3.7 Using rexml 3.2.5 Fetching thor 1.2.1 Using hikidoc 0.1.0 Using mini_mime 1.1.2 Fetching timeout 0.3.0 Fetching rack 3.0.1 Using fastimage 2.2.6 Fetching webrick 1.7.0 Fetching mail 2.7.1 Installing timeout 0.3.0 Fetching net-protocol 0.1.3 Installing thor 1.2.1 Installing webrick 1.7.0 Using emot 0.0.4 Installing net-protocol 0.1.3 Installing rack 3.0.1 Using net-smtp 0.3.3 Installing mail 2.7.1 Fetching rackup 0.2.3 Using tdiary 5.2.4 Installing rackup 0.2.3 Bundle complete! 28 Gemfile dependencies, 16 gems now installed. Gems in the groups 'test' and 'development' were not installed. Use `bundle info [gemname]` to see where a bundled gem is installed. run bundle exec tdiary htpasswd from "./diary" Input your username/password Username: tambara New password: Re-type new password: install finished run `tdiary server` in diary directory to start server
サーバを起動してみる
> bundle exec tdiary server /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/file.rb:5: warning: Rack::File is deprecated and will be removed in Rack 3.1 [2023-05-20 09:51:17] INFO WEBrick 1.7.0 [2023-05-20 09:51:17] INFO ruby 3.2.2 (2023-03-30) [arm64-darwin22] [2023-05-20 09:51:17] INFO WEBrick::HTTPServer#start: pid=12696 port=19292
あがった。localhost:19292にアクセスしてみよう。
Rack::Lint::LintError: uppercase character in header name: Content-Type (Rack::Lint::LintError) /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/lint.rb:653:in `block in check_headers' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/lint.rb:637:in `each' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/lint.rb:637:in `check_headers' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/lint.rb:73:in `response' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/lint.rb:35:in `call' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/show_exceptions.rb:27:in `call' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/common_logger.rb:43:in `call' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/content_length.rb:20:in `call' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rackup-0.2.3/lib/rackup/handler/webrick.rb:94:in `service' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/webrick-1.7.0/lib/webrick/httpserver.rb:140:in `service' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/webrick-1.7.0/lib/webrick/httpserver.rb:96:in `run' /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/webrick-1.7.0/lib/webrick/server.rb:310:in `block in start_thread' 127.0.0.1 - - [20/May/2023:09:53:01 +0900] "GET / HTTP/1.1" 500 40600 0.0290 127.0.0.1 - - [20/May/2023:09:53:01 JST] "GET / HTTP/1.1" 500 40600 - -> /
あら?
というわけで、動かない。調べるか・・・
とりあえず、この設定だとマシンの外部からアクセス出来てしまう。ローカルでだけ使いたい。
cli.rbをみると、serverコマンドにオプションを付ければ良さそうだ。
(前略) desc "server", "Start tDiary server" method_option "rack", type: :string, banner: "start server with rack interface (default)" method_option "cgi", type: :string, banner: "start server with cgi interface" method_option "bind", aliases: "b", type: :string, default: "0.0.0.0", banner: "bind to the IP" method_option "port", aliases: "p", type: :numeric, default: 19292, banner: "use PORT" method_option "log", aliases: "l", type: :string, banner: "File to redirect output" def server (後略)
オプションbらしい。-b
の形で指定すればいいのかな?
> bundle exec tdiary server -b localhost /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/rack-3.0.1/lib/rack/file.rb:5: warning: Rack::File is deprecated and will be removed in Rack 3.1 [2023-05-20 11:42:10] INFO WEBrick 1.7.0 [2023-05-20 11:42:10] INFO ruby 3.2.2 (2023-03-30) [arm64-darwin22] [2023-05-20 11:42:10] INFO WEBrick::HTTPServer#start: pid=14501 port=19292
見た目変わらないが、これでLAN上の別のマシンからはアクセス出来なくなったのでOKっぽい。
さて、エラーの原因だけども、
Rack::Lint::LintError: uppercase character in header name: Content-Type (Rack::Lint::LintError)
と言われていて、ググった感じだとRackの3.0.0からレスポンスヘッダは小文字じゃないとダメみたい。HTTP ヘッダの大文字小文字がはどちらでもいいという認識だったけど、最近、変わったのだろうか。
さらに検索してみると、そのもののPRが見つかった。
Rack 3 で動かない箇所を直しました by hsbt · Pull Request #1068 · tdiary/tdiary-core · GitHub
これは5.2.4に含まれている問題みたい。 tDiary-5.2.4 リリース - tDiary.org
にも、動かなかったら5.2.3を使ってくれと書いてある。はーい。
> gem uninstall tdiary Remove executables: tdiary in addition to the gem? [Yn] Y Removing tdiary Successfully uninstalled tdiary-5.2.4 > gem install tdiary -v 5.2.3 Fetching tdiary-5.2.3.gem Successfully installed tdiary-5.2.3 Parsing documentation for tdiary-5.2.3 Installing ri documentation for tdiary-5.2.3 Done installing documentation for tdiary after 0 seconds 1 gem installed
今度は~lib/tdiaryで作ることにする。
> tdiary new lib/tdiary create lib/tdiary create lib/tdiary/public create lib/tdiary/misc/plugin create lib/tdiary/lib/tdiary/filter create lib/tdiary/lib/tdiary/style create lib/tdiary/js create lib/tdiary/theme create lib/tdiary/README.md create lib/tdiary/Gemfile create lib/tdiary/Gemfile.lock create lib/tdiary/config.ru create lib/tdiary/tdiary.conf.beginner create lib/tdiary/tdiary.conf.sample create lib/tdiary/tdiary.conf.sample-en create lib/tdiary/doc create lib/tdiary/doc/HOWTO-authenticate-in-rack.md create lib/tdiary/doc/HOWTO-make-io.md create lib/tdiary/doc/HOWTO-make-plugin.md create lib/tdiary/doc/HOWTO-make-theme.md create lib/tdiary/doc/HOWTO-testing-tDiary.md create lib/tdiary/doc/HOWTO-use-plugin.md create lib/tdiary/doc/HOWTO-write-tDiary.en.md create lib/tdiary/doc/HOWTO-write-tDiary.md create lib/tdiary/doc/INSTALL-cgi.md create lib/tdiary/doc/INSTALL-paas.md create lib/tdiary/doc/INSTALL-rack.md create lib/tdiary/doc/INSTALL.md create lib/tdiary/doc/README.en.md create lib/tdiary/doc/README.md create lib/tdiary/doc/UPGRADE.md create lib/tdiary/doc/doc.css create lib/tdiary/tdiary.conf create lib/tdiary/Gemfile.local [DEPRECATED] `Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env` (called at /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/tdiary-5.2.3/lib/tdiary/cli.rb:23) run bundle install --without test development from "./lib/tdiary" [DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag Fetching gem metadata from https://rubygems.org/........... Resolving dependencies... Using rake 13.0.6 Using bundler 2.3.7 Fetching digest 3.1.0 Using thor 1.2.1 Using fastimage 2.2.6 Using hikidoc 0.1.0 Using mini_mime 1.1.2 Using timeout 0.3.0 Using webrick 1.7.0 Using rexml 3.2.5 Fetching rack 2.2.4 Using emot 0.0.4 Using mail 2.7.1 Using net-protocol 0.1.3 Installing digest 3.1.0 with native extensions Installing rack 2.2.4 Fetching tdiary 5.2.4 Installing tdiary 5.2.4 Fetching net-smtp 0.3.1 Installing net-smtp 0.3.1 Bundle complete! 27 Gemfile dependencies, 16 gems now installed. Gems in the groups 'test' and 'development' were not installed. Use `bundle info [gemname]` to see where a bundled gem is installed. run bundle exec tdiary htpasswd from "./lib/tdiary" Input your username/password Username: tambara New password: Re-type new password: install finished run `tdiary server` in lib/tdiary directory to start server
あ、あれ?tdiary 5.2.4がインストールされちゃった。
> bundle exec tdiary server -b localhost bundler: failed to load command: tdiary (/Users/tambara/.rbenv/versions/3.2.2/bin/tdiary) /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/tdiary-5.2.4/lib/tdiary/cli.rb:129:in `server': uninitialized constant Rackup (NameError) ::Rackup::Server.start( opts ) ^^^^^^^^ from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/tdiary-5.2.4/bin/tdiary:7:in `<top (required)>' from /Users/tambara/.rbenv/versions/3.2.2/bin/tdiary:25:in `load' from /Users/tambara/.rbenv/versions/3.2.2/bin/tdiary:25:in `<top (required)>' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/cli/exec.rb:58:in `load' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/cli/exec.rb:58:in `kernel_load' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/cli/exec.rb:23:in `run' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/cli.rb:484:in `exec' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/cli.rb:31:in `dispatch' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/cli.rb:25:in `start' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/exe/bundle:48:in `block in <top (required)>' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors' from /Users/tambara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/exe/bundle:36:in `<top (required)>' from /Users/tambara/.rbenv/versions/3.2.2/bin/bundle:25:in `load' from /Users/tambara/.rbenv/versions/3.2.2/bin/bundle:25:in `<main>'
案の定動かない。よくわからんけど、Gemfile.lockのtdiaryのバージョンを5.2.3に直してうごかしちゃった(笑)
あと、RDスタイルがないと困ってしまうので、探して入れた。