Сохранение черновика поста в блоге (файл .Rmd) останавливает мой сеанс RStudio, если в куске кода есть ошибки - PullRequest
0 голосов
/ 01 ноября 2018

Контекст:

У меня есть сайт, который я создал, используя blogdown и Hugo, развернутый на Netlify. В настоящее время я работаю над некоторыми сообщениями (файлы .Rmd) (в RStudio), которые все еще находятся в черновиках (draft: true в заголовке YAML). Работая над черновиком, я люблю сохранять вещи по ходу дела.

Проблема:

Если я уже использовал команду blogdown::serve_site() хотя бы один раз во время сеанса R, то каждый раз, когда я сохраняю черновик сообщения .Rmd, он «отображает» документ (т. Е. Нажатие на значок «сохранить» приводит к Rendering content/post/Post 1.Rmd появляется в консоли, и - если это работает - в конечном итоге пост обновляется в средстве просмотра).

Это всегда занимает много времени (не менее 5 минут), и если в блоке кода есть какие-либо ошибки (опечатка, пропущенный аргумент и т. Д.), То он входит в цикл, в котором непрерывно пытается визуализировать документ и постоянно выходит из строя. Иногда я могу исправить ошибку кода, когда это происходит, и тогда следующая попытка рендеринга будет успешной.

Однако чаще, хотя я исправляю ошибку в коде, моя сессия полностью зависает; либо ничего не происходит (нет ошибки, но больше нет активности в консоли), но я больше ничего не могу использовать в RStudio, либо я получаю сообщение об ошибке от RStudio (выпадающее окно сообщения из приложения, а не ошибка кода в консоли), которое говорит: «Сохранить файл: невозможно установить соединение с R сессией». В обоих случаях мой единственный вариант - принудительно завершить RStudio, и я теряю все несохраненные изменения в своем файле .Rmd.

Этот бесконечный цикл ошибок выглядит следующим образом (в данном случае в аргументе функции legend () есть ошибка):

    Quitting from lines 317-357 (Post 1.Rmd) 
    Error in legend("topleft", lables = unique(df.vis$PtType), pch = unique(df.vis$PtSym),  : 
      unused argument (lables = unique(df.vis$PtType))
    Calls: local ... handle -> withCallingHandlers -> withVisible -> eval -> eval
    Execution halted
    <simpleError in render_page(f): Failed to render 'content/post/Post 1.Rmd'>

* Retrying in 2 seconds...

Rendering content/post/Post 1.Rmd

.... и «2» секунды превращаются в 8 секунд и т. Д. До 32 секунд, а затем снова и снова повторяют 32, пока не распознают мои исправления или (гораздо чаще) зависают.

У меня никогда не возникало таких проблем, когда я вызываю blogdown::serve_site(), который просто выдает ошибку и перестает пытаться, если в куске кода есть ошибка.

Вопрос:

Как я могу запретить блогдауну рендерить мои .Rmd почтовые документы каждый раз, когда я их сохраняю?

OR

Как я могу сделать так, чтобы, если при рендеринге при сохранении выдается ошибка, он просто прекращает попытки рендеринга (но, если возможно, сохраняет мой файл .Rmd)?

Я прочитал книгу блогов начала до конца, и я думаю, что это, вероятно, как-то связано с LiveReload , но я не совсем уверен, как применять эти инструкции на мой конкретный вопрос ...

Любая помощь будет принята с благодарностью! Спасибо!

Обновление - информация о сеансе

> xfun::session_info('blogdown')
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14, RStudio 1.2.1114

Locale: en_CA.UTF-8 / en_CA.UTF-8 / en_CA.UTF-8 / C / en_CA.UTF-8 / en_CA.UTF-8

Package version:
backports_1.1.2 
base64enc_0.1.3 
BH_1.66.0.1     
blogdown_0.9    
bookdown_0.7    
digest_0.6.18   
evaluate_0.12  
glue_1.3.0      
graphics_3.5.1  
grDevices_3.5.1 
highr_0.7       
htmltools_0.3.6 
httpuv_1.4.5    
jsonlite_1.5   
knitr_1.20      
later_0.7.5     
magrittr_1.5    
markdown_0.8    
methods_3.5.1   
mime_0.6        
promises_1.0.1 
R6_2.3.0        
Rcpp_1.0.0      
rlang_0.3.0.1   
rmarkdown_1.10  
rprojroot_1.3.2 
servr_0.11      
stats_3.5.1    
stringi_1.2.4   
stringr_1.3.1   
tinytex_0.9     
tools_3.5.1     
utils_3.5.1     
xfun_0.4        
yaml_2.2.0     
...