小编Cyr*_*ris的帖子

Rails 5 throw abort:如何设置错误消息?

Rails已经引入了这种throw(:abort)语法,但现在我如何获得有意义的销毁错误?

对于验证错误,人们会这样做

if not user.save
  # => user.errors has information

if not user.destroy
  # => user.errors is empty
Run Code Online (Sandbox Code Playgroud)

这是我的模特

class User

  before_destroy :destroy_validation,
    if: :some_reason

  private

  def destroy_validation
    throw(:abort) if some_condition
  end
Run Code Online (Sandbox Code Playgroud)

activemodel ruby-on-rails-5

8
推荐指数
2
解决办法
7869
查看次数

在byebug中进行Rails多线调试或如何在单线中进行救援

有时我需要调试一些令人讨厌的异常,它的回溯隐藏或截断,就像ArgumentError没有任何堆栈跟踪一样.

我习惯用byebug调试.问题是byebug解释器是一个REPL,因此不可能编写多行代码.我试图找出如何进行内联救援并从那里打印回溯,即我想要一个内联,REPL兼容的版本

begin 
  .... 
rescue => e 
  puts e.backtrace.join("\n")
end
Run Code Online (Sandbox Code Playgroud)

我试过了

begin; my_crashing_method.call; rescue Exception => e; puts e.backtrace; end
Run Code Online (Sandbox Code Playgroud)

但该行引发了一个SyntaxError

*** SyntaxError Exception: (byebug):1: syntax error, unexpected keyword_rescue
rescue Exception => e
      ^
Run Code Online (Sandbox Code Playgroud)

我不确定我错过了什么?

编辑

上面的行在常规IRB/Rails shell上工作正常,但不能从byebug shell中工作

IRB

begin my_crashing_method.call; rescue Exception => e; puts e.backtrace end
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪显示成功

Byebug

(byebug) begin; my_crashing_method.call; rescue Exception => e; puts e.backtrace
*** SyntaxError Exception: (byebug):1: syntax error, unexpected end-of-input
begin
     ^

nil
*** NameError Exception: undefined local variable …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails byebug

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

如何在Firebase动态链接中编辑深层链接参数

是否有REST API更新Firebase DynamicLink的Deep link属性?

谷歌指南只显示程序创建一个短链接,但没有一次创建如何更新深层链接提。

从西里尔DD 编辑

使用Firebase网站,可以更新动态链接,并且在控制台中查看网络选项卡时,它可以调用API https://firebasedurablelinks-pa.clients6.google.com/v1/updateDurableLink,从而可以完全更新现有动态链接的属性。

但是然后我有两个问题:

  • 我看不出有一种方法可以使此请求在Postman中工作
  • 我需要更新使用https://firebasedynamiclinks.googleapis.com/v1/shortLinksAPI 生成的链接,因此不会出现在Firebase控制台的链接列表中

short hyperlink firebase deeplink firebase-dynamic-links

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

Rails从auto/eager load中排除文件夹

我想单独扩展我的rails应用程序的一些子部分,并避免加载整个代码库.

举个例子,让我们考虑一个APIv1与一个APIv2,但我也想扩展这个任何类/服务

是否可以从预先加载(生产)或自动加载(在开发中)中排除特定文件夹?

例如,

api-v1-production环境应该排除

controllers/api/v[^1]/**/*.rb
Run Code Online (Sandbox Code Playgroud)

api-v2-production环境应该排除

controllers/api/v[^2]/**/*.rb
Run Code Online (Sandbox Code Playgroud)

为了示例,我正在编写[^ x]作为除x之外的所有内容的方便表示法

我知道可以添加一些autoload/eager load文件夹,但是排除一些呢?(特别是如果它们在app/默认情况下是自动加载/急切加载的内部)

我想避免在内存中加载过多的类/服务等,我知道它们没用

ruby-on-rails autoload eager-loading ruby-on-rails-5

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

Elasticsearch 7 [标准] 令牌过滤器已被删除

我正在尝试升级到 Elasticsearch v7(我使用的是 ruby​​/rails 客户端),在这样做并修复了一些东西后,我遇到了以下错误

Elasticsearch::Transport::Transport::Errors::BadRequest:
  [400] {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"The [standard] token filter has been removed."}],"type":"illegal_argument_exception","reason":"The [standard] token filter has been removed."},"status":400}
Run Code Online (Sandbox Code Playgroud)

在检查破坏性变化时,确实提到

标准令牌过滤器已被删除,因为它不会更改流中的任何内容。

我不确定我应该如何在我的配置中反映这一点。如果我理解正确,此错误可能来自我的自定义短语建议器

{
  "analysis": {
    "filter": {
      "shingle": {
        "type": "shingle",
        "min_shingle_size": 2,
        "max_shingle_size": 3
      }
    },
    "analyzer": {
      "trigram": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": ["standard", "shingle"]
      },
      "reverse": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": ["standard", "reverse"]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我应该删除该tokenizer字段吗?也许他们忘了更新它,但这仍然是在[Elasticsearch documentation of the suggester][1]

如果问题不是从那里来的,我应该去哪里查看?

  • ES 7.3.2
  • elasticsearch-api-7.3.0 | 弹性搜索传输 7.3.0
  • 弹性搜索模型 7.0.0 …

elasticsearch elasticsearch-ruby

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

具有部分边缘 ngram 完成的数组字段的 Elasticsearch 搜索建议

我正在尝试基于我的文档中的字符串数组构建一个建议器,它与这个类似,但有几个不同之处:completion suggester来自 Elasticsearch 的并不是我想要的(在过滤和前缀匹配方面),因为我需要一个边缘 ngram 可以处理句子中的任何单词,重音不敏感。让我用一个例子来澄清。

假设我有以下索引文档。我想根据查询建议“标签” q(我不关心文档本身,只关心tag与我的查询匹配的s)

[
  { "tags": [ "société générale", "consulting" ] },
  { "tags": [ "big data", "big", "data"] },
  { "tags": [ "data" ] },
  { "tags": [ "data engineering" ] }
  { "tags": [ "consulting and management of IT" ] }
]
Run Code Online (Sandbox Code Playgroud)

我想将前缀与重音容差相匹配,以下查询/响应突出显示了我需要的内容

  • (1) q = "societe"orq = "societe generale"应该返回[ "société générale" ]--> 重音不敏感
  • (2)q = "big data"应该返回[ …

elasticsearch search-suggestion elasticsearch-7

7
推荐指数
0
解决办法
418
查看次数

禁用 gem 的 Railtie 初始化程序

有没有办法禁用默认情况下由 gem 加载的 Railtie?

gem 的开发人员并没有将其模块化,一旦将 gem 放入 Gemfile 中,require 就会自动以这种方式加载 Railties:

require 'some_gem'

module SomeGem
  module RailtieMixin
    extend ActiveSupport::Concern

    included do
      rake_tasks do
        require 'some_gem/rake_tasks'
      end

      initializer 'some_gem.configuration' do
        config.after_initialize do
          ...
        end
      end

      initializer 'some_gem.controller_methods' do
        ...
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我想进行一些控制,最好仅禁用'some_gem.controller_methods',可以这样做吗?没有猴子补丁?不修补宝石?

ruby ruby-on-rails railtie ruby-on-rails-5

6
推荐指数
2
解决办法
1506
查看次数

如何连接到 Fargate 上运行的 ECS 服务?

我正在构建一个 slack 应用程序,我的应用程序预计会接收来自 slack 的 webhook 调用。所以我需要向 Slack 提供“我的服务的端点 URL”

我不确定我是否理解需要将哪些 AWS 模块组合在一起才能完成这项工作。到目前为止,我已经使用 Fargate 配置了我的服务,它正在 ECS 上运行,有 1 个任务。

我不太确定如何成功地将互联网(松弛)连接到我的容器实例。如何创建一个 slack 可以向其发送请求的“端点”?我相信我需要为此使用 API Gateway,但我不确定应该如何配置 API Gateway,以便它将我的 URL 重定向到我的 ECS 服务...?

注意事项:

  • 我现在不打算执行多个任务,因此如果我不必设置负载均衡器,会更方便
  • 不过,我计划对服务本身进行一些定期更新,并且任务将经常重新启动

amazon-ecs slack-api aws-api-gateway aws-fargate

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

Mongodb { $ne: null } VS { $exists }

$ne类似的查询不是很有选择性。当尝试过滤我们希望嵌套文档具有任何值的文档时,使用 $exists 是否更好?或者说在性能上是一样的吗?

performance mongodb

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

节点6调试器窗口-尝试复制OSX应用程序图标以自定义电子预制件时出错

我刚刚更新到Node v6(从他们的网站安装了最新的win可执行文件),显然我的项目中再也看不到使用“ debugger”了

错误:找不到模块“ C:\ Dev \ myNodeProject \ debugger”

我尝试安装此软件包,但随后遇到错误

npm安装调试器--save

electron-prebuilt@1.0.2 postinstall C:\Dev\myNodeProject\node_modules\electron-prebuilt
> node install.js

Downloading electron-v1.0.2-win32-x64.zip
[============================================>] 100.0% of 49.69 MB (407.27 kB/s)

> debugger@0.35.0 postinstall C:\Dev\myNodeProject\node_modules\debugger
> node bin/postinstall.js

Error trying to copy the OSX app icon to customize electron-prebuilt
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "debugger" "--save"
npm ERR! node v6.2.2
npm ERR! npm  v3.9.5
npm ERR! code ELIFECYCLE

npm ERR! debugger@0.35.0 postinstall: `node bin/postinstall.js`
npm ERR! Exit …
Run Code Online (Sandbox Code Playgroud)

debugging node.js npm windows-10 npm-install

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