在Heroku上使用Rails但通过Python脚本进行各种操作(包括机器学习)的优缺点是什么?我喜欢Rails,但如果Django长期来看更好,我愿意切换到Django。
我希望通过将问题定位为“优缺点”,这更符合Stack Overflow的规范…如果不是这样,我很抱歉。不过我真的很希望得到帮助。
回答:
我喜欢Rails,但是…
你喜欢Rails的什么地方?Rails很棒,但它提供了Django没有的什么功能?在一个项目中使用多种语言是很常见的,多种语言会被编译成相同的代码。有像’rupy’这样的库可以简化这一过程,如果你比Django更熟悉Rails,那么考虑这种方法是有用例的。一般来说会有一些问题,主要问题是架构上什么是最好的选择。
关于可能的缺点,让我们尝试探索在构建现实世界示例时可能出现的任何问题:
def init_py_script parsed_output = JSON.parse(`cat #{file.path} | python3 lib/some_python_script.py`)end
为什么作者选择这样做?在我们的模型中,假设他们将Python代码的工作外包了,因为他们不知道如何用Ruby完成这项任务。也许他们没有时间学习如何用Ruby做这件事,只能找到一个能完成这项工作的Python开发者。
这没问题,但这里有一些问题。[注意这些问题可能/可能不适用于你]:
- 用户需要在他们的服务器上安装不同的依赖项来运行两种语言,这需要时间来理解和调试。
- 如果外包的开发者将代码上传到另一个存储库;大多数部署脚本将无法部署子模块代码,需要手动干预。
- 在服务器上维护多种语言并不容易,当升级包时,可能会出现问题,比如需要安装多个’libssl-dev’包,这会增加更多的持续工作量。
- Ruby和Rails传统上由TDD驱动。如果你仅依赖单元测试,不会有问题。如果你喜欢加入集成测试,获得完整覆盖将更加困难。
- 在编写代码时,作者应该考虑到读者的需求,并减少未来读者和开发者理解应用程序功能的认知负担。如果你包含更多语言,将限制未来能够参与整个项目的开发者数量,因为他们需要理解两种语言。如果他们只在一个小组件上工作,这可能不是问题。
TLDR:对于小项目来说是可以的。使用多种语言会导致基础设施问题,可能在未来引起版本冲突。升级可能会更加困难。如果你有好的文档和测试,代码的开发应该不会受到影响。