2010-09-20 7 views
5

Ich frage mich, wie man ein Juwel in einer Rails 3 App zugänglich macht, ohne einen Verweis darauf in der gemfile zu setzen. Ich möchte dies mit Ruby-Debug (ich verwende ruby-debug19). Ich benutze dies, um zu debuggen, aber nicht jeder in meinem Team tut und zwingt die Abhängigkeit nur, damit ich es verwenden kann, scheint nicht sehr diplomatisch. Gibt es eine andere Art und Weise?Wie man ein Juwel in Rails 3 verwendet, ohne es in der Gemfile zu referenzieren

Wenn es Ausmachen landet, ich bin mit Rails3, Bündler 1.0.0 Ruby 1.9.2, RVM, OSX Snow Leopard

Auf einer Seite zur Kenntnis, hatte ich gedacht, über die gemfile Gruppe-Funktion, aber das fühlt sich auch nicht richtig an. Gruppen scheinen gut für Dinge wie factory_girl zu sein, wo es eine tatsächliche Abhängigkeit gibt, allerdings nur in bestimmten Umgebungen, aber mit ruby-debug gibt es keine wirkliche Notwendigkeit, dort zu sein, es sei denn, du willst es benutzen.

+0

Ich bin entschlossen, dies herauszufinden, und werde teilen, wenn ich es tue. IMO Bundler ist das Schlimmste, was Rails je passiert ist. – bioneuralnet

Antwort

2

AFAIK können Sie nicht, weil Rails 3 System Gems isoliert.

Mein Vorschlag ist, das Gem in der Gemfile mit der Option :require => false hinzuzufügen, so dass es enthalten ist, installiert, aber nie geladen. Dann benötigen Sie in Ihrer App den Edelstein manuell.

Oder Sie können versuchen, es in Ihrem Projekt zu bündeln, innerhalb des Vendor-Ordners (es sollte einen Ordner für Gems geben) und den speziellen Edelstein-Ordner in Ihrem SCM ignorieren, so dass Ihre Mitarbeiter nicht betroffen sind.

+0

Danke für den Vorschlag. Ich würde es wirklich hassen, sogar die Installation des Edelsteins zu verlangen.Die Installation dieses besonderen Edelsteins ist nicht immer einfach und der Befehl 'bundle install 'kann dann scheitern :(. –

3

Das ist wirklich hässlich und es nicht zieht es aus Ihrem gemfile, aber ich tue dies in meiner Gemfile so kann ich in verschiedenen Umgebungen 2 verschiedene Quellen für einen Edelstein verwenden:

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

einfach machen eine obskure Umgebungsvariable, die nur Sie auf Ihrem System festlegen würden. Auf diese Weise wird Ihren Mitarbeitern nicht die Umgebungsvariable gesetzt und der Schmuckstein wird nie für sie installiert oder geladen.

0

Ich fügte den folgenden Code zu einem Rails-Initialisierer hinzu und ignorierte es in der .git/info/exclude-Datei.

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

Während dies funktioniert, ich weiß nicht, ob jemand soll dies tatsächlich tun, die Tatsache akzeptieren, dass diese Abhängigkeiten in der Edelstein-Datei abgelegt werden müssen, ist wahrscheinlich am besten.

+0

Verwenden Sie diese Lösung auf eigene Gefahr. Ich glaube, es funktioniert nicht mehr für mich in einem späteren Version von RVM.Now-a-days füge ich das Ruby-Debug zur Entwicklungsgruppe in meiner gemfile hinzu. –

0

Dies ist meine eigene Lösung ruby_debug sowohl mit Rubin 1,8 und 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

Ich weiß, dass dies nicht ein paar anderen Fälle abdeckt, wo es schön wäre, wenn es eine saubere Möglichkeit, dies zu verwenden zu erreichen ist - - autotest-growl und autotest-fsevent kommen in den Sinn, sowie viele Dinge, die ich in meinem .irbrc für eine nettere Erfahrung, die ich nicht auf jedem, wie Wirble und Hirb zwingen möchte - in ruby-debug, die ruby-debug-wrapper gem ist hilfreich, wenn das Testen gegen mehrere Ruby-Versionen Teil Ihrer Schmerzen ist.

Wenn Sie die Installation keine Version von ruby-debug vermeiden möchten, denke ich, Optionen, die andere vorgeschlagen haben, sind derzeit die einzigen Möglichkeiten.

Verwandte Themen