Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为Rails应用程序构建ruby gem_Ruby On Rails_Rubygems_Ruby On Rails Plugins - Fatal编程技术网

Ruby on rails 为Rails应用程序构建ruby gem

Ruby on rails 为Rails应用程序构建ruby gem,ruby-on-rails,rubygems,ruby-on-rails-plugins,Ruby On Rails,Rubygems,Ruby On Rails Plugins,作为一名Rails开发人员,我觉得问这个问题有点愚蠢,但希望我能学到一些新东西,有人能帮我摆脱困境!在我的rails应用程序中,我一直使用(其他人)gems,我也使用来自社区或我自己的插件 我理解使用gems而不是插件的好处,因为它们是可版本的、分段的、系统范围的、更易于管理和共享的等等,但我真的不知道如何为我的rails应用程序制作gem 你总是从一个插件开始,然后把它转换成一个gem吗?我见过“打包成gem”这个词。另外,我想构建的gem在普通的ruby程序中是不好的,它只对rails应用有

作为一名Rails开发人员,我觉得问这个问题有点愚蠢,但希望我能学到一些新东西,有人能帮我摆脱困境!在我的rails应用程序中,我一直使用(其他人)gems,我也使用来自社区或我自己的插件

我理解使用gems而不是插件的好处,因为它们是可版本的、分段的、系统范围的、更易于管理和共享的等等,但我真的不知道如何为我的rails应用程序制作gem

你总是从一个插件开始,然后把它转换成一个gem吗?我见过“打包成gem”这个词。另外,我想构建的gem在普通的ruby程序中是不好的,它只对rails应用有用。我甚至不确定它的语义是否有意义,“RubyGem”只能在rails应用程序中工作


我想为rails应用程序的一个独立功能创建一个gem(如果这是我应该使用的吗?)。它将需要添加数据库迁移、新路由,并提供控制器和视图或有用的视图助手。我知道我可以通过插件实现这一点,但我只想知道如何/为什么要作为“Ruby Gem”来实现?

为了避免过度工程的风险,我通常从我需要的功能直接进入应用程序开始。然后,只要我需要在另一个项目中使用相同的功能,我就会检查是否值得将其提取到一个插件中,甚至是一个提供API的单独应用程序中

插件和gem通常是可互换的。Gems在可重用性和可维护性方面提供了几个显著的优势。 另一方面,还有一些特定的已知问题。例如,Rails应用程序实际上无法将定义的rake任务加载到打包为Gem的插件中

几乎每个Rails插件都可以打包为Gem。 例如,以我的插件为例

您可以将其安装为Gem,指定对environment.rb的依赖关系。或者您也可以使用
脚本/插件安装
命令

如果希望获得相同的结果,请确保遵循标准的Gem布局,并提供Rails所需的
init.rb
初始化脚本。 另外,当插件作为标准Rails插件安装时,您可能希望创建一个
install.rb
uninstall.rb
文件,以包含安装后和卸载后挂钩


最后但并非最不重要的一点是,如果将插件打包为Gem,则可以在非Rails项目中重用它,并使用
init.rb
文件提供特定于Rails的初始化。非Rails应用程序将直接忽略它。

如果您想为Rails制作插件,这将为您提供一个良好的开端。之后,将插件制作成宝石


要制作宝石,此资源将非常有用。

请查看。Jeweler为您提供了一组rake任务,使gem版本控制和构建非常简单

从2013年起,您将需要使用和以下教程:


感谢您的评论,我在第一次编写插件时就阅读了这本插件书,非常有帮助。“将插件制作成gem”似乎是答案。你能修复你标签的url吗?rails插件?@SimoneCarletti-“rails应用程序实际上无法将rake任务加载到打包成gem的插件中”-我不认为这仍然是真的。。