我有一个 Rails 5.2 应用程序,并且使用上限 3.4.1 我们突然收到这个奇怪的错误:
[b35efe76] Phusion Passenger(R) 6.0.8
DEBUG [b35efe76] Finished in 0.305 seconds with exit status 0 (successful).
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@host.com: undefined method `[]' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
尝试缩小范围,尝试重新启动时会发生这种情况,因为这是失败的行:
cap production deploy:restart
Run Code Online (Sandbox Code Playgroud)
问题是,我如何去寻找哪个文件试图在 nil 值上调用 [] ?使用 --trace 运行 cap 没有任何价值,因为它只会给我内部错误 - 我的代码中没有任何内容。基本上,我如何找出什么是零?
还有一个线索,目前,我有一堆服务器,如果我在服务器 A 上运行 cap restart 命令,它会重新启动,在服务器 B 上,它会抛出这个错误,所以我猜服务器 A 上有一个环境变量,但是不是 B,但错误太不透明了,我不知道从哪里开始。
感谢您的帮助,凯文
我刚刚升级到 mongodb 4.4.1,控制台每隔一秒就会充斥着这些消息:
D, [2020-11-03T03:28:32.885772 #24798] DEBUG -- : MONGODB | There was a change in the members of the 'Single' topology.
D, [2020-11-03T03:28:42.875739 #24798] DEBUG -- : MONGODB | Server description for localhost:27017 changed from 'standalone' to 'standalone' [awaited].
D, [2020-11-03T03:28:42.876668 #24798] DEBUG -- : MONGODB | There was a change in the members of the 'Single' topology.
D, [2020-11-03T03:28:42.888517 #24798] DEBUG -- : MONGODB | Server description for localhost:27017 changed from 'standalone' to 'standalone'.
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么会发生这种情况,如果很糟糕,以及如何停止?
我正在尝试在引导模式中使用签名板,我在 div 中有一个画布:
<div class="modal-body">
<div class='signature-container' >
<canvas id="signature"></canvas>
</canvas>
</div>
Run Code Online (Sandbox Code Playgroud)
在初始化时,我执行(coffeescript):
canvas = $("canvas#signature")[0]
signature_pad = new SignaturePad(canvas, backgroundColor: 'rgb(255, 255, 255)')
Run Code Online (Sandbox Code Playgroud)
我的画布 css 是(因为我希望画布填充 div)
宽度:100%;高度:100%;
一切正常,但“墨水”偏离了鼠标指针。当我第一次单击时,初始墨迹出现在鼠标指针的右侧和下方。鼠标移动得越远,垂直偏移就越远,与水平方向相同(即偏移看起来呈线性缩放)。我尝试在演示中实现调整大小功能,但 chrome 将 offsetWidth 计算为 0 并且画布只是缩小到 0x0。
有人知道我做错了什么吗?
我正在进行批量插入,我自己跟踪唯一列,以避免m log n插入成本.有没有办法在代码中禁用生命中的验证方法?
我正在尝试使用 Bullet gem 来分析一些 mySql 查询。在 config/environments/development.rb 中,我启用它:
config.after_initialize do
Bullet.enable = true
Bullet.bullet_logger = true
Bullet.rails_logger = true
Bullet.raise = true
end
Run Code Online (Sandbox Code Playgroud)
然后我从控制台运行一个简单的导入命令:
Item.import_file "import/file1.txt"
Run Code Online (Sandbox Code Playgroud)
log/bullet.log 为空。我看到所有 mysql 查询都在控制台中进行,只是没有输出。子弹在 Rails 控制台中工作吗?如果是这样,知道我做错了什么吗?
谢谢,凯文
我想执行相当于
Rails.cache.clear
Run Code Online (Sandbox Code Playgroud)
部署后,但无法使其工作。这是我在deploy.rb文件中的尝试
namespace :deploy do
after :restart, :clear_cache do
on release_roles(fetch(:assets_roles)) do
within release_path do
with rails_env: fetch(:rails_env) do
Rails.cache.clear
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
SSHKit::Runner::ExecuteError: Exception while executing as deploy@hostname.com uninitialized constant Rails
Run Code Online (Sandbox Code Playgroud)
如果不是这个,那又是什么?
感谢您的帮助,凯文
更新:
这是正确的语法:
namespace :deploy do
task :clear_cache do
on roles(:app) do |host|
with rails_env: fetch(:rails_env) do
within current_path do
execute :rake, "cache:clear"
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud) 我试图在Ruby中构建一个equals函数.我想做的就是这样,假设我们有一个名为A的类:
class A
attr_accessor :secret_datum
def public_datum
return secret_datum
end
def public_datum= what
secret_datum = what
end
end
Run Code Online (Sandbox Code Playgroud)
我想要的主要是建立一个更复杂的幕后功能,具体取决于public_datum是用作左值还是右值,但我上面的代码不起作用:
2.5.0 :027 > a = A.new
=> #<A:0x00007fc2293ec338>
2.5.0 :028 > a.public_datum = 7
=> 7
2.5.0 :029 > a.public_datum
=> nil
Run Code Online (Sandbox Code Playgroud)
声明这样一组函数的正确语法是什么?
我想要一个单一的目标,然后该目标可以在散列中修改。
target = [1,2,3]
hash = {1 => target, 2 => target}
Run Code Online (Sandbox Code Playgroud)
现在,我希望能够 a) 更改目标并让哈希自动更新或 b) 更改哈希的 1 并让它自动更改哈希的 2。两者都不起作用:
target = [6,7,8]
target
Run Code Online (Sandbox Code Playgroud)
输出:
{1=>[1, 2, 3], 2=>[1, 2, 3]}
Run Code Online (Sandbox Code Playgroud)
方案二:
hash[1] = [6,7,8]
Run Code Online (Sandbox Code Playgroud)
输出:
{1=>[6, 7, 8], 2=>[1, 2, 3]}
Run Code Online (Sandbox Code Playgroud)
所以我发现当你在 Ruby 的散列中创建一个 subhash 一个右值时,它会在将左值设置为等于它之前复制 subhash。我想要的是 Ruby 不这样做。这可能吗?
谢谢,凯文
capistrano ×2
ruby ×2
hash ×1
javascript ×1
mongodb ×1
mysql ×1
pointers ×1
signaturepad ×1
validation ×1