如何将Ruby gem包复制到任意位置?

假设您有一个软件包.你想让它成为一个宝石,因为宝石是在
Ruby世界中分发任何东西的事实上的标准方式.宝石很棒 – 对于图书馆来说.但对于实际应用程序,Rubygems系统似乎缺乏.只有“最近”他们引入了一种方法来标记可执行文件放置在系统范围的可执行PATH中的某个位置.不幸的是,Ruby gems似乎仍然需要软件打包的其他方面,即将配置文件放在/ etc等文件中,或者放在/usr/share / doc下的文档中.或者是吗?我的问题是:

我可以在gemspec中放置指令或代码以将配置安装到/ etc中,并将文档放在一些合理的标准化位置(例如/usr/share / doc)吗?或者,作为一种解决方法,可以运行安装后脚本来执行这些操作吗?

供参考:the GemSpec specification.

请注意,在撰写本文时,rubygems.org已关闭.以下是该页面的Google缓存:http://74.125.95.132/search?q=cache:JwJO6slR4BwJ:www.rubygems.org/read/chapter/20+http://www.rubygems.org/read/chapter/20%23page85&hl=en&ct=clnk&cd=1

如果检查the specification.rb file in the repo,向下滚动到末尾(搜索“:section:Required gemspec attributes”),您可以看到当前支持的属性.我看不到任何看起来像我想要的东西.

最佳答案 简短的回答:没有

答案很长:你不应该/需要这样做… gems被设计用作库…而不是作为应用程序自己(调查你的发行版应用程序包系统的那种类型的东西).另外,你不能假设你的宝石只会被“使用一次”…理论上,几个项目/应用程序可能包含你的宝石,虽然你的宝石可能有一些细节可以排除它可以全局配置…您仍然不希望这样做,因为其他架构问题,例如开发/配置您的应用程序以在不同的阶段环境(开发/测试/阶段/生产)中工作.您可能最终的最佳情况是注意如何在README中创建/ etc / config文件,并包含一个实用程序应用程序来提示用户输入值.

点赞