开发CKAN插件的开发环境

时间:2016-09-29 20:35:21

标签: pycharm remote-debugging wsgi ckan

我们将通过插件开始对CKAN的一些定制进行合理的开发。

在为CKAN开发插件时,是否有人们使用CKAN开发人员的建议,提示,提示和/或技巧?

我们特别寻求帮助的事项如下:

关于如何在IDE(如PyCharm)中进行开发以及将我们的代码移动/部署到远程Vagrant VM(我们将在其中运行ckan的开发实例)的建议。

如何使用WSGI在远程Vagrant VM实例中进行调试?有没有人使用IDE(如PyCharm)和WSGI进行远程调试?

那么一般来说,大多数CKAN开发人员如何进行编程?他们使用Vi吗?他们在本地机器上用ckan进行开发吗?他们使用远程虚拟机(如Vagrant / VirtualBox)吗?

我们已经尝试过寻找CKAN插件开发的方式,我们目前无法找到任何有用的信息,我们将非常感谢任何友好的推荐。

3 个答案:

答案 0 :(得分:2)

我在CKAN的完整开发安装中“本地”开发。为了部署到远程生产服务器(在VM中,但我认为这不相关),这个服务器有适当的CKAN和每个扩展的git仓库。当我推送到任何一个repos时,会触发一个post-receive hook,检查HEAD为 / usr / lib / ckan / default / src /并重新启动apache2。

这非常适合快速部署,保持代码同步,并快速回滚;)。

此设置由小脚本补充,用于偶尔将开发安装与生产安装(DB,FileStore,SOLR索引)同步。

就我个人而言,我现在正在使用Emacs,我发现它比vim更容易搜索和导航代码,但每个人都有自己的品味。

答案 1 :(得分:1)

我认为ckan社区中最常见的方法是使用简单的文本编辑器(如vim)来编辑代码。我个人现在正在使用Sublime,我觉得比vim更容易搜索和导航代码,但每个人都有自己的品味。

The Syntastic vim插件在ckan开发人员中很受欢迎,用于确保代码符合PEP8并将文本重排为79个字符等。但是大多数编辑都在插件中有这种东西。

熟悉使用Python调试器(pdb)进行调试非常有用 - 这似乎是ckan最受欢迎的选项。它快速学习并且始终有效。多年前我尝试了几个python IDE调试器,发现它们不可靠,但现在可能已经排序了。

打开ckan ini文件中的调试模式以处理Web异常,但偶尔在命令行调用ckan时将其关闭,例如调试API调用。

运行ckan,linux机器或vagrant / Virtual Box linux vm。

答案 2 :(得分:0)

经过几年尝试不同的事情,我们终于让PyCharm与我们的ckan / Vagrant VM环境一起工作。

我们多次试图让PyCharm的本地实例与我们的客户Vagrant VM交谈,但这对于开发人员来说似乎非常脆弱和混乱。

然后我们团队中的某些人说了一些关于"为什么我们只是在Vagrant VM上安装PyCharm然后使用x11转发来查看用户界面?"

看起来像个好主意尝试,它一直对我们有用。我们可以获得IDE的所有好处并进行调试。耶!

以下是我们如何做到的。您必须了解您的特定环境并更改您在下面看到的内容,以便为您所做的工作而努力。您还需要照顾自己的PyCharm许可证!

<强> VagrantFile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  config.vm.box = "centos/7"

  # apache port
  config.vm.network "forwarded_port", guest: 5000, host: 5000, auto_correct: false
  # database port
  config.vm.network "forwarded_port", guest: 5432, host: 65432, auto_correct: false
  # solr port
  config.vm.network "forwarded_port", guest: 8080, host: 8080, auto_correct: false

  # For PyCharm
  config.ssh.forward_agent = true
  config.ssh.forward_x11 = true

  # Install PyCharm IDE via shell script
  config.vm.provision "shell", path: "install_pycharm.sh"

end

<强> install_pycharm.sh

#!/bin/sh -e
set -x

cd /tmp
wget https://download.jetbrains.com/python/pycharm-professional-2017.3.1.tar.gz

tar -xvzf pycharm-professional-2017.3.1.tar.gz -C /tmp/

cp -r /tmp/pycharm-2017.3.1 /opt/pycharm

ln -s /opt/pycharm/bin/pycharm.sh /usr/local/bin/pycharm
ln -s /opt/pycharm/bin/inspect.sh /usr/local/bin/inspect

yum -y groupinstall "X Window System"

# Copy .Xauthority file from vagrant to ckan home
cp /vagrant/.Xauthority /usr/lib/ckan
chown ckan:ckan /usr/lib/ckan/.Xauthority

echo "==========================================="
echo "PyCharm will be installed in your Vagrant instance, but...."
echo "now you must run some manual steps to get PyCharm working:"
echo ""
echo " ssh into vagrant"
echo " This ssh will create your /home/vagrant/.Xauthority file, which you need to see the PyCharm GUI."
echo " Then you will need to copy this .Xauthority file to the ckan user to run PyCharm as ckan."
echo ""
echo " sudo cp /home/vagrant/.Xauthority /usr/lib/ckan"
echo " sudo chown ckan:ckan /usr/lib/ckan/.Xauthority"
echo " Set the DISPLAY variable for ckan user as it is set for vagrant when you do echo $DISPLAY: "
echo " export DISPLAY=localhost:11.0 "
echo " To start PyCharm run"
echo " pycharm "