Skip to content

Commit 613226b

Browse files
authored
Merge pull request #119 from ComputeCanada/rstudio-server
Fix server data dir (/var/run/rstudio) not writable. Support multiple rstudio-server versions
2 parents d549753 + 4a43c3f commit 613226b

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

jupyter_rsession_proxy/__init__.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,14 @@ def setup_rserver():
4747
def _get_env(port):
4848
return dict(USER=getpass.getuser())
4949

50-
def db_config():
50+
def db_config(db_dir):
5151
'''
5252
Create a temporary directory to hold rserver's database, and create
5353
the configuration file rserver uses to find the database.
5454
5555
https://docs.rstudio.com/ide/server-pro/latest/database.html
5656
https://github.com/rstudio/rstudio/tree/v1.4.1103/src/cpp/server/db
5757
'''
58-
# use mkdtemp() so the directory and its contents don't vanish when
59-
# we're out of scope
60-
db_dir = tempfile.mkdtemp()
6158
# create the rserver database config
6259
db_conf = dedent("""
6360
provider=sqlite
@@ -69,8 +66,18 @@ def db_config():
6966
f.close()
7067
return db_config_name
7168

69+
def _support_arg(arg):
70+
ret = subprocess.check_output([get_rstudio_executable('rserver'), '--help'])
71+
return ret.decode().find(arg) != -1
72+
7273
def _get_cmd(port):
7374
ntf = tempfile.NamedTemporaryFile()
75+
76+
# use mkdtemp() so the directory and its contents don't vanish when
77+
# we're out of scope
78+
server_data_dir = tempfile.mkdtemp()
79+
database_config_file = db_config(server_data_dir)
80+
7481
cmd = [
7582
get_rstudio_executable('rserver'),
7683
'--auth-none=1',
@@ -79,9 +86,15 @@ def _get_cmd(port):
7986
'--www-verify-user-agent=0',
8087
'--secure-cookie-key-file=' + ntf.name,
8188
'--server-user=' + getpass.getuser(),
82-
'--www-root-path={base_url}rstudio/',
83-
f'--database-config-file={db_config()}'
8489
]
90+
# Support at least v1.2.1335 and up
91+
92+
if _support_arg('www-root-path'):
93+
cmd.append('--www-root-path={base_url}rstudio/')
94+
if _support_arg('server-data-dir'):
95+
cmd.append(f'--server-data-dir={server_data_dir}')
96+
if _support_arg('database-config-file'):
97+
cmd.append(f'--database-config-file={database_config_file}')
8598

8699
return cmd
87100

0 commit comments

Comments
 (0)