小编Zed*_*TuX的帖子

使用Rails 4响应未授权状态(401)

鉴于以下Rails 4.2控制器:

class Api::UsersController < ApplicationController
  def index
    respond_to do |format|
      format.html do
        flash[:error] = 'Access denied'
        redirect_to root_url
      end
      format.json do
        render json: {}, status: :unauthorised
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

当使用RSpec 3时,我尝试调用此index操作并期望具有状态401,我总是具有状态200.

我获得401的唯一时刻是替换index动作内容,head 401但我想回答错误401,并建立一个"漂亮"的身体像{ error: 401, message: 'Unauthorised' }.

为什么被status: :unauthorised忽略了?

ruby ruby-on-rails ruby-on-rails-4

11
推荐指数
2
解决办法
2万
查看次数

来自Linux内核模块中fd inode的可执行路径

  • 鉴于inode存在于/proc/**/fd/*
  • 还有一个需要从符号链接中找到可执行路径的Linux内核模块 /proc/**/exe

我怎么能实现这一点,以便从inode编号我使用fd获得可执行文件的路径?

executable inode path linux-kernel

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

什么是--pnp纱?

有一个称为Plug'n'Play的新的亮纱功能。

我想知道它到底是做什么的?

我知道它正在创建一个.pnp文件夹和一个.pnp.js文件,但是它会更改计算机上的其他任何内容,例如某个地方的配置文件吗?

谢谢。

yarnpkg

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

使用--cache-from复制Gemfile时,Docker构建未使用缓存

在本地计算机上,我已经构建了latest映像,并docker build在应有的位置运行另一个使用缓存。

然后,将映像作为上载到注册表latest,然后在CI服务器上,提取latest应用程序的映像,以将其用作构建缓存来构建新版本:

docker pull $CONTAINER_IMAGE:latest

docker build --cache-from $CONTAINER_IMAGE:latest \
             --tag $CONTAINER_IMAGE:$CI_COMMIT_SHORT_SHA \
             .
Run Code Online (Sandbox Code Playgroud)

从构建输出中,我们可以看到的COPYGemfile没有使用图片中的大小写latest,而我还没有更新该文件:

Step 15/22 : RUN gem install bundler -v 1.17.3 &&     ln -s /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.16.0 /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.16.1
 ---> Using cache
 ---> 47a9ad7747c6
Step 16/22 : ENV BUNDLE_GEMFILE=$APP_HOME/Gemfile     BUNDLE_JOBS=8
 ---> Using cache
 ---> 1124ad337b98
Step 17/22 : WORKDIR $APP_HOME
 ---> Using cache
 ---> 9cd742111641
Step 18/22 : COPY Gemfile $APP_HOME/
 ---> f7ff0ee82ba2
Step 19/22 …
Run Code Online (Sandbox Code Playgroud)

caching docker

6
推荐指数
3
解决办法
1037
查看次数

从 Rails 4.2 升级到 Rails 5.2:Cookie 数据不再可读

我正在将 Rails 4.2 应用程序迁移到 Rails 5.2。

在代码中,我们设置一个cookie:

cookies.permanent.signed["wsid#{session[:user_id]}".to_sym] = { value: wsid, httponly: true }
Run Code Online (Sandbox Code Playgroud)

然后用以下命令取回它:

cookies.permanent.signed["wsid#{session[:user_id]}".to_sym]
Run Code Online (Sandbox Code Playgroud)

升级 Rails 后,该值不再可读。

在仔细检查升级 Ruby on Rails 指南后,我发现从 Rails 5.1 迁移到 5.2,cookie 发生了变化

所以我将以下内容添加到所有环境文件中:

  # controls whether signed and encrypted cookies use the AES-256-GCM cipher or
  # the older AES-256-CBC cipher. It defaults to true.
  config.action_dispatch.use_authenticated_cookie_encryption = false
Run Code Online (Sandbox Code Playgroud)

但我仍然无法访问这些值。

有人可以帮我解决这个问题吗?

更新

我读到了有关的内容,secret_key_base我明白这cookies是在幕后加密数据,但实际上上面代码定义的值似乎没有加密,因为使用Base64.decode64我可以看到正确的值。

cookies ruby-on-rails

6
推荐指数
0
解决办法
545
查看次数

用户空间进程上的Linux内核模块信号被杀死

我想知道是否有一个钩子可以在Linux内核模块中使用,当用户空间应用程序/进程被杀死时会被触发?

hook linux-kernel kill-process

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

React-Native,仅Android,无firebase:对象作为React子对象无效(找到:带有键{$$ typeof,type,key,ref,props,_owner,

我正在构建一个React Native 0.57应用程序,该应用程序在IOS上运行良好,但在Android上失败并出现以下错误:

Objects are not valid as a React child (found: object with keys {$$typeof, type, key, ref, props, _owner, _store}). If you meant to render a collection of children, use an array instead.
throwOnInvalidObjectType ReactNativeRenderer-dev.js:8779:6
reconcileChildFibers ReactNativeRenderer-dev.js:9842:31
reconcileChildren ReactNativeRenderer-dev.js:10319:6
updateHostRoot ReactNativeRenderer-dev.js:10683:6
beginWork ReactNativeRenderer-dev.js:11360:28
performUnitOfWork ReactNativeRenderer-dev.js:14091:21
workLoop ReactNativeRenderer-dev.js:14129:41
renderRoot ReactNativeRenderer-dev.js:14226:15
performWorkOnRoot ReactNativeRenderer-dev.js:15193:17
performWork ReactNativeRenderer-dev.js:15090:24
performSyncWork ReactNativeRenderer-dev.js:15047:14
requestWork ReactNativeRenderer-dev.js:14925:19
scheduleWork ReactNativeRenderer-dev.js:14711:16
scheduleRootUpdate ReactNativeRenderer-dev.js:15429:15
updateContainerAtExpirationTime ReactNativeRenderer-dev.js:15462:28
updateContainer ReactNativeRenderer-dev.js:15494:4
render ReactNativeRenderer-dev.js:16142:20
renderApplication renderApplication.js:59:34
run AppRegistry.js:101:10
runApplication AppRegistry.js:195:26
__callFunction MessageQueue.js:349:47
<unknown> MessageQueue.js:106:26
__guard …
Run Code Online (Sandbox Code Playgroud)

android react-native

5
推荐指数
0
解决办法
305
查看次数

Kubernetes DNS 查找问题和 /etc/resolv.conf 文件中的“无效”

我已经部署了一个由一个主节点和两个工作节点组成的 Kubernetes 集群,使用kubeadmFlannel 网络驱动程序(所以我将--pod-network-cidr=10.244.0.0/16标志传递给kubeadm init)。

这些节点使用 VPN 进行通信,以便:

  • 主节点IP地址为10.0.0.170
  • 工人 1 IP 地址是 10.0.0.247
  • 工人 2 IP 地址是 10.0.0.35

当我创建一个新的 pod 并尝试 ping google 时,出现以下错误:

/ # ping google.com
ping: bad address 'google.com'
Run Code Online (Sandbox Code Playgroud)

我按照Kubernetes DNS 调试解析文档页面中的说明进行操作:

$ kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10

nslookup: can't resolve 'kubernetes.default'
command terminated with exit code 1
Run Code Online (Sandbox Code Playgroud)

首先检查本地DNS配置

$ kubectl exec busybox cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local …
Run Code Online (Sandbox Code Playgroud)

kubernetes kube-dns kubeadm coredns

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

如何通过 Kubernetes 探针测试文件是否存在?

我的 MySQL Pod 中有一个 sidecar 容器,它将使用 MySQL 套接字文件来访问数据库。

我想确保 MySQL 已成功启动,因此在此 sidecar 容器启动之前已创建套接字文件。

我尝试添加一个带有存在的readiness探针,但失败了:exec.commandtest -S /var/run/mysqld/mysqld.sock

Readiness probe failed: OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "test -S /var/run/mysqld/mysqld.sock": stat test -S /var/run/mysqld/mysqld.sock: no such file or directory: unknown
Run Code Online (Sandbox Code Playgroud)

当我在 sidecar 容器中打开终端会话时,我可以看到ls套接字文件,它就在那里。

所以看起来我的test -S <path>命令在探测器的上下文中没有按预期工作。

如何编写探针,以便一旦套接字文件可用,我的 sidecar 容器就会启动?

kubernetes readinessprobe

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

Dbus服务以root身份启动,其他用户无法访问

我有一个dbus服务器发布一些以root身份启动的方法.

当我尝试使用小型python客户端访问它时,我无法访问它,直到我以root身份启动客户端.

如何以系统用户身份访问以root身份启动的D-Bus服务?

dbus root

0
推荐指数
1
解决办法
1447
查看次数

如何从`[[:: punct:]]`获取Ruby Regexp标点列表?

我正在使用devise-securitygem并设置它,以要求symbol输入密码(通过config.password_complexity)。

现在,我想显示可能使用的符号。

看看gem的代码,我发现他们实际上是在使用Regexp[[:punct:]]

您能告诉我如何[[:punct:]]从Ruby代码中从POSIX括号表达式中获取符号列表吗?

我期望得到像这样的字符串#$%^*)

ruby regex

0
推荐指数
1
解决办法
69
查看次数