【问题标题】:Developer Environment for Developing CKAN Plugins用于开发 CKAN 插件的开发环境
【发布时间】:2017-02-08 07:46:56
【问题描述】:

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

在为 CKAN 开发插件时,是否有任何 CKAN 开发人员建议、提示、提示和/或技巧?

我们专门寻求帮助的事情如下:

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

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

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

我们已经尝试寻找任何人如何进行 CKAN 插件开发,但目前我们无法找到任何有用的信息,任何友好的建议将不胜感激。

【问题讨论】:

    标签: pycharm remote-debugging wsgi ckan


    【解决方案1】:

    我在本地“内部”开发 CKAN 的完整开发安装。为了部署到远程生产服务器(在 VM 中,但我认为这不相关),该服务器有一个适用于 CKAN 和每个扩展的裸 git 存储库。当我推送到这些存储库中的任何一个时,都会触发一个接收后挂钩,以检查 HEAD 到 /usr/lib/ckan/default/src/ 并重启apache2。

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

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

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

    【讨论】:

      【解决方案2】:

      我认为在 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。

      【讨论】:

        【解决方案3】:

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

        我们多次尝试让 PyC​​harm 的本地实例与我们的访客 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 "
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-01
          • 2014-10-28
          • 2021-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多