2017-02-23 57 views
1

Я пытаюсь добавить геопространственные поля к феникс-каркасу с пакетом https://github.com/bryanjos/geo. Я хочу, чтобы получить доступ через модель Экто я последовал за наметившееся добавление строки:Phoenix framework/Elixir add Geospatial fields

Postgrex.Types.define(
    MyApp.PostgresTypes, 
    [Geo.PostGIS.Extension] ++ 
    Ecto.Adapters.Postgres.extensions(), 
    json: Poison) 

, как указано в файле Readme. Проблема заключается в том, что он не указывает, где именно, чтобы добавить это, поэтому я добавил его конфиг/dev.exs

Затем я добавил строку:

types: MyApp.PostgresTypes 

к моему DEV репо конфигурационный файл config/dev.exs, как указано.

Затем я получаю ошибку, что Postgrex.Types.define и Ecto.Adapters.Postgres.extensions функция не существует (как модули, как сообщается, нет.

Затем я пытаюсь поставить следующие строки в lib/myapp/myapp.ex, как я подозреваю, что это что-то делать с процессом intialization .

Postgrex.Types.define(
    MyApp.PostgresTypes, 
    [Geo.PostGIS.Extension] ++ 
    Ecto.Adapters.Postgres.extensions(), 
    json: Poison) 

Однако, когда я добавить больше полей сделать еще один перенос с микса ecto.migrate, я получаю сообщение об ошибке:

function Jobflo.PostgresTypes.find/2 is undefined (module Jobflo.PostgresTypes is not available.

Я не думаю, что это должно быть так сложно и подозрительно, я делаю очевидную ошибку. Приветствуется всех, кто знаком с настройкой Geo с Phoenix. Thankyou.

+0

Здесь размещен соответствующий код; не связывайте свой пост с github, пожалуйста. –

ответ

3

Я нашел это немного запутанным, когда несколько месяцев назад я обновил гео.

Создайте файл с именем lib/postgres_types.ex со следующими в нем:

Postgrex.Types.define(
    Myapp.PostgresTypes, 
    [Geo.PostGIS.Extension] ++ Ecto.Adapters.Postgres.extensions(), 
    json: Poison 
) 

В файле конфигурации (в моем случае, "#{Mix.env}.exs") убедитесь, что конфигурация выглядит следующим образом:

config :myapp, Myapp.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    types: Myapp.PostgresTypes, 
    username: "jbloggs", 
    password: "abc123", 
    database: "api", 
    hostname: "db_hostname.com", 
    pool_size: 10 

Я надеюсь, это поможет вам!

+0

Блестящая благодарность! Является ли это документированным или конвенцией Эликсира? Cheers – Simon

+0

@Simon нет - это задокументировано, его просто то, что документация мне не очень понятна (и вы тоже, я думаю!) –

 Смежные вопросы

  • Нет связанных вопросов^_^