2012-12-22 15 views
6

Pracuję nad pakietem R, który otacza pakiet rmongodb i tworzy przyjazny dla programisty interfejs do pracy z MongoDB. Pakiet używa wewnętrznie proto.Eksportowanie środowiska z pakietu R

chciałbym wyeksportować jedną metodę fabryczną pośrednictwem obiektu proto (środowisku) o nazwie MongoDB, którego definicja brzmi:

MongoDB <- proto(
    new = function(., ...) { 
    # Good stuff in here... 
    } 
) 

Podczas rozwoju z RStudio & devtools i podczas testowania lokalnego nie wydaje być problemem. Jestem jednak przeżywa kilka problemów:

  • devtools::check() podkreśla kładąc import(MongoDB) w moim pliku przestrzeni nazw co sprawia R CMD check niepowodzeniem z „zależnością przestrzeni nazw nie wymagana:«MongoDB»”.

  • Kiedy usunąć tę dyrektywę import, R CMD check nie powiedzie się z „obiekt«MongoDB»not found” podczas uruchamiania moich testthat testy, nawet jeśli ręcznie dodać export(MongoDB). Jednak devtools::test() działa dobrze w RStudio.

Jaki jest zalecany sposób eksportu proto obiektów, które są środowiskami, z pakietów R?

Aktualizacja:

Za sugestią Gabor poniżej, zrobiłem pewien, że MongoDB.Rd deklaruje MongoDB jako dane (link ma źródło). Nadal dostaję błąd w MongoDB, który nie jest widoczny w testach (które używają testthat). Mój plik DESCRIPTION to here i NAMESPACE jest here.

+0

Możesz zajrzeć do ['RMongo'] (http: // cran.r-project.org/web/packages/RMongo/index.html) również pakiet. Używa sterownika Java i ma interfejs wyższego poziomu niż pakiet 'rmongodb'. – Stennie

Odpowiedz

3

Spróbuj tego:

  1. Określ export("MongoDB") w pliku NAMESPACE do publicznego udostępnienia obiektu MongoDB proto.
  2. Podaj LazyData: yes w pliku DESCRIPTION, aby automatycznie ładował się, gdy uzyskasz do niego dostęp.
  3. Dodaj plik .Rd dokumentujący go jako zbiór danych.

Należy wtedy przekazać R CMD check.

+0

Dzięki za sugestie, Gabor. Nadal nie sprawdzam 'check' z tego samego powodu:' MongoDB' nie można znaleźć podczas ładowania testów. Zaktualizowałem pytanie z linkami do plików 'Rd',' DESCRIPTION' i 'NAMESPACE'. – Sim

+0

@Sim, Tworzyłem paczki za pomocą wspomnianych 3 punktów i działały, więc jest to prawdopodobnie problem ze środowiskiem programistycznym, którego używasz, a nie R. Może być konieczne pobranie go wraz z opiekunem tych narzędzi . –

+0

Po prostu upewnij się, że rozumiem: ponieważ problem pojawia się wraz z testami, sugerujesz, żebym poruszył ten problem z @hadley i sprawdził, czy chodzi o 'testthat' (gdzie są testy) lub' devtools' (który emituje potencjalnie błędne instrukcje w 'NAMESPACE')? – Sim

1

niniejszej dyrektywy:

import(MongoDB) 

oznacza, że ​​import nazw MongoDB do swojego pakietu. Prawdopodobnie nie to, czego chcesz, jeśli rozumiem poprawnie.

myślę chcesz wyeksportować obiekt MongoDB, następnie

export(MongoDB) 

powinny działać prawidłowo.

+0

W prawo. Instrukcja "import" jest wstawiana przez 'devtools', co nie jest fajne. Niestety, 'export (MongoDB)' nie działa. – Sim

Powiązane problemy