2010-09-20 43 views
5

我想知道如何在Rails 3应用程序中创建一个可访问的gem,而无需在gemfile中添加引用。我想用ruby-debug来做到这一点(我正在使用ruby-debug19)。我用它来调试,但并不是我团队中的每个人都这样做,并强制依赖,所以我可以使用它似乎不太外交。有另一种方法吗?如何使用Rails 3中的宝石,而无需在Gemfile中引用它

如果它结束了无所谓,我使用Rails3中,捆扎机1.0.0,1.9.2红宝石,RVM,OSX雪豹

在一个侧面说明,我曾想过使用的Gemfile组的功能,但是这也感觉不对。对于像factory_girl那样的组,虽然只存在于特定的环境中,但对于ruby-debug来说,组似乎非常棒,除非你想使用它,否则不需要它。

+0

我决心要算出这个我自己,如果我这样做将分享。 IMO Bundler是Rails发生过的最糟糕的事情。 – bioneuralnet 2012-02-03 05:28:14

回答

2

AFAIK你不能因为Rails 3分离系统宝石。

我的建议是与:require => false选项添加宝石在Gemfile中,因此也包括,安装,但从来没有加载。 然后,在您的应用程序中,手动需要宝石。

或者您可以尝试在供应商文件夹(应该有一个Gems文件夹)中将其捆绑在您的项目中,并忽略SCM中特定的gem文件夹,这样您的同事不会受到影响。

+0

感谢您的建议。我真的很讨厌甚至需要安装gem。这个特殊的gem的安装并不总是直截了当,然后'bundle install'命令可能因此失败:(。 – 2010-09-20 17:33:01

3

这是十分可怕的,它不会把它从你的Gemfile,但我做这在我的Gemfile这样我就可以使用两种不同音源在不同环境中的宝石:

if ENV['MY_RDEBUG_VAR'] == "i_want_to_use_rdebug" 
    gem "ruby-debug" 
end 

只是使它只有您可以在您的系统上设置一个模糊的环境变量。这样,你的同事就不会拥有env var set,并且永远不会为它们安装或加载宝石。

0

我最终加入以下代码到轨初始化,并在git的/信息忽略它/排除文件。

$: << 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' 

虽然这个作品,我不知道是否有人要真正做到这一点,接受一个事实,即这些依赖关系必须被放置在宝石文件可能是最好的。

+0

使用此解决方案需要您自担风险,我相信它在后续版本中不再适用于我RVM的版本,现在,我将ruby-debug添加到我的gemfile中的开发组中。 – 2010-12-18 19:57:18

0

这是我自己的解决方案,以使用ruby_debug既红宝石1.8和1.9

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 
0

我知道这并不能掩盖其他一些情况下,如果有办法做到这一点干净的方式,将是很好的 - - autotest-growlautotest-fsevent想到了很多东西,我需要/拯救我的.irbrc为更好的体验,我不想强​​迫大家,像wirble和hirb - 但专门为ruby-debugruby-debug-wrapper gem是如果针对多个Ruby版本进行测试是您的痛苦的一部分,这将会很有帮助

如果你想避免安装任何版本ruby-debug,我认为其他人建议的选项是目前唯一的方法。

相关问题