我正在创建我的第一个rails插件,我发现管理插件的版本控制和测试应用程序相当烦人。
这是我的问题:
要实际测试我的插件,我需要在测试应用程序中运行它(这基本上只是我安装插件的脚手架应用程序)
当我对插件进行更改时,我可以方便地在测试应用程序中更改它,以便我可以立即看到更改通过。但是,当我想提交并将我的更改推送回github时,我最终将测试应用程序中的所有文件复制回我的“naked plugin”文件夹并进行提交。
有没有更好的方法来管理它而无需来回复制文件?我很想知道其他插件开发人员是否可能了解如何管理这种情况。
我设想的一个可能的解决方案是在vendor / plugins / myplugin目录中有另一个git存储库(它将具有github的远程存储库)。我不确定这是否是最好的(到目前为止,我还没有成功地使它工作......)
答案 0 :(得分:3)
我建议使用git submodules
,查看detailed description。
答案 1 :(得分:1)
我在vendor/plugin
目录中创建了一个指向插件源代码的软链接。
如果您使用的是Windows,则可以使用junction工具创建软链接。
E.g:
c:\test_app
vendor
plugin
foo_plugin -> points to c:\foo_plugin
c:\foo_plugin
lib
答案 2 :(得分:1)
我认为子模块的工作效果最好。我不喜欢开发插件的是你总是启动/停止脚本/服务器。在不知道你正在构建什么样的插件的情况下,我只是假设你正在构建某种类型的抽象类。
我个人认为最好的方法是在rails应用程序的lib目录中开发类。一旦你完成大约99%,然后将类移动到你的插件的lib目录。然后将更改提交到插件仓库。
答案 3 :(得分:1)
如果您愿意将最终插件打包为宝石,那么有一种更简单的方法。在您的基本脚手架应用程序中,您可以在Gemfile中指向本地路径:
gem'foo',: path => “../ foo” 的
这样你的脚手架app和引擎/插件就在两个独立的目录中;两个完全无关的git回购。你甚至不需要开始&在对插件进行更改时停止脚手架Web服务器(至少在rails 3中)。
我刚刚编写了一个教程,介绍了如何创建我的第一个rails引擎,并将基础提取为其他引擎构建器的良好起点:
http://keithschacht.com/creating-a-rails-3-engine-plugin-gem
作为插件的最终用户,我认为如果将其打包为宝石会更容易。使用gem不仅可以实现更多功能,开发人员可以安装一次并在许多应用程序中使用它,可以轻松处理依赖关系,升级就像更改版本号一样简单,而且您不必将整个插件存储在你的主应用程序的回购。