2012-07-19 17 views
7

Jestem nowy w rubinach i muszę debugować aplikację ruby ​​zapakowaną jako klejnot.Jaki jest ekwiwalent Rubiego dla Pythona setup.py?

Używam rvm, gdzie zainstalowałem paczkę jako klejnot, a także mam świeżo zakupionego pakietu Github. Jak mogę powiedzieć, że moje środowisko rvm używa kodu w repozytorium github zamiast zainstalowanego gem? Jest to odpowiednik python setup.py develop dla osób znających się na pythonie.

Narzędzie Setup umożliwia wdrożenie projektów do wspólnego katalogu lub obszaru przemieszczania, ale bez kopiowania żadnych plików. W ten sposób można edytować kod każdego projektu w jego katalogu kasy

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

Odpowiedz

7

Tak, można.

Zapoznaj się z Bundler. To de facto standard go używać.

+0

Spojrzałem na pęta i wykonałem następujące czynności: po pierwsze, stwórz nowy gemset wewnątrz rvm, następnie zainstaluj pakiet instalacyjny, a następnie zainstaluj bundler. Instaluje wszystkie zależności zgodnie z oczekiwaniami, ale kiedy próbuję uruchomić konkretną aplikację, w której uruchomiłem instalację pakietu, otrzymuję komunikat zwrotny. Nie jestem pewien, czy to pochodzi z mojego użycia rvm/gemset/cokolwiek. Funkcja traceback jest podobna do "/Users/cournape/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in' to_specs": Nie można znaleźć vagrant (> = 0) pośród [...] (włóczęga jest aplikacją, na którą patrzę) –

+0

Hm. Jak działasz Vagrant? Jeśli to sprawdziłeś, po zainstalowaniu pakietu powinieneś być w stanie zrób 'bin/vagrant' i uruchom kod, który właśnie wypisałeś. Możesz także zrobić' bundle exec bin/vagrant', co powinno być jeszcze lepsze, chociaż gemset powinien uczynić go nieistotnym ('bundle exec'' '' '' ' te w 'Gemfile.lock', ale jeśli masz nowy gemset, powinien być praktycznie taki sam) –

+0

Myślę, że zrobiłem coś złego, już nie widzę problemu. W każdym razie Twoja rada korzystania z pakietu exec działa doskonale Dziękuję –

0

Oprócz poprzedniej odpowiedzi.

Czasami klejnoty/paczki zawierają pliki wykonywalne. Dobrą rzeczą z python setup.py develop jest to, że zawsze będziesz mieć najnowszą wersję tego pliku wykonywalnego na swojej ścieżce. Jest to przydatne do rozwoju. O ile wiem, Gem nie zapewnia takiej funkcjonalności. Naśladować, że można użyć Bundler i to jak:

  • najpierw utworzyć nowy Gemfile: bundle init
  • Następnie edytować ten plik i dodać lokalną Gem którym pracujesz (dla mnie to Nanoc): gem "nanoc", path: "path/to/local/nanoc"
  • Następnie w celu uzyskania dostępu do pliku wykonywalnego dostarczonego przez Gem można użyć Bundler tamtędy: bundle exec nanoc ...

Tutaj bundle exec odbędzie wersję Gem z Gemfile i używać go. Jeśli ten Klejnot zostanie określony przy użyciu opcji :path, to użyje go na.

Jest to z pewnością mniej wygodne niż w Pythonie, ale jest to najbliższe rozwiązanie znalezione w Ruby.

Powiązane problemy