Search code examples
rversionrstudio

Use rstudio::openProject with older version of Rstudio


I use Rstudio Version 0.99.903 and the latest version of library rstudioapi (rstudioapi_0.7).

When trying rstudioapi::openProject('MyProject') I get:

Error: Function openProject not found in RStudio

Here is the code of the rstudioapi function:

rstudioapi::openProject
function (path = NULL, newSession = FALSE) 
{
    callFun("openProject", path, newSession)
}
<environment: namespace:rstudioapi>

The issue is most probably that my version of Rstudio is not up to date.

Unfortunately I'm not able to download a later version of Rstudio (I'm restricted on authorized softwares at work), could there be a hack to download the function separately and make it work anyway ?

The functionality of opening a project is already there in Rstudio obviously, so I believe it might be a very simple fix that wouldn't require updating the full software.

I use R version 3.3.1 and Rstudio Version 0.99.903

Digging through the code it seems that the function I'm looking for is .rs.api.openProject.

By browsing through rstudio's source code I found in https://github.com/rstudio/rstudio/blob/master/src/cpp/r/R/Api.R :

.rs.addApiFunction("openProject", function(path = NULL,
                                           newSession = FALSE)
{
  # default to current project directory (note that this can be
  # NULL if the user is not within an RStudio project)
  if (is.null(path))
    path <- .rs.getProjectDirectory()

  path <- .rs.ensureScalarCharacter(path)

  # attempt to initialize project if necessary
  rProjFile <- .rs.api.initializeProject(path)

  # request that we open this project
  invisible(
    .Call("rs_requestOpenProject",
          rProjFile,
          newSession,
          PACKAGE = "(embedding)")
  )
})

I executed the full file to get all functions updated (probably not the safest decision but as a first iteration).

After this I can move a step further with my rstudioapi::openProject('MyProject') code, but it still fails because I don't have ensureScalarCharacter nor rs_requestOpenProject defined and I don't find those in github.


Solution

  • Unfortunately, what you're trying to do is just not possible with your older version of RStudio. rs_requestOpenProject just doesn't exist in your version of the IDE, and as it's native code there's no way to patch it in (that would be any more palatable to your organization than just updating the IDE).