Skip to content

Commit

Permalink
Merge pull request benoitc#1481 from benoitc/fix/1349-config-module-path
Browse files Browse the repository at this point in the history
Set CWD and Python path before and after config
  • Loading branch information
tilgovi authored Oct 28, 2017
2 parents ab1bc26 + fee0a0a commit ad23ddd
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 17 deletions.
17 changes: 17 additions & 0 deletions gunicorn/app/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,18 @@ def run(self):
sys.stderr.flush()
sys.exit(1)


class Application(BaseApplication):

def chdir(self):
# chdir to the configured path before loading,
# default is the current dir
os.chdir(self.cfg.chdir)

# add the path to sys.path
if self.cfg.chdir not in sys.path:
sys.path.insert(0, self.cfg.chdir)

def get_config_from_filename(self, filename):

if not os.path.exists(filename):
Expand Down Expand Up @@ -142,6 +152,9 @@ def load_config(self):
# optional settings from apps
cfg = self.init(parser, args, args.args)

# set up import paths and follow symlinks
self.chdir()

# Load up the any app specific configuration
if cfg:
for k, v in cfg.items():
Expand Down Expand Up @@ -174,6 +187,10 @@ def load_config(self):
continue
self.cfg.set(k.lower(), v)

# current directory might be changed by the config now
# set up import paths and follow symlinks
self.chdir()

def run(self):
if self.cfg.check_config:
try:
Expand Down
4 changes: 0 additions & 4 deletions gunicorn/app/pasterapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,6 @@ def __init__(self, app, gcfg=None, host="127.0.0.1", port=None, *args, **kwargs)
self.load_config_from_file(default_config)

def load(self):
# chdir to the configured path before loading,
# default is the current dir
os.chdir(self.cfg.chdir)

return self.app


Expand Down
13 changes: 0 additions & 13 deletions gunicorn/app/wsgiapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
# See the NOTICE for more information.

import os
import sys

from gunicorn.errors import ConfigError
from gunicorn.app.base import Application
Expand Down Expand Up @@ -37,23 +36,11 @@ def init(self, parser, opts, args):
self.cfg.set("default_proc_name", args[0])
self.app_uri = args[0]

def chdir(self):
# chdir to the configured path before loading,
# default is the current dir
os.chdir(self.cfg.chdir)

# add the path to sys.path
sys.path.insert(0, self.cfg.chdir)

def load_wsgiapp(self):
self.chdir()

# load the app
return util.import_app(self.app_uri)

def load_pasteapp(self):
self.chdir()

# load the paste app
from .pasterapp import load_pasteapp
return load_pasteapp(self.cfgurl, self.relpath, global_conf=self.cfg.paste_global_conf)
Expand Down

0 comments on commit ad23ddd

Please sign in to comment.