小编nzi*_*nab的帖子

Heroku + Paperclip + Amazon S3 - 定价?

由于Heroku是一个只读文件系统,我不能使用paperclip在服务器上存储少量文件.数据库映像存储是一个选项,但不是特别理想,因为这可能会使我的客户端的数据库大小从几百KB增加到超过5 MB的"免费"共享数据库限制(取决于映像的大小).

这使得Amazon S3成为可能的解决方案.我知道Heroku是在EC2上托管的(我相信?).在提到S3-EC2文件传输时,亚马逊的定价措辞有点令人困惑.如果我让我的客户端设置了一个S3帐户并让他们进行文件传输,那么定价会是什么样的?

从S3的角度来看,在rails控制器中上传和下载数据是否更便宜,然后使用send_file将数据提供给浏览器?或者直接链接到浏览器中的图像或pdf更正常吗?

因为heroku在亚马逊上托管,我的客户是否必须支付任何费用?我正在寻找与此相关的其他问题,但没有任何关于文件传输的哪些部分将被收取的真正直接答案.

我想存储会花费一点(几乎没有),但带宽怎么样?谢谢 :)

ruby-on-rails heroku amazon-s3 paperclip

21
推荐指数
1
解决办法
6841
查看次数

从表中的不同条件中选择COUNT

我有一张名为'jobs'的桌子.对于特定用户,作业可以是活动的,存档的,过期的,挂起的或关闭的.现在每个页面请求都生成5个COUNT个查询,并且在尝试优化时我试图将其减少为单个查询.这是我到目前为止所拥有的,但它几乎比5个单独的查询快.请注意,我已经简化了每个子查询的条件,使其更容易理解,但完整查询的行为却相同.

有没有办法在不使用低效子查询的情况下在同一查询中获取这5个计数?

SELECT
  (SELECT count(*)
    FROM "jobs"
    WHERE
      jobs.creator_id = 5 AND
      jobs.status_id NOT IN (8,3,11) /* 8,3,11 being 'inactive' related statuses */
  ) AS active_count, 
  (SELECT count(*)
    FROM "jobs"
    WHERE
      jobs.creator_id = 5 AND
      jobs.due_date < '2011-06-14' AND
      jobs.status_id NOT IN(8,11,5,3) /* Grabs the overdue active jobs
                                      ('5' means completed successfully) */
  ) AS overdue_count,
  (SELECT count(*)
    FROM "jobs"
    WHERE
      jobs.creator_id = 5 AND
      jobs.due_date BETWEEN '2011-06-14' AND '2011-06-15 06:00:00.000000'
  ) AS due_today_count
Run Code Online (Sandbox Code Playgroud)

这继续2个子查询,但我想你明白了.

是否有更简单的方法来收集这些数据,因为它基本上是5个不同的COUNT,来自作业表的相同数据子集?

数据子集是'creator_id = 5',之后每个计数基本上只有1-2个附加条件.请注意,目前我们正在使用Postgres,但可能会在不久的将来转向MySQL.因此,如果您能提供与ANSI兼容的解决方案,我将非常感激:)

sql subquery query-optimization

17
推荐指数
2
解决办法
2万
查看次数

当我添加LIMIT 1时,使用ORDER BY进行查询的速度是13倍

我有这个查询(在postgresql中):

SELECT "table_1".* FROM "table_1"
INNER JOIN "join_table"
  ON "table_1"."id" = "join_table"."table_1_id"
WHERE "join_table"."table_2_id" = 650727
ORDER BY table_1.created_at DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

返回1个结果,但执行时间约为250-300毫秒

还有btree索引table_1.created_at,以及join_table.table_1_idjoin_table.table_2_id

当我只LIMIT 1从查询中删除时,执行时间下降到~13ms.此特定查询当前仅返回一个结果(没有LIMIT),但是在WHERE中还有其他值可能返回更多(这就是LIMIT是必要的原因).

为什么在一个只返回单个结果的查询中添加一个LIMIT,这会导致执行时间过多?

这是解释计划LIMIT 1(这些对我来说很难完全理解......):http://explain.depesz.com/s/rOy

这是没有LIMIT 1的解释计划:http://explain.depesz.com/s/q3d7

此外,如果我保留LIMIT 1,但将顺序更改为ASC,则查询也会降至13毫秒.如果我更改LIMITLIMIT 20(但保持ORDER BY DESC)它只需要22毫秒... wtf!?

所以它与组合有关ORDER BY DESC,并且LIMIT 1(确切地说是1)

sql postgresql query-optimization sql-execution-plan

10
推荐指数
2
解决办法
1176
查看次数

Ruby on Rails content_tag options hash - 设置boolean html属性?

布尔属性,在html 5草案规范中定义:

http://dev.w3.org/html5/spec/Overview.html#boolean-attributes

元素上存在布尔属性表示真值,缺少属性表示false值.

如果该属性存在,则其值必须是空字符串,或者是属性的规范名称的ASCII不区分大小写匹配的值,没有前导或尾随空格.

我的页面使用的是html5 DTD.我试图在我自己的帮助器中使用content_tag视图助手,但是遇到了将布尔属性传递给它的问题.

具体来说这是我的帮手:

def itemscope(type, options = {}, &block)
  content_tag(
    :div, {
      :itemscope => true,
      :itemtype => data_definition_url(type)
    }.merge(options),
    true,
    &block
  )
end

def data_definition_url(type)
  "http://data-vocabulary.org/#{type}"
end
Run Code Online (Sandbox Code Playgroud)

在我看来,假设我称之为(我正在使用haml):

= itemscope("Organization") do
  %h1 Here's some content
Run Code Online (Sandbox Code Playgroud)

这是我希望它呈现的内容:

<div itemscope itemtype='http://data-vocabulary.org/Organization'>
  <h1>Here's some content</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

但这就是我实际得到的:

<div itemscope='true' itemtype='http://data-vocabulary.org/Organization'>
  <h1>Here's some content</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

根据w3规范,这是无效标记.布尔属性的合法值是属性本身的名称,或者根本没有值.

这很烦人,因为我可以更改:itemscope => trueto :checked => true,它将正确地呈现checked='checked'div元素的属性列表中的属性.

我宁愿它呈现的只是最小化版本itemscope...但我不知道怎么做使用content_tag选项.我可以很容易地发送:itemscope =>'itemscope',但很难说谷歌是否会正确解释它,因为他们的所有示例和规范都显示了最小化的版本.请参阅此处:http: //www.google.com/support/webmasters/bin/answer.py?answer = 146861,了解这些属性是什么以及我使用它们的原因(微数据格式) …

html-helper ruby-on-rails view view-helpers

6
推荐指数
1
解决办法
2159
查看次数

自定义包的 Composer 安装路径

我已经阅读了有关此主题的其他问题,但我似乎无法让它发挥作用。我正在尝试下载cforms作为要安装到wp-content/plugins/cforms. 我已经将它用于提供的其他软件包,wpackagist甚至是内部开发的一些自定义插件。

这是我所拥有的:

{
  "name": "mycompany/wordpress-install",
  "description": "Themes and plugins for our wordpress install.",
  "authors": [
    {
        "name": "Me",
        "email": "example@example.net"
    }
  ],
  "require": {
    "deliciousdays/cforms": "14.5.2"
  },
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "deliciousdays/cforms",
        "version": "14.5.2",
        "dist": {
          "url": "http://www.deliciousdays.com/download/cforms-v14.5.zip",
          "type": "zip"
        }
      }
    }
  ],
  "extra": {
    "installer-paths": {
      "wp-content/plugins/cforms": ["deliciousdays/cforms"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它下载 cforms 很好,但是vendor/deliciousdays/cforms当我想要它时它仍然把它放入(显然) wp-content/plugins/cforms。我究竟做错了什么?

php wordpress composer-php

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

Capybara硒司机,盘旋元素

我正在测试的应用程序最初隐藏了一些元素.当鼠标悬停在单独的元素上时,它们将通过CSS显示:

.thread_options{
  display: none;
}
.btn_thread_options:hover .thread_options{
  display: inline;
}
Run Code Online (Sandbox Code Playgroud)

当您将鼠标悬停在.btn_thread_options元素上时,会显示一些我希望Capybara单击的链接.尝试单击这些而不做任何使用click_link "Send Response"会给我错误:

Failure/Error: click_link("Send Response")
Selenium::WebDriver::Error::ElementNotVisibleError:
  Element is not currently visible and so may not be interacted with
Run Code Online (Sandbox Code Playgroud)

尝试使用其他方式点击它

page.execute_script("$('.btn_thread_options').trigger('mouseover')")
Run Code Online (Sandbox Code Playgroud)

也不起作用(相同的结果).

也不是先点击该项目以试图强制它被鼠标悬停:

page.find(".btn_thread_options").click
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个正常工作?

selenium rspec cucumber capybara ruby-on-rails-3

4
推荐指数
1
解决办法
4399
查看次数