提案 #1419
closed環境固有のプラグインロードパスを追加する方法
Added by Izumi Tsutsui almost 5 years ago. Updated over 2 years ago.
Description
てオフでの会話でチケット入れてほしいとのことだったのでとりあえずパッチなしですが提案でチケット入れます。
やりたいこと¶
mikutter で plugin をロードする際に探索するディレクトリを追加できるようにしたい。
背景¶
pkgsrc を含むパッケージシステムとして
twitter plugin を始めとする「mikutter プラグインのパッケージ」
というものが欲しい、というモチベが出てくると思われる。
Twitter は入れるプログインが多いので。
実装案¶
- コマンドラインオプションで追加の探索ディレクトリを追加する
- source'core/boot/load_plugin.rb をパッチして
Plugin.loadpath
に追加する - config.rb かなんかをどうにかする
進め方¶
としぁさんがなんとかしてくれるに違いない
その他¶
Twitter 関連プラグインにリリースタグがつくとやりやすいです(とついでにメモ)
Updated by toshi_a 初音 almost 5 years ago
- Status changed from 実装待ち to レビュー待ち
- Assignee set to Izumi Tsutsui
- ブランチ set to topic/1419-plugin-loadpath
config.rbに雑に足せるようにしてみたよ
Updated by Izumi Tsutsui over 4 years ago
- Status changed from レビュー待ち to マージ待ち
レビュー依頼をめっちゃ忘れてたんですが、いまさらながら 4.1.0ーalpha2 で確認してOKでした。
本体のプラグインとローカルで追加するプラグインはディレクトリをわけないと
複数の環境で使いまわすのが面倒なのに、 pkgsrc は OSC東京駆動のせいで
このチケットのこと忘れてて本体プラグインと同じところに突っ込んでしまったので
4.1 でどうするか考えます。
Updated by Izumi Tsutsui over 4 years ago
鶏頭で #note-4 でどういうテストをしたのか忘却の彼方になってしまったのですが
環境変数 PLUGIN_PATH に追加したいロードパスの文字列を追加すればいいんでしたっけ……。
(いまさらながら 4.1.0 で追試したら追加したロードパスのプラグインが読まれていないっぽい)
Updated by toshi_a 初音 over 4 years ago
ソースコードを直接修正して、以下に書き足します。
たしか、パッケージを配布するときにこういうことをしたいということだったので、この仕様になったんでしたっけ(よく憶えていない)
Updated by Izumi Tsutsui over 4 years ago
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-%
Updated by Izumi Tsutsui about 3 years ago
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
を分けたら表に出てきたということっぽいです。
チケット入れます。
Updated by Izumi Tsutsui over 2 years ago
チケット入れます。
いまさらながら参照を書くの忘れてるのに気づきましたが #1557 で修正済みです。