Rails 抛出一个 Rails 插件化开发的重要且有趣的问题

gazeldx · 2013年01月20日 · 最后由 gazeldx 回复于 2013年01月24日 · 2268 次阅读

我想为我的故事 http://mystory.cc/ 源代码在: https://github.com/gazeldx/mystory/ 开发一些新功能。比如“民间股神”模块。但这个模块并不是所有博客用户都需要的。 PHP中的DISCUZ可以用安装插件的方法来实现,把模块相关的功能源代码放在一个文件夹中。 Rails有什么好办法吗?

共收到 14 条回复

设计一个接口,然后做个gem咯 这问题不怎么有趣嘛

#1楼 @iBachue 愿闻其详!

把那些增量功能设计成Gem呗 小的做成普通Gem就可以了,大的要设计成Rails engine 然后要设置一张列表确定哪些用户使用哪些插件。然后就设计一些注册插件用的接口,在那些Gem中调用,这样的就差不多了吧。

discuz 的插件一开就是全站开的,不是针对某用户的呀 :)

PHP这种东西不可能是Ruby的对手,和装备精良的Rails比更加差太远了。。

这是应用设计问题和框架没关系

#4楼 @wuwx 不好意思,我说的就是如何实现DISCUZ那种一个文件夹中存放所有该插件的文件。@iBachue 说的很对。谢谢!

有人能举一个github上的例子吗?十分感谢。

#8楼 @gazeldx redmine有一堆各种plugin

#9楼 @ywencn 我去看了,已经找到例子,多谢。见: https://github.com/edavis10/redmine/tree/master/extra/sample_plugin/ Rails强大!

#10楼 @gazeldx 别跟着 Redmine 学代码, 惨不忍睹

#11楼 @knwang 谢谢。我正想下载呢,可惜github被墙了,解决见 http://ruby-china.org/topics/8249 。所以我在gitcafe建了一个mystory的库: https://gitcafe.com/gazeldx/rubyblog

http://guides.rubyonrails.org/engines.html Engines can be considered miniature applications that provide functionality to their host applications. A Rails application is actually just a “supercharged” engine, with the Rails::Application class inheriting from Rails::Engine. Therefore, engines and applications share common functionality but are at the same time two separate beasts. Engines and applications also share a common structure, as you’ll see throughout this guide.

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册