Ruby on rails 如何在Rails 3中使用gem而不在gem文件中引用它
我想知道如何在Rails 3应用程序中访问gem,而不在gem文件中添加对它的引用。我想用ruby调试(我正在使用)。我用它来调试,但不是我团队中的每个人都这样做,而且强制依赖性只是为了我可以使用它似乎不是很外交。还有别的办法吗 如果结果很重要,我使用的是Rails3、Bundler 1.0.0、Ruby 1.9.2、RVM、OSX雪豹Ruby on rails 如何在Rails 3中使用gem而不在gem文件中引用它,ruby-on-rails,rubygems,ruby-on-rails-3,gem,bundler,Ruby On Rails,Rubygems,Ruby On Rails 3,Gem,Bundler,我想知道如何在Rails 3应用程序中访问gem,而不在gem文件中添加对它的引用。我想用ruby调试(我正在使用)。我用它来调试,但不是我团队中的每个人都这样做,而且强制依赖性只是为了我可以使用它似乎不是很外交。还有别的办法吗 如果结果很重要,我使用的是Rails3、Bundler 1.0.0、Ruby 1.9.2、RVM、OSX雪豹 另一方面,我曾考虑过使用gemfilegroup特性,但这也不太合适。对于factory_girl这样的东西来说,组似乎很好,虽然只有在特定的环境中才有实际的依
另一方面,我曾考虑过使用gemfilegroup特性,但这也不太合适。对于factory_girl这样的东西来说,组似乎很好,虽然只有在特定的环境中才有实际的依赖关系,但是使用ruby debug,除非你想使用它,否则就不需要它了。当然你不能,因为Rails 3隔离了系统的精华 我的建议是使用
:require=>false
选项将Gem添加到Gemfile中,以便包含、安装但从未加载。
然后,在您的应用程序中,手动请求gem
或者,您可以尝试将其捆绑到项目中的供应商文件夹(应该有一个Gems文件夹)中,并忽略SCM中的特定gem文件夹,这样您的同事就不会受到影响。这非常难看,而且不会将其从gem文件中拉出,但我在gem文件中这样做,因此我可以在不同的环境中为一个gem使用两个不同的源:
if ENV['MY_RDEBUG_VAR'] == "i_want_to_use_rdebug"
gem "ruby-debug"
end
只需将其设置为只有您才能在系统上设置的模糊环境变量即可。这样,您的同事就不会设置env var,也永远不会为他们安装或加载gem。我最后将以下代码添加到rails初始值设定项中,并在.git/info/exclude文件中忽略它
$: << Bundler.bundle_path.join("gems", "ruby-debug19-0.11.6", "cli")
$: << Bundler.bundle_path.join("gems", "ruby-debug-base19-0.11.24", "lib")
$: << Bundler.bundle_path.join("gems", "linecache19-0.5.11", "lib")
$: << Bundler.bundle_path.join("gems", "columnize-0.3.1", "lib")
require 'ruby-debug'
$:这是我自己在ruby 1.8和1.9中使用ruby_调试的解决方案
if RUBY_VERSION.include?('1.9')
ruby_debug = 'ruby-debug19' # new branch for ruby-debug that supports 1.9
else
ruby_debug = 'ruby-debug'
gem 'fastercsv' # ruby 1.9 bundles FasterCSV now
end
group :test do
gem 'webrat'
gem "factory_girl"
gem 'shoulda'
# gem 'redgreen'
gem 'autotest-rails'
gem 'autotest-fsevent'
gem 'autotest'
gem ruby_debug
end
group :development do
gem ruby_debug
end
我知道这还不包括其他一些情况,如果有一个干净的方法来实现这一点会很好--自动测试咆哮
和自动测试事件
,以及我在.irbrc
中需要/拯救的许多事情,我不想强迫每个人获得更好的体验,与wirble和hirb一样——但特别是对于ruby debug
,如果对多个ruby版本进行测试是您痛苦的一部分,那么测试将非常有用
如果您想避免安装任何版本的ruby debug,我认为其他人建议的选项是目前唯一的方法。谢谢您的建议。但我真的不想要求安装gem。此特定gem的安装并不总是直接进行的,因此,bundle install
命令可能会失败:(.使用此解决方案的风险由您自己承担。我相信它在RVM的后续版本中已不再适用于我。现在,我将ruby调试添加到我的gemfile中的开发组中。我决心自己解决这个问题,如果我这样做,我将与大家分享。IMO Bundler是Rails有史以来发生的最糟糕的事情。