建立:ckan generate extension
- 進入Python Virtual Environment:
. /usr/lib/ckan/default/bin/activate - 切換目錄
cd /usr/lib/ckan/default/src - 執行 ckan generate extension
Extension's name [must begin 'ckanext-']: ckanext-你的extension名稱
(如: ckanext-iauthfunctions )]
├── ckanext│ ├── iauthfunctions //Python package 程式碼目錄│ │ ├── assets│ │ │ └── webassets.yml│ │ ├── fanstatic│ │ ├── i18n│ │ ├── __init__.py│ │ ├── plugin.py //CKAN Extension的功能寫在這裡│ │ ├── public│ │ ├── templates│ │ └── tests│ │ ├── __init__.py│ │ └── test_plugin.py│ └── __init__.py├── dev-requirements.txt├── LICENSE├── MANIFEST.in├── README.md├── requirements.txt├── setup.cfg├── setup.py //用它安裝到Virtual Environment└── test.ini
若出現錯誤 `cookiecutter` library is missing from import path.。則加裝 cookiecutter :
pip install cookiecutter
修改 plugin.py:撰寫 plugin 類別
修改 ckanext-iauthfunctions/ckanext/iauthfunctions/plugin.py。CKAN 的 extension 其實就是一個 plugin,所有 CKAN plugin 都需繼承自 plugins.SingletonPlugin:import ckan.plugins as pluginsclass ExampleIAuthFunctionsPlugin(plugins.SingletonPlugin):pass
修改 setup.py:設定 entry_points
修改 ckanext-iauthfunctions/setup.py 的 entry_points
entry_points='''[ckan.plugins]
example_iauthfunctions=ckanext.iauthfunctions.plugin:ExampleIAuthFunctionsPlugin
修改 ckan.ini:啟用 plugin
修改 /etc/ckan/default/ckan.ini。CKAN 的 extension plugins 必須加到 CKAN 設定檔的 ckan.plugins 中,CKAN 才會呼叫。
ckan.plugins = stats text_view 略... example_iauthfunctions
安裝測試
- 進入Python Virtual Environment:
. /usr/lib/ckan/default/bin/activate - 切換目錄:
cd /usr/lib/ckan/default/src/ckanext-iauthfunctions - 安裝 Plugin:
python setup.py develop - 重啟 CKAN 服務:
sudo supervisorctl restart ckan-uwsgi:*
沒有留言:
張貼留言