tsd*_*own 18 rubygems ruby-on-rails ruby-on-rails-plugins
作为一个Rails开发人员,我觉得有点愚蠢地问这个问题,但希望我会学到一些新东西,有人可以让我摆脱困境!在我的rails应用程序中,我一直使用(其他人)宝石,我也使用来自社区或我自己的插件.
我理解使用宝石而不是插件的好处,因为它们是版本,分段,系统范围,更易于管理和共享等等,但我真的不知道如何为我的rails应用程序制作宝石!?
你总是从一个插件开始并将其转换为宝石,我已经看到了"将它打包为宝石"这几个字.另外我正在考虑构建的宝石在普通的ruby程序中并不好用,它只对rails应用程序有用.我甚至不确定它的语义是否有意义,'RubyGem'只适用于rails应用程序!?
我想创建一个gem(如果这是我应该使用的?),为我的rails应用程序提供一个独立的功能.它需要添加数据库迁移,新路由并提供控制器和视图或有用的视图助手.我知道我可以通过一个插件来实现这个目标,但是我想知道如何/为什么要将它作为'Ruby Gem'来实现?
为了避免过度工程的风险,我通常从我需要的功能开始直接进入应用程序.然后,只要我需要将相同的功能用于另一个项目,我就会检查是否值得将其提取到插件中,甚至是提供API的单独应用程序.
插件和宝石通常可以互换.Gems在可重用性和可维护性方面提供了几个显着的优势.另一方面,有一些具体的已知问题.例如,Rails应用程序实际上无法加载定义到打包为Gem的插件中的rake任务.
几乎每个Rails插件都可以打包为Gem.例如,拿我的tabs_on_rails插件.
您可以将其安装为Gem,指定对environment.rb的依赖性.或者您可以script/plugin install按预期使用命令.
如果要获得相同的结果,请确保遵循标准Gem布局并提供init.rbRails所需的初始化脚本.此外,当插件作为标准Rails插件安装时,您可能希望创建一个install.rb和uninstall.rb文件以包含安装后和安装后挂钩.
最后但同样重要的是,如果将插件打包为Gem,则可以在非Rails项目中重用它,并使用该init.rb文件提供特定于Rails的初始化.非Rails应用程序将忽略它.
| 归档时间: |
|
| 查看次数: |
6428 次 |
| 最近记录: |