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) 有时我需要调试一些令人讨厌的异常,它的回溯隐藏或截断,就像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) 是否有REST API更新Firebase DynamicLink的Deep link属性?
在谷歌指南只显示程序创建一个短链接,但没有一次创建如何更新深层链接提。
从西里尔DD 编辑:
使用Firebase网站,可以更新动态链接,并且在控制台中查看网络选项卡时,它可以调用API https://firebasedurablelinks-pa.clients6.google.com/v1/updateDurableLink,从而可以完全更新现有动态链接的属性。
但是然后我有两个问题:
https://firebasedynamiclinks.googleapis.com/v1/shortLinksAPI 生成的链接,因此不会出现在Firebase控制台的链接列表中我想单独扩展我的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/默认情况下是自动加载/急切加载的内部)
我想避免在内存中加载过多的类/服务等,我知道它们没用
我正在尝试升级到 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]
如果问题不是从那里来的,我应该去哪里查看?
我正在尝试基于我的文档中的字符串数组构建一个建议器,它与这个类似,但有几个不同之处: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)
我想将前缀与重音容差相匹配,以下查询/响应突出显示了我需要的内容
q = "societe"orq = "societe generale"应该返回[ "société générale" ]--> 重音不敏感q = "big data"应该返回[ …有没有办法禁用默认情况下由 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',可以这样做吗?没有猴子补丁?不修补宝石?
我正在构建一个 slack 应用程序,我的应用程序预计会接收来自 slack 的 webhook 调用。所以我需要向 Slack 提供“我的服务的端点 URL”
我不确定我是否理解需要将哪些 AWS 模块组合在一起才能完成这项工作。到目前为止,我已经使用 Fargate 配置了我的服务,它正在 ECS 上运行,有 1 个任务。
我不太确定如何成功地将互联网(松弛)连接到我的容器实例。如何创建一个 slack 可以向其发送请求的“端点”?我相信我需要为此使用 API Gateway,但我不确定应该如何配置 API Gateway,以便它将我的 URL 重定向到我的 ECS 服务...?
注意事项:
$ne类似的查询不是很有选择性。当尝试过滤我们希望嵌套文档具有任何值的文档时,使用 $exists 是否更好?或者说在性能上是一样的吗?
我刚刚更新到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) ruby ×2
activemodel ×1
amazon-ecs ×1
autoload ×1
aws-fargate ×1
byebug ×1
debugging ×1
deeplink ×1
firebase ×1
hyperlink ×1
mongodb ×1
node.js ×1
npm ×1
npm-install ×1
performance ×1
railtie ×1
short ×1
slack-api ×1
windows-10 ×1