当我创建Gem并在Gemfile中指定ruby版本时会发生什么?
运行在不同Ruby版本上的应用程序是否能够使用我的Gem?
例如,使用像这样的Gemfile
ruby '2.1.1'
source 'https://rubygems.org'
在Ruby 1.9上运行的应用程序是否能够使用我的Gem?
谢谢
答案 0 :(得分:0)
要回答我自己的问题,Bundler不会阻止你 我创建了两个包含两个宝石的文件夹。
ruby_old 的Gemfile看起来像这样
source 'https://rubygems.org'
ruby '1.9.3'
ruby_new 的Gemfile看起来像这样
source 'https://rubygems.org'
ruby '2.0.0'
gem "ruby_old", :path => "/complete/path/to/ruby_old"
换句话说, ruby_new 取决于 ruby_old 。
如果我进入 ruby_new 目录并运行捆绑安装,这就是我看到的
bundle install
Resolving dependencies...
Using rake (10.1.1)
Using bundler (1.3.5)
Using ruby_new (0.0.1) from source at .
Using ruby_old (0.0.1) from source at /complete/path/to/ruby_old
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
因此,我的问题的答案是肯定的,运行在较新版本的Ruby上的某个人可能会运行我用旧版本编写的宝石。
另一种方式也是可能的。如果 ruby_old 依赖于 ruby_new ,则在 ruby_old 上运行捆绑安装不会引发任何错误。