小编Sig*_*Sig的帖子

消除输入和按钮之间的间隙

我正试图在文本字段旁边放一个按钮.

在这里,我认为代码可以使它工作

<input class="txt" type="text" name="name">
<button class="btn">Submit</button>


.txt {
  display: inline-block;
  width: 80%;
  outline: none;
  margin:0;
}

.btn {
  display: inline-block;
  width: 20%;
  margin:0;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/rm9etsny/

但是,这两个要素之间仍然存在差距.我该如何删除它?

谢谢

html css

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

如何在 has_many 关联中使用 Lambda

我正在尝试将在 Ruby 1.9.3 上运行的 Rails 应用程序升级到 Rails 4.2.0,但更新关联时遇到了困难。

这是我认为我应该使用的代码

has_many :current_roles, -> (role){ where(job_id: role.id)}, class_name:'Role'
Run Code Online (Sandbox Code Playgroud)

我在几乎所有有关关联和 Rails 4.2 的响应中都看到了 lambda 的相同用法。

然而我得到的是syntax error, unexpected '}', expecting keyword_end

我错过了什么吗?

谢谢

ruby ruby-on-rails-4

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

将块作为关键字参数传递

是否有可能(如果是的话)如何在ruby方法中将块作为关键字参数传递?

基本上,我想做

pippo(even: {|n| n+1 }, odd: {|n| n-1})
Run Code Online (Sandbox Code Playgroud)

将方法定义为此类

def pippo(even: , odd:)
  even? ? even.yield(self) : odd.yield(self)
end
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby

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

在 Docker 上重新加载 Letsencrypt 证书

我在 Docker 容器中运行 Nginx,需要定期重新加载其配置以获取更新的Letsecnrypt SSL 证书。

docker-compose文件中我有以下内容

command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
Run Code Online (Sandbox Code Playgroud)

据我所知,应该每 6 小时重新加载配置并重新启动 Nginx。然而,它不起作用。SSL 证书已续订​​,但 Nginx 未获取它。

关于如何每隔几个小时正确地重新加载 Letsencrypt SSL 证书有什么想法吗?

更新 08/08/19

根据我的理解,这个问题与我挂载到容器中的证书文件实际上是符号链接有关,而符号链接不能很好地与 Docker 配合使用。

nginx docker lets-encrypt

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

在Sinatra帖子上阅读参数

我正在研究我的第一个Sinatra应用程序,我很难从一个帖子请求中获取参数.

我正在使用MiniTest :: Spec,我的规格看起来像

 payload = File.read("./spec/support/fixtures/payload.json")
 post "/api/v1/verify_payload", { payload: payload }, { "CONTENT_TYPE" => "application/json" } 
 last_response.body.must_eql payload
Run Code Online (Sandbox Code Playgroud)

这是我的路线

namespace '/api/v1' do
  post '/verify_payload' do
    MultiJson.load(params[:payload])
  end
end
Run Code Online (Sandbox Code Playgroud)

规范失败,因为last_response.body是空的.

我在这里错过了什么吗?

我也试图返回整个params,verify_payload但在这种情况下,它返回一个空字符串.

更新

curl -X POST -H "Content-Type: application/json" -d '{"payload":"xyz"}' http://localhost:9292/api/v1/verify_payload
Run Code Online (Sandbox Code Playgroud)

在服务器日志中不返回任何内容并且没有错误

[2014-01-06 01:16:25] INFO  WEBrick::HTTPServer#start: pid=10449 port=9292
127.0.0.1 - - [06/Jan/2014 01:16:27] "POST /api/v1/verify_payload HTTP/1.1" 200 6 0.0220
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby json sinatra

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

如何本地化 ActiveModel::错误消息

当我验证模型时,出现以下错误

<ActiveModel::Errors:0x007ffecf1c9460 
@base=#<Post id: nil, created_at: nil, label_id: nil, user_id: 3>,
@messages={:label=>["can't be blank"]},
@details={:label=>[{:error=>:blank}]}>
Run Code Online (Sandbox Code Playgroud)

如何自定义错误消息?

根据我的理解,以下应该有效

en:
  activerecord:
    errors:
      models:
        post:
          attributes:
            label:
              blank: do not like it
Run Code Online (Sandbox Code Playgroud)

但是,我仍然收到默认错误消息。

ruby-on-rails rails-i18n ruby-on-rails-5 ruby-on-rails-6

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

水豚禁用复选框

如何使用 Capybara 验证复选框是否已禁用?

我尝试了几种选择,但似乎没有任何效果。最后一次尝试是

expect(page).to have_field("input[type='checkbox'][value='agreement']", disabled: true)
Run Code Online (Sandbox Code Playgroud)

一如既往,谢谢。

rspec capybara

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

以非root用户身份构建Docker镜像

在构建 Docker 映像时,作为最佳实践,我知道我不应该使用该root用户,但我在使用我创建的用户时遇到了困难。

在这里我的Dockerfile

FROM alpine:3.9.2
RUN addgroup -S cetacean && adduser -S mobydick -G cetacean
USER mobydick
RUN apk update 
Run Code Online (Sandbox Code Playgroud)

这是我运行时遇到的错误

错误:无法锁定数据库:权限被拒绝

错误:无法打开 apk 数据库:权限被拒绝

我应该做什么才能使用安装包mobydick

docker alpine-linux

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

在IRB上需要ActiveRecord - Ruby(NO Rails)

如何加载ActiveRecordIRB会话?

我有以下内容

# config/app.rb
require 'active_record'

ActiveRecord::Base.establish_connection(
  adapter:  'sqlite3',
  database: 'db/mydb.sqlite3'
)
Run Code Online (Sandbox Code Playgroud)

但是当我启动IRB并尝试加载它时

irb#1(main):001:0> require config/application.rb
Run Code Online (Sandbox Code Playgroud)

我明白了

NameError: undefined local variable or method `config' for main:Object
Did you mean?  conf
Run Code Online (Sandbox Code Playgroud)

我希望能够与IRB的ActiveRecord对象进行交互.我不使用Rails但只使用ActiveRecord.

谢谢

ruby activerecord

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

委托给包含模块中定义的方法

Ruby(2.5)中是否有一种方法super可以以与继承相同的方式调用包含模块中定义的方法?

我的意思是,假设我有以下内容

class Parent
 def name
  "parent"
 end
end

class Child < Parent
  def name
   "my parent is #{super}"
  end
end
Run Code Online (Sandbox Code Playgroud)

当我打电话时Child.new.name,我明白了my parent is parent.

如何在以下情况下实现同样的目标?

module Parent
 def name
  "parent"
 end
end

class Child 
  include Parent

  def name
   "my parent is #{???}"
  end
end
Run Code Online (Sandbox Code Playgroud)

我该怎么替换???

谢谢

ruby

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

在原始 SQL 查询中插入 PG 数组

在以 PG (10) 作为数据库的 Rails (5.2) 应用程序中,我需要执行原始 SQL 查询。

在查询中,我需要添加一个WHERE子句来检查qp.id其中是否project.qp_ids存储为字符串数组。

t.text :qp_ids, array: true, default: []
Run Code Online (Sandbox Code Playgroud)

我尝试了几种解决方案,其中以下

" ... WHERE qp.id = ANY #{project.qp_ids}"
" ... WHERE qp.id = ANY #{project.qp_ids.join(', ')}"
" ... WHERE qp.id = ANY ARRAY(#{project.qp_ids.join(', '))}"
" ... WHERE qp.id = IN (#{project.qp_ids.join(', ')})"
Run Code Online (Sandbox Code Playgroud)

但都产生一个PG::SyntaxError.

插入 PG 数组的正确方法是什么?

更新1

下面的代码可以工作,但非常难看,

" ... WHERE qp.id = IN (#{self.quality_process_ids.map {|id| "'#{id}'"}.join(',')})"
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails

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

After_create 回调中的 ActiveJob::DeserializationError - 未找到记录

在 Rails 6 应用程序中,我有以下代码。

class Reservation < ApplicationRecord
  after_create     :publish_creation

  def publish_creation
    Publishers::Reservations::CreateJob.perform_later(self)
  end
end

class Publishers::Reservations::CreateJob < ApplicationJob
  queue_as :default

  def perform(reservation)
    puts reservation.inspect #dummy code for testing
  end
end
Run Code Online (Sandbox Code Playgroud)

大多数时候我创建一个Reservation(记录总是在数据库中创建),我收到以下错误

2020-02-14T09:54:03.707Z pid=81787 tid=1xmj 警告: ActiveJob::DeserializationError: Error while trying to deserialize arguments: Couldn't find Reservation with 'id'= 35651cf7-35bc-4da0-bb0d-6285ac093d22

Sidekiq 第一次重试处理作业时,它总能找到Reservation并且一切正常。

Reservation id: "35651cf7-35bc-4da0-bb0d-6285ac093d22", analysis_id: "6b3b167b-1279-49c0-991a-b580c375fd0f", reservable_type: "User", reservable_id: "94f60c16-29d4-4372-983b-7544c393a7e6", reserved_between: 2020-02-10 08:00:00 UTC..2020-02-10 08:10:00 UTC, state: "scheduled", created_at: "2020-02-14 10:02:28", updated_at: "2020-02-14 10:02:28"

我在这里错过了什么吗?这是否与我在development …

ruby-on-rails sidekiq

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

模块的子模块列表

我正在使用以下模块创建用于版本化Rails应用程序的API:

Module Api
  Module V1
   Controller goes here
  end
end

Module Api
  Module V2
    Controller goes here
  end
end
Run Code Online (Sandbox Code Playgroud)

我想知道最新版本.我以为我可以通过查看得到它Api.constants,但这似乎并非如此,因为我得到一个空数组,如下所示:

Loading development environment (Rails 3.2.12)
irb(main):001:0> Api
=> Api
irb(main):002:0> Api.constants
=> []
Run Code Online (Sandbox Code Playgroud)

但是,如果我第一次Api::V1直接打电话,它似乎有效:

Loading development environment (Rails 3.2.12)
irb(main):001:0> Api
=> Api
irb(main):002:0> Api.constants
=> []
irb(main):003:0> Api::V1
=> Api::V1
irb(main):004:0> Api.constants
=> [:V1]
Run Code Online (Sandbox Code Playgroud)

有没有办法在不事先访问它们的情况下获取所有子模块?

ruby

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