我现在已经开发了大约一年的Rails应用程序,并开始了一个新项目(实际上是3个项目)。我想写一些可以在这些项目中共享的宝石,以维护一个通用的代码库。它们最终可能会在某些时候演变为Rails引擎,但首先,只需要包含在每个应用程序中的公共库。
我之前从未撰写过rubygem所以我正在寻找关于在哪里/如何开始构建这个宝石的提示和技巧:
我希望在适当的测试环境等条件下尽可能地遵循简单的Rails约定......可能不会是Rails3的采用者,但显然会朝这个方向发展。
任何提示,技巧,建议或推荐的资源都非常感谢!!
答案 0 :(得分:0)
我通常做的是首先在我需要的地方编写内联功能 - 比如模型级别等。当我注意到它可以被重用时,它将它提取到lib / ext / modulename下的一个单独的模块中。当它明确表示这个功能可以用作一个单独的gem时,我只需要创建一个新项目,将代码移植到适当的结构中,处理任何可能的初始化,添加文档并提交到github。
稍后当你需要对gem进行修改时,我只是在单独的项目中做我的东西,构建gem,使用gem install --local project.gem安装它。您也可以将它作为插件从git安装,在供应商目录中直接编辑,然后将更改反向移植到gem项目。
答案 1 :(得分:0)
无论你是独立还是将它拆开,事实可能取决于你如何看到你的宝石和其余代码之间的界限。如果责任非常明确,我就会分开。如果它不清楚确切的事情开始/结束的位置,你可能希望在你做好正确的事情之前让它自己多次做一堆繁忙的工作。
但是,你设法将代码的可重用部分拉出来,一旦你准备好了代码(或者之前就是这样,你可能想看看珠宝商,http://github.com/technicalpickles/jeweler,特别是如果你要与社区分享宝石。
还有一本书:实用Ruby Gems ,它有点陈旧,但你可以找到一个不到1美元的旧拷贝。
答案 2 :(得分:0)
珠宝商很棒,但有几个值得注意的选择:
bundle gem yourgemname
创建一个简单的结构,您可以在其中自行管理gemspec文件(请参阅Railscasts episode 245)enginex yourgemname
在test / spec中创建一个准确的虚拟rails3应用程序(传递-t rspec
,如果这是您首选的测试框架)。在github上找到它。