我在Heroku Cedar上以单线程模式运行单线程Rails应用程序.
当我做一个超过一分钟的巨大POST请求(文件上传)时,我可以同时执行其他GET请求.
Heroku支持向我保证他们的路由层不存储请求然后立即发送它(这是许多代理的行为,例如nginx).他们坚持认为我的应用正在处理并发请求.
这里发生了什么?
我有一些使用的rails控制器authenticate_or_request_with_http_basic- 如何在我的rspec示例中设置用户/传递?
我很惊讶无法在网上的其他地方找到这个,所以也许我使用了错误的条款? - 我发现了一些非常古老的东西,或者在我看来非常复杂的东西.似乎在这一点上,rspec要么直接支持这个,要么是一个整洁的惯用解决方案.
在REE和MRI 1.9+中,可以调整ruby的垃圾收集器:
但这些文章都没有说明将这种配置放在何处.我想如果它在环境中,ruby会在启动时将其拾起 - 但是,据我所知,没有办法检查它.我可以找到的任何运行时常量中都没有显示这些设置.
那么,我在哪里放置这个配置,如何仔细检查它是否被使用?
我想使用应用程序的现有记录器从我正在放入Rails应用程序的中间件中记录内容.有没有标准的方法来做到这一点?想到两种可能性:
寻找涉及其中任何一个的解决方案并没有提出太多.我没有完全考虑/实验,看看操作的顺序是否允许.
我想将两个参数传递给程序,一个文件名和文件名的修改版本。情况是我在目录树中有一堆 .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)
(完成测试后,我将替换echo为html2haml并再次运行)
然而它不起作用。反引号内的表达式的结果是未修改的字符串。
以下是我尝试的一些实验,它们的行为符合预期(以测试我的语法和转义/引号级别是否正确):
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 在每次调用时“何时”插入其结果的误解。上面的示例 …
我有这个协会:
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.请改用示波器块.例如,以下内容:
Run Code Online (Sandbox Code Playgroud)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'
这与我的协会有可能吗?
我有非Javascript规范和使用capybara/capybara-webkit的Javascript功能规范.
我有一些测试,我期望在非Javascript模式下失败,但他们正在通过.我在浏览器中尝试了关闭Javascript的功能,但功能确实无法按预期工作.但在Capybara,它的确有效.
我也尝试添加js: false到单个测试中,以确保我的配置中没有隐藏的内容.规范仍然通过.
硒宝石不包含在我的Gemfile中.
我想为不同的浏览器提供不同的字体(请参阅此问题)。
用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) 鉴于此模型:
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这是在标准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)
此建议是否适用于运行整个测试套件,或仅适用于运行单个测试?
我该如何决定是打开还是关闭?
在运行单个测试时是否有一个漂亮的配方让它变得错误?在运行整个套件时是真的吗?
(我怀疑我得到的某些类型的错误是关闭的结果)