我正在使用超过2百万条记录的"用户"表.查询是:
SELECT * FROM users WHERE 1 ORDER BY firstname LIMIT $start,30
Run Code Online (Sandbox Code Playgroud)
"firstname"列已编入索引.获取第一页非常快,而获取最后一页非常慢.
我使用了EXPLAIN,结果如下:
对于
EXPLAIN SELECT * FROM `users` WHERE 1 ORDER BY `firstname` LIMIT 10000 , 30
Run Code Online (Sandbox Code Playgroud)
我越来越:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users index NULL firstname 194 NULL 10030
Run Code Online (Sandbox Code Playgroud)
但对于
EXPLAIN SELECT * FROM `users` WHERE 1 ORDER BY `firstname` LIMIT 100000 , 30
Run Code Online (Sandbox Code Playgroud)
我越来越
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users ALL NULL …Run Code Online (Sandbox Code Playgroud) 我最近将一些模板从ERB转换为Haml.它大多变得更清洁,更好,但按钮定义开始变得很糟糕.
我想转换它
= link_to t('.new', :default => t("helpers.links.new")),
new_intern_path,
:class => 'btn btn-primary' if can? :create, Intern
Run Code Online (Sandbox Code Playgroud)
这样的事情
= new_button Intern
Run Code Online (Sandbox Code Playgroud)
我还有其他几个实体,Intern所以其他所有页面也会从中受益.
所以,我输入了这段代码
def new_button(person_class)
return unless can?(:create, person_class)
new_route_method = eval("new_#{person_class.name.tableize}_path")
link_to t('.new', :default => t("helpers.links.new")),
new_route_method,
:class => 'btn btn-primary'
end
Run Code Online (Sandbox Code Playgroud)
它按预期工作.我只是不确定那个eval电话(因为它是邪恶的,所有这一切).有一种更简单,更不邪恶的方式吗?
除了遍历文档之外,还有什么方法可以获取 MongoDB 中特定文档的键列表?
即我想获取由返回的文档的密钥
db.users.find({username:'xyz@abc.com})
Run Code Online (Sandbox Code Playgroud)
是否有任何内联命令。如果没有,任何人都可以给出如何做的想法吗?
我通常会为不同的代码段创建分支,但偶尔会忘记创建一个新的分支,并且所有内容都发生在主分支上.
我怎么能说git虽然我在主分支上,但这个提交是针对xyz分支的?
问题:需要从 Rails 异步发送电子邮件。环境:Windows 7、Ruby 2.0、Rails 4.1、Sidekiq、Redis
设置完所有内容后,启动 Sidekiq 并启动 Redis,我可以通过监视器看到排队到 Redis 的邮件请求:
1414256204.699674 "exec"
1414256204.710675 "multi"
1414256204.710675 "sadd" "queues" "default"
1414256204.710675 "lpush" "queue:default" "{\"retry\":true,\"queue\":\"default\",\"class\":\"Sidekiq::Extensions::DelayedMailer\",\"args\":[\"---\\n- !ruby/class 'UserMailer'\\n- :async_reminder\\n- - 673\\n\"],\"jid\":\"d4024c0c219201e5d1649c54\",\"enqueued_at\":1414256204.709674}"
Run Code Online (Sandbox Code Playgroud)
但邮件程序方法似乎永远不会被执行。邮件未发送,也未显示任何日志消息。
Redis 如何知道要执行队列上的作业,以及是否需要在环境中设置其他内容才能知道应用程序驻留在何处?
Delayed_job 是更好的解决方案吗?
我在一个窗口中启动redis,在另一个窗口中启动bundle exec sidekiq,在第三个窗口中启动rails server。
Redis 队列中的项目如何被拾取并处理?sidekiq 是否既将内容放入 Redis 队列中,又检查是否添加了需要处理的内容?
我的日期是字符串,格式如下:23 Nov. 2014.当然,使用这样的表达式将此字符串转换为日期很容易:
Date.strptime(my_string, '%d %b. %Y')
Run Code Online (Sandbox Code Playgroud)
但是月份是5月还有一个问题 - 没有点,比如23 May 2014.我的表情破裂了.
有人可以帮忙解决这个问题吗?如何为我的案例制作通用表达方式?
创建 ActiveRecord 对象时,时间戳是否需要可为 null 的 false 声明。
t.timestamps null: false
Run Code Online (Sandbox Code Playgroud) 在 Ruby 中,我得到了 'ä' 的百分比编码
require 'cgi'
CGI.escape('ä')
=> "%C3%A4"
Run Code Online (Sandbox Code Playgroud)
与
'ä'.unpack('H2' * 'ä'.bytesize)
=> ["c3", "a4"]
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
第一个操作的逆向是什么?不应该是
["c3", "a4"].pack('H2' * 'ä'.bytesize)
=> "\xC3\xA4"
Run Code Online (Sandbox Code Playgroud)对于我的应用程序,我需要将 'ä' 编码为“%E4”,它是 'ä'.ord 的十六进制值。有没有针对它的 Ruby 方法?
请考虑以下代码:
class Book
def initialize (price)
@price=price
end
def book_price
puts "Price: #{@price}"
end
end
book1=Book.new(19.60)
book1.book_price
Run Code Online (Sandbox Code Playgroud)
它始终返回“价格:19.6”而不是“价格:19.60”
我尝试过改变@price=price.to_f,但没有什么区别。如何保留尾随零而不转换为字符串?
我要求允许我的最终用户输入公式,就像电子表格一样.我有这样一个数组:
$table = array(
1=>array(
"id"=>1,
"Name"=>"Regulating",
"Quantity"=>"[2]Quantity+[3]Value",
"Value"=>"[2]Cost"
),
...)
Run Code Online (Sandbox Code Playgroud)
第一级数组键的值始终与该数组中的id键相同.
列表示例如下:
id Name Quantity Value
1 Regulating [2]Quantity+[3]Value [2]Cost
2 Kerbs 3 6
3 Bricks 9 7
4 Sausages [3]Cost 3
5 Bamboo [4]Quantity [7]Cost
6 Clams [4]Quantity NULL
7 Hardcore [3]Quantity*0.5 12
8 Beetles [6]Quantity*[4]Value [2]Value
Run Code Online (Sandbox Code Playgroud)
数量和值键表示引用[id]和数量,值或成本的公式.
通过乘以价值和数量得出成本.
我在用:
preg_match_all("/\[(.*?)\]([A-Z]*[a-z]*)/", $string, $matches, PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
它输出一个像这样的数组[1][Quantity]:
Array
(
[0] => Array
(
[0] => [2]Quantity
[1] => 2
[2] => Quantity
)
[1] => Array
(
[0] …Run Code Online (Sandbox Code Playgroud)