如何对自己创建的 Onebox Engine 进行本地调试?


(Emik) #1

按照 GitHub 上的说明开发了一个简单的 Engine。想请教各位,在本地调试的时候,是否直接将自己开发的 Engine 放到 /discourse/lib/onebox 下面并且在 Engine 模块里 require 后就能生效?

参考了 Discourse 中文本地化服务集合 和其他一些插件化的 Onebox Engine,感觉有很多不太一样的地方。
考虑到生产环境,觉得应该将 Onebox Engine 修改成一个独立的插件,但是没太搞明白应该如何修改。第一次接触 Ruby 和 Rails,思路不是很清晰。


(Erick Guan) #2

应该用 https://github.com/discourse/onebox 来开发,放在 lib/onebox/engine/ 里,同时在外面 require 一下。帮助里有细说了,不懂可以挑出来问。Onebox gem 那可以用 rake server 跑个简单 UI 来测,方便(改了文件要重启服务器)。

如果是公有 API,Pull Request 到官方即可,私有 API 可做成插件。

Onebox Engine 每个都很不一样,看看 onebox gem 比较快上手。


(Emik) #3

非常感谢指点迷津。原先没注意到有 rake server,用了这个之后调试很方便。
已经 Pull Request 到官方了。


(Emik) #4

想尝试为 Discourse 中文本地化服务集合 添加网易云音乐支持,网易云音乐支持 iframe 嵌入播放器,似乎很可行。


(Erick Guan) #5

记得 git rebase -i 做一次压缩哦,合并到一个 commit 可以方便审核。看第九 https://meta.discourse.org/t/discourse-development-contribution-guidelines/3823

好像 https 不能完全支持,那没问题,可以先加到插件那。


(Emik) #6

Onebox 很容易地实现了,但是网易云音乐本身没有 HTTPS 的播放器,这倒比较麻烦了。


(Shuai Zend) #9

能否给一个sample?我现在onebox不知道怎么回事,不能识别自己的站。
例如自己的页面:
https://doc.magentochina.org/guides/v2.1/config-guide/redis/config-redis.html

把该链接复制进编辑框之后,发现显示404错误


.
我尝试fork了

然偶自己修改了代码,更改app.yml换成自己的git地址,rebuild之后还是不生效,这是我的代码:

我创建了两个文件,
devdoc_onebox_spec.rb 和 devdoc.rb

@PhoenixEmik @fantasticfears

从来没有接触过ruby,希望帮助我,谢谢。


(Erick Guan) #10

开发 Onebox 规则引擎的话就去找 Onebox: https://github.com/discourse/onebox。看原来的 pull request,都是很好的完整的例子。比如你看看 GitHub 之类。

bundle install 完你就运行这个 bundle exec rake server 比较容易调试。先不要想看懂代码,按照步骤做做看


大家是如何解决国内很多网站不能被 OneBox 解析的?
(Shuai Zend) #11

我是想不修改onebox,而是直接扩展你的中国本地化插件就行修改,没有成功。
如果是fork /discourese/onebox,那么需要修改哪个文件,才能使用自己的git仓库呢?


(Erick Guan) #12

在本地化插件里你根本就没法调试啊,这个插件用了很多 Ruby 动态的特性,而且还没说明。Onebox 就是做这个的,你写的也是 onebox engine,用它测试完你把测试和文件拷贝到中文插件这的对应文件夹里才行。

应该是 lib/onebox/engine/,不知道这解答了你的问题没?


(Shuai Zend) #13

大家用discourse很多都是看中了onebox这个功能,希望给出完整的教程。毕竟ruby真的不熟。


(Erick Guan) #14

我口气重一点,请不要介意。如果你说你不熟悉 Ruby,请问我怎么期待你能开发一个 Ruby 写的库?