tfw*_*ght 7 rubygems ruby-on-rails
如果您想使用gem进行开发/测试而不想强迫其他开发人员使用,您会怎么做?现在我有
begin
require 'redgreen'
rescue LoadError
end
Run Code Online (Sandbox Code Playgroud)
in test_helper.rb和没有gem配置,但这似乎是一种笨拙的方法,虽然是功能性的.我想做类似以下的事情:
config.gem "redgreen", :optional => true
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?或者我应该只提供那些非常肤浅的宝石......?
编辑
为了清楚起见,我只讨论那些特定的宝石,比如redgreen,它们实际上并没有在功能代码中使用,而只是在编码过程中.除了避免条件要求之外,根本不需要提供这些.
特定于您的开发环境的宝石应该安装在您的gemset或本地宝石中,但不能安装在Gemfile.
一个典型的例子是ruby-debug-base19xRubymine需要调试.这是安装在您的本地gemset中,但不是Gemfile因为并非所有编码器都使用Rubymine.
[编辑]
实际上,一切都在捆绑的上下文中运行,并且外部宝石是不可达的.确实存在一些变通方法.大多数都很脏:)
我在捆绑器问题上找到了很多好的解决方案.
最好的解决方案是将此添加到您的.irbrc:
# Add all gems in the global gemset to the $LOAD_PATH so they can be used even
# in places like 'rails console'.
if defined?(::Bundler)
global_gemset = ENV['GEM_PATH'].split(':').grep(/ruby.*@global/).first
if global_gemset
all_global_gem_paths = Dir.glob("#{global_gemset}/gems/*")
all_global_gem_paths.each do |p|
gem_path = "#{p}/lib"
$LOAD_PATH << gem_path
end
end
end
require 'irb/completion'
require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize
Run Code Online (Sandbox Code Playgroud)
如果您随后安装wirble到globalgemset,则可以找到它.原始资料来源:https://gist.github.com/794915
希望这可以帮助.
我在这里回答了我自己的类似问题
一种方法是创建不同的环境:
group :scott do
end
Run Code Online (Sandbox Code Playgroud)
然后
bundle --with-env=scott
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |