小编lai*_*son的帖子

使用Postgres安装最新版本的Rails 4 - 不推荐使用PGconn,PGresult和PGError常量

我无法在Google上找到此警告,因此请求Stackowerflower的帮助.

我想在新的Centos 7盒子上安装Rails 4.2.8.Postgres版本是9.2.18.Ruby版本是2.3.4.

安装Rails时,我像往常一样配置config/database.yml文件,并且非常确定database.yml文件可以成功连接到DB.Postgres已经成功运行其他应用程序,并为此应用程序创建了新的角色.

在下一步中,存在一个实际问题:

[user@server dir]$ rake db:setup
The PGconn, PGresult, and PGError constants are deprecated, and will be
removed as of version 1.0.

You should use PG::Connection, PG::Result, and PG::Error instead, respectively.

Called from /home/user/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:240:in `load_dependency'
/home/rent/apps/rent/db/schema.rb doesn't exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/user/apps/rent/config/application.rb to limit the frameworks that will be loaded.
[user@server dir]$
Run Code Online (Sandbox Code Playgroud)

这是否证实Rails成功连接到Postgres?如何简单检查一下?

如果是 - 我可以在Rails …

ruby-on-rails postgresql-9.2

15
推荐指数
1
解决办法
7612
查看次数

部署React前端时如何注入API服务器URL?

免责声明:我是一个React新手,所以也许我想做的不是React Way

我正在编写一个React前端,该前端将被部署为由某些云提供商静态地提供服务,例如S3或Google Storage或其他。该前端与生活在云中某个地方(可能在同一提供商中,也许不在同一提供商中)的多个API服务器进行交互。此外,在开发UI或其一部分时,这些服务器的地址可能是本地实例或测试实例。

如何以灵活的方式将API服务器URL注入我的react应用程序中,以便可以使用不同的地址在dev,staging或prod中进行部署?

解决方案:最后我最终使用了建议的解决方案组合:

  • 使用.env.production.env.development文件(确切名称)存储变量REACT_APP_API_URI = 'host'
  • 它由create-react-app的构建脚手架自动拾取,并在UI代码中可用 process.env.REACT_APP_API_URI

请注意,这在一定程度上违背了12 Factor Apps的原理,例如,在版本控制中将env变量存储在文件中,但是它可以完成ATM。

npm reactjs

10
推荐指数
1
解决办法
9384
查看次数

您可以使用“kubectl run”在特定节点上调度 Pod 吗?

我有一个命令kubectl run -it my-pod --image=<my-image> /bin/sh,我希望将 pod 安排在特定节点上。

这可能吗?如果可能的话,如何实现?

kubernetes kubectl

7
推荐指数
1
解决办法
8986
查看次数

Python 子进程默认情况下不可扩展,您可以推荐任何简单的解决方案来使其可扩展吗?

我有一个应用程序可以执行以下操作:

subprocess.Popen(["python3", "-u", "sub-program-1.py"])
Run Code Online (Sandbox Code Playgroud)

因此Python程序可以按需启动多个长寿命进程。

如果我停止主Python程序并再次启动,它知道sub-program-1.py应该启动,因为数据库中有一条关于状态的记录告诉它。

因此,当 Docker 容器、Pod、虚拟机​​或任何你称之为的东西只有一个副本时,它就可以正常工作。


如果我将应用程序扩展到 3 个副本,subprocess则无法实现。

  1. 每个 Docker 容器都会启动sub-program-1.py,而我想在一个容器上启动

  2. 如果一个容器发生故障,应用程序应该足够智能,能够故障转移sub-program-1.py到另一个容器

  3. 一个应用程序应该足够智能,能够平衡容器之间的子进程,例如:sub-program-1.py-sub-program-9.py理想情况下应该通过每个容器放置 3 个进程来进行扩展,因此总共有 9 个子进程正在运行 - 我不需要这个很精确,最简单的解决方案就可以了来平衡它


我尝试探索 RQ(Redis 队列)和类似的解决方案,但它们主要关注任务,最好是短期任务。就我而言,它们是长期存在的进程。例如sub-program-1.py可以活几个月甚至几年。


方案是这样的:

主要 Python 应用程序 -> sub-program-1.pysub-program-2.py等。

这里有没有任何简单的解决方案,没有开销?

将每个子程序的状态写入数据库是否是一个选项(还可以根据数据库中的状态检测子进程何时无法将其故障转移到另一个容器),或者您是否会合并其他工具来解决subprocess扩展问题?


另一种选择是启动sub-program-1.py所有容器并扩展其中的操作。sub-program-1.py基本上就是调用一些第三方的API,根据用户的喜好做一些操作。因此,根据每个用户偏好扩展这些 API 调用很复杂,当同时调用 API 时,它在后台有多个线程。简而言之,sub-program-1.py与 user1 绑定,sub-program-2.py与 user2 绑定,等等。那么是否值得通过选择此选项使其变得复杂?


更新

Ifsubprocess仅在独立应用程序中使用,没有人尝试在 Github、库等上以可找到的规模实现此机制。

你会如何用Python解决这个问题?

我想到了数据库中的这些条目:

ProcessName        ProcessHostname        LastHeartBeat …
Run Code Online (Sandbox Code Playgroud)

python linux scaling subprocess kubernetes

3
推荐指数
1
解决办法
743
查看次数

ruby排序数组 - 将匹配的元素移动到开头

如果我有一个数组:array = ["ruby", "code", "library"].如何将匹配的/ ^ library $/elements移动到开头.所以数组看起来像这样:array = ["library","ruby","code"]

ruby arrays

2
推荐指数
1
解决办法
291
查看次数

在同一台服务器上运行 Kubernetes 主节点和节点(在 Kubernetes 主节点上调度 pod)

如果您在 Kubernetes master 上运行 taint 命令:

kubectl taint nodes --all node-role.kubernetes.io/master-
Run Code Online (Sandbox Code Playgroud)

它允许您安排 pod。所以它充当节点和主节点。

我试图运行 3 个服务器集群,其中所有节点都有两个角色。从第一眼看,我没有注意到任何问题。

你认为现在这个解决方案可以用来运行生产服务的小集群吗?如果不是,真正的缺点是什么?与标准设置相比,此设置在哪些情况下会失败?

假设 etcd 在所有三台服务器上运行。

谢谢

kubernetes

2
推荐指数
1
解决办法
4362
查看次数