OpenERP pythonコード開発サイクルは、コードを編集し、サーバーを再起動してテストすることです。サーバーを再起動する必要があります。これは、ソースコードをメモリに再ロードするためですが、作業ペースに煩わしい遅延が追加されます。
Pythonは非常に動的な言語なので、実行中のPythonインタープリター(アプリサーバー)にコードモジュールをオンザフライでリロードさせて、アプリサーバーを再起動せずにテストできるようにする方法があるのでしょうか。
更新:reload
@ecatmurによって提案され
たパスをたどると、以下のコードを取得しましたが、それでも機能しません:
class module(osv.osv):
_inherit = "ir.module.module"
def action_reload(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
modulename = 'openerp.addons.' + obj.name
tmp = __import__(modulename)
pycfile = tmp.__file__
modulepath = string.replace(pycfile, ".pyc", ".py")
code=open(modulepath, 'rU').read()
compile(code, modulename, "exec")
execfile(modulepath)
reload( sys.modules[modulename] )
openerp.modules.registry.RegistryManager.delete(cr.dbname)
openerp.modules.registry.RegistryManager.new(cr.dbname)