在Rails 4.2.4和activerecord-postgis-adapter 3.1.2中有一个带RGeo列的表
class CreateAddresses < ActiveRecord::Migration
def change
create_table :addresses do |t|
t.st_point :coordinates, geographic: true, srid: 4326
end
add_index :addresses, :coordinates, using: :gist
end
end
Run Code Online (Sandbox Code Playgroud)
以及按对象位置对对象进行分组的方法
def self.group_by_coords
includes(:address).
joins(:address).
group('addresses.coordinates::geometry').
pluck(
'array_agg(realties.id) as ids, addresses.coordinates::geometry'
)
end
Run Code Online (Sandbox Code Playgroud)
与相应的测试:
describe 'group_by_coords' do
it 'correctly group realties' do
# create samples
expect(Realty.group_by_coords).to eq(
[[[r1.id, r2.id], r1.address.coordinates], [[r3.id], r3.address.coordinates]]
)
end
end
Run Code Online (Sandbox Code Playgroud)
问题是pluck返回 RGeo::Geos::CAPIPointImpl而不是 RGeo::Geographic::SphericalPointImpl
expected: [[[1670, 1671], #<RGeo::Geographic::SphericalPointImpl:0x3fd37e9b8a20 "POINT (106.0 10.0)">], [[1672], #<RGeo::Geographic::SphericalPointImpl:0x3fd37ab2dddc "POINT (106.5 10.5)">]] …Run Code Online (Sandbox Code Playgroud) 我们想尝试使用 Jenkins 为我们的项目设置 CI/CD。该项目本身使用 Elasticsearch 和 PostgreSQL 作为运行时依赖项,并使用 Webdriver 进行验收测试。在开发环境中,一切都在一个docker-compose.yml文件中设置,我们有acceptance.sh脚本来运行验收测试。
在挖掘文档后,我发现有可能通过以下步骤构建 CI:
docker-compose.yml和项目Dockerfile- 要么:
docker-compose upONBUILT运行测试的部分。单元测试通过mix tests,验收通过scripts/acceptance.sh。并行运行它们会很酷。docker-compose,清理容器因为这是我第一次接触 Jenkins,所以出现了一系列问题:
谢谢
当前的Ecto文档http://hexdocs.pm/ecto/Ecto.Schema.html仅解释了如何构建一种belongs_to多态关联,当多态Comment可以同时属于Task和Post.但相反的方向呢?
例如有一种Listing可以具有四种类型的属性的一个:Room,Apartment,Vila或Office.
考虑到一比一的关系,因为上面的例子那岂不是应该有rooms_listings,apartments_listings,vila_listings和office_listings,这是不可能的,因为这将导致所有相关联的其他表的复制listings.
问题是如何模拟这种关系?
我们正在寻找一种最佳方式将Elastic合并到我们的项目中,同时保留所提供的所有优点phoenix-ecto,即变更集验证和Phoenix.HTML.Form兼容性.
使用Ecto 2.0,看起来这项任务应该比以往更容易.
所以问题是:
ecto ×2
elixir ×2
activerecord ×1
docker ×1
jenkins ×1
postgis ×1
postgresql ×1
rgeo ×1
tirexs ×1