小编Joh*_*hir的帖子

如何在capistrano中使用--trace运行rake?

我希望capistrano用--trace调用rake,这样我就可以弄清楚它失败的原因.我该怎么做呢?set :rake 'rake --trace'不起作用.

ruby rake capistrano

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

仅在特定服务器上调用delayed_job capistrano任务

我有一个用于delayed_job任务的专用服务器.我要开始,停止和重新启动delayed_job的工人只有这台服务器.我正在使用delayed_job提供的capistrano食谱.

当我只有1台服务器时,这是我的配置:

before "deploy:restart", "delayed_job:stop"
after  "deploy:restart", "delayed_job:start"

after "deploy:stop",    "delayed_job:stop"
after "deploy:start",   "delayed_job:start"
Run Code Online (Sandbox Code Playgroud)

现在我想让这些钩子适用于一个单独的delayed_job服务器(role :delayed_job <ip address>).这可能是优雅的吗?我是否必须在meta任务中包装每个delayed_job任务?或者编写我自己的任务而不是使用延迟工作提供的任务?

ruby capistrano delayed-job

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

MySQL表锁定:持有者读写,其他会话只能读取?

是否可以锁定一个表,使得持有者可以读写,而其他会话只能读取?

文档似乎暗示读锁允许每个人只读,而写锁只允许持有者读写,而其他会话无法访问.似乎让持有者能够读写,而其他只能读取的会话将是一种非常常见的行为 - 也许是最常需要的行为.

也许在实施这种情况时遇到的性能太高了?

mysql sql transactions table-locking

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

如何部署线程安全的异步Rails应用程序?

我已经在网上阅读了大量关于不同版本的ruby和rails中的线程安全性和性能的材料,我想我现在对这些事情了解得很清楚.

讨论中似乎奇怪的是如何实际部署异步Rails应用程序.在谈论应用程序中的线程和同步时,人们想要优化两件事:

  1. 利用所有CPU内核,最小化RAM使用率
  2. 能够在先前的请求等待IO时提供新请求

第1点是人们(正确地)对JRuby感到兴奋的地方.对于这个问题,我只想优化第2点.

说这是我的应用程序中唯一的控制器:

TheController < ActionController::Base
  def fast
    render :text => "hello"
  end

  def slow
    render :text => User.count.to_s
  end
end
Run Code Online (Sandbox Code Playgroud)

fast没有IO,每秒可以服务数百或数千个请求,并且slow必须通过网络发送请求,等待工作完成,然后通过网络接收答案,因此要慢得多fast.

因此,理想的部署将允许在请求等待IO时fast满足数百个请求slow.

围绕Web的讨论似乎缺少的是堆栈的哪一层负责实现这种并发.thin有一个--threaded标志,它将"在线程中调用机架应用程序[实验]" - 是否为每个传入请求启动一个新线程?在持久存在并等待传入​​请求的线程中假装机架应用程序实例?

瘦是唯一的方式还是其他人?ruby运行时是否对优化第2点很重要?

ruby multithreading rack ruby-on-rails thin

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

如何导入pytest monkeypatch插件?

我想使用pytest monkeypatch插件,但我无法弄清楚如何导入它.我试过了:

  • import monkeypath
  • import pytest.monkeypatch
  • from pytest import monkeypatch

python monkeypatching pytest

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

如何在Rails 5.1中运行无头浏览器系统测试?

Rails 5.1系统测试文档有点稀疏.我无法进行执行javascript运行的无头测试.我认为一种方法需要安装和运行xvf.但这比我在其他版本的rails中运行capybara时使用的手动设置更多.

实现这一目标最直接的方法是什么?

ruby-on-rails system-testing capybara capybara-webkit

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

如何将动态插入的<script>标记告诉...运行

我正在动态插入<script>带有src属性且没有内容的标记.但是浏览器没有下拉src并在插入后运行脚本 - 标签就位于DOM中.

我可以告诉浏览器"运行"脚本标签吗?

由于我正在使用的其他代码,我更容易通过src属性保留代码而不是自己获取代码并将其插入到标记的正文中 - 但如果这是必要的,我也可以这样做(并欢迎任何建议).

更新请求的信息

  1. 在页面加载后,基于用户交互插入脚本标记任意次数
  2. 我插入了这样的标签(jquery的html函数剥离了脚本标签): document.getElementById("my-div").innerHTML = "the script tag, which stack overflow wants to strip";

javascript jquery dom

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

使用Net :: HTTP的块形式的HTTPS请求 - 是否可能?

要在没有阻止表单的情况下执行Net :: HTTP https请求,您可以执行以下操作:

...
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
...
Run Code Online (Sandbox Code Playgroud)

但有没有办法告诉Net :: HTTP在执行块表单时使用https?

u = URI.parse(url)
Net::HTTP.start(u.host, u.port) do |http|
  # if I put http.use_ssl = true here, ruby complains that this can't
  # be done becuase the sesion has already started
  resp = http.get(u.request_uri)
end
Run Code Online (Sandbox Code Playgroud)

我在红宝石1.8.7上

ruby ssl https net-http

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

为什么rails默认忽略.bundle?

是不是项目.bundle/config指定与项目相关的配置?

ruby-on-rails bundler

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

我可以执行原始SQL查询,利用预处理语句,而不是使用ActiveRecord :: Relation :: QueryAttribute吗?

我想做一个upsert.Rails还不支持这个.查询是这样的:

INSERT INTO foos (thing_id, bar_id) VALUES (1, 2)
ON CONFLICT (thing_id, bar_id) DO NOTHING
Run Code Online (Sandbox Code Playgroud)

我可以用self.class.connection.execute或轻松做到这一点exec_insert.但我也希望利用准备好的陈述.我以为我可以这样做:

thing_id = ActiveRecord::Relation::QueryAttribute.new("thing_id", thing.id, ActiveRecord::Type::Integer.new)
bar_id = ActiveRecord::Relation::QueryAttribute.new("bar_id", id, ActiveRecord::Type::Integer.new)

self.class.connection.exec_insert(<<-SQL, nil, [thing_id, bar_id])
  INSERT INTO foos (thing_id, bar_id) VALUES ($1, $2)
  ON CONFLICT (thing_id, bar_id) DO NOTHING
SQL
Run Code Online (Sandbox Code Playgroud)

但是当我试验这个时,似乎没有创建一个准备好的语句.

我试过这种风格:

query = <<-SQL
  INSERT INTO foos (thing_id, bar_id) VALUES ($1, $2)
  ON CONFLICT (thing_id, bar_id) DO NOTHING
SQL

connection = ActiveRecord::Base.connection.raw_connection
connection.prepare('some_name', query)
st = connection.exec_prepared('some_name', [ …
Run Code Online (Sandbox Code Playgroud)

postgresql activerecord ruby-on-rails prepared-statement

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