2012-12-22 17 views
6

Sto sviluppando un pacchetto R che avvolge il pacchetto rmongodb e crea un'interfaccia di facile utilizzo per gli sviluppatori per lavorare con MongoDB. Il pacchetto utilizza proto internamente.Esportazione di un ambiente da un pacchetto R

mi piacerebbe esportare un unico metodo di fabbrica tramite un oggetto di proto (ambiente) chiamato MongoDB, la cui definizione è:

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

Durante lo sviluppo con RStudio & devtools e durante i test locale non sembra essere un problema Tuttavia, sto sperimentando diversi problemi:

  • devtools::check() insiste sul mettere un import(MongoDB) nel mio file namespace che rende R CMD check falliscono con "dipendenza Namespace non richiesto: 'MongoDB'".

  • Quando rimuovo questa direttiva importazione, R CMD check fallisce con "oggetto 'MongoDB' non trovato" durante l'esecuzione miei testthat test, anche se aggiungo manualmente export(MongoDB). Tuttavia, devtools::test() funziona correttamente in RStudio.

Qual è il modo consigliato di esportare gli oggetti proto, che sono ambienti, dai pacchetti R?

Aggiornamento:

Per suggerimento di Gabor in basso, ho fatto in modo che MongoDB.Rd dichiara MongoDB come dati (il link è la fonte). Ricevo ancora un errore in MongoDB non visibile nei test (che utilizzano testthat). Il mio file DESCRIPTION è here e NAMESPACE è here.

+0

Si potrebbe voler guardare il ['RMongo'] (http: // cran.pacchetto r-project.org/web/packages/RMongo/index.html). Utilizza il driver Java e ha un'interfaccia di livello superiore rispetto al pacchetto 'rmongodb'. – Stennie

risposta

3

Prova questo:

  1. Specificare export("MongoDB") nel NAMESPACE file per rendere l'oggetto MongoDB proto disposizione del pubblico.
  2. Specificare LazyData: yes nel file DESCRIPTION in modo che venga caricato automaticamente quando si accede.
  3. Aggiungere un file .Rd che lo documenta come un set di dati.

Dovrebbe quindi passare R CMD check.

+0

Grazie per i suggerimenti, Gabor. Ho ancora fallito 'check' per lo stesso motivo:' MongoDB' non può essere trovato quando si caricano i test. Ho aggiornato la domanda con i collegamenti ai file 'Rd',' DESCRIPTION' e 'NAMESPACE'. – Sim

+0

@Sim, ho creato pacchetti usando i 3 punti che ho citato e hanno funzionato, quindi è probabile che questo sia un problema con l'ambiente di sviluppo che stai usando e non con R. Potresti aver bisogno di prenderlo con il/i manutentore/i di questi strumenti . –

+0

Giusto per essere sicuro di capire: dal momento che il problema si presenta con i test, stai suggerendo di sollevare il problema con @hadley e vedere se si tratta di 'testthat' (dove sono i test) o' devtools' (che emette istruzioni potenzialmente errate in 'NAMESPACE')? – Sim

1

Questa direttiva:

import(MongoDB) 

significa che si importa lo spazio dei nomi MongoDB nel pacchetto. Probabilmente non è quello che vuoi se ho capito bene.

penso che si desidera esportare l'oggetto MongoDB, quindi

export(MongoDB) 

dovrebbe funzionare bene.

+0

Giusto. L'istruzione 'import' è inserita da' devtools', che non è cool. Purtroppo, 'export (MongoDB)' non funziona. – Sim

Problemi correlati