tro*_*skn 47 ruby-on-rails bundler ruby-on-rails-3
在Rails 2.X中,我可以简单地将gems复制到vendor/gems/gem_name或使用rake命令rake gems:unpack.由于Rails3使用了bundler,它似乎不再起作用了.我找到了命令bundle package,但它的工作方式不同.
所以,只是详细说明一下:
该轨道2的工作方式,我可以很容易地用grep找东西在vendor/gems.如果它们捆绑在.gem文件中,那是不可能的.此外,在开发gem /插件时,将它放在rails应用程序中以在上下文中测试它是非常有帮助的.我怎么用bundler/rails3做这些事情?我的工作流程本质上是以某种方式破坏的吗?
oma*_*oma 107
回答问题的第二部分,开发一个插件/ gem并使用rails app运送它而不公开gem,你可以这样做
的Gemfile
gem 'my_private_gem', :path => "vendor/gems/my_private_gem-VERSION"
Run Code Online (Sandbox Code Playgroud)
假设你表演了一个 gem unpack my_private_gem --target vendor/gems
注意:bundle package解包所有gem(与Gemfile.lock一样多).我不希望那些在git中.
Joh*_*ley 27
所述捆绑相当于是 bundle package.它打包Gemfile中指定的所有.gem文件,vendor/cache以便将来的安装从这个缓存而不是http://rubygems.org/获取宝石.
这对我有用:
gem unpack <GEM_NAME> [-v <VERSION>] --target vendor/gems
gem specification <GEM_NAME> [-v <VERSION>] --ruby > vendor/gems/<GEM_NAME>[-<VERSION>].gemspec
Run Code Online (Sandbox Code Playgroud)
例如:
gem unpack sidekiq-pro -v 2.1.4 --target vendor/gems
gem specification sidekiq-pro -v 2.1.4 --ruby > vendor/gems/sidekiq-pro-2.1.4.gemspec
Run Code Online (Sandbox Code Playgroud)
第一个命令将gem解压缩到vendor/gems目录中.但是,这不包含gemspec.第二个命令创建关联的gemspec.值得注意的是,另一张海报提到了类似的东西.此解决方案正确地以ruby格式而不是yaml格式编写gemspec.
然后,您可以更新您的Gemfile以指向vendored gem:
gem '<GEM_NAME>', '<VERSION>', :path => "vendor/gems/<GEM_NAME>-<VERSION>"
Run Code Online (Sandbox Code Playgroud)
例如:
gem 'sidekiq-pro', '2.1.4', :path => "vendor/gems/sidekiq-pro-2.1.4"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29538 次 |
| 最近记录: |