提案 #1419
完了環境固有のプラグインロードパスを追加する方法
Izumi Tsutsui さんがほぼ5年前に追加. 2年以上前に更新.
説明
てオフでの会話でチケット入れてほしいとのことだったのでとりあえずパッチなしですが提案でチケット入れます。
やりたいこと¶
mikutter で plugin をロードする際に探索するディレクトリを追加できるようにしたい。
背景¶
pkgsrc を含むパッケージシステムとして
twitter plugin を始めとする「mikutter プラグインのパッケージ」
というものが欲しい、というモチベが出てくると思われる。
Twitter は入れるプログインが多いので。
実装案¶
- コマンドラインオプションで追加の探索ディレクトリを追加する
- source'core/boot/load_plugin.rb をパッチして
Plugin.loadpath
に追加する - config.rb かなんかをどうにかする
進め方¶
としぁさんがなんとかしてくれるに違いない
その他¶
Twitter 関連プラグインにリリースタグがつくとやりやすいです(とついでにメモ)
toshi_a 初音 さんがほぼ5年前に更新
- ステータス を 実装待ち から レビュー待ち に変更
- 担当者 を Izumi Tsutsui にセット
- ブランチ を topic/1419-plugin-loadpath にセット
config.rbに雑に足せるようにしてみたよ
Izumi Tsutsui さんが4年以上前に更新
- ステータス を レビュー待ち から マージ待ち に変更
レビュー依頼をめっちゃ忘れてたんですが、いまさらながら 4.1.0ーalpha2 で確認してOKでした。
本体のプラグインとローカルで追加するプラグインはディレクトリをわけないと
複数の環境で使いまわすのが面倒なのに、 pkgsrc は OSC東京駆動のせいで
このチケットのこと忘れてて本体プラグインと同じところに突っ込んでしまったので
4.1 でどうするか考えます。
Izumi Tsutsui さんが約4年前に更新
鶏頭で #note-4 でどういうテストをしたのか忘却の彼方になってしまったのですが
環境変数 PLUGIN_PATH に追加したいロードパスの文字列を追加すればいいんでしたっけ……。
(いまさらながら 4.1.0 で追試したら追加したロードパスのプラグインが読まれていないっぽい)
toshi_a 初音 さんが約4年前に更新
ソースコードを直接修正して、以下に書き足します。
たしか、パッケージを配布するときにこういうことをしたいということだったので、この仕様になったんでしたっけ(よく憶えていない)
Izumi Tsutsui さんが約4年前に更新
toshi_a 初音 さんは #note-7 で書きました:
ソースコードを直接修正して、以下に書き足します。
たしか、パッケージを配布するときにこういうことをしたいということだったので、この仕様になったんでしたっけ(よく憶えていない)
経緯としては、パッケージシステムでプラグインを入れるときに本体とは別の場所に入れたいのですが、という話だったと思います。
実装としては、 config.rb をいじる、という案を聞いたのみで、具体的にどういう設定をするかまでは話をしなかったような。
- 本体はもともと
/usr/pkg/share/mikutter
以下に入りデフォルトのプラグインは/usr/pkg/share/mikutter/plugin
以下にある - config.rb をパッチして以下を追加する
File.expand_path(File.join(__dir__, '..', 'plugin-pkgsrc')),
- pkgsrc の mikutter twitter plugin パッケージとして Twitter プラグイン一式を
/usr/pkg/share/mikutter/plugin-plugin
以下に入れる
としてみたところ、以下のエラーになりました。なんか間違えているでしょうか。
mirage-% mikutter #<Thread:0xb43ed3e8@/usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:41 run> terminated with exception (report_on_exception is true): Traceback (most recent call last): 14: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:43:in `block in api' 13: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:79:in `query!' 12: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:94:in `_query!' 11: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:30:in `api_lock' 10: from /usr/pkg/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' 9: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:95:in `block in _query!' 8: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/cache.rb:17:in `cache' 7: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:96:in `block (2 levels) in _query!' 6: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:131:in `retry_if_fail' 5: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:131:in `times' 4: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:133:in `block in retry_if_fail' 3: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:97:in `block (3 levels) in _query!' 2: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:114:in `fire_request_event' 1: from /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/query.rb:98:in `block (4 levels) in _query!' /usr/pkg/share/mikutter/plugin-pkgsrc/twitter/mikutwitter/connect.rb:79:in `query_with_oauth!': Rate limit https://api.twitter.com/1.1/account/verify_credentials.json (MikuTwitter::RateLimitError) Traceback (most recent call last): 52: from /usr/pkg/share/mikutter/mikutter.rb:54:in `<main>' 51: from /usr/pkg/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 50: from /usr/pkg/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' 49: from /usr/pkg/share/mikutter/core/boot/load_plugin.rb:13:in `<top (required)>' 48: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:98:in `load_all' 47: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:38:in `each_spec' 46: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:35:in `each' 45: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:35:in `each' 44: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:40:in `block in each_spec' 43: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:99:in `block in load_all' 42: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:149:in `load' 41: from /usr/pkg/share/mikutter/core/utils.rb:288:in `atomic' 40: from /usr/pkg/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' 39: from /usr/pkg/share/mikutter/core/utils.rb:288:in `block in atomic' 38: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:150:in `block in load' 37: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:150:in `each' 36: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:151:in `block (2 levels) in load' 35: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:149:in `load' 34: from /usr/pkg/share/mikutter/core/utils.rb:288:in `atomic' 33: from /usr/pkg/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' 32: from /usr/pkg/share/mikutter/core/utils.rb:288:in `block in atomic' 31: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:150:in `block in load' 30: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:150:in `each' 29: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:151:in `block (2 levels) in load' 28: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:149:in `load' 27: from /usr/pkg/share/mikutter/core/utils.rb:288:in `atomic' 26: from /usr/pkg/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' 25: from /usr/pkg/share/mikutter/core/utils.rb:288:in `block in atomic' 24: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:159:in `block in load' 23: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:159:in `load' 22: from /usr/pkg/share/mikutter/plugin/world/world.rb:9:in `<top (required)>' 21: from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:39:in `create' 20: from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:39:in `instance_eval' 19: from /usr/pkg/share/mikutter/plugin/world/world.rb:79:in `block in <top (required)>' 18: from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:190:in `collection' 17: from /usr/pkg/share/mikutter/plugin/world/world.rb:80:in `block (2 levels) in <top (required)>' 16: from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/collection.rb:29:in `rewind' 15: from /usr/pkg/share/mikutter/plugin/world/world.rb:80:in `block (3 levels) in <top (required)>' 14: from /usr/pkg/share/mikutter/plugin/world/world.rb:39:in `load_world' 13: from /usr/pkg/share/mikutter/plugin/world/world.rb:39:in `map' 12: from /usr/pkg/share/mikutter/plugin/world/world.rb:39:in `each' 11: from /usr/pkg/share/mikutter/plugin/world/world.rb:44:in `block in load_world' 10: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:149:in `load' 9: from /usr/pkg/share/mikutter/core/utils.rb:288:in `atomic' 8: from /usr/pkg/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' 7: from /usr/pkg/share/mikutter/core/utils.rb:288:in `block in atomic' 6: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:159:in `block in load' 5: from /usr/pkg/share/mikutter/core/miquire_plugin.rb:159:in `load' 4: from /usr/pkg/share/mikutter/plugin/mastodon/mastodon.rb:19:in `<top (required)>' 3: from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:39:in `create' 2: from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:39:in `instance_eval' 1: from /usr/pkg/share/mikutter/plugin/mastodon/mastodon.rb:42:in `block in <top (required)>' /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:321:in `method_missing': undefined method `defactivity' for #<Plugin:0xb403221c> (NoMethodError) Did you mean? activity mirage-%
Izumi Tsutsui さんがほぼ3年前に更新
Izumi Tsutsui さんは #note-8 で書きました:
としてみたところ、以下のエラーになりました。なんか間違えているでしょうか。
1: from /usr/pkg/share/mikutter/plugin/mastodon/mastodon.rb:42:in `block in <top (required)>' /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.5.0/lib/pluggaloid/plugin.rb:321:in `method_missing': undefined method `defactivity' for #<Plugin:0xb403221c> (NoMethodError) Did you mean? activity
ふと思い出してので、超いまさらながら調べたところ、単に
mastodon プラグインで defactivity
を参照してるのに source:plugin/mastodon/.mikutter.yml@146abc89 で activity
プラグインを指定していない
という潜在問題がロード順によってはたまたま発現しなかったのが PLUGIN_PATH
を分けたら表に出てきたということっぽいです。
チケット入れます。