小编Pra*_*nde的帖子

希望Regex在第一次出现"."时停止.和";"

我试图从一个段落中提取句子,模式就像

 Current. time is six thirty at Scotland. Past. time was five thirty at India; Current. time is five thirty at Scotland. Past. time was five thirty at Scotland. Current. time is five ten at Scotland.
Run Code Online (Sandbox Code Playgroud)

当我使用正则表达式时

/current\..*scotland\./i
Run Code Online (Sandbox Code Playgroud)

这匹配所有字符串

Current. time is six thirty at Scotland. Past. time was six thirty at India; Current. time is five thirty at Scotland. Past. time was five thirty at Scotland. Current. time is five ten at Scotland.
Run Code Online (Sandbox Code Playgroud)

相反,我想在第一次出现"."时停止.对所有捕获组如

 Current. time is six thirty …
Run Code Online (Sandbox Code Playgroud)

ruby regex nlp ruby-on-rails-3

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

如何在Rails中优化此代码?

在我的控制器中,我有以下4种方法,但这些方法具有代码相似性

before_filter :load_person, except: [:autocomplete]
before_filter :validate_twitter, only: [:recent_tweets, :commonly_following]
before_filter :validate_linkedin, only: [:common_connections]
before_filter :validate_facebook, only: [:mutual_friends]
before_filter :validate_google, only: [:meetings]

def validate_linkedin
  @linkedin_account = current_user.social_account("LinkedIn")
  return render json: { message: "You are not connected to your LinkedIn account" } if @linkedin_account.blank?
  return render json: { message: "No Linkedin url for #{@person.name}" } if @person.linkedin_url.blank?
end 

def validate_twitter
  @twitter_account = current_user.social_account("Twitter")
  return render json: { message: "You are not connected to your Twitter account" } if @twitter_account.blank?
  return render …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

2
推荐指数
1
解决办法
112
查看次数

将数组数组转换为哈希,将第一个数组的元素作为哈希的键

我想转换这个数组

[['a', 'b'],['c', 'd'],['e', 'f']] 
Run Code Online (Sandbox Code Playgroud)

这个哈希

{
  "a" : "c",
  "b" : "d"
},
{
  "a" : "e",
  "b" : "f"
}
Run Code Online (Sandbox Code Playgroud)

怎么做?

我试图使用group_by和正常的迭代器,但到目前为止没有运气.有任何想法吗?

ruby ruby-on-rails ruby-2.2

2
推荐指数
1
解决办法
1620
查看次数

在 Rails 4 中使用 group by 选择小写列或选择lower(column)

如何在rails 4中实现以下功能?

这是我的 PostgreSQL 查询并且正常工作

SELECT lower(name) as c_name, count(*) as cc FROM categories  GROUP BY c_name  ORDER BY cc desc LIMIT 3
Run Code Online (Sandbox Code Playgroud)

ii给我以下结果

 "ecommerce solutions";6
 "vmware";6
 "big data analytics";5
Run Code Online (Sandbox Code Playgroud)

但是当我在 Rails 4 中编写相同的查询时

Category.select("lower(name) as c_name, count(*) as cc").group("c_name").order("cc desc").limit(3) 
Run Code Online (Sandbox Code Playgroud)

以上查询生成以下查询,与上面的 PostgreSQL 查询相同

SELECT lower(name) as c_name, count(*) as cc FROM "categories"  GROUP BY c_name  ORDER BY cc desc LIMIT 3
Run Code Online (Sandbox Code Playgroud)

给出以下结果

[#<Category id: nil>, #<Category id: nil>, #<Category id: nil>]
Run Code Online (Sandbox Code Playgroud)

为什么会这样?当我将查询切到

 Category.select("lower(name)").limit(3)
Run Code Online (Sandbox Code Playgroud)

这也不起作用,结果变成

 [#<Category id: nil>, #<Category id: …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql ruby-on-rails ruby-on-rails-4

2
推荐指数
1
解决办法
1373
查看次数

如何在 sidekiq 中切换 Redis 主机/池?

我有带有Apartment gem的多租户 Rails 应用程序,我可以使用Apartment-sidekiq成功切换每个工作人员中的数据库租户。但 sidekiq 工作人员为所有租户使用相同的 redis 服务器。我也想在redis上有完全的隔离。有没有一种方法可以让我为每个租户使用单独的 redis 主机,而不会影响使用 sidekiq middeware 进行的大量代码更改。

租户配置示例

 TENANT_POOL = {
  tenant_1: ConnectionPool.new { Redis.new(url: ENV['REDIS_URL1']) },
  tenant_2: ConnectionPool.new { Redis.new(url: ENV['REDIS_URL2']) }  
 }
Run Code Online (Sandbox Code Playgroud)

例如。工人

class SendMailWorker
  include Sidekiq::Worker
  def perform(args)
    puts "In Worker Tenant: #{Apartment::Tenant.current}, #{Sidekiq.redis_pool.inspect}"
  end
end     
Run Code Online (Sandbox Code Playgroud)

客户端中间件

class MyMiddleware::Client::ChangeRedisPool
  def call(worker_class, job, queue, redis_pool)
    #Can I change redis pool/client here to execute job in separate redis 
    yield
  end
end
Run Code Online (Sandbox Code Playgroud)

服务器中间件

class MyMiddleware::Server::ChangeServerRedisPool
  def call(worker, job, queue)
    #Can I …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails redis sidekiq apartment-gem

2
推荐指数
1
解决办法
1033
查看次数