小编les*_*ess的帖子

将RGeo列反序列化为SphericalPointImpl

在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)

postgresql activerecord postgis ruby-on-rails-4 rgeo

13
推荐指数
1
解决办法
232
查看次数

使用 Jenkins 在 Docker 容器内运行测试

我们想尝试使用 Jenkins 为我们的项目设置 CI/CD。该项目本身使用 Elasticsearch 和 PostgreSQL 作为运行时依赖项,并使用 Webdriver 进行验收测试。在开发环境中,一切都在一个docker-compose.yml文件中设置,我们有acceptance.sh脚本来运行验收测试。

在挖掘文档后,我发现有可能通过以下步骤构建 CI:

  1. dockerize 项目
  2. 从 git repo 中拉出项目
  3. 以某种方式拉docker-compose.yml和项目Dockerfile- 要么:
    • 把它放在项目仓库中
    • 把它放在单独的 repo 中(这就是现在的做法)
    • 放在服务器上的某个地方并复制它
  4. 执行 docker-compose up
  5. 项目的 Dockerfile 将包含ONBUILT运行测试的部分。单元测试通过mix tests,验收通过scripts/acceptance.sh。并行运行它们会很酷。
  6. 关闭docker-compose,清理容器

因为这是我第一次接触 Jenkins,所以出现了一系列问题:

  • 这是一个可行的策略吗?
  • 如何将测试输出与 Jenkins 连接?
  • 如何运行和关闭 docker-compose?
  • 我们是否需要/想要为此编写一个管道?当我们进入下一阶段的 CD 时,我们是否需要/想要管道?

谢谢

jenkins docker docker-compose

9
推荐指数
1
解决办法
5564
查看次数

与ecto反向多态

当前的Ecto文档http://hexdocs.pm/ecto/Ecto.Schema.html仅解释了如何构建一种belongs_to多态关联,当多态Comment可以同时属于TaskPost.但相反的方向呢?

例如有一种Listing可以具有四种类型的属性的一个:Room,Apartment,VilaOffice.

考虑到一比一的关系,因为上面的例子那岂不是应该有rooms_listings,apartments_listings,vila_listingsoffice_listings,这是不可能的,因为这将导致所有相关联的其他表的复制listings.

问题是如何模拟这种关系?

elixir ecto phoenix-framework

4
推荐指数
1
解决办法
1009
查看次数

Ecto NoSQL适配器的最低要求

我们正在寻找一种最佳方式将Elastic合并到我们的项目中,同时保留所提供的所有优点phoenix-ecto,即变更集验证和Phoenix.HTML.Form兼容性.

使用Ecto 2.0,看起来这项任务应该比以往更容易.

所以问题是:

  • NoSQL Ecto适配器是否有骨架?
  • 有什么初步要求?陷阱?
  • 这种适配器处理嵌入物的最低要求是什么?

elixir ecto phoenix-framework tirexs

4
推荐指数
1
解决办法
684
查看次数