ToDo:
FreeBSD portsのnet/aquantia-atlantic-kmodは、AQC107系ドライバで、新しい世代のAQC113系をサポートしていないのだが…
Linuxドライバーよりは、ライセンス・構造的に移植しやすいはず… というか、書き換わっていて原型止めてない部分が多いが、FreeBSD版のaq(4) driverが元ネタらしい
2023/04/12にRuby2.7系がEoLするので、移行先を考えないといけない
依存しているは、Web Serviceとして運用しているCGI環境tDaiary-4.1と Hiki-1.0で、両者とも色々ローカルパッチを当てている
現行のWiki運用上、重要な拡張機能
Wiki移行先の候補
とりあえず、始めるべき作業
環境整理作業実施
hiki-1.0.0ベースに手を入れてRuby2.7環境で動く状態になった物でRuby3.1対応を試している
一応、閲覧回りは動くようになったが、Ruby3.1だとページ更新でエラーになるのでゴソゴソ調査してみた
どうやらメソッド呼び出し時のキーワード引数とハッシュの自動変換回りの挙動がRuby3.0で変更になっているのが原因の模様
githubにあるHiki側のコードも見てみたけど、hiki/db/flatfile.rbの移動先のコードlib/hiki/storage/flatfile.rbも暗黙のハッシュ→キーワード引数展開を期待するメソッド呼び出しが残っている
あと、hiki-1.0.0ベースのコードだとハッシュの書き方が旧い模様
FileUtils.copy(textdir(page), backupdir(page), { :preserve => true })
に現れるシンボルに対するハッシュ要素 :preserve => trueは、Ruby1.9以降ではpreserve: trueと記述できる
Hikiの改修だとこの辺
hiki-1.0.0からフォークしたコードベースで、ページ閲覧・ページ更新が出来るところまで修正完了
現時点までは、Ruby 2.7とも互換性を維持している
後は、添付ファイルのアップロード系の機能確認を行ったら、本番環境に反映予定
アップロード系のcgiに関しても改修すべき点があるが、それは後ほどか…
2018年3月頃から動いていないことに今更ながら気が付く
どうやら情報ソースのパースに失敗している?
wrong number of arguments (given 2, expected 3)が出てるからRuby側の変更で動かなくなってるぽぃ
どの関数だ?Weather::parse関数の模様???入力文字列からおかしいか?
Ruby側の仕様変更が原因だとすると、時期的には 2017年12月リリースの Ruby 2.5.0あたり?
さすがに当時の運用環境の詳細は記録に残っていないぞ
メソッド呼び出しがうまく辿れないので、プローブ差し込んで地道に調査…
weather pluginの不具合の件だが、直した!
Index: misc/plugin/weather.rb =================================================================== --- misc/plugin/weather.rb (.../vender/tDiary.org/tdiary-core/stable/misc/plugin/weather.rb) (revision 759) +++ misc/plugin/weather.rb (.../trunk/public:amorita/diary/misc/plugin/weather.rb) (revision 759) @@ -64,7 +64,7 @@ - first draft =end -require 'net/http' +require 'net/https' require 'cgi' require 'timeout' require 'date' # DateTime.strptime @@ -154,7 +154,7 @@ AVIATIONWEATHER_STATION_REGEXP = %r|(?:aviationweather.gov/adds/metars/\?.*station_ids=)([A-Z]{4,4})\b| NOAA_STATION_REGEXP = %r|(?:weather.noaa.gov/weather/current/)([A-Z]{4,4})\b| RAW_STATION_REGEXP = %r|\A([A-Z]{4,4})\z| - STATION_URL_TEMPLATE = "http://www.aviationweather.gov/adds/metars/?station_ids=%s&std_trans=translated&chk_metars=on&hoursStr=most+recent+only" + STATION_URL_TEMPLATE = "https://www.aviationweather.gov/adds/metars/?station_ids=%s&std_trans=translated&chk_metars=on&hoursStr=most+recent+only" def Weather::extract_station_id(url) [AVIATIONWEATHER_STATION_REGEXP, NOAA_STATION_REGEXP, RAW_STATION_REGEXP].each do |r| @@ -292,12 +292,14 @@ px_host, px_port = (@conf['proxy'] || '').split( /:/ ) px_port = 80 if px_host and !px_port u = URI::parse( url ) - Net::HTTP::Proxy( px_host, px_port ).start( u.host, u.port ) do |http| + session = Net::HTTP::Proxy( px_host, px_port ).new( u.host, u.port ) + session.use_ssl = u.scheme == "https" + session.start do |http| case res = http.get( u.request_uri, header ) when Net::HTTPSuccess res.body when Net::HTTPRedirection - fetch( res['location'], limit - 1 ) + fetch( res['location'], limit - 1, header ) else raise ArgumentError, res.error! end
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記