用于开发 CKAN 插件的开发环境
Developer Environment for Developing CKAN Plugins
我们将开始通过插件对 CKAN 的一些定制进行合理的开发。
人们在为 CKAN 开发插件时是否有任何 CKAN 开发人员建议、提示、技巧 and/or 技巧?
我们特别寻求帮助的事情如下:
关于如何在 IDE(如 PyCharm)和 move/deploy 我们的代码到远程 Vagrant VM(我们将拥有 ckan 的开发实例)中进行开发的建议 运行).
如何使用 WSGI 在远程 Vagrant VM 实例中进行调试?有人使用 IDE(比如 PyCharm)和 WSGI 进行远程调试吗?
那么一般来说,大多数 CKAN 开发人员是如何进行编程的呢?他们使用 Vi 吗?他们在本地机器上使用 ckan 进行开发吗?他们是否使用远程虚拟机(例如 Vagrant/VirtualBox)?
我们已经尝试寻找任何人如何进行 CKAN 插件开发,但目前我们未能找到任何有用的信息,我们将不胜感激任何友好的建议。
我认为ckan社区最常用的方式是使用简单的文本编辑器,例如vim,来编辑代码。就个人而言,我现在正在使用 Sublime,我发现它比 vim 更容易搜索和导航代码,但每个人都有自己的品味。
The Syntastic vim 插件在 ckan 开发者中很流行,用于确保代码符合 PEP8 标准并将文本重排为 79 个字符宽等。但是大多数编辑器在插件中都有这种东西。
熟悉使用 Python 调试器 (pdb) 进行调试非常有帮助 - 这似乎是 ckan 最受欢迎的选项。它学起来很快,而且总是有效。多年前我尝试了几个 python IDE 调试器,发现它们不可靠,但也许现在已经解决了。
在你的 ckan ini 文件中打开调试模式来处理网络异常,但偶尔我会在命令行上调用 ckan 时关闭它,例如调试 API 个调用。
到 运行 ckan,linux 机器或 vagrant/Virtual 盒子 linux vm.
我在本地开发 "inside" CKAN 的完整开发安装。为了部署到远程生产服务器(在 VM 中,但我认为这不相关),该服务器有一个裸露的 git repo 用于 CKAN 本身和每个扩展。当我推送到这些回购协议中的任何一个时,都会触发一个 post-receive 钩子,检查 HEAD 到
/usr/lib/ckan/default/src/ 并重新启动 apache2。
这非常适合快速部署、保持代码同步和快速回滚 ;)。
此设置由小脚本补充,用于偶尔将开发安装与生产安装(DB、FileStore、SOLR 索引)同步。
就个人而言,我现在正在使用 Emacs,我发现它比 vim 更容易搜索和导航代码,但每个人都有自己的品味。
经过几年的尝试,我们终于 PyCharm 可以使用我们的 ckan/Vagrant VM 环境。
我们多次尝试让 PyCharm 的本地实例与我们的来宾 Vagrant VM 通信,但这对开发人员来说似乎非常脆弱且令人困惑。
然后我们团队的某个人说了一些大意 "Why don't we just install PyCharm on the Vagrant VM and then use x11 forwarding to see the user interface?"
这似乎是个不错的尝试,而且对我们来说效果很好。我们获得了 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 "
我们将开始通过插件对 CKAN 的一些定制进行合理的开发。
人们在为 CKAN 开发插件时是否有任何 CKAN 开发人员建议、提示、技巧 and/or 技巧?
我们特别寻求帮助的事情如下:
关于如何在 IDE(如 PyCharm)和 move/deploy 我们的代码到远程 Vagrant VM(我们将拥有 ckan 的开发实例)中进行开发的建议 运行).
如何使用 WSGI 在远程 Vagrant VM 实例中进行调试?有人使用 IDE(比如 PyCharm)和 WSGI 进行远程调试吗?
那么一般来说,大多数 CKAN 开发人员是如何进行编程的呢?他们使用 Vi 吗?他们在本地机器上使用 ckan 进行开发吗?他们是否使用远程虚拟机(例如 Vagrant/VirtualBox)?
我们已经尝试寻找任何人如何进行 CKAN 插件开发,但目前我们未能找到任何有用的信息,我们将不胜感激任何友好的建议。
我认为ckan社区最常用的方式是使用简单的文本编辑器,例如vim,来编辑代码。就个人而言,我现在正在使用 Sublime,我发现它比 vim 更容易搜索和导航代码,但每个人都有自己的品味。
The Syntastic vim 插件在 ckan 开发者中很流行,用于确保代码符合 PEP8 标准并将文本重排为 79 个字符宽等。但是大多数编辑器在插件中都有这种东西。
熟悉使用 Python 调试器 (pdb) 进行调试非常有帮助 - 这似乎是 ckan 最受欢迎的选项。它学起来很快,而且总是有效。多年前我尝试了几个 python IDE 调试器,发现它们不可靠,但也许现在已经解决了。
在你的 ckan ini 文件中打开调试模式来处理网络异常,但偶尔我会在命令行上调用 ckan 时关闭它,例如调试 API 个调用。
到 运行 ckan,linux 机器或 vagrant/Virtual 盒子 linux vm.
我在本地开发 "inside" CKAN 的完整开发安装。为了部署到远程生产服务器(在 VM 中,但我认为这不相关),该服务器有一个裸露的 git repo 用于 CKAN 本身和每个扩展。当我推送到这些回购协议中的任何一个时,都会触发一个 post-receive 钩子,检查 HEAD 到 /usr/lib/ckan/default/src/ 并重新启动 apache2。
这非常适合快速部署、保持代码同步和快速回滚 ;)。
此设置由小脚本补充,用于偶尔将开发安装与生产安装(DB、FileStore、SOLR 索引)同步。
就个人而言,我现在正在使用 Emacs,我发现它比 vim 更容易搜索和导航代码,但每个人都有自己的品味。
经过几年的尝试,我们终于 PyCharm 可以使用我们的 ckan/Vagrant VM 环境。
我们多次尝试让 PyCharm 的本地实例与我们的来宾 Vagrant VM 通信,但这对开发人员来说似乎非常脆弱且令人困惑。
然后我们团队的某个人说了一些大意 "Why don't we just install PyCharm on the Vagrant VM and then use x11 forwarding to see the user interface?"
这似乎是个不错的尝试,而且对我们来说效果很好。我们获得了 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 "