将gem拆开/冻结成非铁轨ruby应用程序
我正在编写一个非Rails ruby应用程序(喘气!),并希望能够在vendor子目录中包含应用程序所需的所有gem依赖项。 这类似于http://gemsonrails.rubyforge.org/如何为Rails应用程序工作。
这里的目标是避免在添加新依赖项时我的团队目前遇到的情况。 我的团队中的每个开发人员都必须手动安装gem,然后有人必须手动更新每个测试和登台和生产计算机。 如果我们可以将依赖关系冻结到分布式应用程序本身,那么只需要一个简单的svn更新(或人群中那些嬉皮士的git pull)。
更新(新解决方案):
尝试Yehuda Katz的新捆绑gem。 然后, gem install bundler
创建一个包含所有依赖项的Gemfile
。 有关详细信息,请参阅文档。
旧建议:
一种简单的方法是手动将gem解压缩到vendor
目录中,并将解压缩的gem的lib路径添加到$ LOAD_PATH的前面。
解压gem:
$ cd vendor/gems $ gem unpack active_support Unpacked gem: '/path/to/myproject/vendor/gems/activesupport-2.3.2'
只需确保解压缩所有必需的gem及其依赖项(使用正确的版本)。
要将所有gem添加到$ LOAD_PATH的供应商/gem下,请尝试在应用程序的初始化中添加这样的内容:
Dir.glob(File.join("vendor", "gems", "*", "lib")).each do |lib| $LOAD_PATH.unshift(File.expand_path(lib)) end
更新: Sarah(在评论中)说服我可能还需要覆盖GEM_PATH。 这是一种方法:
require 'rubygems' gem_paths = [File.expand_path(File.join("vendor", "gems")), Gem.default_dir] Gem.clear_paths Gem.send :set_paths, gem_paths.join(":")
另一个选择是研究Rip (Ruby的智能包装)来管理您的依赖项。 Rip看起来很甜美,但它仍然是新的。
- 如何为我独立的Ruby脚本设置Rails环境?
- Ruby错误(未初始化的常量User :: Relationship)
- 指南针式(ruby)编码错误
- TinyTds错误:Adaptive Server连接超时
- Middleman:引用存储在markdown的数据文件中的URL
- TrueClass的未定义方法`model_name’:DeviseConfirmations的类(Rails 4,设计)
- 确保单个类实例的正确方法是什么?
- 无法在Mountain Lion w / Jewlery Box上安装Ruby 1.9.3:运行make -j4时出错(有当前readline,gcc)
- ruby语法错误,意外$ end,期待keyword_end