2012-07-19 12 views
7

Ich bin neu in Ruby und muss einige Ruby-App als ein Juwel verpackt debuggen.Was ist das Ruby-Äquivalent von python setup.py entwickeln?

Ich benutze rvm, wo ich das Paket als ein Juwel installiert habe, und habe auch eine frische github Kasse dieses Pakets. Wie kann ich meiner rvm-Umgebung mitteilen, den Code im Github-Repo anstelle des installierten Gems zu verwenden?

Dies ist das Äquivalent von python setup.py develop für Leute, die mit Python vertraut sind.

Mit Setuptools können Sie Ihre Projekte für die Verwendung in einem gemeinsamen Verzeichnis oder Bereitstellungsbereich bereitstellen, ohne jedoch Dateien zu kopieren. So können Sie jedes Projekt Code in seiner Kasse Verzeichnis

https://pythonhosted.org/setuptools/setuptools.html#development-mode

Antwort

7

Yup bearbeiten, Sie können.

Auschecken Bundler. Es ist der De-facto-Standard, um es zu benutzen.

+0

Ich sah einen Bundler, und tat folgendes: zuerst, erstellen Sie einen neuen Edelstein in Rvm, dann Gem Install Bundler, und dann Bundler installieren. Es installiert alle Abhängigkeiten wie erwartet, aber wenn ich versuche, die tatsächliche Anwendung auszuführen, in der ich die Bundle-Installation ausgeführt habe, erhalte ich eine Rückverfolgung. Nicht sicher, ob es von meiner Verwendung von rvm/gemset/was auch immer kommt. Der Traceback ist etwas wie "/Users/cournape/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in' to_specs ": Konnte nicht gefunden werden vagrant (> = 0) unter [...] (vagrant ist die App, die ich untersuche) –

+0

Hm. Wie läuft es, Vagrant? Wenn Sie es überprüft haben, nachdem Sie Bundle installieren, sollten Sie in der Lage sein Mach 'bin/vagrant' und führe den gerade ausgecheckten Code aus Du kannst auch' bundle exec bin/vagrant' machen, was noch besser sein sollte, obwohl das gemset es irrelevant machen sollte ('bundle exec' sandboxiert die verfügbaren Edelsteine) die in 'Gemfile.lock', aber wenn du einen frischen Edelstein hast, sollte es praktisch der selbe sein.) –

+0

Ich denke, ich habe etwas falsch gemacht, ich sehe das Problem nicht mehr.In jedem Fall ist dein Rat der Verwendung von Bundle exec funktioniert tadellos Danke –

0

Zusätzlich zu der vorherigen Antwort.

Manchmal Edelsteine ​​/ Pakete bieten ausführbare. Die gute Sache mit python setup.py develop ist, dass Sie immer die neueste Version dieser ausführbaren Datei in Ihrem Pfad haben werden. Es ist ein bisschen praktisch für die Entwicklung. Soweit ich weiß, bietet Gem keine solche Funktionalität. Zu emulieren, dass Sie Bundler verwenden können, und es ist, wie:

  • Zuerst wird eine neue Gemfile erstellen: bundle init
  • Dann die Datei bearbeiten und fügen Sie den lokalen Gem dem Sie arbeiten (für mich ist Nanoc): gem "nanoc", path: "path/to/local/nanoc"
  • dann die ausführbare Datei von der Gem bereitgestellt zugreifen, die Sie auf diese Weise Bündler verwenden: bundle exec nanoc ...

Hier bundle exec die Gem-Version von Ihrem Gemfile nehmen und benutzen. Wenn dieses Gem mit einer :path Option angegeben wird, wird es das verwenden.

Es ist sicher weniger praktisch, dass in Python, aber es ist die nächste Lösung, die ich in Ruby gefunden habe.

Verwandte Themen