2015-04-14 12 views
9

एक आर पैकेज कनेक्शन स्थापित करने के लिए एक निजी उपयोगकर्ता_नाम और पासवर्ड का उपयोग कर एक वाणिज्यिक डेटा बेस के साथ संचार करता है।पैकेज विग्नेट में आर कोड सुरक्षा कारणों से सीआरएएन पर नहीं चल सकता है। इस तरह के विगनेट का प्रबंधन कैसे करें?

```{r, eval = TRUE} 
# set user_name and password from user's configuration file 
set_connection(file = "/home/user001/connection.config") 

# ask data base for all metrics it has 
my_data <- get_all_metrics() 

# display names of fetched metrics 
head(my_data$name) 
``` 

मैं क्रैन के लिए वास्तविक user_name और पासवर्ड प्रदान करना अधिकार नहीं है, तो मैं साथ वास्तविक 'connection.config' फ़ाइल की आपूर्ति नहीं कर सकते हैं: package_vignette.Rmd फ़ाइल में कोड का एक हिस्सा है पैकेज। तो, निश्चित रूप से, यह कोड खंड सीआरएएन चेक के दौरान त्रुटि की ओर जाता है।

  1. उपयोग knitr विकल्प: eval = FALSE

    मैं दो तरीकों क्रैन की जांच से बचने के लिए पता है।

  2. static vignette with help of the R.rsp पैकेज बनाएं।

पहला तरीका भी समय लेने वाली है, क्योंकि मात्रा, के एक बहुत हैं और मैं फिर से लिखने/शब्दचित्र अक्सर पुनर्निर्माण। दूसरा तरीका मेरे लिए बेहतर है। लेकिन हो सकता है कि इस तरह के विगनेट का समर्थन करने के लिए एक बेहतर पैटर्न हो? उदाहरण के लिए, पैकेज के परीक्षणों में मैं CRAN चेक से बचने के लिए testthat::skip_on_cran() का उपयोग करता हूं।

+1

में आपके पैकेज में नमूना डेटा शामिल है, उदा। fetch_sample_all_metrics(), गैर संवेदनशील/अनामित डेटा के साथ, और इसे अपने विग्नेट –

+0

में उपयोग करें, आप पहले खंड के अंदर 'knitr :: opts_chunk $ set (eval = F)' कॉल करके सभी भाग को 'eval = F' पर सेट कर सकते हैं। – gregmacfarlane

उत्तर

2

सबसे आसान तरीका सिर्फ आपके पैकेज के साथ डेटा शामिल करना है। या तो डमी डेटा सेट:

  • data निर्देशिका। यह उपयोगकर्ताओं को आसानी से इसे एक्सेस करने की अनुमति देगा।
  • या inst/extdata में। उपयोगकर्ता इस फ़ाइल तक पहुंच सकते हैं, लेकिन यह थोड़ा और छुपा हुआ है। आप आप कुछ होता स्थान system.file(package="my_pkg")

का उपयोग कर शब्दचित्र में मैं क्या इकट्ठा

```{r, echo=FALSE} 
data(example_data, package="my_pkg") 
my_data = example_data 
``` 

```{r, eval = FALSE} 
# set user_name and password from user's configuration file 
set_connection(file = "/home/user001/connection.config") 

# ask data base for all metrics it has 
my_data <- get_all_metrics() 
``` 
1

testthat::skip_on_cran सिर्फ एक प्रणाली चर

> testthat::skip_on_cran 
function() 
{ 
    if (identical(Sys.getenv("NOT_CRAN"), "true")) { 
     return(invisible(TRUE)) 
    } 
    skip("On CRAN") 
} 
<environment: namespace:testthat> 

की जाँच करता है से मिलेगा, इस testthat या devtools द्वारा सेट किया गया है। इस प्रकार, आप हिस्सा विकल्प में

eval = identical(Sys.getenv("NOT_CRAN"), "true") 

का उपयोग करें और पहले मात्रा में से एक में testthat या devtools लोड कर सकते हैं। अन्यथा, आप अपनी साइट पर एक समान तंत्र का उपयोग कर सकते हैं और एक समान सिस्टम वैरिएबल असाइन कर सकते हैं और जांच सकते हैं कि यह "true" है या नहीं। उदा।, Sys.setenv("IS_MY_COMP", "true") का उपयोग करें)। फिर यदि आप आर स्टूडियो या R_HOME/Rprofile.site फ़ाइल में उपयोग करते हैं तो Sys.setenv अपनी .Rprofile फ़ाइल पर कॉल करें। बाद के विकल्प पर जानकारी के लिए help("Startup") देखें।

वैकल्पिक रूप से, आप देख सकते हैं कि "/home/user001/connection.config"

eval = file.exists("/home/user001/connection.config") 
हिस्सा विकल्प में

के साथ मौजूद है।

संबंधित मुद्दे