小编iGE*_*GEL的帖子

查询 jsonb 数组的整数成员

背景:我们使用 PaperTrail 来保存我们不断变化的模型的历史。现在我想查询属于某个客户的项目。PaperTrail 可选择存储object_changes,我需要查询此字段以了解何时使用此 ID 创建或更改为此 ID。

我的表看起来像这样简化:

item_type | object_changes
----------|----------------------------------------------------------
"Item"    | {"customer_id": [null, 5], "other": [null, "change"]}
"Item"    | {"customer_id": [4, 5], "other": ["unrelated", "change"]}
"Item"    | {"customer_id": [5, 6], "other": ["asht", "asht"]}
Run Code Online (Sandbox Code Playgroud)

如何查询从 ID 5 更改为或更改为 ID 5 的元素(所以上面的所有行)?我试过:

SELECT * FROM versions WHERE object_changes->'customer_id' ? 5;
Run Code Online (Sandbox Code Playgroud)

这让我:

ERROR:  operator does not exist: jsonb ? integer
LINE 1: ...T * FROM versions WHERE object_changes->'customer_id' ? 5;
                                                                 ^
HINT:  No operator matches the given name …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails paper-trail-gem jsonb postgresql-9.6

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

AWS ECS上at_exit中的SignalException

我们正在使用基于官方ruby:2.4.2图像的泊坞窗图像在ECS上运行Rails 5.1应用程序.

在许多部署中,我们从旧流程中了解到这个异常:

SignalException: SIGTERM - SignalException in at_exit

Backtrace:

[GEM_ROOT]/gems/puma-3.11.0/lib/puma/launcher.rb:397 :in `block in setup_signals`
[GEM_ROOT]/gems/puma-3.11.0/lib/puma/single.rb:106 :in `join`
[GEM_ROOT]/gems/puma-3.11.0/lib/puma/single.rb:106 :in `run`
[GEM_ROOT]/gems/puma-3.11.0/lib/puma/launcher.rb:183 :in `run`
[GEM_ROOT]/gems/puma-3.11.0/lib/puma/cli.rb:77 :in `run`
[GEM_ROOT]/gems/puma-3.11.0/bin/puma:10 :in `<top (required)>`

/usr/local[GEM_ROOT]/bin/puma:21 :in `load`

19 require "bundler/setup"
20 
21 load Gem.bin_path("puma", "puma")

/usr/local[GEM_ROOT]/bin/puma:21 :in `<main>` 
Run Code Online (Sandbox Code Playgroud)

我发现这个提示设置BUNDLE_DISABLE_EXEC_LOAD,以true就解决了问题,但事实并非如此.

另外,请注意该in at_exit部分.我们的关机是否可能需要太长时间,以便ECS SIGTERM在流程正确终止之前发送另一个?


命令是

"command": [
    "bin/ecs",
    "webserver"
  ]
Run Code Online (Sandbox Code Playgroud)

并且bin/ecs

#!/usr/bin/env ruby

COMMANDS = {
  "webserver" => "puma -C config/puma.rb",
  "sidekiq" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails amazon-ecs bundler puma ruby-on-rails-5

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

git别名:使用参数提交并按下单个命令

我试图说服我的同事离开svn并切换到git.我看到的一个问题是:它必须分别执行git commit和git push是复杂且容易出错的.所以我在想一个git ci别名,它提交更改并将其推送到服务器.我知道,怎么做,但是:

问题是,我想给git commit提供像-m""这样的参数.所以

git ci -m "Cool change"
Run Code Online (Sandbox Code Playgroud)

应该执行

git commit -m "Cool change" && git push
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

git push commit

6
推荐指数
1
解决办法
2977
查看次数

使用Riemann报告CPU一如既往

我们正在使用Riemann和Riemann-health来监控我们的服务器.但是现在我得到了很多CPU严重警告,因为CPU在很短的时间内达到了顶峰 - 这是我认为我甚至不需要知道的.根据我的理解,持续的高CPU使用率将增加负载平均值,这也将被报告并且听起来更有用.

我不想禁用报告CPU,只是认为每个级别都可以.如果可能的话,我想更改Riemann服务器上的事件,所以我不必更改所有服务器.

在这里我们的黎曼配置:https://gist.github.com/iGEL/e352764a8c559440c851

riemann

6
推荐指数
1
解决办法
204
查看次数

检测挂起的linux关闭

由于我尽快为我的Ubuntu服务器安装挂起的更新,我必须经常重启我的linux服务器.我正在该服务器上运行webapp,并且想要警告我的用户有关挂起的重启.现在,我手动执行此操作,在重新启动之前添加通知,给他们一些时间来完成他们的工作,重新启动并删除公告.

我希望,shutdown -r +60写一个文件,其中包含有关重启的所有信息,我可以检查每次访问.有这样的文件吗?由于性能原因,更喜欢像/ proc这样的虚拟文件系统中的文件...

我正在运行Ubuntu 10.04.2 LTS

linux shutdown system-shutdown

5
推荐指数
1
解决办法
5693
查看次数

重置HTML5无效的输入状态

在值发生变化之前,带有验证的输入最初不会被标记为无效.如何恢复此初始状态?

我的问题很详细:我有一个简单的订单.如果用户单击"添加项目"按钮,我将克隆第一个项目并清空输入字段.但由于我正在使用html5验证,因此清空会使它们无效.

即使第一组字段有效,单击"添加产品"后会发生这种情况:

在此输入图像描述

演示:http://jsfiddle.net/WEHdp/(在Firefox中查看):

<form action="/orders/preview" method="post">
  <div class="orderData">
    <input name="order[order_items_attributes][0][articleno]" pattern="[0-9]{4}" required /> /
    <input name="order[order_items_attributes][0][colorno]" pattern="[0-9]{3}" required />
    <div>
      <a href="#" class="removeOrder">Remove product</a>
      <a href="#" class="addOrder">Add product</a>
    </div>
  </div>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>
<script>
$(document).ready(function() {
  $(".addOrder").live("click", function (event) {
    event.preventDefault();

    // Clone div
    $('.orderData:first').clone().insertAfter(".orderData:last");
    // Empty the fields
    $('.orderData:last input').val("");
  });

  $(".removeOrder").live("click", function (event) {
    event.preventDefault();
    if($('.orderData').size() > 1){
      $(this).parents('.orderData').remove();
    }
  });
});
</script>
Run Code Online (Sandbox Code Playgroud)

validation html5

5
推荐指数
1
解决办法
2552
查看次数

在请求之间缓存值

我有一个(无表格)选项模型,它从yaml文件中读取它的值.yaml是项目的一部分,因此如果我保留我的工作流程,如果不重新部署和重新启动整个应用程序,选项就无法更改.因此,没有必要在每个请求上读取和解析文件.因此,我想在请求之间缓存值.

到目前为止,我已将选项加载到类变量(@@options)中,但我不确定,如果有更好的方法.

(不要说会话.这些选项不是会话变量,因为它们适用于所有客户端的所有请求.我也使用CookieStore)

ruby-on-rails

5
推荐指数
1
解决办法
1287
查看次数

在测试中:确保所有JS都加载了requirejs

我的功能规格有些问题.我目前怀疑requirejs是恶人.看起来我们的规范(带有capybara-webkit的Rails)在加载所有JavaScript文件之前就开始运行了.Capybara-webkit允许我在Webkit中评估Javascript,我想使用它来确保在开始测试运行之前一切都已就绪.

我可以以某种方式查询requirejs它加载的模块吗?我能收听的活动吗?或者我可以在测试运行时注入一个requirejs模块来设置我可以从我的测试中查询的全局状态(不是我真正喜欢的解决方案)吗?

我不是一个requirejs专家,并没有实现我们的JavaScript,但我需要修复它;)

requirejs requirejs-rails

5
推荐指数
1
解决办法
738
查看次数

5
推荐指数
1
解决办法
1837
查看次数

Jenkins Pipeline:构建失败时如何归档工件?

当基于浏览器的测试失败时,我们将截取浏览器窗口的屏幕截图以更好地说明问题。但是,我不知道如何将它们归档到我的管道中,因为管道在失败后会停止。与相同junit.xml,我也想在错误的情况下使用它。

我已经检查过,屏幕截图已正确生成并存储。

我的定义看起来像这样(无关紧要的东西大都被修剪了):

node {
   stage('Build docker container') {
       checkout([$class: 'GitSCM', ...])
       sh "docker build -t webapp ."
   }
   stage('test build') {
       sh "mkdir -p rspec screenshots"
       sh "docker run -v /var/jenkins_home/workspace/webapp/rspec/junit.xml:/myapp/junit.xml -v /var/jenkins_home/workspace/webapp/screenshots:/myapp/tmp/capybara -v webapp bundle exec rspec"
   }
   stage('Results') {
      junit 'rspec/junit*.xml'
      archive 'screenshots/*'
   }
}
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

5
推荐指数
1
解决办法
7483
查看次数