我正在使用 Rails 4.1.5 和 Sidekiq 3.3.0。我已将这个工人的重复设置设置为每一分钟后执行一次。它在本地运行良好,但在生产和登台环境中引发错误。尽管工作人员正在执行其工作并保存记录,但仅在一分钟后抛出错误。
2016-01-21T10:50:00.594Z 5173 TID-osv5dzz5o WARN: uninitialized constant ViewDBWorker
Run Code Online (Sandbox Code Playgroud)
应用程序/工人/view_db_worker.rb:
class ViewDBWorker
include Sidekiq::Worker
include Sidetiq::Schedulable
recurrence { hourly.minute_of_hour((0..59).to_a) } if Rails.env.staging? || Rails.env.production?
def perform
begin
do_process()
rescue => e
puts "Error message: #{e.message}"
end
end
def do_process()
puts 'The worker !!'
end
end
Run Code Online (Sandbox Code Playgroud)
应用程序.rb
config.eager_load_paths += %W(#{config.root}/app/workers)
Run Code Online (Sandbox Code Playgroud) 我正在使用谷歌地图距离矩阵服务,它返回duration以下格式的字符串:
为了进一步处理,我希望所有这些字符串值在几分钟内完成转换。寻找现有的转换插件但没有找到。有没有一种简单的方法来进行这种转换?
我正在创建一个报告来比较数据库中的实际计数与索引记录。
我有三个索引 index1、index2 和 index3
要获取单个索引的计数,我使用以下 URL
http://localhost:9200/index1/_count?q=_type:invoice
=> {"count":50,"_shards":{"total":5,"successful":5,"failed":0}}
Run Code Online (Sandbox Code Playgroud)
对于多个索引:
http://localhost:9200/index1,index2/_count?q=_type:invoice
=> {"count":80,"_shards":{"total":5,"successful":5,"failed":0}}
Run Code Online (Sandbox Code Playgroud)
现在计数加起来,我希望它按索引分组,我如何通过特定字段的过滤器组来获得这样的输出:
{"index1_count":50,"index2_count":50,"approved":10,"rejected":40 ,"_shards":{"total":5,"successful":5,"failed":0}}
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下元素的数组:
array = [1, 2, 1, 3, 2, nil, 3, 3]
Run Code Online (Sandbox Code Playgroud)
我想通过匹配元素将它们分组并将其分配给哈希.输出应该如下所示:
{ one: [1, 1], two: [2, 2], three: [3, 3, 3], none: [nil] }
Run Code Online (Sandbox Code Playgroud)
注意:array只能包含1,2,3和nil元素.
的键(:one,:two,:three,:none)可以是硬编码的.
在我的 rails 项目中有一个搜索页面,其中包含一个下拉列表,其中日期范围值以 (-) 分隔。下拉选项如下:
Jan,2014 - March,2014
April,2014 - Jun,2014
....
Oct,2014 - Dec,2014
Run Code Online (Sandbox Code Playgroud)
用户可以选择这些日期范围之一,并且只会显示位于所选日期范围内的那些记录。要过滤的字段start_date是时间戳字段。
所以我想要这样的东西:
filter = params[:filter].split("-")
@posts = Post.where(start_date: filter[0]..filter[1])
Run Code Online (Sandbox Code Playgroud)
但在 params 中,我只得到月份和年份。如何解析这些值以便上述查询有效?
尝试验证字符串以确定它是否包含3个或更多的连续字符.
例:
"11abcd$4567" => ['abcd', '4567']
Run Code Online (Sandbox Code Playgroud)
尝试通过正则表达式执行此操作,但代码看起来要长得多:
(?!abc|bcd|cde|.....)
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以通过正则表达式或纯红宝石检查顺序字符?
以下是一系列哈希:
array = [
{loading: 10, avg: 15, total: 25 },
{loading: 20, avg: 20, total: 40 },
{loading: 30, avg: 25, total: 55 }
]
Run Code Online (Sandbox Code Playgroud)
我需要对每个哈希值进行求和,结果应该是相同键的哈希值:
{loading: 60, avg: 60, total: 120}
Run Code Online (Sandbox Code Playgroud)
一种方法是为每个键单独求和值,然后合并为一个散列,如下所示:
loading = array.map { |h| h[:loading] }.sum
avg = array.map { |h| h[:avg] }.sum
total = array.map { |h| h[:total] }.sum
{loading: loading, avg: avg, total: total}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?因为密钥将来可能会增加.