我们正在探索使用flipper gem ( https://github.com/jnunemaker/flipper ) 来控制看到新功能的人。在我们的第一个测试中,我们希望仅向看到宣传它的横幅的前 X 个用户显示特定功能。
我们考虑使用百分比,但业务对数字非常具体,并且还希望立即达到该数字,然后为所有其他用户禁用该功能,而不是为那些首先看到它的用户禁用它。使用百分比,我们无法找到一种方法来确保正确的数字会看到它,并且第一个 x 的每个人都会看到它。
在 gates/actor.rb 里面,有这个:
enabled_actor_ids = value
Run Code Online (Sandbox Code Playgroud)
这意味着我们可以获得已启用 ID 的列表,并对其进行计数,但我们无法找到该列表是否或在哪里可能会暴露。
由于我们使用 AR 适配器作为试验,因此我们在连接到 flipper_gates 表的 actor 对象上创建了一个范围,但这感觉非常脆弱并且非常深入到 gem 的内部工作中。
任何意见是极大的赞赏。
我们在数据库中有一列包含类似于“150 W 96 Th St”和“4514 282 Nd St”的值。您可能已经注意到,数字街道名称和后缀之间有一个空格,即“96 TH”。
我正在尝试编写一个将删除该空间的 postgresql 查询。使用以下内容:
SELECT regexp_matches('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ')
Run Code Online (Sandbox Code Playgroud)
我得到:
{" "}
Run Code Online (Sandbox Code Playgroud)
表示仅返回捕获组。
然而,当我跑
SELECT regexp_replace('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ', '')
Run Code Online (Sandbox Code Playgroud)
我得到
150 WSt
Run Code Online (Sandbox Code Playgroud)
整个匹配字符串被替换的地方。
我也试过
SELECT regexp_replace('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ', '\1')
Run Code Online (Sandbox Code Playgroud)
我认为这只会取代第一个捕获组。
我还应该尝试什么?
我按照安装geokit-rails(v 2.0.1)和geokit(v 1.8.5)的说明进行操作.然后尝试创建自己的地理编码器(用于测试).这是我在config/initializers/fake_geocoder.rb文件中使用的代码
require 'geokit'
module GeoKit
module Geocoders
class FakeGeocoder < Geocoder
#to use, include :fake in the list of geocoders
private
def self.do_geocode(location, options = {})
geocode_payload = GeoKit::GeoLoc.new(:lat => 123.456, :lng => 123.456)
geocode_payload.success = true
return geocode_payload
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
尝试启动rails控制台(捆绑exec rails c)时,出现以下错误:
../config/initializers/fake_geocoder.rb:6:in `<module:Geocoders>': uninitialized constant GeoKit::Geocoders::Geocoder (NameError)
from ../config/initializers/fake_geocoder.rb:5:in `<module:GeoKit>'
from ../config/initializers/fake_geocoder.rb:4:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
您可以提供有关无法找到Geocoder类的原因的任何建议将不胜感激.