小编Joh*_*hir的帖子

我的单线程Rails应用程序如何处理并发请求?

我在Heroku Cedar上以单线程模式运行单线程Rails应用程序.

当我做一个超过一分钟的巨大POST请求(文件上传)时,我可以同时执行其他GET请求.

Heroku支持向我保证他们的路由层不存储请求然后立即发送它(这是许多代理的行为,例如nginx).他们坚持认为我的应用正在处理并发请求.

这里发生了什么?

ruby concurrency rack ruby-on-rails heroku

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

如何在我的rspec控制器示例中测试基本身份验证?

我有一些使用的rails控制器authenticate_or_request_with_http_basic- 如何在我的rspec示例中设置用户/传递?

我很惊讶无法在网上的其他地方找到这个,所以也许我使用了错误的条款? - 我发现了一些非常古老的东西,或者在我看来非常复杂的东西.似乎在这一点上,rspec要么直接支持这个,要么是一个整洁的惯用解决方案.

ruby rspec ruby-on-rails basic-authentication

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

Ruby内存配置在哪里,如何检查它是否已设置?

在REE和MRI 1.9+中,可以调整ruby的垃圾收集器:

但这些文章都没有说明将这种配置放在何处.我想如果它在环境中,ruby会在启动时将其拾起 - 但是,据我所知,没有办法检查它.我可以找到的任何运行时常量中都没有显示这些设置.

那么,我在哪里放置这个配置,如何仔细检查它是否被使用?

ruby ruby-enterprise-edition

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

可以从Rack中间件中访问Rails记录器吗?

我想使用应用程序的现有记录器从我正在放入Rails应用程序的中间件中记录内容.有没有标准的方法来做到这一点?想到两种可能性:

  1. 记录器可在机架环境中直接访问
  2. 可以在应用程序启动时访问loger并将其分配给中间件

寻找涉及其中任何一个的解决方案并没有提出太多.我没有完全考虑/实验,看看操作的顺序是否允许.

ruby logging rack ruby-on-rails

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

使用 sed、shell 或其他方式进行内联文本替换

我想将两个参数传递给程序,一个文件名和文件名的修改版本。情况是我在目录树中有一堆 .html.erb 文件,我想html2haml使用原始文件名和带有 haml 扩展名的新输出文件名调用它们,如下所示:

html2haml thing.html.erb thing.html.haml
Run Code Online (Sandbox Code Playgroud)

这是我目前的最佳尝试:

find . -name "*.html.erb" -exec echo {} `echo {} | sed "s/.erb/.haml/g"` \;
Run Code Online (Sandbox Code Playgroud)

(完成测试后,我将替换echohtml2haml并再次运行)

然而它不起作用。反引号内的表达式的结果是未修改的字符串。

以下是我尝试的一些实验,它们的行为符合预期(以测试我的语法和转义/引号级别是否正确):

1. echo myfile.foo | sed 's/foo/foo2/g'
2. find . -name "*.html.erb" -exec echo {} `echo xyz | sed "s/y/Y/g"` \;
3. find . -name "*.html.erb" -exec echo {} `echo {} hello` \;
4. find . -name "*.html.erb" -exec echo {} `echo {}` \;
Run Code Online (Sandbox Code Playgroud)

事实上,这些都按预期运行,这表明我在语法中遇到了一些小问题,而这确实可以用一行代码来完成。

如果这是不可能的,则可能是因为对 find 在每次调用时“何时”插入其结果的误解。上面的示例 …

bash shell haml sed find

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

在has_many上:通过关联,用lambda替换条件

我有这个协会:

has_many :foo_participators, through: :foos, source: :user, conditions: "foos.state = 'completed'"
Run Code Online (Sandbox Code Playgroud)

Rails告诉我:

弃用警告:不推荐使用Bar.has_many:foo_participators声明中的以下选项:: condition.请改用示波器块.例如,以下内容:

has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'
Run Code Online (Sandbox Code Playgroud)

应该改写如下:

has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'
Run Code Online (Sandbox Code Playgroud)

这与我的协会有可能吗?

ruby ruby-on-rails associations

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

为什么我的Javascript依赖功能规范在不在Javascript模式时传递?

我有非Javascript规范和使用capybara/capybara-webkit的Javascript功能规范.

我有一些测试,我期望在非Javascript模式下失败,但他们正在通过.我在浏览器中尝试了关闭Javascript的功能,但功能确实无法按预期工作.但在Capybara,它的确有效.

我也尝试添加js: false到单个测试中,以确保我的配置中没有隐藏的内容.规范仍然通过.

硒宝石不包含在我的Gemfile中.

ruby rspec ruby-on-rails capybara capybara-webkit

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

IE与Sass和Bourbon的条件注释

我想为不同的浏览器提供不同的字体(请参阅此问题)。

用Sass / Bourbon可以做到这一点吗?

这是我到目前为止的内容:

<!--[if IE]> -->
@include font-face("myicons", "myicons", $weight: normal, $style: normal,
                   $asset-pipeline: false);
<![endif]-->
<!--[if !IE]> -->
@include font-face("myicons", "myicons", $weight: normal, $style: normal,
                   $asset-pipeline: true);
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

css sass conditional-comments bourbon

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

foo_ids 相当于 find_each 吗?

鉴于此模型:

class User < ActiveRecord::Base
  has_many :things
end
Run Code Online (Sandbox Code Playgroud)

然后我们可以这样做::

@user = User.find(123)
@user.things.find_each{ |t| print t.name }
@user.thing_ids.each{ |id| print id }
Run Code Online (Sandbox Code Playgroud)

有很多,@user.things我只想批量迭代它们的 id,就像find_each. 有没有方便的方法来做到这一点?

目标是:

  • 不要thing_ids一次将整个数组加载到内存中
  • 仍然只加载 的数组thing_ids,而不是Thing为每个 id实例化 a

ruby ruby-on-rails rails-activerecord

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

是否应该在测试环境中打开或关闭预先加载?

这是在标准test.rb中:

# Do not eager load code on boot. This avoids loading your whole application
# just for the purpose of running a single test. If you are using a tool that
# preloads Rails for running tests, you may have to set it to true.
config.eager_load = false
Run Code Online (Sandbox Code Playgroud)

此建议是否适用于运行整个测试套件,或仅适用于运行单个测试?

我该如何决定是打开还是关闭?

在运行单个测试时是否有一个漂亮的配方让它变得错误?在运行整个套件时是真的吗?

(我怀疑我得到的某些类型的错误是关闭的结果)

testing rspec ruby-on-rails

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