2010-09-20 48 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,我認爲其他人建議的選項是目前唯一的方法。

相關問題