您可以 add/remove 在 Ruby 中以编程方式或作为命令行 arg 要求 RubyGems 吗?
Can you add/remove required RubyGems programmatically in Ruby or as a command line arg?
我有一个测试套件,旨在 运行 本地和云供应商。当测试在本地 运行 时,我想使用 RubyGem,它利用 运行 更快的本机扩展。但是,在云供应商上,我不能包含 gem 的这种特殊风格,必须使用不同的。
有什么方法可以通过命令行参数,或者作为 Ruby 中的函数添加或删除 gem 要求?
您可以将 require
语句包装在 if/else
.
中
if `hostname`.strip == 'local'
require 'ruby_ext_gem'
else
require 'ruby_native_gem'
end
或运行带有-r
选项的Ruby解释器。
ruby -rruby_ext_gem -rruby_ext_gem2 script.rb
也许 bundler
就是您要搜索的内容?
#Gemfile
source 'https://rubygems.org'
group 'local' do
gem 'ruby_ext_gem'
gem 'ruby-ldap', require: 'ldap'
end
group 'cloud' do
gem 'ruby_native_gem'
gem 'ruby-net-ldap', require: 'net/ldap'
end
# local
bundle install --without cloud
# cloud
bundle install --without local
#script.rb
#!/usr/bin/env ruby
require 'bundler/setup'
Bundler.require(`hostname`.strip)
我有一个测试套件,旨在 运行 本地和云供应商。当测试在本地 运行 时,我想使用 RubyGem,它利用 运行 更快的本机扩展。但是,在云供应商上,我不能包含 gem 的这种特殊风格,必须使用不同的。
有什么方法可以通过命令行参数,或者作为 Ruby 中的函数添加或删除 gem 要求?
您可以将 require
语句包装在 if/else
.
if `hostname`.strip == 'local'
require 'ruby_ext_gem'
else
require 'ruby_native_gem'
end
或运行带有-r
选项的Ruby解释器。
ruby -rruby_ext_gem -rruby_ext_gem2 script.rb
也许 bundler
就是您要搜索的内容?
#Gemfile
source 'https://rubygems.org'
group 'local' do
gem 'ruby_ext_gem'
gem 'ruby-ldap', require: 'ldap'
end
group 'cloud' do
gem 'ruby_native_gem'
gem 'ruby-net-ldap', require: 'net/ldap'
end
# local
bundle install --without cloud
# cloud
bundle install --without local
#script.rb
#!/usr/bin/env ruby
require 'bundler/setup'
Bundler.require(`hostname`.strip)